diff options
author | paranoidjk <hust2012jiangkai@gmail.com> | 2017-05-27 16:25:03 +0800 |
---|---|---|
committer | paranoidjk <hust2012jiangkai@gmail.com> | 2017-05-27 16:25:03 +0800 |
commit | d156d507717331bdcf86d6c367bfeb3c880ce96e (patch) | |
tree | 730fbe34e17f7300a1ab51f87121278be2140972 /examples | |
parent | b879cfead429b717b7d89f4ceaf55973e2d96b4f (diff) | |
download | time-picker-d156d507717331bdcf86d6c367bfeb3c880ce96e.tar.gz time-picker-d156d507717331bdcf86d6c367bfeb3c880ce96e.tar.zst time-picker-d156d507717331bdcf86d6c367bfeb3c880ce96e.zip |
Updates
Diffstat (limited to 'examples')
-rw-r--r-- | examples/12hours.html | 8 | ||||
-rw-r--r-- | examples/12hours.js | 91 | ||||
-rw-r--r-- | examples/12hours.js.map | 2 | ||||
-rw-r--r-- | examples/common.css | 150 | ||||
-rw-r--r-- | examples/common.css.map | 1 | ||||
-rw-r--r-- | examples/common.js | 33053 | ||||
-rw-r--r-- | examples/common.js.map | 1 | ||||
-rw-r--r-- | examples/disabled.html | 8 | ||||
-rw-r--r-- | examples/disabled.js | 151 | ||||
-rw-r--r-- | examples/disabled.js.map | 2 | ||||
-rw-r--r-- | examples/format.html | 8 | ||||
-rw-r--r-- | examples/format.js | 71 | ||||
-rw-r--r-- | examples/format.js.map | 2 | ||||
-rw-r--r-- | examples/hidden.html | 8 | ||||
-rw-r--r-- | examples/hidden.js | 99 | ||||
-rw-r--r-- | examples/hidden.js.map | 2 | ||||
-rw-r--r-- | examples/open.html | 8 | ||||
-rw-r--r-- | examples/open.js | 162 | ||||
-rw-r--r-- | examples/open.js.map | 2 | ||||
-rw-r--r-- | examples/pick-time.html | 8 | ||||
-rw-r--r-- | examples/pick-time.js | 85 | ||||
-rw-r--r-- | examples/pick-time.js.map | 2 | ||||
-rw-r--r-- | examples/value-and-defaultValue.html | 8 | ||||
-rw-r--r-- | examples/value-and-defaultValue.js | 179 | ||||
-rw-r--r-- | examples/value-and-defaultValue.js.map | 2 |
25 files changed, 454 insertions, 33659 deletions
diff --git a/examples/12hours.html b/examples/12hours.html index ad2a646..22da3af 100644 --- a/examples/12hours.html +++ b/examples/12hours.html | |||
@@ -2,7 +2,7 @@ | |||
2 | <html> | 2 | <html> |
3 | 3 | ||
4 | <head> | 4 | <head> |
5 | <title>12hours.js - example - rc-time-picker@2.4.0</title> | 5 | <title>12hours.js - example - rc-time-picker@2.4.1</title> |
6 | <meta name="viewport" | 6 | <meta name="viewport" |
7 | content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> | 7 | content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> |
8 | <meta charset="utf-8"/> | 8 | <meta charset="utf-8"/> |
@@ -257,13 +257,13 @@ Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-lic | |||
257 | document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>'); | 257 | document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>'); |
258 | } | 258 | } |
259 | </script> | 259 | </script> |
260 | <link rel="stylesheet" href="common.css" /> | 260 | <link rel="stylesheet" href="../common.css" /> |
261 | </head> | 261 | </head> |
262 | 262 | ||
263 | <body> | 263 | <body> |
264 | <div class="container"> | 264 | <div class="container"> |
265 | <div class="header"> | 265 | <div class="header"> |
266 | <h1>rc-time-picker@2.4.0</h1> | 266 | <h1>rc-time-picker@2.4.1</h1> |
267 | 267 | ||
268 | <p>React TimePicker</p> | 268 | <p>React TimePicker</p> |
269 | </div> | 269 | </div> |
@@ -308,7 +308,7 @@ ReactDom.render( | |||
308 | data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"> | 308 | data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"> |
309 | </a> | 309 | </a> |
310 | <script>FastClick.attach(document.body);</script> | 310 | <script>FastClick.attach(document.body);</script> |
311 | <script src="common.js?nowrap"></script> | 311 | <script src="../common.js?nowrap"></script> |
312 | <script src="12hours.js?nowrap"></script> | 312 | <script src="12hours.js?nowrap"></script> |
313 | </body> | 313 | </body> |
314 | 314 | ||
diff --git a/examples/12hours.js b/examples/12hours.js index b2197cb..8264afd 100644 --- a/examples/12hours.js +++ b/examples/12hours.js | |||
@@ -1,53 +1,56 @@ | |||
1 | webpackJsonp([0],[ | 1 | webpackJsonp([6],{ |
2 | /* 0 */ | 2 | |
3 | /***/ (function(module, exports, __webpack_require__) { | 3 | /***/ 143: |
4 | /***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
5 | |||
6 | "use strict"; | ||
7 | Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); | ||
8 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_rc_time_picker_assets_index_less__ = __webpack_require__(29); | ||
9 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_rc_time_picker_assets_index_less___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_rc_time_picker_assets_index_less__); | ||
10 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react__ = __webpack_require__(5); | ||
11 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react__); | ||
12 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_dom__ = __webpack_require__(8); | ||
13 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_dom___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react_dom__); | ||
14 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_moment__ = __webpack_require__(18); | ||
15 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_moment___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_moment__); | ||
16 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_rc_time_picker__ = __webpack_require__(22); | ||
17 | /* eslint no-console:0 */ | ||
18 | |||
19 | |||
20 | |||
21 | |||
22 | |||
23 | |||
4 | 24 | ||
5 | module.exports = __webpack_require__(1); | ||
6 | 25 | ||
7 | 26 | ||
27 | |||
28 | var format = 'h:mm a'; | ||
29 | |||
30 | var now = __WEBPACK_IMPORTED_MODULE_3_moment___default()().hour(0).minute(0); | ||
31 | |||
32 | function onChange(value) { | ||
33 | console.log(value && value.format(format)); | ||
34 | } | ||
35 | |||
36 | __WEBPACK_IMPORTED_MODULE_2_react_dom___default.a.render(__WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_4_rc_time_picker__["a" /* default */], { | ||
37 | showSecond: false, | ||
38 | defaultValue: now, | ||
39 | className: 'xxx', | ||
40 | onChange: onChange, | ||
41 | format: format, | ||
42 | use12Hours: true | ||
43 | }), document.getElementById('__react-content')); | ||
44 | |||
8 | /***/ }), | 45 | /***/ }), |
9 | /* 1 */ | 46 | |
47 | /***/ 325: | ||
10 | /***/ (function(module, exports, __webpack_require__) { | 48 | /***/ (function(module, exports, __webpack_require__) { |
11 | 49 | ||
12 | 'use strict'; | 50 | module.exports = __webpack_require__(143); |
13 | 51 | ||
14 | __webpack_require__(2); | ||
15 | |||
16 | var _react = __webpack_require__(3); | ||
17 | |||
18 | var _react2 = _interopRequireDefault(_react); | ||
19 | |||
20 | var _reactDom = __webpack_require__(38); | ||
21 | |||
22 | var _reactDom2 = _interopRequireDefault(_reactDom); | ||
23 | |||
24 | var _moment = __webpack_require__(184); | ||
25 | |||
26 | var _moment2 = _interopRequireDefault(_moment); | ||
27 | |||
28 | var _rcTimePicker = __webpack_require__(185); | ||
29 | |||
30 | var _rcTimePicker2 = _interopRequireDefault(_rcTimePicker); | ||
31 | |||
32 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
33 | |||
34 | var format = 'h:mm a'; /* eslint no-console:0 */ | ||
35 | |||
36 | var now = (0, _moment2.default)().hour(0).minute(0); | ||
37 | |||
38 | function onChange(value) { | ||
39 | console.log(value && value.format(format)); | ||
40 | } | ||
41 | |||
42 | _reactDom2.default.render(_react2.default.createElement(_rcTimePicker2.default, { | ||
43 | showSecond: false, | ||
44 | defaultValue: now, | ||
45 | className: 'xxx', | ||
46 | onChange: onChange, | ||
47 | format: format, | ||
48 | use12Hours: true | ||
49 | }), document.getElementById('__react-content')); | ||
50 | 52 | ||
51 | /***/ }) | 53 | /***/ }) |
52 | ]); | 54 | |
55 | },[325]); | ||
53 | //# sourceMappingURL=12hours.js.map \ No newline at end of file | 56 | //# sourceMappingURL=12hours.js.map \ No newline at end of file |
diff --git a/examples/12hours.js.map b/examples/12hours.js.map index 078db09..effd703 100644 --- a/examples/12hours.js.map +++ b/examples/12hours.js.map | |||
@@ -1 +1 @@ | |||
{"version":3,"sources":["webpack:///./examples/12hours.js"],"names":["format","now","hour","minute","onChange","value","console","log","render","document","getElementById"],"mappings":";;;;;;;;;;;;;AAEA;;AAEA;;;;AACA;;;;AAEA;;;;AAEA;;;;;;AAEA,KAAMA,SAAS,QAAf,C,CAXA;;AAaA,KAAMC,MAAM,wBAASC,IAAT,CAAc,CAAd,EAAiBC,MAAjB,CAAwB,CAAxB,CAAZ;;AAEA,UAASC,QAAT,CAAkBC,KAAlB,EAAyB;AACvBC,WAAQC,GAAR,CAAYF,SAASA,MAAML,MAAN,CAAaA,MAAb,CAArB;AACD;;AAED,oBAASQ,MAAT,CACE;AACE,eAAY,KADd;AAEE,iBAAcP,GAFhB;AAGE,cAAU,KAHZ;AAIE,aAAUG,QAJZ;AAKE,WAAQJ,MALV;AAME;AANF,GADF,EASES,SAASC,cAAT,CAAwB,iBAAxB,CATF,E","file":"12hours.js","sourcesContent":["/* eslint no-console:0 */\n\nimport 'rc-time-picker/assets/index.less';\n\nimport React from 'react';\nimport ReactDom from 'react-dom';\n\nimport moment from 'moment';\n\nimport TimePicker from 'rc-time-picker';\n\nconst format = 'h:mm a';\n\nconst now = moment().hour(0).minute(0);\n\nfunction onChange(value) {\n console.log(value && value.format(format));\n}\n\nReactDom.render(\n <TimePicker\n showSecond={false}\n defaultValue={now}\n className=\"xxx\"\n onChange={onChange}\n format={format}\n use12Hours\n />,\n document.getElementById('__react-content')\n);\n\n\n\n// WEBPACK FOOTER //\n// ./examples/12hours.js"],"sourceRoot":""} \ No newline at end of file | {"version":3,"sources":["webpack:///./examples/12hours.js"],"names":["format","now","moment","hour","minute","onChange","value","console","log","ReactDom","render","document","getElementById"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,IAAMA,SAAS,QAAf;;AAEA,IAAMC,MAAM,8CAAAC,GAASC,IAAT,CAAc,CAAd,EAAiBC,MAAjB,CAAwB,CAAxB,CAAZ;;AAEA,SAASC,QAAT,CAAkBC,KAAlB,EAAyB;AACvBC,UAAQC,GAAR,CAAYF,SAASA,MAAMN,MAAN,CAAaA,MAAb,CAArB;AACD;;AAED,iDAAAS,CAASC,MAAT,CACE,4DAAC,+DAAD;AACE,cAAY,KADd;AAEE,gBAAcT,GAFhB;AAGE,aAAU,KAHZ;AAIE,YAAUI,QAJZ;AAKE,UAAQL,MALV;AAME;AANF,EADF,EASEW,SAASC,cAAT,CAAwB,iBAAxB,CATF,E","file":"examples/12hours.js","sourcesContent":["/* eslint no-console:0 */\n\nimport 'rc-time-picker/assets/index.less';\n\nimport React from 'react';\nimport ReactDom from 'react-dom';\n\nimport moment from 'moment';\n\nimport TimePicker from 'rc-time-picker';\n\nconst format = 'h:mm a';\n\nconst now = moment().hour(0).minute(0);\n\nfunction onChange(value) {\n console.log(value && value.format(format));\n}\n\nReactDom.render(\n <TimePicker\n showSecond={false}\n defaultValue={now}\n className=\"xxx\"\n onChange={onChange}\n format={format}\n use12Hours\n />,\n document.getElementById('__react-content')\n);\n\n\n\n// WEBPACK FOOTER //\n// ./examples/12hours.js"],"sourceRoot":""} \ No newline at end of file | ||
diff --git a/examples/common.css b/examples/common.css deleted file mode 100644 index 5e4ced9..0000000 --- a/examples/common.css +++ /dev/null | |||
@@ -1,150 +0,0 @@ | |||
1 | .rc-time-picker { | ||
2 | display: inline-block; | ||
3 | box-sizing: border-box; | ||
4 | } | ||
5 | .rc-time-picker * { | ||
6 | box-sizing: border-box; | ||
7 | } | ||
8 | .rc-time-picker-input { | ||
9 | width: 100%; | ||
10 | position: relative; | ||
11 | display: inline-block; | ||
12 | padding: 4px 7px; | ||
13 | height: 28px; | ||
14 | cursor: text; | ||
15 | font-size: 12px; | ||
16 | line-height: 1.5; | ||
17 | color: #666; | ||
18 | background-color: #fff; | ||
19 | background-image: none; | ||
20 | border: 1px solid #d9d9d9; | ||
21 | border-radius: 6px; | ||
22 | -webkit-transition: border 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), box-shadow 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); | ||
23 | transition: border 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), box-shadow 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); | ||
24 | } | ||
25 | .rc-time-picker-panel { | ||
26 | z-index: 1070; | ||
27 | width: 170px; | ||
28 | position: absolute; | ||
29 | box-sizing: border-box; | ||
30 | } | ||
31 | .rc-time-picker-panel * { | ||
32 | box-sizing: border-box; | ||
33 | } | ||
34 | .rc-time-picker-panel-inner { | ||
35 | display: inline-block; | ||
36 | position: relative; | ||
37 | outline: none; | ||
38 | list-style: none; | ||
39 | font-size: 12px; | ||
40 | text-align: left; | ||
41 | background-color: #fff; | ||
42 | border-radius: 3px; | ||
43 | box-shadow: 0 1px 5px #ccc; | ||
44 | background-clip: padding-box; | ||
45 | border: 1px solid #ccc; | ||
46 | line-height: 1.5; | ||
47 | } | ||
48 | .rc-time-picker-panel-input { | ||
49 | margin: 0; | ||
50 | padding: 0; | ||
51 | width: 100%; | ||
52 | cursor: auto; | ||
53 | line-height: 1.5; | ||
54 | outline: 0; | ||
55 | border: 1px solid transparent; | ||
56 | } | ||
57 | .rc-time-picker-panel-input-wrap { | ||
58 | box-sizing: border-box; | ||
59 | position: relative; | ||
60 | padding: 6px; | ||
61 | border-bottom: 1px solid #e9e9e9; | ||
62 | } | ||
63 | .rc-time-picker-panel-input-invalid { | ||
64 | border-color: red; | ||
65 | } | ||
66 | .rc-time-picker-panel-clear-btn { | ||
67 | position: absolute; | ||
68 | right: 6px; | ||
69 | cursor: pointer; | ||
70 | overflow: hidden; | ||
71 | width: 20px; | ||
72 | height: 20px; | ||
73 | text-align: center; | ||
74 | line-height: 20px; | ||
75 | top: 6px; | ||
76 | margin: 0; | ||
77 | } | ||
78 | .rc-time-picker-panel-clear-btn:after { | ||
79 | content: "x"; | ||
80 | font-size: 12px; | ||
81 | color: #aaa; | ||
82 | display: inline-block; | ||
83 | line-height: 1; | ||
84 | width: 20px; | ||
85 | -webkit-transition: color 0.3s ease; | ||
86 | transition: color 0.3s ease; | ||
87 | } | ||
88 | .rc-time-picker-panel-clear-btn:hover:after { | ||
89 | color: #666; | ||
90 | } | ||
91 | .rc-time-picker-panel-select { | ||
92 | float: left; | ||
93 | font-size: 12px; | ||
94 | border: 1px solid #e9e9e9; | ||
95 | border-width: 0 1px; | ||
96 | margin-left: -1px; | ||
97 | box-sizing: border-box; | ||
98 | width: 56px; | ||
99 | overflow: hidden; | ||
100 | position: relative; | ||
101 | } | ||
102 | .rc-time-picker-panel-select-active { | ||
103 | overflow-y: auto; | ||
104 | } | ||
105 | .rc-time-picker-panel-select:first-child { | ||
106 | border-left: 0; | ||
107 | margin-left: 0; | ||
108 | } | ||
109 | .rc-time-picker-panel-select:last-child { | ||
110 | border-right: 0; | ||
111 | } | ||
112 | .rc-time-picker-panel-select ul { | ||
113 | list-style: none; | ||
114 | box-sizing: border-box; | ||
115 | margin: 0; | ||
116 | padding: 0; | ||
117 | width: 100%; | ||
118 | max-height: 144px; | ||
119 | } | ||
120 | .rc-time-picker-panel-select li { | ||
121 | list-style: none; | ||
122 | box-sizing: content-box; | ||
123 | margin: 0; | ||
124 | padding: 0 0 0 16px; | ||
125 | width: 100%; | ||
126 | height: 24px; | ||
127 | line-height: 24px; | ||
128 | text-align: left; | ||
129 | cursor: pointer; | ||
130 | -webkit-user-select: none; | ||
131 | -moz-user-select: none; | ||
132 | -ms-user-select: none; | ||
133 | user-select: none; | ||
134 | } | ||
135 | .rc-time-picker-panel-select li:hover { | ||
136 | background: #edfaff; | ||
137 | } | ||
138 | li.rc-time-picker-panel-select-option-selected { | ||
139 | background: #edfaff; | ||
140 | color: #2db7f5; | ||
141 | } | ||
142 | li.rc-time-picker-panel-select-option-disabled { | ||
143 | color: #bfbfbf; | ||
144 | } | ||
145 | li.rc-time-picker-panel-select-option-disabled:hover { | ||
146 | background: transparent; | ||
147 | cursor: not-allowed; | ||
148 | } | ||
149 | |||
150 | /*# sourceMappingURL=common.css.map*/ \ No newline at end of file | ||
diff --git a/examples/common.css.map b/examples/common.css.map deleted file mode 100644 index 86b99f4..0000000 --- a/examples/common.css.map +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | {"version":3,"sources":["webpack:///./assets/index.less","webpack:///index.less","webpack:///./assets/index/Picker.less","webpack:///./assets/index/Panel.less","webpack:///./assets/index/Header.less","webpack:///./assets/index/Select.less"],"names":[],"mappings":"AAEA;EACE;EACA;CCDD;ADDD;EAII;CCAH;ACLC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAAA;CDOH;AEtBD;EACE;EACA;EACA;EACA;CFwBD;AE5BD;EAOI;CFwBH;AErBC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CFuBH;AG5CC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;CH8CH;AG5CG;EACE;EACA;EACA;EACA;CH8CL;AG3CG;EACE;CH6CL;AGzCC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CH2CH;AGxCC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAAA;CH0CH;AGvCC;EACE;CHyCH;AIvFD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CJyFD;AIvFC;EACE;CJyFH;AItFC;EACE;EACA;CJwFH;AIrFC;EACE;CJuFH;AI5GD;EAyBI;EACA;EACA;EACA;EACA;EACA;CJsFH;AIpHD;EAkCI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;KAAA;MAAA;UAAA;CJqFH;AInFG;EACE;CJqFL;AIjFC;EACE;EACA;CJmFH;AIhFC;EACE;CJkFH;AIjFG;EACE;EACA;CJmFL","file":"common.css","sourcesContent":["@prefixClass: rc-time-picker;\n\n.@{prefixClass} {\n display: inline-block;\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n }\n}\n\n@import \"./index/Picker\";\n@import \"./index/Panel\";\n@import \"./index/Header\";\n@import \"./index/Select\";\n\n\n\n// WEBPACK FOOTER //\n// ./assets/index.less",".rc-time-picker {\n display: inline-block;\n box-sizing: border-box;\n}\n.rc-time-picker * {\n box-sizing: border-box;\n}\n.rc-time-picker-input {\n width: 100%;\n position: relative;\n display: inline-block;\n padding: 4px 7px;\n height: 28px;\n cursor: text;\n font-size: 12px;\n line-height: 1.5;\n color: #666;\n background-color: #fff;\n background-image: none;\n border: 1px solid #d9d9d9;\n border-radius: 6px;\n transition: border 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), box-shadow 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.rc-time-picker-panel {\n z-index: 1070;\n width: 170px;\n position: absolute;\n box-sizing: border-box;\n}\n.rc-time-picker-panel * {\n box-sizing: border-box;\n}\n.rc-time-picker-panel-inner {\n display: inline-block;\n position: relative;\n outline: none;\n list-style: none;\n font-size: 12px;\n text-align: left;\n background-color: #fff;\n border-radius: 3px;\n box-shadow: 0 1px 5px #ccc;\n background-clip: padding-box;\n border: 1px solid #ccc;\n line-height: 1.5;\n}\n.rc-time-picker-panel-input {\n margin: 0;\n padding: 0;\n width: 100%;\n cursor: auto;\n line-height: 1.5;\n outline: 0;\n border: 1px solid transparent;\n}\n.rc-time-picker-panel-input-wrap {\n box-sizing: border-box;\n position: relative;\n padding: 6px;\n border-bottom: 1px solid #e9e9e9;\n}\n.rc-time-picker-panel-input-invalid {\n border-color: red;\n}\n.rc-time-picker-panel-clear-btn {\n position: absolute;\n right: 6px;\n cursor: pointer;\n overflow: hidden;\n width: 20px;\n height: 20px;\n text-align: center;\n line-height: 20px;\n top: 6px;\n margin: 0;\n}\n.rc-time-picker-panel-clear-btn:after {\n content: \"x\";\n font-size: 12px;\n color: #aaa;\n display: inline-block;\n line-height: 1;\n width: 20px;\n transition: color 0.3s ease;\n}\n.rc-time-picker-panel-clear-btn:hover:after {\n color: #666;\n}\n.rc-time-picker-panel-select {\n float: left;\n font-size: 12px;\n border: 1px solid #e9e9e9;\n border-width: 0 1px;\n margin-left: -1px;\n box-sizing: border-box;\n width: 56px;\n overflow: hidden;\n position: relative;\n}\n.rc-time-picker-panel-select-active {\n overflow-y: auto;\n}\n.rc-time-picker-panel-select:first-child {\n border-left: 0;\n margin-left: 0;\n}\n.rc-time-picker-panel-select:last-child {\n border-right: 0;\n}\n.rc-time-picker-panel-select ul {\n list-style: none;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n width: 100%;\n max-height: 144px;\n}\n.rc-time-picker-panel-select li {\n list-style: none;\n box-sizing: content-box;\n margin: 0;\n padding: 0 0 0 16px;\n width: 100%;\n height: 24px;\n line-height: 24px;\n text-align: left;\n cursor: pointer;\n user-select: none;\n}\n.rc-time-picker-panel-select li:hover {\n background: #edfaff;\n}\nli.rc-time-picker-panel-select-option-selected {\n background: #edfaff;\n color: #2db7f5;\n}\nli.rc-time-picker-panel-select-option-disabled {\n color: #bfbfbf;\n}\nli.rc-time-picker-panel-select-option-disabled:hover {\n background: transparent;\n cursor: not-allowed;\n}\n\n\n\n// WEBPACK FOOTER //\n// index.less",".@{prefixClass} {\n &-input {\n width: 100%;\n position: relative;\n display: inline-block;\n padding: 4px 7px;\n height: 28px;\n cursor: text;\n font-size: 12px;\n line-height: 1.5;\n color: #666;\n background-color: #fff;\n background-image: none;\n border: 1px solid #d9d9d9;\n border-radius: 6px;\n transition: border .2s cubic-bezier(0.645, 0.045, 0.355, 1), background .2s cubic-bezier(0.645, 0.045, 0.355, 1), box-shadow .2s cubic-bezier(0.645, 0.045, 0.355, 1);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./assets/index/Picker.less",".@{prefixClass}-panel {\n z-index: 1070;\n width: 170px;\n position: absolute;\n box-sizing: border-box;\n\n * {\n box-sizing: border-box;\n }\n\n &-inner {\n display: inline-block;\n position: relative;\n outline: none;\n list-style: none;\n font-size: 12px;\n text-align: left;\n background-color: #fff;\n border-radius: 3px;\n box-shadow: 0 1px 5px #ccc;\n background-clip: padding-box;\n border: 1px solid #ccc;\n line-height: 1.5;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./assets/index/Panel.less",".@{prefixClass}-panel {\n &-input {\n margin: 0;\n padding: 0;\n width: 100%;\n cursor: auto;\n line-height: 1.5;\n outline: 0;\n border: 1px solid transparent;\n\n &-wrap {\n box-sizing: border-box;\n position: relative;\n padding: 6px;\n border-bottom: 1px solid #e9e9e9;\n }\n\n &-invalid {\n border-color: red;\n }\n }\n\n &-clear-btn {\n position: absolute;\n right: 6px;\n cursor: pointer;\n overflow: hidden;\n width: 20px;\n height: 20px;\n text-align: center;\n line-height: 20px;\n top: 6px;\n margin: 0;\n }\n\n &-clear-btn:after {\n content: \"x\";\n font-size: 12px;\n color: #aaa;\n display: inline-block;\n line-height: 1;\n width: 20px;\n transition: color 0.3s ease;\n }\n\n &-clear-btn:hover:after {\n color: #666;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./assets/index/Header.less",".@{prefixClass}-panel-select {\n float: left;\n font-size: 12px;\n border: 1px solid #e9e9e9;\n border-width: 0 1px;\n margin-left: -1px;\n box-sizing: border-box;\n width: 56px;\n overflow: hidden;\n position: relative; // Fix chrome weird render bug\n\n &-active {\n overflow-y: auto;\n }\n\n &:first-child {\n border-left: 0;\n margin-left: 0;\n }\n\n &:last-child {\n border-right: 0;\n }\n\n ul {\n list-style: none;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n width: 100%;\n max-height: 144px;\n }\n\n li {\n list-style: none;\n box-sizing: content-box;\n margin: 0;\n padding: 0 0 0 16px;\n width: 100%;\n height: 24px;\n line-height: 24px;\n text-align: left;\n cursor: pointer;\n user-select: none;\n\n &:hover {\n background: #edfaff;\n }\n }\n\n li&-option-selected {\n background: #edfaff;\n color: #2db7f5;\n }\n\n li&-option-disabled {\n color: #bfbfbf;\n &:hover {\n background: transparent;\n cursor: not-allowed;\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./assets/index/Select.less"],"sourceRoot":""} \ No newline at end of file | ||
diff --git a/examples/common.js b/examples/common.js deleted file mode 100644 index b019fc1..0000000 --- a/examples/common.js +++ /dev/null | |||
@@ -1,33053 +0,0 @@ | |||
1 | /******/ (function(modules) { // webpackBootstrap | ||
2 | /******/ // install a JSONP callback for chunk loading | ||
3 | /******/ var parentJsonpFunction = window["webpackJsonp"]; | ||
4 | /******/ window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules) { | ||
5 | /******/ // add "moreModules" to the modules object, | ||
6 | /******/ // then flag all "chunkIds" as loaded and fire callback | ||
7 | /******/ var moduleId, chunkId, i = 0, callbacks = []; | ||
8 | /******/ for(;i < chunkIds.length; i++) { | ||
9 | /******/ chunkId = chunkIds[i]; | ||
10 | /******/ if(installedChunks[chunkId]) | ||
11 | /******/ callbacks.push.apply(callbacks, installedChunks[chunkId]); | ||
12 | /******/ installedChunks[chunkId] = 0; | ||
13 | /******/ } | ||
14 | /******/ for(moduleId in moreModules) { | ||
15 | /******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { | ||
16 | /******/ var _m = moreModules[moduleId]; | ||
17 | /******/ | ||
18 | /******/ // Check if module is deduplicated | ||
19 | /******/ switch(typeof _m) { | ||
20 | /******/ case "object": | ||
21 | /******/ // Module can be created from a template | ||
22 | /******/ modules[moduleId] = (function(_m) { | ||
23 | /******/ var args = _m.slice(1), templateId = _m[0]; | ||
24 | /******/ return function (a,b,c) { | ||
25 | /******/ modules[templateId].apply(this, [a,b,c].concat(args)); | ||
26 | /******/ }; | ||
27 | /******/ }(_m)); | ||
28 | /******/ break; | ||
29 | /******/ case "function": | ||
30 | /******/ // Normal module | ||
31 | /******/ modules[moduleId] = _m; | ||
32 | /******/ break; | ||
33 | /******/ default: | ||
34 | /******/ // Module is a copy of another module | ||
35 | /******/ modules[moduleId] = modules[_m]; | ||
36 | /******/ break; | ||
37 | /******/ } | ||
38 | /******/ } | ||
39 | /******/ } | ||
40 | /******/ if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules); | ||
41 | /******/ while(callbacks.length) | ||
42 | /******/ callbacks.shift().call(null, __webpack_require__); | ||
43 | /******/ if(moreModules[0]) { | ||
44 | /******/ installedModules[0] = 0; | ||
45 | /******/ return __webpack_require__(0); | ||
46 | /******/ } | ||
47 | /******/ }; | ||
48 | /******/ | ||
49 | /******/ // The module cache | ||
50 | /******/ var installedModules = {}; | ||
51 | /******/ | ||
52 | /******/ // object to store loaded and loading chunks | ||
53 | /******/ // "0" means "already loaded" | ||
54 | /******/ // Array means "loading", array contains callbacks | ||
55 | /******/ var installedChunks = { | ||
56 | /******/ 7:0 | ||
57 | /******/ }; | ||
58 | /******/ | ||
59 | /******/ // The require function | ||
60 | /******/ function __webpack_require__(moduleId) { | ||
61 | /******/ | ||
62 | /******/ // Check if module is in cache | ||
63 | /******/ if(installedModules[moduleId]) | ||
64 | /******/ return installedModules[moduleId].exports; | ||
65 | /******/ | ||
66 | /******/ // Create a new module (and put it into the cache) | ||
67 | /******/ var module = installedModules[moduleId] = { | ||
68 | /******/ exports: {}, | ||
69 | /******/ id: moduleId, | ||
70 | /******/ loaded: false | ||
71 | /******/ }; | ||
72 | /******/ | ||
73 | /******/ // Execute the module function | ||
74 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); | ||
75 | /******/ | ||
76 | /******/ // Flag the module as loaded | ||
77 | /******/ module.loaded = true; | ||
78 | /******/ | ||
79 | /******/ // Return the exports of the module | ||
80 | /******/ return module.exports; | ||
81 | /******/ } | ||
82 | /******/ | ||
83 | /******/ // This file contains only the entry chunk. | ||
84 | /******/ // The chunk loading function for additional chunks | ||
85 | /******/ __webpack_require__.e = function requireEnsure(chunkId, callback) { | ||
86 | /******/ // "0" is the signal for "already loaded" | ||
87 | /******/ if(installedChunks[chunkId] === 0) | ||
88 | /******/ return callback.call(null, __webpack_require__); | ||
89 | /******/ | ||
90 | /******/ // an array means "currently loading". | ||
91 | /******/ if(installedChunks[chunkId] !== undefined) { | ||
92 | /******/ installedChunks[chunkId].push(callback); | ||
93 | /******/ } else { | ||
94 | /******/ // start chunk loading | ||
95 | /******/ installedChunks[chunkId] = [callback]; | ||
96 | /******/ var head = document.getElementsByTagName('head')[0]; | ||
97 | /******/ var script = document.createElement('script'); | ||
98 | /******/ script.type = 'text/javascript'; | ||
99 | /******/ script.charset = 'utf-8'; | ||
100 | /******/ script.async = true; | ||
101 | /******/ | ||
102 | /******/ script.src = __webpack_require__.p + "" + chunkId + "." + ({"0":"12hours","1":"disabled","2":"format","3":"hidden","4":"open","5":"pick-time","6":"value-and-defaultValue"}[chunkId]||chunkId) + ".js"; | ||
103 | /******/ head.appendChild(script); | ||
104 | /******/ } | ||
105 | /******/ }; | ||
106 | /******/ | ||
107 | /******/ // expose the modules object (__webpack_modules__) | ||
108 | /******/ __webpack_require__.m = modules; | ||
109 | /******/ | ||
110 | /******/ // expose the module cache | ||
111 | /******/ __webpack_require__.c = installedModules; | ||
112 | /******/ | ||
113 | /******/ // __webpack_public_path__ | ||
114 | /******/ __webpack_require__.p = ""; | ||
115 | /******/ }) | ||
116 | /************************************************************************/ | ||
117 | /******/ ((function(modules) { | ||
118 | // Check all modules for deduplicated modules | ||
119 | for(var i in modules) { | ||
120 | if(Object.prototype.hasOwnProperty.call(modules, i)) { | ||
121 | switch(typeof modules[i]) { | ||
122 | case "function": break; | ||
123 | case "object": | ||
124 | // Module can be created from a template | ||
125 | modules[i] = (function(_m) { | ||
126 | var args = _m.slice(1), fn = modules[_m[0]]; | ||
127 | return function (a,b,c) { | ||
128 | fn.apply(this, [a,b,c].concat(args)); | ||
129 | }; | ||
130 | }(modules[i])); | ||
131 | break; | ||
132 | default: | ||
133 | // Module is a copy of another module | ||
134 | modules[i] = modules[modules[i]]; | ||
135 | break; | ||
136 | } | ||
137 | } | ||
138 | } | ||
139 | return modules; | ||
140 | }([ | ||
141 | /* 0 */, | ||
142 | /* 1 */, | ||
143 | /* 2 */ | ||
144 | /***/ (function(module, exports) { | ||
145 | |||
146 | // removed by extract-text-webpack-plugin | ||
147 | |||
148 | /***/ }), | ||
149 | /* 3 */ | ||
150 | /***/ (function(module, exports, __webpack_require__) { | ||
151 | |||
152 | 'use strict'; | ||
153 | |||
154 | module.exports = __webpack_require__(4); | ||
155 | |||
156 | |||
157 | /***/ }), | ||
158 | /* 4 */ | ||
159 | /***/ (function(module, exports, __webpack_require__) { | ||
160 | |||
161 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
162 | * Copyright 2013-present, Facebook, Inc. | ||
163 | * All rights reserved. | ||
164 | * | ||
165 | * This source code is licensed under the BSD-style license found in the | ||
166 | * LICENSE file in the root directory of this source tree. An additional grant | ||
167 | * of patent rights can be found in the PATENTS file in the same directory. | ||
168 | * | ||
169 | */ | ||
170 | |||
171 | 'use strict'; | ||
172 | |||
173 | var _assign = __webpack_require__(6); | ||
174 | |||
175 | var ReactChildren = __webpack_require__(7); | ||
176 | var ReactComponent = __webpack_require__(20); | ||
177 | var ReactPureComponent = __webpack_require__(23); | ||
178 | var ReactClass = __webpack_require__(24); | ||
179 | var ReactDOMFactories = __webpack_require__(26); | ||
180 | var ReactElement = __webpack_require__(11); | ||
181 | var ReactPropTypes = __webpack_require__(31); | ||
182 | var ReactVersion = __webpack_require__(36); | ||
183 | |||
184 | var onlyChild = __webpack_require__(37); | ||
185 | var warning = __webpack_require__(13); | ||
186 | |||
187 | var createElement = ReactElement.createElement; | ||
188 | var createFactory = ReactElement.createFactory; | ||
189 | var cloneElement = ReactElement.cloneElement; | ||
190 | |||
191 | if (process.env.NODE_ENV !== 'production') { | ||
192 | var canDefineProperty = __webpack_require__(15); | ||
193 | var ReactElementValidator = __webpack_require__(27); | ||
194 | var didWarnPropTypesDeprecated = false; | ||
195 | createElement = ReactElementValidator.createElement; | ||
196 | createFactory = ReactElementValidator.createFactory; | ||
197 | cloneElement = ReactElementValidator.cloneElement; | ||
198 | } | ||
199 | |||
200 | var __spread = _assign; | ||
201 | |||
202 | if (process.env.NODE_ENV !== 'production') { | ||
203 | var warned = false; | ||
204 | __spread = function () { | ||
205 | process.env.NODE_ENV !== 'production' ? warning(warned, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.') : void 0; | ||
206 | warned = true; | ||
207 | return _assign.apply(null, arguments); | ||
208 | }; | ||
209 | } | ||
210 | |||
211 | var React = { | ||
212 | |||
213 | // Modern | ||
214 | |||
215 | Children: { | ||
216 | map: ReactChildren.map, | ||
217 | forEach: ReactChildren.forEach, | ||
218 | count: ReactChildren.count, | ||
219 | toArray: ReactChildren.toArray, | ||
220 | only: onlyChild | ||
221 | }, | ||
222 | |||
223 | Component: ReactComponent, | ||
224 | PureComponent: ReactPureComponent, | ||
225 | |||
226 | createElement: createElement, | ||
227 | cloneElement: cloneElement, | ||
228 | isValidElement: ReactElement.isValidElement, | ||
229 | |||
230 | // Classic | ||
231 | |||
232 | PropTypes: ReactPropTypes, | ||
233 | createClass: ReactClass.createClass, | ||
234 | createFactory: createFactory, | ||
235 | createMixin: function (mixin) { | ||
236 | // Currently a noop. Will be used to validate and trace mixins. | ||
237 | return mixin; | ||
238 | }, | ||
239 | |||
240 | // This looks DOM specific but these are actually isomorphic helpers | ||
241 | // since they are just generating DOM strings. | ||
242 | DOM: ReactDOMFactories, | ||
243 | |||
244 | version: ReactVersion, | ||
245 | |||
246 | // Deprecated hook for JSX spread, don't use this for anything. | ||
247 | __spread: __spread | ||
248 | }; | ||
249 | |||
250 | // TODO: Fix tests so that this deprecation warning doesn't cause failures. | ||
251 | if (process.env.NODE_ENV !== 'production') { | ||
252 | if (canDefineProperty) { | ||
253 | Object.defineProperty(React, 'PropTypes', { | ||
254 | get: function () { | ||
255 | process.env.NODE_ENV !== 'production' ? warning(didWarnPropTypesDeprecated, 'Accessing PropTypes via the main React package is deprecated. Use ' + 'the prop-types package from npm instead.') : void 0; | ||
256 | didWarnPropTypesDeprecated = true; | ||
257 | return ReactPropTypes; | ||
258 | } | ||
259 | }); | ||
260 | } | ||
261 | } | ||
262 | |||
263 | module.exports = React; | ||
264 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
265 | |||
266 | /***/ }), | ||
267 | /* 5 */ | ||
268 | /***/ (function(module, exports) { | ||
269 | |||
270 | // shim for using process in browser | ||
271 | var process = module.exports = {}; | ||
272 | |||
273 | // cached from whatever global is present so that test runners that stub it | ||
274 | // don't break things. But we need to wrap it in a try catch in case it is | ||
275 | // wrapped in strict mode code which doesn't define any globals. It's inside a | ||
276 | // function because try/catches deoptimize in certain engines. | ||
277 | |||
278 | var cachedSetTimeout; | ||
279 | var cachedClearTimeout; | ||
280 | |||
281 | function defaultSetTimout() { | ||
282 | throw new Error('setTimeout has not been defined'); | ||
283 | } | ||
284 | function defaultClearTimeout () { | ||
285 | throw new Error('clearTimeout has not been defined'); | ||
286 | } | ||
287 | (function () { | ||
288 | try { | ||
289 | if (typeof setTimeout === 'function') { | ||
290 | cachedSetTimeout = setTimeout; | ||
291 | } else { | ||
292 | cachedSetTimeout = defaultSetTimout; | ||
293 | } | ||
294 | } catch (e) { | ||
295 | cachedSetTimeout = defaultSetTimout; | ||
296 | } | ||
297 | try { | ||
298 | if (typeof clearTimeout === 'function') { | ||
299 | cachedClearTimeout = clearTimeout; | ||
300 | } else { | ||
301 | cachedClearTimeout = defaultClearTimeout; | ||
302 | } | ||
303 | } catch (e) { | ||
304 | cachedClearTimeout = defaultClearTimeout; | ||
305 | } | ||
306 | } ()) | ||
307 | function runTimeout(fun) { | ||
308 | if (cachedSetTimeout === setTimeout) { | ||
309 | //normal enviroments in sane situations | ||
310 | return setTimeout(fun, 0); | ||
311 | } | ||
312 | // if setTimeout wasn't available but was latter defined | ||
313 | if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { | ||
314 | cachedSetTimeout = setTimeout; | ||
315 | return setTimeout(fun, 0); | ||
316 | } | ||
317 | try { | ||
318 | // when when somebody has screwed with setTimeout but no I.E. maddness | ||
319 | return cachedSetTimeout(fun, 0); | ||
320 | } catch(e){ | ||
321 | try { | ||
322 | // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally | ||
323 | return cachedSetTimeout.call(null, fun, 0); | ||
324 | } catch(e){ | ||
325 | // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error | ||
326 | return cachedSetTimeout.call(this, fun, 0); | ||
327 | } | ||
328 | } | ||
329 | |||
330 | |||
331 | } | ||
332 | function runClearTimeout(marker) { | ||
333 | if (cachedClearTimeout === clearTimeout) { | ||
334 | //normal enviroments in sane situations | ||
335 | return clearTimeout(marker); | ||
336 | } | ||
337 | // if clearTimeout wasn't available but was latter defined | ||
338 | if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { | ||
339 | cachedClearTimeout = clearTimeout; | ||
340 | return clearTimeout(marker); | ||
341 | } | ||
342 | try { | ||
343 | // when when somebody has screwed with setTimeout but no I.E. maddness | ||
344 | return cachedClearTimeout(marker); | ||
345 | } catch (e){ | ||
346 | try { | ||
347 | // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally | ||
348 | return cachedClearTimeout.call(null, marker); | ||
349 | } catch (e){ | ||
350 | // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. | ||
351 | // Some versions of I.E. have different rules for clearTimeout vs setTimeout | ||
352 | return cachedClearTimeout.call(this, marker); | ||
353 | } | ||
354 | } | ||
355 | |||
356 | |||
357 | |||
358 | } | ||
359 | var queue = []; | ||
360 | var draining = false; | ||
361 | var currentQueue; | ||
362 | var queueIndex = -1; | ||
363 | |||
364 | function cleanUpNextTick() { | ||
365 | if (!draining || !currentQueue) { | ||
366 | return; | ||
367 | } | ||
368 | draining = false; | ||
369 | if (currentQueue.length) { | ||
370 | queue = currentQueue.concat(queue); | ||
371 | } else { | ||
372 | queueIndex = -1; | ||
373 | } | ||
374 | if (queue.length) { | ||
375 | drainQueue(); | ||
376 | } | ||
377 | } | ||
378 | |||
379 | function drainQueue() { | ||
380 | if (draining) { | ||
381 | return; | ||
382 | } | ||
383 | var timeout = runTimeout(cleanUpNextTick); | ||
384 | draining = true; | ||
385 | |||
386 | var len = queue.length; | ||
387 | while(len) { | ||
388 | currentQueue = queue; | ||
389 | queue = []; | ||
390 | while (++queueIndex < len) { | ||
391 | if (currentQueue) { | ||
392 | currentQueue[queueIndex].run(); | ||
393 | } | ||
394 | } | ||
395 | queueIndex = -1; | ||
396 | len = queue.length; | ||
397 | } | ||
398 | currentQueue = null; | ||
399 | draining = false; | ||
400 | runClearTimeout(timeout); | ||
401 | } | ||
402 | |||
403 | process.nextTick = function (fun) { | ||
404 | var args = new Array(arguments.length - 1); | ||
405 | if (arguments.length > 1) { | ||
406 | for (var i = 1; i < arguments.length; i++) { | ||
407 | args[i - 1] = arguments[i]; | ||
408 | } | ||
409 | } | ||
410 | queue.push(new Item(fun, args)); | ||
411 | if (queue.length === 1 && !draining) { | ||
412 | runTimeout(drainQueue); | ||
413 | } | ||
414 | }; | ||
415 | |||
416 | // v8 likes predictible objects | ||
417 | function Item(fun, array) { | ||
418 | this.fun = fun; | ||
419 | this.array = array; | ||
420 | } | ||
421 | Item.prototype.run = function () { | ||
422 | this.fun.apply(null, this.array); | ||
423 | }; | ||
424 | process.title = 'browser'; | ||
425 | process.browser = true; | ||
426 | process.env = {}; | ||
427 | process.argv = []; | ||
428 | process.version = ''; // empty string to avoid regexp issues | ||
429 | process.versions = {}; | ||
430 | |||
431 | function noop() {} | ||
432 | |||
433 | process.on = noop; | ||
434 | process.addListener = noop; | ||
435 | process.once = noop; | ||
436 | process.off = noop; | ||
437 | process.removeListener = noop; | ||
438 | process.removeAllListeners = noop; | ||
439 | process.emit = noop; | ||
440 | |||
441 | process.binding = function (name) { | ||
442 | throw new Error('process.binding is not supported'); | ||
443 | }; | ||
444 | |||
445 | process.cwd = function () { return '/' }; | ||
446 | process.chdir = function (dir) { | ||
447 | throw new Error('process.chdir is not supported'); | ||
448 | }; | ||
449 | process.umask = function() { return 0; }; | ||
450 | |||
451 | |||
452 | /***/ }), | ||
453 | /* 6 */ | ||
454 | /***/ (function(module, exports) { | ||
455 | |||
456 | /* | ||
457 | object-assign | ||
458 | (c) Sindre Sorhus | ||
459 | @license MIT | ||
460 | */ | ||
461 | |||
462 | 'use strict'; | ||
463 | /* eslint-disable no-unused-vars */ | ||
464 | var getOwnPropertySymbols = Object.getOwnPropertySymbols; | ||
465 | var hasOwnProperty = Object.prototype.hasOwnProperty; | ||
466 | var propIsEnumerable = Object.prototype.propertyIsEnumerable; | ||
467 | |||
468 | function toObject(val) { | ||
469 | if (val === null || val === undefined) { | ||
470 | throw new TypeError('Object.assign cannot be called with null or undefined'); | ||
471 | } | ||
472 | |||
473 | return Object(val); | ||
474 | } | ||
475 | |||
476 | function shouldUseNative() { | ||
477 | try { | ||
478 | if (!Object.assign) { | ||
479 | return false; | ||
480 | } | ||
481 | |||
482 | // Detect buggy property enumeration order in older V8 versions. | ||
483 | |||
484 | // https://bugs.chromium.org/p/v8/issues/detail?id=4118 | ||
485 | var test1 = new String('abc'); // eslint-disable-line no-new-wrappers | ||
486 | test1[5] = 'de'; | ||
487 | if (Object.getOwnPropertyNames(test1)[0] === '5') { | ||
488 | return false; | ||
489 | } | ||
490 | |||
491 | // https://bugs.chromium.org/p/v8/issues/detail?id=3056 | ||
492 | var test2 = {}; | ||
493 | for (var i = 0; i < 10; i++) { | ||
494 | test2['_' + String.fromCharCode(i)] = i; | ||
495 | } | ||
496 | var order2 = Object.getOwnPropertyNames(test2).map(function (n) { | ||
497 | return test2[n]; | ||
498 | }); | ||
499 | if (order2.join('') !== '0123456789') { | ||
500 | return false; | ||
501 | } | ||
502 | |||
503 | // https://bugs.chromium.org/p/v8/issues/detail?id=3056 | ||
504 | var test3 = {}; | ||
505 | 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { | ||
506 | test3[letter] = letter; | ||
507 | }); | ||
508 | if (Object.keys(Object.assign({}, test3)).join('') !== | ||
509 | 'abcdefghijklmnopqrst') { | ||
510 | return false; | ||
511 | } | ||
512 | |||
513 | return true; | ||
514 | } catch (err) { | ||
515 | // We don't expect any of the above to throw, but better to be safe. | ||
516 | return false; | ||
517 | } | ||
518 | } | ||
519 | |||
520 | module.exports = shouldUseNative() ? Object.assign : function (target, source) { | ||
521 | var from; | ||
522 | var to = toObject(target); | ||
523 | var symbols; | ||
524 | |||
525 | for (var s = 1; s < arguments.length; s++) { | ||
526 | from = Object(arguments[s]); | ||
527 | |||
528 | for (var key in from) { | ||
529 | if (hasOwnProperty.call(from, key)) { | ||
530 | to[key] = from[key]; | ||
531 | } | ||
532 | } | ||
533 | |||
534 | if (getOwnPropertySymbols) { | ||
535 | symbols = getOwnPropertySymbols(from); | ||
536 | for (var i = 0; i < symbols.length; i++) { | ||
537 | if (propIsEnumerable.call(from, symbols[i])) { | ||
538 | to[symbols[i]] = from[symbols[i]]; | ||
539 | } | ||
540 | } | ||
541 | } | ||
542 | } | ||
543 | |||
544 | return to; | ||
545 | }; | ||
546 | |||
547 | |||
548 | /***/ }), | ||
549 | /* 7 */ | ||
550 | /***/ (function(module, exports, __webpack_require__) { | ||
551 | |||
552 | /** | ||
553 | * Copyright 2013-present, Facebook, Inc. | ||
554 | * All rights reserved. | ||
555 | * | ||
556 | * This source code is licensed under the BSD-style license found in the | ||
557 | * LICENSE file in the root directory of this source tree. An additional grant | ||
558 | * of patent rights can be found in the PATENTS file in the same directory. | ||
559 | * | ||
560 | */ | ||
561 | |||
562 | 'use strict'; | ||
563 | |||
564 | var PooledClass = __webpack_require__(8); | ||
565 | var ReactElement = __webpack_require__(11); | ||
566 | |||
567 | var emptyFunction = __webpack_require__(14); | ||
568 | var traverseAllChildren = __webpack_require__(17); | ||
569 | |||
570 | var twoArgumentPooler = PooledClass.twoArgumentPooler; | ||
571 | var fourArgumentPooler = PooledClass.fourArgumentPooler; | ||
572 | |||
573 | var userProvidedKeyEscapeRegex = /\/+/g; | ||
574 | function escapeUserProvidedKey(text) { | ||
575 | return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/'); | ||
576 | } | ||
577 | |||
578 | /** | ||
579 | * PooledClass representing the bookkeeping associated with performing a child | ||
580 | * traversal. Allows avoiding binding callbacks. | ||
581 | * | ||
582 | * @constructor ForEachBookKeeping | ||
583 | * @param {!function} forEachFunction Function to perform traversal with. | ||
584 | * @param {?*} forEachContext Context to perform context with. | ||
585 | */ | ||
586 | function ForEachBookKeeping(forEachFunction, forEachContext) { | ||
587 | this.func = forEachFunction; | ||
588 | this.context = forEachContext; | ||
589 | this.count = 0; | ||
590 | } | ||
591 | ForEachBookKeeping.prototype.destructor = function () { | ||
592 | this.func = null; | ||
593 | this.context = null; | ||
594 | this.count = 0; | ||
595 | }; | ||
596 | PooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler); | ||
597 | |||
598 | function forEachSingleChild(bookKeeping, child, name) { | ||
599 | var func = bookKeeping.func, | ||
600 | context = bookKeeping.context; | ||
601 | |||
602 | func.call(context, child, bookKeeping.count++); | ||
603 | } | ||
604 | |||
605 | /** | ||
606 | * Iterates through children that are typically specified as `props.children`. | ||
607 | * | ||
608 | * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach | ||
609 | * | ||
610 | * The provided forEachFunc(child, index) will be called for each | ||
611 | * leaf child. | ||
612 | * | ||
613 | * @param {?*} children Children tree container. | ||
614 | * @param {function(*, int)} forEachFunc | ||
615 | * @param {*} forEachContext Context for forEachContext. | ||
616 | */ | ||
617 | function forEachChildren(children, forEachFunc, forEachContext) { | ||
618 | if (children == null) { | ||
619 | return children; | ||
620 | } | ||
621 | var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext); | ||
622 | traverseAllChildren(children, forEachSingleChild, traverseContext); | ||
623 | ForEachBookKeeping.release(traverseContext); | ||
624 | } | ||
625 | |||
626 | /** | ||
627 | * PooledClass representing the bookkeeping associated with performing a child | ||
628 | * mapping. Allows avoiding binding callbacks. | ||
629 | * | ||
630 | * @constructor MapBookKeeping | ||
631 | * @param {!*} mapResult Object containing the ordered map of results. | ||
632 | * @param {!function} mapFunction Function to perform mapping with. | ||
633 | * @param {?*} mapContext Context to perform mapping with. | ||
634 | */ | ||
635 | function MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) { | ||
636 | this.result = mapResult; | ||
637 | this.keyPrefix = keyPrefix; | ||
638 | this.func = mapFunction; | ||
639 | this.context = mapContext; | ||
640 | this.count = 0; | ||
641 | } | ||
642 | MapBookKeeping.prototype.destructor = function () { | ||
643 | this.result = null; | ||
644 | this.keyPrefix = null; | ||
645 | this.func = null; | ||
646 | this.context = null; | ||
647 | this.count = 0; | ||
648 | }; | ||
649 | PooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler); | ||
650 | |||
651 | function mapSingleChildIntoContext(bookKeeping, child, childKey) { | ||
652 | var result = bookKeeping.result, | ||
653 | keyPrefix = bookKeeping.keyPrefix, | ||
654 | func = bookKeeping.func, | ||
655 | context = bookKeeping.context; | ||
656 | |||
657 | |||
658 | var mappedChild = func.call(context, child, bookKeeping.count++); | ||
659 | if (Array.isArray(mappedChild)) { | ||
660 | mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument); | ||
661 | } else if (mappedChild != null) { | ||
662 | if (ReactElement.isValidElement(mappedChild)) { | ||
663 | mappedChild = ReactElement.cloneAndReplaceKey(mappedChild, | ||
664 | // Keep both the (mapped) and old keys if they differ, just as | ||
665 | // traverseAllChildren used to do for objects as children | ||
666 | keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey); | ||
667 | } | ||
668 | result.push(mappedChild); | ||
669 | } | ||
670 | } | ||
671 | |||
672 | function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) { | ||
673 | var escapedPrefix = ''; | ||
674 | if (prefix != null) { | ||
675 | escapedPrefix = escapeUserProvidedKey(prefix) + '/'; | ||
676 | } | ||
677 | var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context); | ||
678 | traverseAllChildren(children, mapSingleChildIntoContext, traverseContext); | ||
679 | MapBookKeeping.release(traverseContext); | ||
680 | } | ||
681 | |||
682 | /** | ||
683 | * Maps children that are typically specified as `props.children`. | ||
684 | * | ||
685 | * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map | ||
686 | * | ||
687 | * The provided mapFunction(child, key, index) will be called for each | ||
688 | * leaf child. | ||
689 | * | ||
690 | * @param {?*} children Children tree container. | ||
691 | * @param {function(*, int)} func The map function. | ||
692 | * @param {*} context Context for mapFunction. | ||
693 | * @return {object} Object containing the ordered map of results. | ||
694 | */ | ||
695 | function mapChildren(children, func, context) { | ||
696 | if (children == null) { | ||
697 | return children; | ||
698 | } | ||
699 | var result = []; | ||
700 | mapIntoWithKeyPrefixInternal(children, result, null, func, context); | ||
701 | return result; | ||
702 | } | ||
703 | |||
704 | function forEachSingleChildDummy(traverseContext, child, name) { | ||
705 | return null; | ||
706 | } | ||
707 | |||
708 | /** | ||
709 | * Count the number of children that are typically specified as | ||
710 | * `props.children`. | ||
711 | * | ||
712 | * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count | ||
713 | * | ||
714 | * @param {?*} children Children tree container. | ||
715 | * @return {number} The number of children. | ||
716 | */ | ||
717 | function countChildren(children, context) { | ||
718 | return traverseAllChildren(children, forEachSingleChildDummy, null); | ||
719 | } | ||
720 | |||
721 | /** | ||
722 | * Flatten a children object (typically specified as `props.children`) and | ||
723 | * return an array with appropriately re-keyed children. | ||
724 | * | ||
725 | * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray | ||
726 | */ | ||
727 | function toArray(children) { | ||
728 | var result = []; | ||
729 | mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument); | ||
730 | return result; | ||
731 | } | ||
732 | |||
733 | var ReactChildren = { | ||
734 | forEach: forEachChildren, | ||
735 | map: mapChildren, | ||
736 | mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal, | ||
737 | count: countChildren, | ||
738 | toArray: toArray | ||
739 | }; | ||
740 | |||
741 | module.exports = ReactChildren; | ||
742 | |||
743 | /***/ }), | ||
744 | /* 8 */ | ||
745 | [323, 9], | ||
746 | /* 9 */ | ||
747 | /***/ (function(module, exports) { | ||
748 | |||
749 | /** | ||
750 | * Copyright (c) 2013-present, Facebook, Inc. | ||
751 | * All rights reserved. | ||
752 | * | ||
753 | * This source code is licensed under the BSD-style license found in the | ||
754 | * LICENSE file in the root directory of this source tree. An additional grant | ||
755 | * of patent rights can be found in the PATENTS file in the same directory. | ||
756 | * | ||
757 | * | ||
758 | */ | ||
759 | 'use strict'; | ||
760 | |||
761 | /** | ||
762 | * WARNING: DO NOT manually require this module. | ||
763 | * This is a replacement for `invariant(...)` used by the error code system | ||
764 | * and will _only_ be required by the corresponding babel pass. | ||
765 | * It always throws. | ||
766 | */ | ||
767 | |||
768 | function reactProdInvariant(code) { | ||
769 | var argCount = arguments.length - 1; | ||
770 | |||
771 | var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code; | ||
772 | |||
773 | for (var argIdx = 0; argIdx < argCount; argIdx++) { | ||
774 | message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]); | ||
775 | } | ||
776 | |||
777 | message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.'; | ||
778 | |||
779 | var error = new Error(message); | ||
780 | error.name = 'Invariant Violation'; | ||
781 | error.framesToPop = 1; // we don't care about reactProdInvariant's own frame | ||
782 | |||
783 | throw error; | ||
784 | } | ||
785 | |||
786 | module.exports = reactProdInvariant; | ||
787 | |||
788 | /***/ }), | ||
789 | /* 10 */ | ||
790 | /***/ (function(module, exports, __webpack_require__) { | ||
791 | |||
792 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
793 | * Copyright (c) 2013-present, Facebook, Inc. | ||
794 | * All rights reserved. | ||
795 | * | ||
796 | * This source code is licensed under the BSD-style license found in the | ||
797 | * LICENSE file in the root directory of this source tree. An additional grant | ||
798 | * of patent rights can be found in the PATENTS file in the same directory. | ||
799 | * | ||
800 | */ | ||
801 | |||
802 | 'use strict'; | ||
803 | |||
804 | /** | ||
805 | * Use invariant() to assert state which your program assumes to be true. | ||
806 | * | ||
807 | * Provide sprintf-style format (only %s is supported) and arguments | ||
808 | * to provide information about what broke and what you were | ||
809 | * expecting. | ||
810 | * | ||
811 | * The invariant message will be stripped in production, but the invariant | ||
812 | * will remain to ensure logic does not differ in production. | ||
813 | */ | ||
814 | |||
815 | var validateFormat = function validateFormat(format) {}; | ||
816 | |||
817 | if (process.env.NODE_ENV !== 'production') { | ||
818 | validateFormat = function validateFormat(format) { | ||
819 | if (format === undefined) { | ||
820 | throw new Error('invariant requires an error message argument'); | ||
821 | } | ||
822 | }; | ||
823 | } | ||
824 | |||
825 | function invariant(condition, format, a, b, c, d, e, f) { | ||
826 | validateFormat(format); | ||
827 | |||
828 | if (!condition) { | ||
829 | var error; | ||
830 | if (format === undefined) { | ||
831 | error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); | ||
832 | } else { | ||
833 | var args = [a, b, c, d, e, f]; | ||
834 | var argIndex = 0; | ||
835 | error = new Error(format.replace(/%s/g, function () { | ||
836 | return args[argIndex++]; | ||
837 | })); | ||
838 | error.name = 'Invariant Violation'; | ||
839 | } | ||
840 | |||
841 | error.framesToPop = 1; // we don't care about invariant's own frame | ||
842 | throw error; | ||
843 | } | ||
844 | } | ||
845 | |||
846 | module.exports = invariant; | ||
847 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
848 | |||
849 | /***/ }), | ||
850 | /* 11 */ | ||
851 | /***/ (function(module, exports, __webpack_require__) { | ||
852 | |||
853 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
854 | * Copyright 2014-present, Facebook, Inc. | ||
855 | * All rights reserved. | ||
856 | * | ||
857 | * This source code is licensed under the BSD-style license found in the | ||
858 | * LICENSE file in the root directory of this source tree. An additional grant | ||
859 | * of patent rights can be found in the PATENTS file in the same directory. | ||
860 | * | ||
861 | */ | ||
862 | |||
863 | 'use strict'; | ||
864 | |||
865 | var _assign = __webpack_require__(6); | ||
866 | |||
867 | var ReactCurrentOwner = __webpack_require__(12); | ||
868 | |||
869 | var warning = __webpack_require__(13); | ||
870 | var canDefineProperty = __webpack_require__(15); | ||
871 | var hasOwnProperty = Object.prototype.hasOwnProperty; | ||
872 | |||
873 | var REACT_ELEMENT_TYPE = __webpack_require__(16); | ||
874 | |||
875 | var RESERVED_PROPS = { | ||
876 | key: true, | ||
877 | ref: true, | ||
878 | __self: true, | ||
879 | __source: true | ||
880 | }; | ||
881 | |||
882 | var specialPropKeyWarningShown, specialPropRefWarningShown; | ||
883 | |||
884 | function hasValidRef(config) { | ||
885 | if (process.env.NODE_ENV !== 'production') { | ||
886 | if (hasOwnProperty.call(config, 'ref')) { | ||
887 | var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; | ||
888 | if (getter && getter.isReactWarning) { | ||
889 | return false; | ||
890 | } | ||
891 | } | ||
892 | } | ||
893 | return config.ref !== undefined; | ||
894 | } | ||
895 | |||
896 | function hasValidKey(config) { | ||
897 | if (process.env.NODE_ENV !== 'production') { | ||
898 | if (hasOwnProperty.call(config, 'key')) { | ||
899 | var getter = Object.getOwnPropertyDescriptor(config, 'key').get; | ||
900 | if (getter && getter.isReactWarning) { | ||
901 | return false; | ||
902 | } | ||
903 | } | ||
904 | } | ||
905 | return config.key !== undefined; | ||
906 | } | ||
907 | |||
908 | function defineKeyPropWarningGetter(props, displayName) { | ||
909 | var warnAboutAccessingKey = function () { | ||
910 | if (!specialPropKeyWarningShown) { | ||
911 | specialPropKeyWarningShown = true; | ||
912 | process.env.NODE_ENV !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0; | ||
913 | } | ||
914 | }; | ||
915 | warnAboutAccessingKey.isReactWarning = true; | ||
916 | Object.defineProperty(props, 'key', { | ||
917 | get: warnAboutAccessingKey, | ||
918 | configurable: true | ||
919 | }); | ||
920 | } | ||
921 | |||
922 | function defineRefPropWarningGetter(props, displayName) { | ||
923 | var warnAboutAccessingRef = function () { | ||
924 | if (!specialPropRefWarningShown) { | ||
925 | specialPropRefWarningShown = true; | ||
926 | process.env.NODE_ENV !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0; | ||
927 | } | ||
928 | }; | ||
929 | warnAboutAccessingRef.isReactWarning = true; | ||
930 | Object.defineProperty(props, 'ref', { | ||
931 | get: warnAboutAccessingRef, | ||
932 | configurable: true | ||
933 | }); | ||
934 | } | ||
935 | |||
936 | /** | ||
937 | * Factory method to create a new React element. This no longer adheres to | ||
938 | * the class pattern, so do not use new to call it. Also, no instanceof check | ||
939 | * will work. Instead test $$typeof field against Symbol.for('react.element') to check | ||
940 | * if something is a React Element. | ||
941 | * | ||
942 | * @param {*} type | ||
943 | * @param {*} key | ||
944 | * @param {string|object} ref | ||
945 | * @param {*} self A *temporary* helper to detect places where `this` is | ||
946 | * different from the `owner` when React.createElement is called, so that we | ||
947 | * can warn. We want to get rid of owner and replace string `ref`s with arrow | ||
948 | * functions, and as long as `this` and owner are the same, there will be no | ||
949 | * change in behavior. | ||
950 | * @param {*} source An annotation object (added by a transpiler or otherwise) | ||
951 | * indicating filename, line number, and/or other information. | ||
952 | * @param {*} owner | ||
953 | * @param {*} props | ||
954 | * @internal | ||
955 | */ | ||
956 | var ReactElement = function (type, key, ref, self, source, owner, props) { | ||
957 | var element = { | ||
958 | // This tag allow us to uniquely identify this as a React Element | ||
959 | $$typeof: REACT_ELEMENT_TYPE, | ||
960 | |||
961 | // Built-in properties that belong on the element | ||
962 | type: type, | ||
963 | key: key, | ||
964 | ref: ref, | ||
965 | props: props, | ||
966 | |||
967 | // Record the component responsible for creating this element. | ||
968 | _owner: owner | ||
969 | }; | ||
970 | |||
971 | if (process.env.NODE_ENV !== 'production') { | ||
972 | // The validation flag is currently mutative. We put it on | ||
973 | // an external backing store so that we can freeze the whole object. | ||
974 | // This can be replaced with a WeakMap once they are implemented in | ||
975 | // commonly used development environments. | ||
976 | element._store = {}; | ||
977 | |||
978 | // To make comparing ReactElements easier for testing purposes, we make | ||
979 | // the validation flag non-enumerable (where possible, which should | ||
980 | // include every environment we run tests in), so the test framework | ||
981 | // ignores it. | ||
982 | if (canDefineProperty) { | ||
983 | Object.defineProperty(element._store, 'validated', { | ||
984 | configurable: false, | ||
985 | enumerable: false, | ||
986 | writable: true, | ||
987 | value: false | ||
988 | }); | ||
989 | // self and source are DEV only properties. | ||
990 | Object.defineProperty(element, '_self', { | ||
991 | configurable: false, | ||
992 | enumerable: false, | ||
993 | writable: false, | ||
994 | value: self | ||
995 | }); | ||
996 | // Two elements created in two different places should be considered | ||
997 | // equal for testing purposes and therefore we hide it from enumeration. | ||
998 | Object.defineProperty(element, '_source', { | ||
999 | configurable: false, | ||
1000 | enumerable: false, | ||
1001 | writable: false, | ||
1002 | value: source | ||
1003 | }); | ||
1004 | } else { | ||
1005 | element._store.validated = false; | ||
1006 | element._self = self; | ||
1007 | element._source = source; | ||
1008 | } | ||
1009 | if (Object.freeze) { | ||
1010 | Object.freeze(element.props); | ||
1011 | Object.freeze(element); | ||
1012 | } | ||
1013 | } | ||
1014 | |||
1015 | return element; | ||
1016 | }; | ||
1017 | |||
1018 | /** | ||
1019 | * Create and return a new ReactElement of the given type. | ||
1020 | * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement | ||
1021 | */ | ||
1022 | ReactElement.createElement = function (type, config, children) { | ||
1023 | var propName; | ||
1024 | |||
1025 | // Reserved names are extracted | ||
1026 | var props = {}; | ||
1027 | |||
1028 | var key = null; | ||
1029 | var ref = null; | ||
1030 | var self = null; | ||
1031 | var source = null; | ||
1032 | |||
1033 | if (config != null) { | ||
1034 | if (hasValidRef(config)) { | ||
1035 | ref = config.ref; | ||
1036 | } | ||
1037 | if (hasValidKey(config)) { | ||
1038 | key = '' + config.key; | ||
1039 | } | ||
1040 | |||
1041 | self = config.__self === undefined ? null : config.__self; | ||
1042 | source = config.__source === undefined ? null : config.__source; | ||
1043 | // Remaining properties are added to a new props object | ||
1044 | for (propName in config) { | ||
1045 | if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { | ||
1046 | props[propName] = config[propName]; | ||
1047 | } | ||
1048 | } | ||
1049 | } | ||
1050 | |||
1051 | // Children can be more than one argument, and those are transferred onto | ||
1052 | // the newly allocated props object. | ||
1053 | var childrenLength = arguments.length - 2; | ||
1054 | if (childrenLength === 1) { | ||
1055 | props.children = children; | ||
1056 | } else if (childrenLength > 1) { | ||
1057 | var childArray = Array(childrenLength); | ||
1058 | for (var i = 0; i < childrenLength; i++) { | ||
1059 | childArray[i] = arguments[i + 2]; | ||
1060 | } | ||
1061 | if (process.env.NODE_ENV !== 'production') { | ||
1062 | if (Object.freeze) { | ||
1063 | Object.freeze(childArray); | ||
1064 | } | ||
1065 | } | ||
1066 | props.children = childArray; | ||
1067 | } | ||
1068 | |||
1069 | // Resolve default props | ||
1070 | if (type && type.defaultProps) { | ||
1071 | var defaultProps = type.defaultProps; | ||
1072 | for (propName in defaultProps) { | ||
1073 | if (props[propName] === undefined) { | ||
1074 | props[propName] = defaultProps[propName]; | ||
1075 | } | ||
1076 | } | ||
1077 | } | ||
1078 | if (process.env.NODE_ENV !== 'production') { | ||
1079 | if (key || ref) { | ||
1080 | if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) { | ||
1081 | var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; | ||
1082 | if (key) { | ||
1083 | defineKeyPropWarningGetter(props, displayName); | ||
1084 | } | ||
1085 | if (ref) { | ||
1086 | defineRefPropWarningGetter(props, displayName); | ||
1087 | } | ||
1088 | } | ||
1089 | } | ||
1090 | } | ||
1091 | return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); | ||
1092 | }; | ||
1093 | |||
1094 | /** | ||
1095 | * Return a function that produces ReactElements of a given type. | ||
1096 | * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory | ||
1097 | */ | ||
1098 | ReactElement.createFactory = function (type) { | ||
1099 | var factory = ReactElement.createElement.bind(null, type); | ||
1100 | // Expose the type on the factory and the prototype so that it can be | ||
1101 | // easily accessed on elements. E.g. `<Foo />.type === Foo`. | ||
1102 | // This should not be named `constructor` since this may not be the function | ||
1103 | // that created the element, and it may not even be a constructor. | ||
1104 | // Legacy hook TODO: Warn if this is accessed | ||
1105 | factory.type = type; | ||
1106 | return factory; | ||
1107 | }; | ||
1108 | |||
1109 | ReactElement.cloneAndReplaceKey = function (oldElement, newKey) { | ||
1110 | var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); | ||
1111 | |||
1112 | return newElement; | ||
1113 | }; | ||
1114 | |||
1115 | /** | ||
1116 | * Clone and return a new ReactElement using element as the starting point. | ||
1117 | * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement | ||
1118 | */ | ||
1119 | ReactElement.cloneElement = function (element, config, children) { | ||
1120 | var propName; | ||
1121 | |||
1122 | // Original props are copied | ||
1123 | var props = _assign({}, element.props); | ||
1124 | |||
1125 | // Reserved names are extracted | ||
1126 | var key = element.key; | ||
1127 | var ref = element.ref; | ||
1128 | // Self is preserved since the owner is preserved. | ||
1129 | var self = element._self; | ||
1130 | // Source is preserved since cloneElement is unlikely to be targeted by a | ||
1131 | // transpiler, and the original source is probably a better indicator of the | ||
1132 | // true owner. | ||
1133 | var source = element._source; | ||
1134 | |||
1135 | // Owner will be preserved, unless ref is overridden | ||
1136 | var owner = element._owner; | ||
1137 | |||
1138 | if (config != null) { | ||
1139 | if (hasValidRef(config)) { | ||
1140 | // Silently steal the ref from the parent. | ||
1141 | ref = config.ref; | ||
1142 | owner = ReactCurrentOwner.current; | ||
1143 | } | ||
1144 | if (hasValidKey(config)) { | ||
1145 | key = '' + config.key; | ||
1146 | } | ||
1147 | |||
1148 | // Remaining properties override existing props | ||
1149 | var defaultProps; | ||
1150 | if (element.type && element.type.defaultProps) { | ||
1151 | defaultProps = element.type.defaultProps; | ||
1152 | } | ||
1153 | for (propName in config) { | ||
1154 | if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { | ||
1155 | if (config[propName] === undefined && defaultProps !== undefined) { | ||
1156 | // Resolve default props | ||
1157 | props[propName] = defaultProps[propName]; | ||
1158 | } else { | ||
1159 | props[propName] = config[propName]; | ||
1160 | } | ||
1161 | } | ||
1162 | } | ||
1163 | } | ||
1164 | |||
1165 | // Children can be more than one argument, and those are transferred onto | ||
1166 | // the newly allocated props object. | ||
1167 | var childrenLength = arguments.length - 2; | ||
1168 | if (childrenLength === 1) { | ||
1169 | props.children = children; | ||
1170 | } else if (childrenLength > 1) { | ||
1171 | var childArray = Array(childrenLength); | ||
1172 | for (var i = 0; i < childrenLength; i++) { | ||
1173 | childArray[i] = arguments[i + 2]; | ||
1174 | } | ||
1175 | props.children = childArray; | ||
1176 | } | ||
1177 | |||
1178 | return ReactElement(element.type, key, ref, self, source, owner, props); | ||
1179 | }; | ||
1180 | |||
1181 | /** | ||
1182 | * Verifies the object is a ReactElement. | ||
1183 | * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement | ||
1184 | * @param {?object} object | ||
1185 | * @return {boolean} True if `object` is a valid component. | ||
1186 | * @final | ||
1187 | */ | ||
1188 | ReactElement.isValidElement = function (object) { | ||
1189 | return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; | ||
1190 | }; | ||
1191 | |||
1192 | module.exports = ReactElement; | ||
1193 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
1194 | |||
1195 | /***/ }), | ||
1196 | /* 12 */ | ||
1197 | /***/ (function(module, exports) { | ||
1198 | |||
1199 | /** | ||
1200 | * Copyright 2013-present, Facebook, Inc. | ||
1201 | * All rights reserved. | ||
1202 | * | ||
1203 | * This source code is licensed under the BSD-style license found in the | ||
1204 | * LICENSE file in the root directory of this source tree. An additional grant | ||
1205 | * of patent rights can be found in the PATENTS file in the same directory. | ||
1206 | * | ||
1207 | * | ||
1208 | */ | ||
1209 | |||
1210 | 'use strict'; | ||
1211 | |||
1212 | /** | ||
1213 | * Keeps track of the current owner. | ||
1214 | * | ||
1215 | * The current owner is the component who should own any components that are | ||
1216 | * currently being constructed. | ||
1217 | */ | ||
1218 | var ReactCurrentOwner = { | ||
1219 | |||
1220 | /** | ||
1221 | * @internal | ||
1222 | * @type {ReactComponent} | ||
1223 | */ | ||
1224 | current: null | ||
1225 | |||
1226 | }; | ||
1227 | |||
1228 | module.exports = ReactCurrentOwner; | ||
1229 | |||
1230 | /***/ }), | ||
1231 | /* 13 */ | ||
1232 | /***/ (function(module, exports, __webpack_require__) { | ||
1233 | |||
1234 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
1235 | * Copyright 2014-2015, Facebook, Inc. | ||
1236 | * All rights reserved. | ||
1237 | * | ||
1238 | * This source code is licensed under the BSD-style license found in the | ||
1239 | * LICENSE file in the root directory of this source tree. An additional grant | ||
1240 | * of patent rights can be found in the PATENTS file in the same directory. | ||
1241 | * | ||
1242 | */ | ||
1243 | |||
1244 | 'use strict'; | ||
1245 | |||
1246 | var emptyFunction = __webpack_require__(14); | ||
1247 | |||
1248 | /** | ||
1249 | * Similar to invariant but only logs a warning if the condition is not met. | ||
1250 | * This can be used to log issues in development environments in critical | ||
1251 | * paths. Removing the logging code for production environments will keep the | ||
1252 | * same logic and follow the same code paths. | ||
1253 | */ | ||
1254 | |||
1255 | var warning = emptyFunction; | ||
1256 | |||
1257 | if (process.env.NODE_ENV !== 'production') { | ||
1258 | (function () { | ||
1259 | var printWarning = function printWarning(format) { | ||
1260 | for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
1261 | args[_key - 1] = arguments[_key]; | ||
1262 | } | ||
1263 | |||
1264 | var argIndex = 0; | ||
1265 | var message = 'Warning: ' + format.replace(/%s/g, function () { | ||
1266 | return args[argIndex++]; | ||
1267 | }); | ||
1268 | if (typeof console !== 'undefined') { | ||
1269 | console.error(message); | ||
1270 | } | ||
1271 | try { | ||
1272 | // --- Welcome to debugging React --- | ||
1273 | // This error was thrown as a convenience so that you can use this stack | ||
1274 | // to find the callsite that caused this warning to fire. | ||
1275 | throw new Error(message); | ||
1276 | } catch (x) {} | ||
1277 | }; | ||
1278 | |||
1279 | warning = function warning(condition, format) { | ||
1280 | if (format === undefined) { | ||
1281 | throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); | ||
1282 | } | ||
1283 | |||
1284 | if (format.indexOf('Failed Composite propType: ') === 0) { | ||
1285 | return; // Ignore CompositeComponent proptype check. | ||
1286 | } | ||
1287 | |||
1288 | if (!condition) { | ||
1289 | for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { | ||
1290 | args[_key2 - 2] = arguments[_key2]; | ||
1291 | } | ||
1292 | |||
1293 | printWarning.apply(undefined, [format].concat(args)); | ||
1294 | } | ||
1295 | }; | ||
1296 | })(); | ||
1297 | } | ||
1298 | |||
1299 | module.exports = warning; | ||
1300 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
1301 | |||
1302 | /***/ }), | ||
1303 | /* 14 */ | ||
1304 | /***/ (function(module, exports) { | ||
1305 | |||
1306 | "use strict"; | ||
1307 | |||
1308 | /** | ||
1309 | * Copyright (c) 2013-present, Facebook, Inc. | ||
1310 | * All rights reserved. | ||
1311 | * | ||
1312 | * This source code is licensed under the BSD-style license found in the | ||
1313 | * LICENSE file in the root directory of this source tree. An additional grant | ||
1314 | * of patent rights can be found in the PATENTS file in the same directory. | ||
1315 | * | ||
1316 | * | ||
1317 | */ | ||
1318 | |||
1319 | function makeEmptyFunction(arg) { | ||
1320 | return function () { | ||
1321 | return arg; | ||
1322 | }; | ||
1323 | } | ||
1324 | |||
1325 | /** | ||
1326 | * This function accepts and discards inputs; it has no side effects. This is | ||
1327 | * primarily useful idiomatically for overridable function endpoints which | ||
1328 | * always need to be callable, since JS lacks a null-call idiom ala Cocoa. | ||
1329 | */ | ||
1330 | var emptyFunction = function emptyFunction() {}; | ||
1331 | |||
1332 | emptyFunction.thatReturns = makeEmptyFunction; | ||
1333 | emptyFunction.thatReturnsFalse = makeEmptyFunction(false); | ||
1334 | emptyFunction.thatReturnsTrue = makeEmptyFunction(true); | ||
1335 | emptyFunction.thatReturnsNull = makeEmptyFunction(null); | ||
1336 | emptyFunction.thatReturnsThis = function () { | ||
1337 | return this; | ||
1338 | }; | ||
1339 | emptyFunction.thatReturnsArgument = function (arg) { | ||
1340 | return arg; | ||
1341 | }; | ||
1342 | |||
1343 | module.exports = emptyFunction; | ||
1344 | |||
1345 | /***/ }), | ||
1346 | /* 15 */ | ||
1347 | /***/ (function(module, exports, __webpack_require__) { | ||
1348 | |||
1349 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
1350 | * Copyright 2013-present, Facebook, Inc. | ||
1351 | * All rights reserved. | ||
1352 | * | ||
1353 | * This source code is licensed under the BSD-style license found in the | ||
1354 | * LICENSE file in the root directory of this source tree. An additional grant | ||
1355 | * of patent rights can be found in the PATENTS file in the same directory. | ||
1356 | * | ||
1357 | * | ||
1358 | */ | ||
1359 | |||
1360 | 'use strict'; | ||
1361 | |||
1362 | var canDefineProperty = false; | ||
1363 | if (process.env.NODE_ENV !== 'production') { | ||
1364 | try { | ||
1365 | // $FlowFixMe https://github.com/facebook/flow/issues/285 | ||
1366 | Object.defineProperty({}, 'x', { get: function () {} }); | ||
1367 | canDefineProperty = true; | ||
1368 | } catch (x) { | ||
1369 | // IE will fail on defineProperty | ||
1370 | } | ||
1371 | } | ||
1372 | |||
1373 | module.exports = canDefineProperty; | ||
1374 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
1375 | |||
1376 | /***/ }), | ||
1377 | /* 16 */ | ||
1378 | /***/ (function(module, exports) { | ||
1379 | |||
1380 | /** | ||
1381 | * Copyright 2014-present, Facebook, Inc. | ||
1382 | * All rights reserved. | ||
1383 | * | ||
1384 | * This source code is licensed under the BSD-style license found in the | ||
1385 | * LICENSE file in the root directory of this source tree. An additional grant | ||
1386 | * of patent rights can be found in the PATENTS file in the same directory. | ||
1387 | * | ||
1388 | * | ||
1389 | */ | ||
1390 | |||
1391 | 'use strict'; | ||
1392 | |||
1393 | // The Symbol used to tag the ReactElement type. If there is no native Symbol | ||
1394 | // nor polyfill, then a plain number is used for performance. | ||
1395 | |||
1396 | var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7; | ||
1397 | |||
1398 | module.exports = REACT_ELEMENT_TYPE; | ||
1399 | |||
1400 | /***/ }), | ||
1401 | /* 17 */ | ||
1402 | /***/ (function(module, exports, __webpack_require__) { | ||
1403 | |||
1404 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
1405 | * Copyright 2013-present, Facebook, Inc. | ||
1406 | * All rights reserved. | ||
1407 | * | ||
1408 | * This source code is licensed under the BSD-style license found in the | ||
1409 | * LICENSE file in the root directory of this source tree. An additional grant | ||
1410 | * of patent rights can be found in the PATENTS file in the same directory. | ||
1411 | * | ||
1412 | */ | ||
1413 | |||
1414 | 'use strict'; | ||
1415 | |||
1416 | var _prodInvariant = __webpack_require__(9); | ||
1417 | |||
1418 | var ReactCurrentOwner = __webpack_require__(12); | ||
1419 | var REACT_ELEMENT_TYPE = __webpack_require__(16); | ||
1420 | |||
1421 | var getIteratorFn = __webpack_require__(18); | ||
1422 | var invariant = __webpack_require__(10); | ||
1423 | var KeyEscapeUtils = __webpack_require__(19); | ||
1424 | var warning = __webpack_require__(13); | ||
1425 | |||
1426 | var SEPARATOR = '.'; | ||
1427 | var SUBSEPARATOR = ':'; | ||
1428 | |||
1429 | /** | ||
1430 | * This is inlined from ReactElement since this file is shared between | ||
1431 | * isomorphic and renderers. We could extract this to a | ||
1432 | * | ||
1433 | */ | ||
1434 | |||
1435 | /** | ||
1436 | * TODO: Test that a single child and an array with one item have the same key | ||
1437 | * pattern. | ||
1438 | */ | ||
1439 | |||
1440 | var didWarnAboutMaps = false; | ||
1441 | |||
1442 | /** | ||
1443 | * Generate a key string that identifies a component within a set. | ||
1444 | * | ||
1445 | * @param {*} component A component that could contain a manual key. | ||
1446 | * @param {number} index Index that is used if a manual key is not provided. | ||
1447 | * @return {string} | ||
1448 | */ | ||
1449 | function getComponentKey(component, index) { | ||
1450 | // Do some typechecking here since we call this blindly. We want to ensure | ||
1451 | // that we don't block potential future ES APIs. | ||
1452 | if (component && typeof component === 'object' && component.key != null) { | ||
1453 | // Explicit key | ||
1454 | return KeyEscapeUtils.escape(component.key); | ||
1455 | } | ||
1456 | // Implicit key determined by the index in the set | ||
1457 | return index.toString(36); | ||
1458 | } | ||
1459 | |||
1460 | /** | ||
1461 | * @param {?*} children Children tree container. | ||
1462 | * @param {!string} nameSoFar Name of the key path so far. | ||
1463 | * @param {!function} callback Callback to invoke with each child found. | ||
1464 | * @param {?*} traverseContext Used to pass information throughout the traversal | ||
1465 | * process. | ||
1466 | * @return {!number} The number of children in this subtree. | ||
1467 | */ | ||
1468 | function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { | ||
1469 | var type = typeof children; | ||
1470 | |||
1471 | if (type === 'undefined' || type === 'boolean') { | ||
1472 | // All of the above are perceived as null. | ||
1473 | children = null; | ||
1474 | } | ||
1475 | |||
1476 | if (children === null || type === 'string' || type === 'number' || | ||
1477 | // The following is inlined from ReactElement. This means we can optimize | ||
1478 | // some checks. React Fiber also inlines this logic for similar purposes. | ||
1479 | type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) { | ||
1480 | callback(traverseContext, children, | ||
1481 | // If it's the only child, treat the name as if it was wrapped in an array | ||
1482 | // so that it's consistent if the number of children grows. | ||
1483 | nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar); | ||
1484 | return 1; | ||
1485 | } | ||
1486 | |||
1487 | var child; | ||
1488 | var nextName; | ||
1489 | var subtreeCount = 0; // Count of children found in the current subtree. | ||
1490 | var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; | ||
1491 | |||
1492 | if (Array.isArray(children)) { | ||
1493 | for (var i = 0; i < children.length; i++) { | ||
1494 | child = children[i]; | ||
1495 | nextName = nextNamePrefix + getComponentKey(child, i); | ||
1496 | subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); | ||
1497 | } | ||
1498 | } else { | ||
1499 | var iteratorFn = getIteratorFn(children); | ||
1500 | if (iteratorFn) { | ||
1501 | var iterator = iteratorFn.call(children); | ||
1502 | var step; | ||
1503 | if (iteratorFn !== children.entries) { | ||
1504 | var ii = 0; | ||
1505 | while (!(step = iterator.next()).done) { | ||
1506 | child = step.value; | ||
1507 | nextName = nextNamePrefix + getComponentKey(child, ii++); | ||
1508 | subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); | ||
1509 | } | ||
1510 | } else { | ||
1511 | if (process.env.NODE_ENV !== 'production') { | ||
1512 | var mapsAsChildrenAddendum = ''; | ||
1513 | if (ReactCurrentOwner.current) { | ||
1514 | var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName(); | ||
1515 | if (mapsAsChildrenOwnerName) { | ||
1516 | mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.'; | ||
1517 | } | ||
1518 | } | ||
1519 | process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0; | ||
1520 | didWarnAboutMaps = true; | ||
1521 | } | ||
1522 | // Iterator will provide entry [k,v] tuples rather than values. | ||
1523 | while (!(step = iterator.next()).done) { | ||
1524 | var entry = step.value; | ||
1525 | if (entry) { | ||
1526 | child = entry[1]; | ||
1527 | nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0); | ||
1528 | subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); | ||
1529 | } | ||
1530 | } | ||
1531 | } | ||
1532 | } else if (type === 'object') { | ||
1533 | var addendum = ''; | ||
1534 | if (process.env.NODE_ENV !== 'production') { | ||
1535 | addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.'; | ||
1536 | if (children._isReactElement) { | ||
1537 | addendum = ' It looks like you\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.'; | ||
1538 | } | ||
1539 | if (ReactCurrentOwner.current) { | ||
1540 | var name = ReactCurrentOwner.current.getName(); | ||
1541 | if (name) { | ||
1542 | addendum += ' Check the render method of `' + name + '`.'; | ||
1543 | } | ||
1544 | } | ||
1545 | } | ||
1546 | var childrenString = String(children); | ||
1547 | true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0; | ||
1548 | } | ||
1549 | } | ||
1550 | |||
1551 | return subtreeCount; | ||
1552 | } | ||
1553 | |||
1554 | /** | ||
1555 | * Traverses children that are typically specified as `props.children`, but | ||
1556 | * might also be specified through attributes: | ||
1557 | * | ||
1558 | * - `traverseAllChildren(this.props.children, ...)` | ||
1559 | * - `traverseAllChildren(this.props.leftPanelChildren, ...)` | ||
1560 | * | ||
1561 | * The `traverseContext` is an optional argument that is passed through the | ||
1562 | * entire traversal. It can be used to store accumulations or anything else that | ||
1563 | * the callback might find relevant. | ||
1564 | * | ||
1565 | * @param {?*} children Children tree object. | ||
1566 | * @param {!function} callback To invoke upon traversing each child. | ||
1567 | * @param {?*} traverseContext Context for traversal. | ||
1568 | * @return {!number} The number of children in this subtree. | ||
1569 | */ | ||
1570 | function traverseAllChildren(children, callback, traverseContext) { | ||
1571 | if (children == null) { | ||
1572 | return 0; | ||
1573 | } | ||
1574 | |||
1575 | return traverseAllChildrenImpl(children, '', callback, traverseContext); | ||
1576 | } | ||
1577 | |||
1578 | module.exports = traverseAllChildren; | ||
1579 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
1580 | |||
1581 | /***/ }), | ||
1582 | /* 18 */ | ||
1583 | /***/ (function(module, exports) { | ||
1584 | |||
1585 | /** | ||
1586 | * Copyright 2013-present, Facebook, Inc. | ||
1587 | * All rights reserved. | ||
1588 | * | ||
1589 | * This source code is licensed under the BSD-style license found in the | ||
1590 | * LICENSE file in the root directory of this source tree. An additional grant | ||
1591 | * of patent rights can be found in the PATENTS file in the same directory. | ||
1592 | * | ||
1593 | * | ||
1594 | */ | ||
1595 | |||
1596 | 'use strict'; | ||
1597 | |||
1598 | /* global Symbol */ | ||
1599 | |||
1600 | var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; | ||
1601 | var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. | ||
1602 | |||
1603 | /** | ||
1604 | * Returns the iterator method function contained on the iterable object. | ||
1605 | * | ||
1606 | * Be sure to invoke the function with the iterable as context: | ||
1607 | * | ||
1608 | * var iteratorFn = getIteratorFn(myIterable); | ||
1609 | * if (iteratorFn) { | ||
1610 | * var iterator = iteratorFn.call(myIterable); | ||
1611 | * ... | ||
1612 | * } | ||
1613 | * | ||
1614 | * @param {?object} maybeIterable | ||
1615 | * @return {?function} | ||
1616 | */ | ||
1617 | function getIteratorFn(maybeIterable) { | ||
1618 | var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); | ||
1619 | if (typeof iteratorFn === 'function') { | ||
1620 | return iteratorFn; | ||
1621 | } | ||
1622 | } | ||
1623 | |||
1624 | module.exports = getIteratorFn; | ||
1625 | |||
1626 | /***/ }), | ||
1627 | /* 19 */ | ||
1628 | /***/ (function(module, exports) { | ||
1629 | |||
1630 | /** | ||
1631 | * Copyright 2013-present, Facebook, Inc. | ||
1632 | * All rights reserved. | ||
1633 | * | ||
1634 | * This source code is licensed under the BSD-style license found in the | ||
1635 | * LICENSE file in the root directory of this source tree. An additional grant | ||
1636 | * of patent rights can be found in the PATENTS file in the same directory. | ||
1637 | * | ||
1638 | * | ||
1639 | */ | ||
1640 | |||
1641 | 'use strict'; | ||
1642 | |||
1643 | /** | ||
1644 | * Escape and wrap key so it is safe to use as a reactid | ||
1645 | * | ||
1646 | * @param {string} key to be escaped. | ||
1647 | * @return {string} the escaped key. | ||
1648 | */ | ||
1649 | |||
1650 | function escape(key) { | ||
1651 | var escapeRegex = /[=:]/g; | ||
1652 | var escaperLookup = { | ||
1653 | '=': '=0', | ||
1654 | ':': '=2' | ||
1655 | }; | ||
1656 | var escapedString = ('' + key).replace(escapeRegex, function (match) { | ||
1657 | return escaperLookup[match]; | ||
1658 | }); | ||
1659 | |||
1660 | return '$' + escapedString; | ||
1661 | } | ||
1662 | |||
1663 | /** | ||
1664 | * Unescape and unwrap key for human-readable display | ||
1665 | * | ||
1666 | * @param {string} key to unescape. | ||
1667 | * @return {string} the unescaped key. | ||
1668 | */ | ||
1669 | function unescape(key) { | ||
1670 | var unescapeRegex = /(=0|=2)/g; | ||
1671 | var unescaperLookup = { | ||
1672 | '=0': '=', | ||
1673 | '=2': ':' | ||
1674 | }; | ||
1675 | var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1); | ||
1676 | |||
1677 | return ('' + keySubstring).replace(unescapeRegex, function (match) { | ||
1678 | return unescaperLookup[match]; | ||
1679 | }); | ||
1680 | } | ||
1681 | |||
1682 | var KeyEscapeUtils = { | ||
1683 | escape: escape, | ||
1684 | unescape: unescape | ||
1685 | }; | ||
1686 | |||
1687 | module.exports = KeyEscapeUtils; | ||
1688 | |||
1689 | /***/ }), | ||
1690 | /* 20 */ | ||
1691 | /***/ (function(module, exports, __webpack_require__) { | ||
1692 | |||
1693 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
1694 | * Copyright 2013-present, Facebook, Inc. | ||
1695 | * All rights reserved. | ||
1696 | * | ||
1697 | * This source code is licensed under the BSD-style license found in the | ||
1698 | * LICENSE file in the root directory of this source tree. An additional grant | ||
1699 | * of patent rights can be found in the PATENTS file in the same directory. | ||
1700 | * | ||
1701 | */ | ||
1702 | |||
1703 | 'use strict'; | ||
1704 | |||
1705 | var _prodInvariant = __webpack_require__(9); | ||
1706 | |||
1707 | var ReactNoopUpdateQueue = __webpack_require__(21); | ||
1708 | |||
1709 | var canDefineProperty = __webpack_require__(15); | ||
1710 | var emptyObject = __webpack_require__(22); | ||
1711 | var invariant = __webpack_require__(10); | ||
1712 | var warning = __webpack_require__(13); | ||
1713 | |||
1714 | /** | ||
1715 | * Base class helpers for the updating state of a component. | ||
1716 | */ | ||
1717 | function ReactComponent(props, context, updater) { | ||
1718 | this.props = props; | ||
1719 | this.context = context; | ||
1720 | this.refs = emptyObject; | ||
1721 | // We initialize the default updater but the real one gets injected by the | ||
1722 | // renderer. | ||
1723 | this.updater = updater || ReactNoopUpdateQueue; | ||
1724 | } | ||
1725 | |||
1726 | ReactComponent.prototype.isReactComponent = {}; | ||
1727 | |||
1728 | /** | ||
1729 | * Sets a subset of the state. Always use this to mutate | ||
1730 | * state. You should treat `this.state` as immutable. | ||
1731 | * | ||
1732 | * There is no guarantee that `this.state` will be immediately updated, so | ||
1733 | * accessing `this.state` after calling this method may return the old value. | ||
1734 | * | ||
1735 | * There is no guarantee that calls to `setState` will run synchronously, | ||
1736 | * as they may eventually be batched together. You can provide an optional | ||
1737 | * callback that will be executed when the call to setState is actually | ||
1738 | * completed. | ||
1739 | * | ||
1740 | * When a function is provided to setState, it will be called at some point in | ||
1741 | * the future (not synchronously). It will be called with the up to date | ||
1742 | * component arguments (state, props, context). These values can be different | ||
1743 | * from this.* because your function may be called after receiveProps but before | ||
1744 | * shouldComponentUpdate, and this new state, props, and context will not yet be | ||
1745 | * assigned to this. | ||
1746 | * | ||
1747 | * @param {object|function} partialState Next partial state or function to | ||
1748 | * produce next partial state to be merged with current state. | ||
1749 | * @param {?function} callback Called after state is updated. | ||
1750 | * @final | ||
1751 | * @protected | ||
1752 | */ | ||
1753 | ReactComponent.prototype.setState = function (partialState, callback) { | ||
1754 | !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0; | ||
1755 | this.updater.enqueueSetState(this, partialState); | ||
1756 | if (callback) { | ||
1757 | this.updater.enqueueCallback(this, callback, 'setState'); | ||
1758 | } | ||
1759 | }; | ||
1760 | |||
1761 | /** | ||
1762 | * Forces an update. This should only be invoked when it is known with | ||
1763 | * certainty that we are **not** in a DOM transaction. | ||
1764 | * | ||
1765 | * You may want to call this when you know that some deeper aspect of the | ||
1766 | * component's state has changed but `setState` was not called. | ||
1767 | * | ||
1768 | * This will not invoke `shouldComponentUpdate`, but it will invoke | ||
1769 | * `componentWillUpdate` and `componentDidUpdate`. | ||
1770 | * | ||
1771 | * @param {?function} callback Called after update is complete. | ||
1772 | * @final | ||
1773 | * @protected | ||
1774 | */ | ||
1775 | ReactComponent.prototype.forceUpdate = function (callback) { | ||
1776 | this.updater.enqueueForceUpdate(this); | ||
1777 | if (callback) { | ||
1778 | this.updater.enqueueCallback(this, callback, 'forceUpdate'); | ||
1779 | } | ||
1780 | }; | ||
1781 | |||
1782 | /** | ||
1783 | * Deprecated APIs. These APIs used to exist on classic React classes but since | ||
1784 | * we would like to deprecate them, we're not going to move them over to this | ||
1785 | * modern base class. Instead, we define a getter that warns if it's accessed. | ||
1786 | */ | ||
1787 | if (process.env.NODE_ENV !== 'production') { | ||
1788 | var deprecatedAPIs = { | ||
1789 | isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], | ||
1790 | replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] | ||
1791 | }; | ||
1792 | var defineDeprecationWarning = function (methodName, info) { | ||
1793 | if (canDefineProperty) { | ||
1794 | Object.defineProperty(ReactComponent.prototype, methodName, { | ||
1795 | get: function () { | ||
1796 | process.env.NODE_ENV !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0; | ||
1797 | return undefined; | ||
1798 | } | ||
1799 | }); | ||
1800 | } | ||
1801 | }; | ||
1802 | for (var fnName in deprecatedAPIs) { | ||
1803 | if (deprecatedAPIs.hasOwnProperty(fnName)) { | ||
1804 | defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); | ||
1805 | } | ||
1806 | } | ||
1807 | } | ||
1808 | |||
1809 | module.exports = ReactComponent; | ||
1810 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
1811 | |||
1812 | /***/ }), | ||
1813 | /* 21 */ | ||
1814 | /***/ (function(module, exports, __webpack_require__) { | ||
1815 | |||
1816 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
1817 | * Copyright 2015-present, Facebook, Inc. | ||
1818 | * All rights reserved. | ||
1819 | * | ||
1820 | * This source code is licensed under the BSD-style license found in the | ||
1821 | * LICENSE file in the root directory of this source tree. An additional grant | ||
1822 | * of patent rights can be found in the PATENTS file in the same directory. | ||
1823 | * | ||
1824 | */ | ||
1825 | |||
1826 | 'use strict'; | ||
1827 | |||
1828 | var warning = __webpack_require__(13); | ||
1829 | |||
1830 | function warnNoop(publicInstance, callerName) { | ||
1831 | if (process.env.NODE_ENV !== 'production') { | ||
1832 | var constructor = publicInstance.constructor; | ||
1833 | process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0; | ||
1834 | } | ||
1835 | } | ||
1836 | |||
1837 | /** | ||
1838 | * This is the abstract API for an update queue. | ||
1839 | */ | ||
1840 | var ReactNoopUpdateQueue = { | ||
1841 | |||
1842 | /** | ||
1843 | * Checks whether or not this composite component is mounted. | ||
1844 | * @param {ReactClass} publicInstance The instance we want to test. | ||
1845 | * @return {boolean} True if mounted, false otherwise. | ||
1846 | * @protected | ||
1847 | * @final | ||
1848 | */ | ||
1849 | isMounted: function (publicInstance) { | ||
1850 | return false; | ||
1851 | }, | ||
1852 | |||
1853 | /** | ||
1854 | * Enqueue a callback that will be executed after all the pending updates | ||
1855 | * have processed. | ||
1856 | * | ||
1857 | * @param {ReactClass} publicInstance The instance to use as `this` context. | ||
1858 | * @param {?function} callback Called after state is updated. | ||
1859 | * @internal | ||
1860 | */ | ||
1861 | enqueueCallback: function (publicInstance, callback) {}, | ||
1862 | |||
1863 | /** | ||
1864 | * Forces an update. This should only be invoked when it is known with | ||
1865 | * certainty that we are **not** in a DOM transaction. | ||
1866 | * | ||
1867 | * You may want to call this when you know that some deeper aspect of the | ||
1868 | * component's state has changed but `setState` was not called. | ||
1869 | * | ||
1870 | * This will not invoke `shouldComponentUpdate`, but it will invoke | ||
1871 | * `componentWillUpdate` and `componentDidUpdate`. | ||
1872 | * | ||
1873 | * @param {ReactClass} publicInstance The instance that should rerender. | ||
1874 | * @internal | ||
1875 | */ | ||
1876 | enqueueForceUpdate: function (publicInstance) { | ||
1877 | warnNoop(publicInstance, 'forceUpdate'); | ||
1878 | }, | ||
1879 | |||
1880 | /** | ||
1881 | * Replaces all of the state. Always use this or `setState` to mutate state. | ||
1882 | * You should treat `this.state` as immutable. | ||
1883 | * | ||
1884 | * There is no guarantee that `this.state` will be immediately updated, so | ||
1885 | * accessing `this.state` after calling this method may return the old value. | ||
1886 | * | ||
1887 | * @param {ReactClass} publicInstance The instance that should rerender. | ||
1888 | * @param {object} completeState Next state. | ||
1889 | * @internal | ||
1890 | */ | ||
1891 | enqueueReplaceState: function (publicInstance, completeState) { | ||
1892 | warnNoop(publicInstance, 'replaceState'); | ||
1893 | }, | ||
1894 | |||
1895 | /** | ||
1896 | * Sets a subset of the state. This only exists because _pendingState is | ||
1897 | * internal. This provides a merging strategy that is not available to deep | ||
1898 | * properties which is confusing. TODO: Expose pendingState or don't use it | ||
1899 | * during the merge. | ||
1900 | * | ||
1901 | * @param {ReactClass} publicInstance The instance that should rerender. | ||
1902 | * @param {object} partialState Next partial state to be merged with state. | ||
1903 | * @internal | ||
1904 | */ | ||
1905 | enqueueSetState: function (publicInstance, partialState) { | ||
1906 | warnNoop(publicInstance, 'setState'); | ||
1907 | } | ||
1908 | }; | ||
1909 | |||
1910 | module.exports = ReactNoopUpdateQueue; | ||
1911 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
1912 | |||
1913 | /***/ }), | ||
1914 | /* 22 */ | ||
1915 | /***/ (function(module, exports, __webpack_require__) { | ||
1916 | |||
1917 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
1918 | * Copyright (c) 2013-present, Facebook, Inc. | ||
1919 | * All rights reserved. | ||
1920 | * | ||
1921 | * This source code is licensed under the BSD-style license found in the | ||
1922 | * LICENSE file in the root directory of this source tree. An additional grant | ||
1923 | * of patent rights can be found in the PATENTS file in the same directory. | ||
1924 | * | ||
1925 | */ | ||
1926 | |||
1927 | 'use strict'; | ||
1928 | |||
1929 | var emptyObject = {}; | ||
1930 | |||
1931 | if (process.env.NODE_ENV !== 'production') { | ||
1932 | Object.freeze(emptyObject); | ||
1933 | } | ||
1934 | |||
1935 | module.exports = emptyObject; | ||
1936 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
1937 | |||
1938 | /***/ }), | ||
1939 | /* 23 */ | ||
1940 | /***/ (function(module, exports, __webpack_require__) { | ||
1941 | |||
1942 | /** | ||
1943 | * Copyright 2013-present, Facebook, Inc. | ||
1944 | * All rights reserved. | ||
1945 | * | ||
1946 | * This source code is licensed under the BSD-style license found in the | ||
1947 | * LICENSE file in the root directory of this source tree. An additional grant | ||
1948 | * of patent rights can be found in the PATENTS file in the same directory. | ||
1949 | * | ||
1950 | */ | ||
1951 | |||
1952 | 'use strict'; | ||
1953 | |||
1954 | var _assign = __webpack_require__(6); | ||
1955 | |||
1956 | var ReactComponent = __webpack_require__(20); | ||
1957 | var ReactNoopUpdateQueue = __webpack_require__(21); | ||
1958 | |||
1959 | var emptyObject = __webpack_require__(22); | ||
1960 | |||
1961 | /** | ||
1962 | * Base class helpers for the updating state of a component. | ||
1963 | */ | ||
1964 | function ReactPureComponent(props, context, updater) { | ||
1965 | // Duplicated from ReactComponent. | ||
1966 | this.props = props; | ||
1967 | this.context = context; | ||
1968 | this.refs = emptyObject; | ||
1969 | // We initialize the default updater but the real one gets injected by the | ||
1970 | // renderer. | ||
1971 | this.updater = updater || ReactNoopUpdateQueue; | ||
1972 | } | ||
1973 | |||
1974 | function ComponentDummy() {} | ||
1975 | ComponentDummy.prototype = ReactComponent.prototype; | ||
1976 | ReactPureComponent.prototype = new ComponentDummy(); | ||
1977 | ReactPureComponent.prototype.constructor = ReactPureComponent; | ||
1978 | // Avoid an extra prototype jump for these methods. | ||
1979 | _assign(ReactPureComponent.prototype, ReactComponent.prototype); | ||
1980 | ReactPureComponent.prototype.isPureReactComponent = true; | ||
1981 | |||
1982 | module.exports = ReactPureComponent; | ||
1983 | |||
1984 | /***/ }), | ||
1985 | /* 24 */ | ||
1986 | /***/ (function(module, exports, __webpack_require__) { | ||
1987 | |||
1988 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
1989 | * Copyright 2013-present, Facebook, Inc. | ||
1990 | * All rights reserved. | ||
1991 | * | ||
1992 | * This source code is licensed under the BSD-style license found in the | ||
1993 | * LICENSE file in the root directory of this source tree. An additional grant | ||
1994 | * of patent rights can be found in the PATENTS file in the same directory. | ||
1995 | * | ||
1996 | */ | ||
1997 | |||
1998 | 'use strict'; | ||
1999 | |||
2000 | var _prodInvariant = __webpack_require__(9), | ||
2001 | _assign = __webpack_require__(6); | ||
2002 | |||
2003 | var ReactComponent = __webpack_require__(20); | ||
2004 | var ReactElement = __webpack_require__(11); | ||
2005 | var ReactPropTypeLocationNames = __webpack_require__(25); | ||
2006 | var ReactNoopUpdateQueue = __webpack_require__(21); | ||
2007 | |||
2008 | var emptyObject = __webpack_require__(22); | ||
2009 | var invariant = __webpack_require__(10); | ||
2010 | var warning = __webpack_require__(13); | ||
2011 | |||
2012 | var MIXINS_KEY = 'mixins'; | ||
2013 | |||
2014 | // Helper function to allow the creation of anonymous functions which do not | ||
2015 | // have .name set to the name of the variable being assigned to. | ||
2016 | function identity(fn) { | ||
2017 | return fn; | ||
2018 | } | ||
2019 | |||
2020 | /** | ||
2021 | * Policies that describe methods in `ReactClassInterface`. | ||
2022 | */ | ||
2023 | |||
2024 | |||
2025 | var injectedMixins = []; | ||
2026 | |||
2027 | /** | ||
2028 | * Composite components are higher-level components that compose other composite | ||
2029 | * or host components. | ||
2030 | * | ||
2031 | * To create a new type of `ReactClass`, pass a specification of | ||
2032 | * your new class to `React.createClass`. The only requirement of your class | ||
2033 | * specification is that you implement a `render` method. | ||
2034 | * | ||
2035 | * var MyComponent = React.createClass({ | ||
2036 | * render: function() { | ||
2037 | * return <div>Hello World</div>; | ||
2038 | * } | ||
2039 | * }); | ||
2040 | * | ||
2041 | * The class specification supports a specific protocol of methods that have | ||
2042 | * special meaning (e.g. `render`). See `ReactClassInterface` for | ||
2043 | * more the comprehensive protocol. Any other properties and methods in the | ||
2044 | * class specification will be available on the prototype. | ||
2045 | * | ||
2046 | * @interface ReactClassInterface | ||
2047 | * @internal | ||
2048 | */ | ||
2049 | var ReactClassInterface = { | ||
2050 | |||
2051 | /** | ||
2052 | * An array of Mixin objects to include when defining your component. | ||
2053 | * | ||
2054 | * @type {array} | ||
2055 | * @optional | ||
2056 | */ | ||
2057 | mixins: 'DEFINE_MANY', | ||
2058 | |||
2059 | /** | ||
2060 | * An object containing properties and methods that should be defined on | ||
2061 | * the component's constructor instead of its prototype (static methods). | ||
2062 | * | ||
2063 | * @type {object} | ||
2064 | * @optional | ||
2065 | */ | ||
2066 | statics: 'DEFINE_MANY', | ||
2067 | |||
2068 | /** | ||
2069 | * Definition of prop types for this component. | ||
2070 | * | ||
2071 | * @type {object} | ||
2072 | * @optional | ||
2073 | */ | ||
2074 | propTypes: 'DEFINE_MANY', | ||
2075 | |||
2076 | /** | ||
2077 | * Definition of context types for this component. | ||
2078 | * | ||
2079 | * @type {object} | ||
2080 | * @optional | ||
2081 | */ | ||
2082 | contextTypes: 'DEFINE_MANY', | ||
2083 | |||
2084 | /** | ||
2085 | * Definition of context types this component sets for its children. | ||
2086 | * | ||
2087 | * @type {object} | ||
2088 | * @optional | ||
2089 | */ | ||
2090 | childContextTypes: 'DEFINE_MANY', | ||
2091 | |||
2092 | // ==== Definition methods ==== | ||
2093 | |||
2094 | /** | ||
2095 | * Invoked when the component is mounted. Values in the mapping will be set on | ||
2096 | * `this.props` if that prop is not specified (i.e. using an `in` check). | ||
2097 | * | ||
2098 | * This method is invoked before `getInitialState` and therefore cannot rely | ||
2099 | * on `this.state` or use `this.setState`. | ||
2100 | * | ||
2101 | * @return {object} | ||
2102 | * @optional | ||
2103 | */ | ||
2104 | getDefaultProps: 'DEFINE_MANY_MERGED', | ||
2105 | |||
2106 | /** | ||
2107 | * Invoked once before the component is mounted. The return value will be used | ||
2108 | * as the initial value of `this.state`. | ||
2109 | * | ||
2110 | * getInitialState: function() { | ||
2111 | * return { | ||
2112 | * isOn: false, | ||
2113 | * fooBaz: new BazFoo() | ||
2114 | * } | ||
2115 | * } | ||
2116 | * | ||
2117 | * @return {object} | ||
2118 | * @optional | ||
2119 | */ | ||
2120 | getInitialState: 'DEFINE_MANY_MERGED', | ||
2121 | |||
2122 | /** | ||
2123 | * @return {object} | ||
2124 | * @optional | ||
2125 | */ | ||
2126 | getChildContext: 'DEFINE_MANY_MERGED', | ||
2127 | |||
2128 | /** | ||
2129 | * Uses props from `this.props` and state from `this.state` to render the | ||
2130 | * structure of the component. | ||
2131 | * | ||
2132 | * No guarantees are made about when or how often this method is invoked, so | ||
2133 | * it must not have side effects. | ||
2134 | * | ||
2135 | * render: function() { | ||
2136 | * var name = this.props.name; | ||
2137 | * return <div>Hello, {name}!</div>; | ||
2138 | * } | ||
2139 | * | ||
2140 | * @return {ReactComponent} | ||
2141 | * @required | ||
2142 | */ | ||
2143 | render: 'DEFINE_ONCE', | ||
2144 | |||
2145 | // ==== Delegate methods ==== | ||
2146 | |||
2147 | /** | ||
2148 | * Invoked when the component is initially created and about to be mounted. | ||
2149 | * This may have side effects, but any external subscriptions or data created | ||
2150 | * by this method must be cleaned up in `componentWillUnmount`. | ||
2151 | * | ||
2152 | * @optional | ||
2153 | */ | ||
2154 | componentWillMount: 'DEFINE_MANY', | ||
2155 | |||
2156 | /** | ||
2157 | * Invoked when the component has been mounted and has a DOM representation. | ||
2158 | * However, there is no guarantee that the DOM node is in the document. | ||
2159 | * | ||
2160 | * Use this as an opportunity to operate on the DOM when the component has | ||
2161 | * been mounted (initialized and rendered) for the first time. | ||
2162 | * | ||
2163 | * @param {DOMElement} rootNode DOM element representing the component. | ||
2164 | * @optional | ||
2165 | */ | ||
2166 | componentDidMount: 'DEFINE_MANY', | ||
2167 | |||
2168 | /** | ||
2169 | * Invoked before the component receives new props. | ||
2170 | * | ||
2171 | * Use this as an opportunity to react to a prop transition by updating the | ||
2172 | * state using `this.setState`. Current props are accessed via `this.props`. | ||
2173 | * | ||
2174 | * componentWillReceiveProps: function(nextProps, nextContext) { | ||
2175 | * this.setState({ | ||
2176 | * likesIncreasing: nextProps.likeCount > this.props.likeCount | ||
2177 | * }); | ||
2178 | * } | ||
2179 | * | ||
2180 | * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop | ||
2181 | * transition may cause a state change, but the opposite is not true. If you | ||
2182 | * need it, you are probably looking for `componentWillUpdate`. | ||
2183 | * | ||
2184 | * @param {object} nextProps | ||
2185 | * @optional | ||
2186 | */ | ||
2187 | componentWillReceiveProps: 'DEFINE_MANY', | ||
2188 | |||
2189 | /** | ||
2190 | * Invoked while deciding if the component should be updated as a result of | ||
2191 | * receiving new props, state and/or context. | ||
2192 | * | ||
2193 | * Use this as an opportunity to `return false` when you're certain that the | ||
2194 | * transition to the new props/state/context will not require a component | ||
2195 | * update. | ||
2196 | * | ||
2197 | * shouldComponentUpdate: function(nextProps, nextState, nextContext) { | ||
2198 | * return !equal(nextProps, this.props) || | ||
2199 | * !equal(nextState, this.state) || | ||
2200 | * !equal(nextContext, this.context); | ||
2201 | * } | ||
2202 | * | ||
2203 | * @param {object} nextProps | ||
2204 | * @param {?object} nextState | ||
2205 | * @param {?object} nextContext | ||
2206 | * @return {boolean} True if the component should update. | ||
2207 | * @optional | ||
2208 | */ | ||
2209 | shouldComponentUpdate: 'DEFINE_ONCE', | ||
2210 | |||
2211 | /** | ||
2212 | * Invoked when the component is about to update due to a transition from | ||
2213 | * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState` | ||
2214 | * and `nextContext`. | ||
2215 | * | ||
2216 | * Use this as an opportunity to perform preparation before an update occurs. | ||
2217 | * | ||
2218 | * NOTE: You **cannot** use `this.setState()` in this method. | ||
2219 | * | ||
2220 | * @param {object} nextProps | ||
2221 | * @param {?object} nextState | ||
2222 | * @param {?object} nextContext | ||
2223 | * @param {ReactReconcileTransaction} transaction | ||
2224 | * @optional | ||
2225 | */ | ||
2226 | componentWillUpdate: 'DEFINE_MANY', | ||
2227 | |||
2228 | /** | ||
2229 | * Invoked when the component's DOM representation has been updated. | ||
2230 | * | ||
2231 | * Use this as an opportunity to operate on the DOM when the component has | ||
2232 | * been updated. | ||
2233 | * | ||
2234 | * @param {object} prevProps | ||
2235 | * @param {?object} prevState | ||
2236 | * @param {?object} prevContext | ||
2237 | * @param {DOMElement} rootNode DOM element representing the component. | ||
2238 | * @optional | ||
2239 | */ | ||
2240 | componentDidUpdate: 'DEFINE_MANY', | ||
2241 | |||
2242 | /** | ||
2243 | * Invoked when the component is about to be removed from its parent and have | ||
2244 | * its DOM representation destroyed. | ||
2245 | * | ||
2246 | * Use this as an opportunity to deallocate any external resources. | ||
2247 | * | ||
2248 | * NOTE: There is no `componentDidUnmount` since your component will have been | ||
2249 | * destroyed by that point. | ||
2250 | * | ||
2251 | * @optional | ||
2252 | */ | ||
2253 | componentWillUnmount: 'DEFINE_MANY', | ||
2254 | |||
2255 | // ==== Advanced methods ==== | ||
2256 | |||
2257 | /** | ||
2258 | * Updates the component's currently mounted DOM representation. | ||
2259 | * | ||
2260 | * By default, this implements React's rendering and reconciliation algorithm. | ||
2261 | * Sophisticated clients may wish to override this. | ||
2262 | * | ||
2263 | * @param {ReactReconcileTransaction} transaction | ||
2264 | * @internal | ||
2265 | * @overridable | ||
2266 | */ | ||
2267 | updateComponent: 'OVERRIDE_BASE' | ||
2268 | |||
2269 | }; | ||
2270 | |||
2271 | /** | ||
2272 | * Mapping from class specification keys to special processing functions. | ||
2273 | * | ||
2274 | * Although these are declared like instance properties in the specification | ||
2275 | * when defining classes using `React.createClass`, they are actually static | ||
2276 | * and are accessible on the constructor instead of the prototype. Despite | ||
2277 | * being static, they must be defined outside of the "statics" key under | ||
2278 | * which all other static methods are defined. | ||
2279 | */ | ||
2280 | var RESERVED_SPEC_KEYS = { | ||
2281 | displayName: function (Constructor, displayName) { | ||
2282 | Constructor.displayName = displayName; | ||
2283 | }, | ||
2284 | mixins: function (Constructor, mixins) { | ||
2285 | if (mixins) { | ||
2286 | for (var i = 0; i < mixins.length; i++) { | ||
2287 | mixSpecIntoComponent(Constructor, mixins[i]); | ||
2288 | } | ||
2289 | } | ||
2290 | }, | ||
2291 | childContextTypes: function (Constructor, childContextTypes) { | ||
2292 | if (process.env.NODE_ENV !== 'production') { | ||
2293 | validateTypeDef(Constructor, childContextTypes, 'childContext'); | ||
2294 | } | ||
2295 | Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes); | ||
2296 | }, | ||
2297 | contextTypes: function (Constructor, contextTypes) { | ||
2298 | if (process.env.NODE_ENV !== 'production') { | ||
2299 | validateTypeDef(Constructor, contextTypes, 'context'); | ||
2300 | } | ||
2301 | Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes); | ||
2302 | }, | ||
2303 | /** | ||
2304 | * Special case getDefaultProps which should move into statics but requires | ||
2305 | * automatic merging. | ||
2306 | */ | ||
2307 | getDefaultProps: function (Constructor, getDefaultProps) { | ||
2308 | if (Constructor.getDefaultProps) { | ||
2309 | Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps); | ||
2310 | } else { | ||
2311 | Constructor.getDefaultProps = getDefaultProps; | ||
2312 | } | ||
2313 | }, | ||
2314 | propTypes: function (Constructor, propTypes) { | ||
2315 | if (process.env.NODE_ENV !== 'production') { | ||
2316 | validateTypeDef(Constructor, propTypes, 'prop'); | ||
2317 | } | ||
2318 | Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes); | ||
2319 | }, | ||
2320 | statics: function (Constructor, statics) { | ||
2321 | mixStaticSpecIntoComponent(Constructor, statics); | ||
2322 | }, | ||
2323 | autobind: function () {} }; | ||
2324 | |||
2325 | function validateTypeDef(Constructor, typeDef, location) { | ||
2326 | for (var propName in typeDef) { | ||
2327 | if (typeDef.hasOwnProperty(propName)) { | ||
2328 | // use a warning instead of an invariant so components | ||
2329 | // don't show up in prod but only in __DEV__ | ||
2330 | process.env.NODE_ENV !== 'production' ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0; | ||
2331 | } | ||
2332 | } | ||
2333 | } | ||
2334 | |||
2335 | function validateMethodOverride(isAlreadyDefined, name) { | ||
2336 | var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null; | ||
2337 | |||
2338 | // Disallow overriding of base class methods unless explicitly allowed. | ||
2339 | if (ReactClassMixin.hasOwnProperty(name)) { | ||
2340 | !(specPolicy === 'OVERRIDE_BASE') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0; | ||
2341 | } | ||
2342 | |||
2343 | // Disallow defining methods more than once unless explicitly allowed. | ||
2344 | if (isAlreadyDefined) { | ||
2345 | !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0; | ||
2346 | } | ||
2347 | } | ||
2348 | |||
2349 | /** | ||
2350 | * Mixin helper which handles policy validation and reserved | ||
2351 | * specification keys when building React classes. | ||
2352 | */ | ||
2353 | function mixSpecIntoComponent(Constructor, spec) { | ||
2354 | if (!spec) { | ||
2355 | if (process.env.NODE_ENV !== 'production') { | ||
2356 | var typeofSpec = typeof spec; | ||
2357 | var isMixinValid = typeofSpec === 'object' && spec !== null; | ||
2358 | |||
2359 | process.env.NODE_ENV !== 'production' ? warning(isMixinValid, '%s: You\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0; | ||
2360 | } | ||
2361 | |||
2362 | return; | ||
2363 | } | ||
2364 | |||
2365 | !(typeof spec !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0; | ||
2366 | !!ReactElement.isValidElement(spec) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0; | ||
2367 | |||
2368 | var proto = Constructor.prototype; | ||
2369 | var autoBindPairs = proto.__reactAutoBindPairs; | ||
2370 | |||
2371 | // By handling mixins before any other properties, we ensure the same | ||
2372 | // chaining order is applied to methods with DEFINE_MANY policy, whether | ||
2373 | // mixins are listed before or after these methods in the spec. | ||
2374 | if (spec.hasOwnProperty(MIXINS_KEY)) { | ||
2375 | RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins); | ||
2376 | } | ||
2377 | |||
2378 | for (var name in spec) { | ||
2379 | if (!spec.hasOwnProperty(name)) { | ||
2380 | continue; | ||
2381 | } | ||
2382 | |||
2383 | if (name === MIXINS_KEY) { | ||
2384 | // We have already handled mixins in a special case above. | ||
2385 | continue; | ||
2386 | } | ||
2387 | |||
2388 | var property = spec[name]; | ||
2389 | var isAlreadyDefined = proto.hasOwnProperty(name); | ||
2390 | validateMethodOverride(isAlreadyDefined, name); | ||
2391 | |||
2392 | if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) { | ||
2393 | RESERVED_SPEC_KEYS[name](Constructor, property); | ||
2394 | } else { | ||
2395 | // Setup methods on prototype: | ||
2396 | // The following member methods should not be automatically bound: | ||
2397 | // 1. Expected ReactClass methods (in the "interface"). | ||
2398 | // 2. Overridden methods (that were mixed in). | ||
2399 | var isReactClassMethod = ReactClassInterface.hasOwnProperty(name); | ||
2400 | var isFunction = typeof property === 'function'; | ||
2401 | var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false; | ||
2402 | |||
2403 | if (shouldAutoBind) { | ||
2404 | autoBindPairs.push(name, property); | ||
2405 | proto[name] = property; | ||
2406 | } else { | ||
2407 | if (isAlreadyDefined) { | ||
2408 | var specPolicy = ReactClassInterface[name]; | ||
2409 | |||
2410 | // These cases should already be caught by validateMethodOverride. | ||
2411 | !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0; | ||
2412 | |||
2413 | // For methods which are defined more than once, call the existing | ||
2414 | // methods before calling the new property, merging if appropriate. | ||
2415 | if (specPolicy === 'DEFINE_MANY_MERGED') { | ||
2416 | proto[name] = createMergedResultFunction(proto[name], property); | ||
2417 | } else if (specPolicy === 'DEFINE_MANY') { | ||
2418 | proto[name] = createChainedFunction(proto[name], property); | ||
2419 | } | ||
2420 | } else { | ||
2421 | proto[name] = property; | ||
2422 | if (process.env.NODE_ENV !== 'production') { | ||
2423 | // Add verbose displayName to the function, which helps when looking | ||
2424 | // at profiling tools. | ||
2425 | if (typeof property === 'function' && spec.displayName) { | ||
2426 | proto[name].displayName = spec.displayName + '_' + name; | ||
2427 | } | ||
2428 | } | ||
2429 | } | ||
2430 | } | ||
2431 | } | ||
2432 | } | ||
2433 | } | ||
2434 | |||
2435 | function mixStaticSpecIntoComponent(Constructor, statics) { | ||
2436 | if (!statics) { | ||
2437 | return; | ||
2438 | } | ||
2439 | for (var name in statics) { | ||
2440 | var property = statics[name]; | ||
2441 | if (!statics.hasOwnProperty(name)) { | ||
2442 | continue; | ||
2443 | } | ||
2444 | |||
2445 | var isReserved = name in RESERVED_SPEC_KEYS; | ||
2446 | !!isReserved ? process.env.NODE_ENV !== 'production' ? invariant(false, '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.', name) : _prodInvariant('78', name) : void 0; | ||
2447 | |||
2448 | var isInherited = name in Constructor; | ||
2449 | !!isInherited ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0; | ||
2450 | Constructor[name] = property; | ||
2451 | } | ||
2452 | } | ||
2453 | |||
2454 | /** | ||
2455 | * Merge two objects, but throw if both contain the same key. | ||
2456 | * | ||
2457 | * @param {object} one The first object, which is mutated. | ||
2458 | * @param {object} two The second object | ||
2459 | * @return {object} one after it has been mutated to contain everything in two. | ||
2460 | */ | ||
2461 | function mergeIntoWithNoDuplicateKeys(one, two) { | ||
2462 | !(one && two && typeof one === 'object' && typeof two === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0; | ||
2463 | |||
2464 | for (var key in two) { | ||
2465 | if (two.hasOwnProperty(key)) { | ||
2466 | !(one[key] === undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, '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.', key) : _prodInvariant('81', key) : void 0; | ||
2467 | one[key] = two[key]; | ||
2468 | } | ||
2469 | } | ||
2470 | return one; | ||
2471 | } | ||
2472 | |||
2473 | /** | ||
2474 | * Creates a function that invokes two functions and merges their return values. | ||
2475 | * | ||
2476 | * @param {function} one Function to invoke first. | ||
2477 | * @param {function} two Function to invoke second. | ||
2478 | * @return {function} Function that invokes the two argument functions. | ||
2479 | * @private | ||
2480 | */ | ||
2481 | function createMergedResultFunction(one, two) { | ||
2482 | return function mergedResult() { | ||
2483 | var a = one.apply(this, arguments); | ||
2484 | var b = two.apply(this, arguments); | ||
2485 | if (a == null) { | ||
2486 | return b; | ||
2487 | } else if (b == null) { | ||
2488 | return a; | ||
2489 | } | ||
2490 | var c = {}; | ||
2491 | mergeIntoWithNoDuplicateKeys(c, a); | ||
2492 | mergeIntoWithNoDuplicateKeys(c, b); | ||
2493 | return c; | ||
2494 | }; | ||
2495 | } | ||
2496 | |||
2497 | /** | ||
2498 | * Creates a function that invokes two functions and ignores their return vales. | ||
2499 | * | ||
2500 | * @param {function} one Function to invoke first. | ||
2501 | * @param {function} two Function to invoke second. | ||
2502 | * @return {function} Function that invokes the two argument functions. | ||
2503 | * @private | ||
2504 | */ | ||
2505 | function createChainedFunction(one, two) { | ||
2506 | return function chainedFunction() { | ||
2507 | one.apply(this, arguments); | ||
2508 | two.apply(this, arguments); | ||
2509 | }; | ||
2510 | } | ||
2511 | |||
2512 | /** | ||
2513 | * Binds a method to the component. | ||
2514 | * | ||
2515 | * @param {object} component Component whose method is going to be bound. | ||
2516 | * @param {function} method Method to be bound. | ||
2517 | * @return {function} The bound method. | ||
2518 | */ | ||
2519 | function bindAutoBindMethod(component, method) { | ||
2520 | var boundMethod = method.bind(component); | ||
2521 | if (process.env.NODE_ENV !== 'production') { | ||
2522 | boundMethod.__reactBoundContext = component; | ||
2523 | boundMethod.__reactBoundMethod = method; | ||
2524 | boundMethod.__reactBoundArguments = null; | ||
2525 | var componentName = component.constructor.displayName; | ||
2526 | var _bind = boundMethod.bind; | ||
2527 | boundMethod.bind = function (newThis) { | ||
2528 | for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
2529 | args[_key - 1] = arguments[_key]; | ||
2530 | } | ||
2531 | |||
2532 | // User is trying to bind() an autobound method; we effectively will | ||
2533 | // ignore the value of "this" that the user is trying to use, so | ||
2534 | // let's warn. | ||
2535 | if (newThis !== component && newThis !== null) { | ||
2536 | process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0; | ||
2537 | } else if (!args.length) { | ||
2538 | process.env.NODE_ENV !== 'production' ? warning(false, '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', componentName) : void 0; | ||
2539 | return boundMethod; | ||
2540 | } | ||
2541 | var reboundMethod = _bind.apply(boundMethod, arguments); | ||
2542 | reboundMethod.__reactBoundContext = component; | ||
2543 | reboundMethod.__reactBoundMethod = method; | ||
2544 | reboundMethod.__reactBoundArguments = args; | ||
2545 | return reboundMethod; | ||
2546 | }; | ||
2547 | } | ||
2548 | return boundMethod; | ||
2549 | } | ||
2550 | |||
2551 | /** | ||
2552 | * Binds all auto-bound methods in a component. | ||
2553 | * | ||
2554 | * @param {object} component Component whose method is going to be bound. | ||
2555 | */ | ||
2556 | function bindAutoBindMethods(component) { | ||
2557 | var pairs = component.__reactAutoBindPairs; | ||
2558 | for (var i = 0; i < pairs.length; i += 2) { | ||
2559 | var autoBindKey = pairs[i]; | ||
2560 | var method = pairs[i + 1]; | ||
2561 | component[autoBindKey] = bindAutoBindMethod(component, method); | ||
2562 | } | ||
2563 | } | ||
2564 | |||
2565 | /** | ||
2566 | * Add more to the ReactClass base class. These are all legacy features and | ||
2567 | * therefore not already part of the modern ReactComponent. | ||
2568 | */ | ||
2569 | var ReactClassMixin = { | ||
2570 | |||
2571 | /** | ||
2572 | * TODO: This will be deprecated because state should always keep a consistent | ||
2573 | * type signature and the only use case for this, is to avoid that. | ||
2574 | */ | ||
2575 | replaceState: function (newState, callback) { | ||
2576 | this.updater.enqueueReplaceState(this, newState); | ||
2577 | if (callback) { | ||
2578 | this.updater.enqueueCallback(this, callback, 'replaceState'); | ||
2579 | } | ||
2580 | }, | ||
2581 | |||
2582 | /** | ||
2583 | * Checks whether or not this composite component is mounted. | ||
2584 | * @return {boolean} True if mounted, false otherwise. | ||
2585 | * @protected | ||
2586 | * @final | ||
2587 | */ | ||
2588 | isMounted: function () { | ||
2589 | return this.updater.isMounted(this); | ||
2590 | } | ||
2591 | }; | ||
2592 | |||
2593 | var ReactClassComponent = function () {}; | ||
2594 | _assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin); | ||
2595 | |||
2596 | var didWarnDeprecated = false; | ||
2597 | |||
2598 | /** | ||
2599 | * Module for creating composite components. | ||
2600 | * | ||
2601 | * @class ReactClass | ||
2602 | */ | ||
2603 | var ReactClass = { | ||
2604 | |||
2605 | /** | ||
2606 | * Creates a composite component class given a class specification. | ||
2607 | * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass | ||
2608 | * | ||
2609 | * @param {object} spec Class specification (which must define `render`). | ||
2610 | * @return {function} Component constructor function. | ||
2611 | * @public | ||
2612 | */ | ||
2613 | createClass: function (spec) { | ||
2614 | if (process.env.NODE_ENV !== 'production') { | ||
2615 | process.env.NODE_ENV !== 'production' ? warning(didWarnDeprecated, '%s: React.createClass is deprecated and will be removed in version 16. ' + 'Use plain JavaScript classes instead. If you\'re not yet ready to ' + 'migrate, create-react-class is available on npm as a ' + 'drop-in replacement.', spec && spec.displayName || 'A Component') : void 0; | ||
2616 | didWarnDeprecated = true; | ||
2617 | } | ||
2618 | |||
2619 | // To keep our warnings more understandable, we'll use a little hack here to | ||
2620 | // ensure that Constructor.name !== 'Constructor'. This makes sure we don't | ||
2621 | // unnecessarily identify a class without displayName as 'Constructor'. | ||
2622 | var Constructor = identity(function (props, context, updater) { | ||
2623 | // This constructor gets overridden by mocks. The argument is used | ||
2624 | // by mocks to assert on what gets mounted. | ||
2625 | |||
2626 | if (process.env.NODE_ENV !== 'production') { | ||
2627 | process.env.NODE_ENV !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0; | ||
2628 | } | ||
2629 | |||
2630 | // Wire up auto-binding | ||
2631 | if (this.__reactAutoBindPairs.length) { | ||
2632 | bindAutoBindMethods(this); | ||
2633 | } | ||
2634 | |||
2635 | this.props = props; | ||
2636 | this.context = context; | ||
2637 | this.refs = emptyObject; | ||
2638 | this.updater = updater || ReactNoopUpdateQueue; | ||
2639 | |||
2640 | this.state = null; | ||
2641 | |||
2642 | // ReactClasses doesn't have constructors. Instead, they use the | ||
2643 | // getInitialState and componentWillMount methods for initialization. | ||
2644 | |||
2645 | var initialState = this.getInitialState ? this.getInitialState() : null; | ||
2646 | if (process.env.NODE_ENV !== 'production') { | ||
2647 | // We allow auto-mocks to proceed as if they're returning null. | ||
2648 | if (initialState === undefined && this.getInitialState._isMockFunction) { | ||
2649 | // This is probably bad practice. Consider warning here and | ||
2650 | // deprecating this convenience. | ||
2651 | initialState = null; | ||
2652 | } | ||
2653 | } | ||
2654 | !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0; | ||
2655 | |||
2656 | this.state = initialState; | ||
2657 | }); | ||
2658 | Constructor.prototype = new ReactClassComponent(); | ||
2659 | Constructor.prototype.constructor = Constructor; | ||
2660 | Constructor.prototype.__reactAutoBindPairs = []; | ||
2661 | |||
2662 | injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor)); | ||
2663 | |||
2664 | mixSpecIntoComponent(Constructor, spec); | ||
2665 | |||
2666 | // Initialize the defaultProps property after all mixins have been merged. | ||
2667 | if (Constructor.getDefaultProps) { | ||
2668 | Constructor.defaultProps = Constructor.getDefaultProps(); | ||
2669 | } | ||
2670 | |||
2671 | if (process.env.NODE_ENV !== 'production') { | ||
2672 | // This is a tag to indicate that the use of these method names is ok, | ||
2673 | // since it's used with createClass. If it's not, then it's likely a | ||
2674 | // mistake so we'll warn you to use the static property, property | ||
2675 | // initializer or constructor respectively. | ||
2676 | if (Constructor.getDefaultProps) { | ||
2677 | Constructor.getDefaultProps.isReactClassApproved = {}; | ||
2678 | } | ||
2679 | if (Constructor.prototype.getInitialState) { | ||
2680 | Constructor.prototype.getInitialState.isReactClassApproved = {}; | ||
2681 | } | ||
2682 | } | ||
2683 | |||
2684 | !Constructor.prototype.render ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0; | ||
2685 | |||
2686 | if (process.env.NODE_ENV !== 'production') { | ||
2687 | process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0; | ||
2688 | process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0; | ||
2689 | } | ||
2690 | |||
2691 | // Reduce time spent doing lookups by setting these on the prototype. | ||
2692 | for (var methodName in ReactClassInterface) { | ||
2693 | if (!Constructor.prototype[methodName]) { | ||
2694 | Constructor.prototype[methodName] = null; | ||
2695 | } | ||
2696 | } | ||
2697 | |||
2698 | return Constructor; | ||
2699 | }, | ||
2700 | |||
2701 | injection: { | ||
2702 | injectMixin: function (mixin) { | ||
2703 | injectedMixins.push(mixin); | ||
2704 | } | ||
2705 | } | ||
2706 | |||
2707 | }; | ||
2708 | |||
2709 | module.exports = ReactClass; | ||
2710 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
2711 | |||
2712 | /***/ }), | ||
2713 | /* 25 */ | ||
2714 | /***/ (function(module, exports, __webpack_require__) { | ||
2715 | |||
2716 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
2717 | * Copyright 2013-present, Facebook, Inc. | ||
2718 | * All rights reserved. | ||
2719 | * | ||
2720 | * This source code is licensed under the BSD-style license found in the | ||
2721 | * LICENSE file in the root directory of this source tree. An additional grant | ||
2722 | * of patent rights can be found in the PATENTS file in the same directory. | ||
2723 | * | ||
2724 | * | ||
2725 | */ | ||
2726 | |||
2727 | 'use strict'; | ||
2728 | |||
2729 | var ReactPropTypeLocationNames = {}; | ||
2730 | |||
2731 | if (process.env.NODE_ENV !== 'production') { | ||
2732 | ReactPropTypeLocationNames = { | ||
2733 | prop: 'prop', | ||
2734 | context: 'context', | ||
2735 | childContext: 'child context' | ||
2736 | }; | ||
2737 | } | ||
2738 | |||
2739 | module.exports = ReactPropTypeLocationNames; | ||
2740 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
2741 | |||
2742 | /***/ }), | ||
2743 | /* 26 */ | ||
2744 | /***/ (function(module, exports, __webpack_require__) { | ||
2745 | |||
2746 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
2747 | * Copyright 2013-present, Facebook, Inc. | ||
2748 | * All rights reserved. | ||
2749 | * | ||
2750 | * This source code is licensed under the BSD-style license found in the | ||
2751 | * LICENSE file in the root directory of this source tree. An additional grant | ||
2752 | * of patent rights can be found in the PATENTS file in the same directory. | ||
2753 | * | ||
2754 | */ | ||
2755 | |||
2756 | 'use strict'; | ||
2757 | |||
2758 | var ReactElement = __webpack_require__(11); | ||
2759 | |||
2760 | /** | ||
2761 | * Create a factory that creates HTML tag elements. | ||
2762 | * | ||
2763 | * @private | ||
2764 | */ | ||
2765 | var createDOMFactory = ReactElement.createFactory; | ||
2766 | if (process.env.NODE_ENV !== 'production') { | ||
2767 | var ReactElementValidator = __webpack_require__(27); | ||
2768 | createDOMFactory = ReactElementValidator.createFactory; | ||
2769 | } | ||
2770 | |||
2771 | /** | ||
2772 | * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes. | ||
2773 | * This is also accessible via `React.DOM`. | ||
2774 | * | ||
2775 | * @public | ||
2776 | */ | ||
2777 | var ReactDOMFactories = { | ||
2778 | a: createDOMFactory('a'), | ||
2779 | abbr: createDOMFactory('abbr'), | ||
2780 | address: createDOMFactory('address'), | ||
2781 | area: createDOMFactory('area'), | ||
2782 | article: createDOMFactory('article'), | ||
2783 | aside: createDOMFactory('aside'), | ||
2784 | audio: createDOMFactory('audio'), | ||
2785 | b: createDOMFactory('b'), | ||
2786 | base: createDOMFactory('base'), | ||
2787 | bdi: createDOMFactory('bdi'), | ||
2788 | bdo: createDOMFactory('bdo'), | ||
2789 | big: createDOMFactory('big'), | ||
2790 | blockquote: createDOMFactory('blockquote'), | ||
2791 | body: createDOMFactory('body'), | ||
2792 | br: createDOMFactory('br'), | ||
2793 | button: createDOMFactory('button'), | ||
2794 | canvas: createDOMFactory('canvas'), | ||
2795 | caption: createDOMFactory('caption'), | ||
2796 | cite: createDOMFactory('cite'), | ||
2797 | code: createDOMFactory('code'), | ||
2798 | col: createDOMFactory('col'), | ||
2799 | colgroup: createDOMFactory('colgroup'), | ||
2800 | data: createDOMFactory('data'), | ||
2801 | datalist: createDOMFactory('datalist'), | ||
2802 | dd: createDOMFactory('dd'), | ||
2803 | del: createDOMFactory('del'), | ||
2804 | details: createDOMFactory('details'), | ||
2805 | dfn: createDOMFactory('dfn'), | ||
2806 | dialog: createDOMFactory('dialog'), | ||
2807 | div: createDOMFactory('div'), | ||
2808 | dl: createDOMFactory('dl'), | ||
2809 | dt: createDOMFactory('dt'), | ||
2810 | em: createDOMFactory('em'), | ||
2811 | embed: createDOMFactory('embed'), | ||
2812 | fieldset: createDOMFactory('fieldset'), | ||
2813 | figcaption: createDOMFactory('figcaption'), | ||
2814 | figure: createDOMFactory('figure'), | ||
2815 | footer: createDOMFactory('footer'), | ||
2816 | form: createDOMFactory('form'), | ||
2817 | h1: createDOMFactory('h1'), | ||
2818 | h2: createDOMFactory('h2'), | ||
2819 | h3: createDOMFactory('h3'), | ||
2820 | h4: createDOMFactory('h4'), | ||
2821 | h5: createDOMFactory('h5'), | ||
2822 | h6: createDOMFactory('h6'), | ||
2823 | head: createDOMFactory('head'), | ||
2824 | header: createDOMFactory('header'), | ||
2825 | hgroup: createDOMFactory('hgroup'), | ||
2826 | hr: createDOMFactory('hr'), | ||
2827 | html: createDOMFactory('html'), | ||
2828 | i: createDOMFactory('i'), | ||
2829 | iframe: createDOMFactory('iframe'), | ||
2830 | img: createDOMFactory('img'), | ||
2831 | input: createDOMFactory('input'), | ||
2832 | ins: createDOMFactory('ins'), | ||
2833 | kbd: createDOMFactory('kbd'), | ||
2834 | keygen: createDOMFactory('keygen'), | ||
2835 | label: createDOMFactory('label'), | ||
2836 | legend: createDOMFactory('legend'), | ||
2837 | li: createDOMFactory('li'), | ||
2838 | link: createDOMFactory('link'), | ||
2839 | main: createDOMFactory('main'), | ||
2840 | map: createDOMFactory('map'), | ||
2841 | mark: createDOMFactory('mark'), | ||
2842 | menu: createDOMFactory('menu'), | ||
2843 | menuitem: createDOMFactory('menuitem'), | ||
2844 | meta: createDOMFactory('meta'), | ||
2845 | meter: createDOMFactory('meter'), | ||
2846 | nav: createDOMFactory('nav'), | ||
2847 | noscript: createDOMFactory('noscript'), | ||
2848 | object: createDOMFactory('object'), | ||
2849 | ol: createDOMFactory('ol'), | ||
2850 | optgroup: createDOMFactory('optgroup'), | ||
2851 | option: createDOMFactory('option'), | ||
2852 | output: createDOMFactory('output'), | ||
2853 | p: createDOMFactory('p'), | ||
2854 | param: createDOMFactory('param'), | ||
2855 | picture: createDOMFactory('picture'), | ||
2856 | pre: createDOMFactory('pre'), | ||
2857 | progress: createDOMFactory('progress'), | ||
2858 | q: createDOMFactory('q'), | ||
2859 | rp: createDOMFactory('rp'), | ||
2860 | rt: createDOMFactory('rt'), | ||
2861 | ruby: createDOMFactory('ruby'), | ||
2862 | s: createDOMFactory('s'), | ||
2863 | samp: createDOMFactory('samp'), | ||
2864 | script: createDOMFactory('script'), | ||
2865 | section: createDOMFactory('section'), | ||
2866 | select: createDOMFactory('select'), | ||
2867 | small: createDOMFactory('small'), | ||
2868 | source: createDOMFactory('source'), | ||
2869 | span: createDOMFactory('span'), | ||
2870 | strong: createDOMFactory('strong'), | ||
2871 | style: createDOMFactory('style'), | ||
2872 | sub: createDOMFactory('sub'), | ||
2873 | summary: createDOMFactory('summary'), | ||
2874 | sup: createDOMFactory('sup'), | ||
2875 | table: createDOMFactory('table'), | ||
2876 | tbody: createDOMFactory('tbody'), | ||
2877 | td: createDOMFactory('td'), | ||
2878 | textarea: createDOMFactory('textarea'), | ||
2879 | tfoot: createDOMFactory('tfoot'), | ||
2880 | th: createDOMFactory('th'), | ||
2881 | thead: createDOMFactory('thead'), | ||
2882 | time: createDOMFactory('time'), | ||
2883 | title: createDOMFactory('title'), | ||
2884 | tr: createDOMFactory('tr'), | ||
2885 | track: createDOMFactory('track'), | ||
2886 | u: createDOMFactory('u'), | ||
2887 | ul: createDOMFactory('ul'), | ||
2888 | 'var': createDOMFactory('var'), | ||
2889 | video: createDOMFactory('video'), | ||
2890 | wbr: createDOMFactory('wbr'), | ||
2891 | |||
2892 | // SVG | ||
2893 | circle: createDOMFactory('circle'), | ||
2894 | clipPath: createDOMFactory('clipPath'), | ||
2895 | defs: createDOMFactory('defs'), | ||
2896 | ellipse: createDOMFactory('ellipse'), | ||
2897 | g: createDOMFactory('g'), | ||
2898 | image: createDOMFactory('image'), | ||
2899 | line: createDOMFactory('line'), | ||
2900 | linearGradient: createDOMFactory('linearGradient'), | ||
2901 | mask: createDOMFactory('mask'), | ||
2902 | path: createDOMFactory('path'), | ||
2903 | pattern: createDOMFactory('pattern'), | ||
2904 | polygon: createDOMFactory('polygon'), | ||
2905 | polyline: createDOMFactory('polyline'), | ||
2906 | radialGradient: createDOMFactory('radialGradient'), | ||
2907 | rect: createDOMFactory('rect'), | ||
2908 | stop: createDOMFactory('stop'), | ||
2909 | svg: createDOMFactory('svg'), | ||
2910 | text: createDOMFactory('text'), | ||
2911 | tspan: createDOMFactory('tspan') | ||
2912 | }; | ||
2913 | |||
2914 | module.exports = ReactDOMFactories; | ||
2915 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
2916 | |||
2917 | /***/ }), | ||
2918 | /* 27 */ | ||
2919 | /***/ (function(module, exports, __webpack_require__) { | ||
2920 | |||
2921 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
2922 | * Copyright 2014-present, Facebook, Inc. | ||
2923 | * All rights reserved. | ||
2924 | * | ||
2925 | * This source code is licensed under the BSD-style license found in the | ||
2926 | * LICENSE file in the root directory of this source tree. An additional grant | ||
2927 | * of patent rights can be found in the PATENTS file in the same directory. | ||
2928 | * | ||
2929 | */ | ||
2930 | |||
2931 | /** | ||
2932 | * ReactElementValidator provides a wrapper around a element factory | ||
2933 | * which validates the props passed to the element. This is intended to be | ||
2934 | * used only in DEV and could be replaced by a static type checker for languages | ||
2935 | * that support it. | ||
2936 | */ | ||
2937 | |||
2938 | 'use strict'; | ||
2939 | |||
2940 | var ReactCurrentOwner = __webpack_require__(12); | ||
2941 | var ReactComponentTreeHook = __webpack_require__(28); | ||
2942 | var ReactElement = __webpack_require__(11); | ||
2943 | |||
2944 | var checkReactTypeSpec = __webpack_require__(29); | ||
2945 | |||
2946 | var canDefineProperty = __webpack_require__(15); | ||
2947 | var getIteratorFn = __webpack_require__(18); | ||
2948 | var warning = __webpack_require__(13); | ||
2949 | |||
2950 | function getDeclarationErrorAddendum() { | ||
2951 | if (ReactCurrentOwner.current) { | ||
2952 | var name = ReactCurrentOwner.current.getName(); | ||
2953 | if (name) { | ||
2954 | return ' Check the render method of `' + name + '`.'; | ||
2955 | } | ||
2956 | } | ||
2957 | return ''; | ||
2958 | } | ||
2959 | |||
2960 | function getSourceInfoErrorAddendum(elementProps) { | ||
2961 | if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) { | ||
2962 | var source = elementProps.__source; | ||
2963 | var fileName = source.fileName.replace(/^.*[\\\/]/, ''); | ||
2964 | var lineNumber = source.lineNumber; | ||
2965 | return ' Check your code at ' + fileName + ':' + lineNumber + '.'; | ||
2966 | } | ||
2967 | return ''; | ||
2968 | } | ||
2969 | |||
2970 | /** | ||
2971 | * Warn if there's no key explicitly set on dynamic arrays of children or | ||
2972 | * object keys are not valid. This allows us to keep track of children between | ||
2973 | * updates. | ||
2974 | */ | ||
2975 | var ownerHasKeyUseWarning = {}; | ||
2976 | |||
2977 | function getCurrentComponentErrorInfo(parentType) { | ||
2978 | var info = getDeclarationErrorAddendum(); | ||
2979 | |||
2980 | if (!info) { | ||
2981 | var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; | ||
2982 | if (parentName) { | ||
2983 | info = ' Check the top-level render call using <' + parentName + '>.'; | ||
2984 | } | ||
2985 | } | ||
2986 | return info; | ||
2987 | } | ||
2988 | |||
2989 | /** | ||
2990 | * Warn if the element doesn't have an explicit key assigned to it. | ||
2991 | * This element is in an array. The array could grow and shrink or be | ||
2992 | * reordered. All children that haven't already been validated are required to | ||
2993 | * have a "key" property assigned to it. Error statuses are cached so a warning | ||
2994 | * will only be shown once. | ||
2995 | * | ||
2996 | * @internal | ||
2997 | * @param {ReactElement} element Element that requires a key. | ||
2998 | * @param {*} parentType element's parent's type. | ||
2999 | */ | ||
3000 | function validateExplicitKey(element, parentType) { | ||
3001 | if (!element._store || element._store.validated || element.key != null) { | ||
3002 | return; | ||
3003 | } | ||
3004 | element._store.validated = true; | ||
3005 | |||
3006 | var memoizer = ownerHasKeyUseWarning.uniqueKey || (ownerHasKeyUseWarning.uniqueKey = {}); | ||
3007 | |||
3008 | var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); | ||
3009 | if (memoizer[currentComponentErrorInfo]) { | ||
3010 | return; | ||
3011 | } | ||
3012 | memoizer[currentComponentErrorInfo] = true; | ||
3013 | |||
3014 | // Usually the current owner is the offender, but if it accepts children as a | ||
3015 | // property, it may be the creator of the child that's responsible for | ||
3016 | // assigning it a key. | ||
3017 | var childOwner = ''; | ||
3018 | if (element && element._owner && element._owner !== ReactCurrentOwner.current) { | ||
3019 | // Give the component that originally created this child. | ||
3020 | childOwner = ' It was passed a child from ' + element._owner.getName() + '.'; | ||
3021 | } | ||
3022 | |||
3023 | process.env.NODE_ENV !== 'production' ? warning(false, 'Each child in an array or iterator should have a unique "key" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, ReactComponentTreeHook.getCurrentStackAddendum(element)) : void 0; | ||
3024 | } | ||
3025 | |||
3026 | /** | ||
3027 | * Ensure that every element either is passed in a static location, in an | ||
3028 | * array with an explicit keys property defined, or in an object literal | ||
3029 | * with valid key property. | ||
3030 | * | ||
3031 | * @internal | ||
3032 | * @param {ReactNode} node Statically passed child of any type. | ||
3033 | * @param {*} parentType node's parent's type. | ||
3034 | */ | ||
3035 | function validateChildKeys(node, parentType) { | ||
3036 | if (typeof node !== 'object') { | ||
3037 | return; | ||
3038 | } | ||
3039 | if (Array.isArray(node)) { | ||
3040 | for (var i = 0; i < node.length; i++) { | ||
3041 | var child = node[i]; | ||
3042 | if (ReactElement.isValidElement(child)) { | ||
3043 | validateExplicitKey(child, parentType); | ||
3044 | } | ||
3045 | } | ||
3046 | } else if (ReactElement.isValidElement(node)) { | ||
3047 | // This element was passed in a valid location. | ||
3048 | if (node._store) { | ||
3049 | node._store.validated = true; | ||
3050 | } | ||
3051 | } else if (node) { | ||
3052 | var iteratorFn = getIteratorFn(node); | ||
3053 | // Entry iterators provide implicit keys. | ||
3054 | if (iteratorFn) { | ||
3055 | if (iteratorFn !== node.entries) { | ||
3056 | var iterator = iteratorFn.call(node); | ||
3057 | var step; | ||
3058 | while (!(step = iterator.next()).done) { | ||
3059 | if (ReactElement.isValidElement(step.value)) { | ||
3060 | validateExplicitKey(step.value, parentType); | ||
3061 | } | ||
3062 | } | ||
3063 | } | ||
3064 | } | ||
3065 | } | ||
3066 | } | ||
3067 | |||
3068 | /** | ||
3069 | * Given an element, validate that its props follow the propTypes definition, | ||
3070 | * provided by the type. | ||
3071 | * | ||
3072 | * @param {ReactElement} element | ||
3073 | */ | ||
3074 | function validatePropTypes(element) { | ||
3075 | var componentClass = element.type; | ||
3076 | if (typeof componentClass !== 'function') { | ||
3077 | return; | ||
3078 | } | ||
3079 | var name = componentClass.displayName || componentClass.name; | ||
3080 | if (componentClass.propTypes) { | ||
3081 | checkReactTypeSpec(componentClass.propTypes, element.props, 'prop', name, element, null); | ||
3082 | } | ||
3083 | if (typeof componentClass.getDefaultProps === 'function') { | ||
3084 | process.env.NODE_ENV !== 'production' ? warning(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0; | ||
3085 | } | ||
3086 | } | ||
3087 | |||
3088 | var ReactElementValidator = { | ||
3089 | |||
3090 | createElement: function (type, props, children) { | ||
3091 | var validType = typeof type === 'string' || typeof type === 'function'; | ||
3092 | // We warn in this case but don't throw. We expect the element creation to | ||
3093 | // succeed and there will likely be errors in render. | ||
3094 | if (!validType) { | ||
3095 | if (typeof type !== 'function' && typeof type !== 'string') { | ||
3096 | var info = ''; | ||
3097 | if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { | ||
3098 | info += ' You likely forgot to export your component from the file ' + 'it\'s defined in.'; | ||
3099 | } | ||
3100 | |||
3101 | var sourceInfo = getSourceInfoErrorAddendum(props); | ||
3102 | if (sourceInfo) { | ||
3103 | info += sourceInfo; | ||
3104 | } else { | ||
3105 | info += getDeclarationErrorAddendum(); | ||
3106 | } | ||
3107 | |||
3108 | info += ReactComponentTreeHook.getCurrentStackAddendum(); | ||
3109 | |||
3110 | process.env.NODE_ENV !== 'production' ? warning(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', type == null ? type : typeof type, info) : void 0; | ||
3111 | } | ||
3112 | } | ||
3113 | |||
3114 | var element = ReactElement.createElement.apply(this, arguments); | ||
3115 | |||
3116 | // The result can be nullish if a mock or a custom function is used. | ||
3117 | // TODO: Drop this when these are no longer allowed as the type argument. | ||
3118 | if (element == null) { | ||
3119 | return element; | ||
3120 | } | ||
3121 | |||
3122 | // Skip key warning if the type isn't valid since our key validation logic | ||
3123 | // doesn't expect a non-string/function type and can throw confusing errors. | ||
3124 | // We don't want exception behavior to differ between dev and prod. | ||
3125 | // (Rendering will throw with a helpful message and as soon as the type is | ||
3126 | // fixed, the key warnings will appear.) | ||
3127 | if (validType) { | ||
3128 | for (var i = 2; i < arguments.length; i++) { | ||
3129 | validateChildKeys(arguments[i], type); | ||
3130 | } | ||
3131 | } | ||
3132 | |||
3133 | validatePropTypes(element); | ||
3134 | |||
3135 | return element; | ||
3136 | }, | ||
3137 | |||
3138 | createFactory: function (type) { | ||
3139 | var validatedFactory = ReactElementValidator.createElement.bind(null, type); | ||
3140 | // Legacy hook TODO: Warn if this is accessed | ||
3141 | validatedFactory.type = type; | ||
3142 | |||
3143 | if (process.env.NODE_ENV !== 'production') { | ||
3144 | if (canDefineProperty) { | ||
3145 | Object.defineProperty(validatedFactory, 'type', { | ||
3146 | enumerable: false, | ||
3147 | get: function () { | ||
3148 | process.env.NODE_ENV !== 'production' ? warning(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.') : void 0; | ||
3149 | Object.defineProperty(this, 'type', { | ||
3150 | value: type | ||
3151 | }); | ||
3152 | return type; | ||
3153 | } | ||
3154 | }); | ||
3155 | } | ||
3156 | } | ||
3157 | |||
3158 | return validatedFactory; | ||
3159 | }, | ||
3160 | |||
3161 | cloneElement: function (element, props, children) { | ||
3162 | var newElement = ReactElement.cloneElement.apply(this, arguments); | ||
3163 | for (var i = 2; i < arguments.length; i++) { | ||
3164 | validateChildKeys(arguments[i], newElement.type); | ||
3165 | } | ||
3166 | validatePropTypes(newElement); | ||
3167 | return newElement; | ||
3168 | } | ||
3169 | |||
3170 | }; | ||
3171 | |||
3172 | module.exports = ReactElementValidator; | ||
3173 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
3174 | |||
3175 | /***/ }), | ||
3176 | /* 28 */ | ||
3177 | /***/ (function(module, exports, __webpack_require__) { | ||
3178 | |||
3179 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
3180 | * Copyright 2016-present, Facebook, Inc. | ||
3181 | * All rights reserved. | ||
3182 | * | ||
3183 | * This source code is licensed under the BSD-style license found in the | ||
3184 | * LICENSE file in the root directory of this source tree. An additional grant | ||
3185 | * of patent rights can be found in the PATENTS file in the same directory. | ||
3186 | * | ||
3187 | * | ||
3188 | */ | ||
3189 | |||
3190 | 'use strict'; | ||
3191 | |||
3192 | var _prodInvariant = __webpack_require__(9); | ||
3193 | |||
3194 | var ReactCurrentOwner = __webpack_require__(12); | ||
3195 | |||
3196 | var invariant = __webpack_require__(10); | ||
3197 | var warning = __webpack_require__(13); | ||
3198 | |||
3199 | function isNative(fn) { | ||
3200 | // Based on isNative() from Lodash | ||
3201 | var funcToString = Function.prototype.toString; | ||
3202 | var hasOwnProperty = Object.prototype.hasOwnProperty; | ||
3203 | var reIsNative = RegExp('^' + funcToString | ||
3204 | // Take an example native function source for comparison | ||
3205 | .call(hasOwnProperty) | ||
3206 | // Strip regex characters so we can use it for regex | ||
3207 | .replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') | ||
3208 | // Remove hasOwnProperty from the template to make it generic | ||
3209 | .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'); | ||
3210 | try { | ||
3211 | var source = funcToString.call(fn); | ||
3212 | return reIsNative.test(source); | ||
3213 | } catch (err) { | ||
3214 | return false; | ||
3215 | } | ||
3216 | } | ||
3217 | |||
3218 | var canUseCollections = | ||
3219 | // Array.from | ||
3220 | typeof Array.from === 'function' && | ||
3221 | // Map | ||
3222 | typeof Map === 'function' && isNative(Map) && | ||
3223 | // Map.prototype.keys | ||
3224 | Map.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) && | ||
3225 | // Set | ||
3226 | typeof Set === 'function' && isNative(Set) && | ||
3227 | // Set.prototype.keys | ||
3228 | Set.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys); | ||
3229 | |||
3230 | var setItem; | ||
3231 | var getItem; | ||
3232 | var removeItem; | ||
3233 | var getItemIDs; | ||
3234 | var addRoot; | ||
3235 | var removeRoot; | ||
3236 | var getRootIDs; | ||
3237 | |||
3238 | if (canUseCollections) { | ||
3239 | var itemMap = new Map(); | ||
3240 | var rootIDSet = new Set(); | ||
3241 | |||
3242 | setItem = function (id, item) { | ||
3243 | itemMap.set(id, item); | ||
3244 | }; | ||
3245 | getItem = function (id) { | ||
3246 | return itemMap.get(id); | ||
3247 | }; | ||
3248 | removeItem = function (id) { | ||
3249 | itemMap['delete'](id); | ||
3250 | }; | ||
3251 | getItemIDs = function () { | ||
3252 | return Array.from(itemMap.keys()); | ||
3253 | }; | ||
3254 | |||
3255 | addRoot = function (id) { | ||
3256 | rootIDSet.add(id); | ||
3257 | }; | ||
3258 | removeRoot = function (id) { | ||
3259 | rootIDSet['delete'](id); | ||
3260 | }; | ||
3261 | getRootIDs = function () { | ||
3262 | return Array.from(rootIDSet.keys()); | ||
3263 | }; | ||
3264 | } else { | ||
3265 | var itemByKey = {}; | ||
3266 | var rootByKey = {}; | ||
3267 | |||
3268 | // Use non-numeric keys to prevent V8 performance issues: | ||
3269 | // https://github.com/facebook/react/pull/7232 | ||
3270 | var getKeyFromID = function (id) { | ||
3271 | return '.' + id; | ||
3272 | }; | ||
3273 | var getIDFromKey = function (key) { | ||
3274 | return parseInt(key.substr(1), 10); | ||
3275 | }; | ||
3276 | |||
3277 | setItem = function (id, item) { | ||
3278 | var key = getKeyFromID(id); | ||
3279 | itemByKey[key] = item; | ||
3280 | }; | ||
3281 | getItem = function (id) { | ||
3282 | var key = getKeyFromID(id); | ||
3283 | return itemByKey[key]; | ||
3284 | }; | ||
3285 | removeItem = function (id) { | ||
3286 | var key = getKeyFromID(id); | ||
3287 | delete itemByKey[key]; | ||
3288 | }; | ||
3289 | getItemIDs = function () { | ||
3290 | return Object.keys(itemByKey).map(getIDFromKey); | ||
3291 | }; | ||
3292 | |||
3293 | addRoot = function (id) { | ||
3294 | var key = getKeyFromID(id); | ||
3295 | rootByKey[key] = true; | ||
3296 | }; | ||
3297 | removeRoot = function (id) { | ||
3298 | var key = getKeyFromID(id); | ||
3299 | delete rootByKey[key]; | ||
3300 | }; | ||
3301 | getRootIDs = function () { | ||
3302 | return Object.keys(rootByKey).map(getIDFromKey); | ||
3303 | }; | ||
3304 | } | ||
3305 | |||
3306 | var unmountedIDs = []; | ||
3307 | |||
3308 | function purgeDeep(id) { | ||
3309 | var item = getItem(id); | ||
3310 | if (item) { | ||
3311 | var childIDs = item.childIDs; | ||
3312 | |||
3313 | removeItem(id); | ||
3314 | childIDs.forEach(purgeDeep); | ||
3315 | } | ||
3316 | } | ||
3317 | |||
3318 | function describeComponentFrame(name, source, ownerName) { | ||
3319 | return '\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : ''); | ||
3320 | } | ||
3321 | |||
3322 | function getDisplayName(element) { | ||
3323 | if (element == null) { | ||
3324 | return '#empty'; | ||
3325 | } else if (typeof element === 'string' || typeof element === 'number') { | ||
3326 | return '#text'; | ||
3327 | } else if (typeof element.type === 'string') { | ||
3328 | return element.type; | ||
3329 | } else { | ||
3330 | return element.type.displayName || element.type.name || 'Unknown'; | ||
3331 | } | ||
3332 | } | ||
3333 | |||
3334 | function describeID(id) { | ||
3335 | var name = ReactComponentTreeHook.getDisplayName(id); | ||
3336 | var element = ReactComponentTreeHook.getElement(id); | ||
3337 | var ownerID = ReactComponentTreeHook.getOwnerID(id); | ||
3338 | var ownerName; | ||
3339 | if (ownerID) { | ||
3340 | ownerName = ReactComponentTreeHook.getDisplayName(ownerID); | ||
3341 | } | ||
3342 | process.env.NODE_ENV !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0; | ||
3343 | return describeComponentFrame(name, element && element._source, ownerName); | ||
3344 | } | ||
3345 | |||
3346 | var ReactComponentTreeHook = { | ||
3347 | onSetChildren: function (id, nextChildIDs) { | ||
3348 | var item = getItem(id); | ||
3349 | !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0; | ||
3350 | item.childIDs = nextChildIDs; | ||
3351 | |||
3352 | for (var i = 0; i < nextChildIDs.length; i++) { | ||
3353 | var nextChildID = nextChildIDs[i]; | ||
3354 | var nextChild = getItem(nextChildID); | ||
3355 | !nextChild ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0; | ||
3356 | !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0; | ||
3357 | !nextChild.isMounted ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0; | ||
3358 | if (nextChild.parentID == null) { | ||
3359 | nextChild.parentID = id; | ||
3360 | // TODO: This shouldn't be necessary but mounting a new root during in | ||
3361 | // componentWillMount currently causes not-yet-mounted components to | ||
3362 | // be purged from our tree data so their parent id is missing. | ||
3363 | } | ||
3364 | !(nextChild.parentID === id) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0; | ||
3365 | } | ||
3366 | }, | ||
3367 | onBeforeMountComponent: function (id, element, parentID) { | ||
3368 | var item = { | ||
3369 | element: element, | ||
3370 | parentID: parentID, | ||
3371 | text: null, | ||
3372 | childIDs: [], | ||
3373 | isMounted: false, | ||
3374 | updateCount: 0 | ||
3375 | }; | ||
3376 | setItem(id, item); | ||
3377 | }, | ||
3378 | onBeforeUpdateComponent: function (id, element) { | ||
3379 | var item = getItem(id); | ||
3380 | if (!item || !item.isMounted) { | ||
3381 | // We may end up here as a result of setState() in componentWillUnmount(). | ||
3382 | // In this case, ignore the element. | ||
3383 | return; | ||
3384 | } | ||
3385 | item.element = element; | ||
3386 | }, | ||
3387 | onMountComponent: function (id) { | ||
3388 | var item = getItem(id); | ||
3389 | !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0; | ||
3390 | item.isMounted = true; | ||
3391 | var isRoot = item.parentID === 0; | ||
3392 | if (isRoot) { | ||
3393 | addRoot(id); | ||
3394 | } | ||
3395 | }, | ||
3396 | onUpdateComponent: function (id) { | ||
3397 | var item = getItem(id); | ||
3398 | if (!item || !item.isMounted) { | ||
3399 | // We may end up here as a result of setState() in componentWillUnmount(). | ||
3400 | // In this case, ignore the element. | ||
3401 | return; | ||
3402 | } | ||
3403 | item.updateCount++; | ||
3404 | }, | ||
3405 | onUnmountComponent: function (id) { | ||
3406 | var item = getItem(id); | ||
3407 | if (item) { | ||
3408 | // We need to check if it exists. | ||
3409 | // `item` might not exist if it is inside an error boundary, and a sibling | ||
3410 | // error boundary child threw while mounting. Then this instance never | ||
3411 | // got a chance to mount, but it still gets an unmounting event during | ||
3412 | // the error boundary cleanup. | ||
3413 | item.isMounted = false; | ||
3414 | var isRoot = item.parentID === 0; | ||
3415 | if (isRoot) { | ||
3416 | removeRoot(id); | ||
3417 | } | ||
3418 | } | ||
3419 | unmountedIDs.push(id); | ||
3420 | }, | ||
3421 | purgeUnmountedComponents: function () { | ||
3422 | if (ReactComponentTreeHook._preventPurging) { | ||
3423 | // Should only be used for testing. | ||
3424 | return; | ||
3425 | } | ||
3426 | |||
3427 | for (var i = 0; i < unmountedIDs.length; i++) { | ||
3428 | var id = unmountedIDs[i]; | ||
3429 | purgeDeep(id); | ||
3430 | } | ||
3431 | unmountedIDs.length = 0; | ||
3432 | }, | ||
3433 | isMounted: function (id) { | ||
3434 | var item = getItem(id); | ||
3435 | return item ? item.isMounted : false; | ||
3436 | }, | ||
3437 | getCurrentStackAddendum: function (topElement) { | ||
3438 | var info = ''; | ||
3439 | if (topElement) { | ||
3440 | var name = getDisplayName(topElement); | ||
3441 | var owner = topElement._owner; | ||
3442 | info += describeComponentFrame(name, topElement._source, owner && owner.getName()); | ||
3443 | } | ||
3444 | |||
3445 | var currentOwner = ReactCurrentOwner.current; | ||
3446 | var id = currentOwner && currentOwner._debugID; | ||
3447 | |||
3448 | info += ReactComponentTreeHook.getStackAddendumByID(id); | ||
3449 | return info; | ||
3450 | }, | ||
3451 | getStackAddendumByID: function (id) { | ||
3452 | var info = ''; | ||
3453 | while (id) { | ||
3454 | info += describeID(id); | ||
3455 | id = ReactComponentTreeHook.getParentID(id); | ||
3456 | } | ||
3457 | return info; | ||
3458 | }, | ||
3459 | getChildIDs: function (id) { | ||
3460 | var item = getItem(id); | ||
3461 | return item ? item.childIDs : []; | ||
3462 | }, | ||
3463 | getDisplayName: function (id) { | ||
3464 | var element = ReactComponentTreeHook.getElement(id); | ||
3465 | if (!element) { | ||
3466 | return null; | ||
3467 | } | ||
3468 | return getDisplayName(element); | ||
3469 | }, | ||
3470 | getElement: function (id) { | ||
3471 | var item = getItem(id); | ||
3472 | return item ? item.element : null; | ||
3473 | }, | ||
3474 | getOwnerID: function (id) { | ||
3475 | var element = ReactComponentTreeHook.getElement(id); | ||
3476 | if (!element || !element._owner) { | ||
3477 | return null; | ||
3478 | } | ||
3479 | return element._owner._debugID; | ||
3480 | }, | ||
3481 | getParentID: function (id) { | ||
3482 | var item = getItem(id); | ||
3483 | return item ? item.parentID : null; | ||
3484 | }, | ||
3485 | getSource: function (id) { | ||
3486 | var item = getItem(id); | ||
3487 | var element = item ? item.element : null; | ||
3488 | var source = element != null ? element._source : null; | ||
3489 | return source; | ||
3490 | }, | ||
3491 | getText: function (id) { | ||
3492 | var element = ReactComponentTreeHook.getElement(id); | ||
3493 | if (typeof element === 'string') { | ||
3494 | return element; | ||
3495 | } else if (typeof element === 'number') { | ||
3496 | return '' + element; | ||
3497 | } else { | ||
3498 | return null; | ||
3499 | } | ||
3500 | }, | ||
3501 | getUpdateCount: function (id) { | ||
3502 | var item = getItem(id); | ||
3503 | return item ? item.updateCount : 0; | ||
3504 | }, | ||
3505 | |||
3506 | |||
3507 | getRootIDs: getRootIDs, | ||
3508 | getRegisteredIDs: getItemIDs | ||
3509 | }; | ||
3510 | |||
3511 | module.exports = ReactComponentTreeHook; | ||
3512 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
3513 | |||
3514 | /***/ }), | ||
3515 | /* 29 */ | ||
3516 | /***/ (function(module, exports, __webpack_require__) { | ||
3517 | |||
3518 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
3519 | * Copyright 2013-present, Facebook, Inc. | ||
3520 | * All rights reserved. | ||
3521 | * | ||
3522 | * This source code is licensed under the BSD-style license found in the | ||
3523 | * LICENSE file in the root directory of this source tree. An additional grant | ||
3524 | * of patent rights can be found in the PATENTS file in the same directory. | ||
3525 | * | ||
3526 | */ | ||
3527 | |||
3528 | 'use strict'; | ||
3529 | |||
3530 | var _prodInvariant = __webpack_require__(9); | ||
3531 | |||
3532 | var ReactPropTypeLocationNames = __webpack_require__(25); | ||
3533 | var ReactPropTypesSecret = __webpack_require__(30); | ||
3534 | |||
3535 | var invariant = __webpack_require__(10); | ||
3536 | var warning = __webpack_require__(13); | ||
3537 | |||
3538 | var ReactComponentTreeHook; | ||
3539 | |||
3540 | if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') { | ||
3541 | // Temporary hack. | ||
3542 | // Inline requires don't work well with Jest: | ||
3543 | // https://github.com/facebook/react/issues/7240 | ||
3544 | // Remove the inline requires when we don't need them anymore: | ||
3545 | // https://github.com/facebook/react/pull/7178 | ||
3546 | ReactComponentTreeHook = __webpack_require__(28); | ||
3547 | } | ||
3548 | |||
3549 | var loggedTypeFailures = {}; | ||
3550 | |||
3551 | /** | ||
3552 | * Assert that the values match with the type specs. | ||
3553 | * Error messages are memorized and will only be shown once. | ||
3554 | * | ||
3555 | * @param {object} typeSpecs Map of name to a ReactPropType | ||
3556 | * @param {object} values Runtime values that need to be type-checked | ||
3557 | * @param {string} location e.g. "prop", "context", "child context" | ||
3558 | * @param {string} componentName Name of the component for error messages. | ||
3559 | * @param {?object} element The React element that is being type-checked | ||
3560 | * @param {?number} debugID The React component instance that is being type-checked | ||
3561 | * @private | ||
3562 | */ | ||
3563 | function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) { | ||
3564 | for (var typeSpecName in typeSpecs) { | ||
3565 | if (typeSpecs.hasOwnProperty(typeSpecName)) { | ||
3566 | var error; | ||
3567 | // Prop type validation may throw. In case they do, we don't want to | ||
3568 | // fail the render phase where it didn't fail before. So we log it. | ||
3569 | // After these have been cleaned up, we'll let them throw. | ||
3570 | try { | ||
3571 | // This is intentionally an invariant that gets caught. It's the same | ||
3572 | // behavior as without this statement except with a better message. | ||
3573 | !(typeof typeSpecs[typeSpecName] === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant('84', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : void 0; | ||
3574 | error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); | ||
3575 | } catch (ex) { | ||
3576 | error = ex; | ||
3577 | } | ||
3578 | process.env.NODE_ENV !== 'production' ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0; | ||
3579 | if (error instanceof Error && !(error.message in loggedTypeFailures)) { | ||
3580 | // Only monitor this failure once because there tends to be a lot of the | ||
3581 | // same error. | ||
3582 | loggedTypeFailures[error.message] = true; | ||
3583 | |||
3584 | var componentStackInfo = ''; | ||
3585 | |||
3586 | if (process.env.NODE_ENV !== 'production') { | ||
3587 | if (!ReactComponentTreeHook) { | ||
3588 | ReactComponentTreeHook = __webpack_require__(28); | ||
3589 | } | ||
3590 | if (debugID !== null) { | ||
3591 | componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID); | ||
3592 | } else if (element !== null) { | ||
3593 | componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element); | ||
3594 | } | ||
3595 | } | ||
3596 | |||
3597 | process.env.NODE_ENV !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0; | ||
3598 | } | ||
3599 | } | ||
3600 | } | ||
3601 | } | ||
3602 | |||
3603 | module.exports = checkReactTypeSpec; | ||
3604 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
3605 | |||
3606 | /***/ }), | ||
3607 | /* 30 */ | ||
3608 | /***/ (function(module, exports) { | ||
3609 | |||
3610 | /** | ||
3611 | * Copyright 2013-present, Facebook, Inc. | ||
3612 | * All rights reserved. | ||
3613 | * | ||
3614 | * This source code is licensed under the BSD-style license found in the | ||
3615 | * LICENSE file in the root directory of this source tree. An additional grant | ||
3616 | * of patent rights can be found in the PATENTS file in the same directory. | ||
3617 | * | ||
3618 | * | ||
3619 | */ | ||
3620 | |||
3621 | 'use strict'; | ||
3622 | |||
3623 | var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; | ||
3624 | |||
3625 | module.exports = ReactPropTypesSecret; | ||
3626 | |||
3627 | /***/ }), | ||
3628 | /* 31 */ | ||
3629 | /***/ (function(module, exports, __webpack_require__) { | ||
3630 | |||
3631 | /** | ||
3632 | * Copyright 2013-present, Facebook, Inc. | ||
3633 | * All rights reserved. | ||
3634 | * | ||
3635 | * This source code is licensed under the BSD-style license found in the | ||
3636 | * LICENSE file in the root directory of this source tree. An additional grant | ||
3637 | * of patent rights can be found in the PATENTS file in the same directory. | ||
3638 | * | ||
3639 | */ | ||
3640 | |||
3641 | 'use strict'; | ||
3642 | |||
3643 | var _require = __webpack_require__(11), | ||
3644 | isValidElement = _require.isValidElement; | ||
3645 | |||
3646 | var factory = __webpack_require__(32); | ||
3647 | |||
3648 | module.exports = factory(isValidElement); | ||
3649 | |||
3650 | /***/ }), | ||
3651 | /* 32 */ | ||
3652 | /***/ (function(module, exports, __webpack_require__) { | ||
3653 | |||
3654 | /** | ||
3655 | * Copyright 2013-present, Facebook, Inc. | ||
3656 | * All rights reserved. | ||
3657 | * | ||
3658 | * This source code is licensed under the BSD-style license found in the | ||
3659 | * LICENSE file in the root directory of this source tree. An additional grant | ||
3660 | * of patent rights can be found in the PATENTS file in the same directory. | ||
3661 | */ | ||
3662 | |||
3663 | 'use strict'; | ||
3664 | |||
3665 | // React 15.5 references this module, and assumes PropTypes are still callable in production. | ||
3666 | // Therefore we re-export development-only version with all the PropTypes checks here. | ||
3667 | // However if one is migrating to the `prop-types` npm library, they will go through the | ||
3668 | // `index.js` entry point, and it will branch depending on the environment. | ||
3669 | var factory = __webpack_require__(33); | ||
3670 | module.exports = function(isValidElement) { | ||
3671 | // It is still allowed in 15.5. | ||
3672 | var throwOnDirectAccess = false; | ||
3673 | return factory(isValidElement, throwOnDirectAccess); | ||
3674 | }; | ||
3675 | |||
3676 | |||
3677 | /***/ }), | ||
3678 | /* 33 */ | ||
3679 | /***/ (function(module, exports, __webpack_require__) { | ||
3680 | |||
3681 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
3682 | * Copyright 2013-present, Facebook, Inc. | ||
3683 | * All rights reserved. | ||
3684 | * | ||
3685 | * This source code is licensed under the BSD-style license found in the | ||
3686 | * LICENSE file in the root directory of this source tree. An additional grant | ||
3687 | * of patent rights can be found in the PATENTS file in the same directory. | ||
3688 | */ | ||
3689 | |||
3690 | 'use strict'; | ||
3691 | |||
3692 | var emptyFunction = __webpack_require__(14); | ||
3693 | var invariant = __webpack_require__(10); | ||
3694 | var warning = __webpack_require__(13); | ||
3695 | |||
3696 | var ReactPropTypesSecret = __webpack_require__(34); | ||
3697 | var checkPropTypes = __webpack_require__(35); | ||
3698 | |||
3699 | module.exports = function(isValidElement, throwOnDirectAccess) { | ||
3700 | /* global Symbol */ | ||
3701 | var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; | ||
3702 | var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. | ||
3703 | |||
3704 | /** | ||
3705 | * Returns the iterator method function contained on the iterable object. | ||
3706 | * | ||
3707 | * Be sure to invoke the function with the iterable as context: | ||
3708 | * | ||
3709 | * var iteratorFn = getIteratorFn(myIterable); | ||
3710 | * if (iteratorFn) { | ||
3711 | * var iterator = iteratorFn.call(myIterable); | ||
3712 | * ... | ||
3713 | * } | ||
3714 | * | ||
3715 | * @param {?object} maybeIterable | ||
3716 | * @return {?function} | ||
3717 | */ | ||
3718 | function getIteratorFn(maybeIterable) { | ||
3719 | var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); | ||
3720 | if (typeof iteratorFn === 'function') { | ||
3721 | return iteratorFn; | ||
3722 | } | ||
3723 | } | ||
3724 | |||
3725 | /** | ||
3726 | * Collection of methods that allow declaration and validation of props that are | ||
3727 | * supplied to React components. Example usage: | ||
3728 | * | ||
3729 | * var Props = require('ReactPropTypes'); | ||
3730 | * var MyArticle = React.createClass({ | ||
3731 | * propTypes: { | ||
3732 | * // An optional string prop named "description". | ||
3733 | * description: Props.string, | ||
3734 | * | ||
3735 | * // A required enum prop named "category". | ||
3736 | * category: Props.oneOf(['News','Photos']).isRequired, | ||
3737 | * | ||
3738 | * // A prop named "dialog" that requires an instance of Dialog. | ||
3739 | * dialog: Props.instanceOf(Dialog).isRequired | ||
3740 | * }, | ||
3741 | * render: function() { ... } | ||
3742 | * }); | ||
3743 | * | ||
3744 | * A more formal specification of how these methods are used: | ||
3745 | * | ||
3746 | * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) | ||
3747 | * decl := ReactPropTypes.{type}(.isRequired)? | ||
3748 | * | ||
3749 | * Each and every declaration produces a function with the same signature. This | ||
3750 | * allows the creation of custom validation functions. For example: | ||
3751 | * | ||
3752 | * var MyLink = React.createClass({ | ||
3753 | * propTypes: { | ||
3754 | * // An optional string or URI prop named "href". | ||
3755 | * href: function(props, propName, componentName) { | ||
3756 | * var propValue = props[propName]; | ||
3757 | * if (propValue != null && typeof propValue !== 'string' && | ||
3758 | * !(propValue instanceof URI)) { | ||
3759 | * return new Error( | ||
3760 | * 'Expected a string or an URI for ' + propName + ' in ' + | ||
3761 | * componentName | ||
3762 | * ); | ||
3763 | * } | ||
3764 | * } | ||
3765 | * }, | ||
3766 | * render: function() {...} | ||
3767 | * }); | ||
3768 | * | ||
3769 | * @internal | ||
3770 | */ | ||
3771 | |||
3772 | var ANONYMOUS = '<<anonymous>>'; | ||
3773 | |||
3774 | // Important! | ||
3775 | // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. | ||
3776 | var ReactPropTypes = { | ||
3777 | array: createPrimitiveTypeChecker('array'), | ||
3778 | bool: createPrimitiveTypeChecker('boolean'), | ||
3779 | func: createPrimitiveTypeChecker('function'), | ||
3780 | number: createPrimitiveTypeChecker('number'), | ||
3781 | object: createPrimitiveTypeChecker('object'), | ||
3782 | string: createPrimitiveTypeChecker('string'), | ||
3783 | symbol: createPrimitiveTypeChecker('symbol'), | ||
3784 | |||
3785 | any: createAnyTypeChecker(), | ||
3786 | arrayOf: createArrayOfTypeChecker, | ||
3787 | element: createElementTypeChecker(), | ||
3788 | instanceOf: createInstanceTypeChecker, | ||
3789 | node: createNodeChecker(), | ||
3790 | objectOf: createObjectOfTypeChecker, | ||
3791 | oneOf: createEnumTypeChecker, | ||
3792 | oneOfType: createUnionTypeChecker, | ||
3793 | shape: createShapeTypeChecker | ||
3794 | }; | ||
3795 | |||
3796 | /** | ||
3797 | * inlined Object.is polyfill to avoid requiring consumers ship their own | ||
3798 | * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is | ||
3799 | */ | ||
3800 | /*eslint-disable no-self-compare*/ | ||
3801 | function is(x, y) { | ||
3802 | // SameValue algorithm | ||
3803 | if (x === y) { | ||
3804 | // Steps 1-5, 7-10 | ||
3805 | // Steps 6.b-6.e: +0 != -0 | ||
3806 | return x !== 0 || 1 / x === 1 / y; | ||
3807 | } else { | ||
3808 | // Step 6.a: NaN == NaN | ||
3809 | return x !== x && y !== y; | ||
3810 | } | ||
3811 | } | ||
3812 | /*eslint-enable no-self-compare*/ | ||
3813 | |||
3814 | /** | ||
3815 | * We use an Error-like object for backward compatibility as people may call | ||
3816 | * PropTypes directly and inspect their output. However, we don't use real | ||
3817 | * Errors anymore. We don't inspect their stack anyway, and creating them | ||
3818 | * is prohibitively expensive if they are created too often, such as what | ||
3819 | * happens in oneOfType() for any type before the one that matched. | ||
3820 | */ | ||
3821 | function PropTypeError(message) { | ||
3822 | this.message = message; | ||
3823 | this.stack = ''; | ||
3824 | } | ||
3825 | // Make `instanceof Error` still work for returned errors. | ||
3826 | PropTypeError.prototype = Error.prototype; | ||
3827 | |||
3828 | function createChainableTypeChecker(validate) { | ||
3829 | if (process.env.NODE_ENV !== 'production') { | ||
3830 | var manualPropTypeCallCache = {}; | ||
3831 | var manualPropTypeWarningCount = 0; | ||
3832 | } | ||
3833 | function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { | ||
3834 | componentName = componentName || ANONYMOUS; | ||
3835 | propFullName = propFullName || propName; | ||
3836 | |||
3837 | if (secret !== ReactPropTypesSecret) { | ||
3838 | if (throwOnDirectAccess) { | ||
3839 | // New behavior only for users of `prop-types` package | ||
3840 | invariant( | ||
3841 | false, | ||
3842 | 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + | ||
3843 | 'Use `PropTypes.checkPropTypes()` to call them. ' + | ||
3844 | 'Read more at http://fb.me/use-check-prop-types' | ||
3845 | ); | ||
3846 | } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') { | ||
3847 | // Old behavior for people using React.PropTypes | ||
3848 | var cacheKey = componentName + ':' + propName; | ||
3849 | if ( | ||
3850 | !manualPropTypeCallCache[cacheKey] && | ||
3851 | // Avoid spamming the console because they are often not actionable except for lib authors | ||
3852 | manualPropTypeWarningCount < 3 | ||
3853 | ) { | ||
3854 | warning( | ||
3855 | false, | ||
3856 | 'You are manually calling a React.PropTypes validation ' + | ||
3857 | 'function for the `%s` prop on `%s`. This is deprecated ' + | ||
3858 | 'and will throw in the standalone `prop-types` package. ' + | ||
3859 | 'You may be seeing this warning due to a third-party PropTypes ' + | ||
3860 | 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', | ||
3861 | propFullName, | ||
3862 | componentName | ||
3863 | ); | ||
3864 | manualPropTypeCallCache[cacheKey] = true; | ||
3865 | manualPropTypeWarningCount++; | ||
3866 | } | ||
3867 | } | ||
3868 | } | ||
3869 | if (props[propName] == null) { | ||
3870 | if (isRequired) { | ||
3871 | if (props[propName] === null) { | ||
3872 | return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); | ||
3873 | } | ||
3874 | return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); | ||
3875 | } | ||
3876 | return null; | ||
3877 | } else { | ||
3878 | return validate(props, propName, componentName, location, propFullName); | ||
3879 | } | ||
3880 | } | ||
3881 | |||
3882 | var chainedCheckType = checkType.bind(null, false); | ||
3883 | chainedCheckType.isRequired = checkType.bind(null, true); | ||
3884 | |||
3885 | return chainedCheckType; | ||
3886 | } | ||
3887 | |||
3888 | function createPrimitiveTypeChecker(expectedType) { | ||
3889 | function validate(props, propName, componentName, location, propFullName, secret) { | ||
3890 | var propValue = props[propName]; | ||
3891 | var propType = getPropType(propValue); | ||
3892 | if (propType !== expectedType) { | ||
3893 | // `propValue` being instance of, say, date/regexp, pass the 'object' | ||
3894 | // check, but we can offer a more precise error message here rather than | ||
3895 | // 'of type `object`'. | ||
3896 | var preciseType = getPreciseType(propValue); | ||
3897 | |||
3898 | return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); | ||
3899 | } | ||
3900 | return null; | ||
3901 | } | ||
3902 | return createChainableTypeChecker(validate); | ||
3903 | } | ||
3904 | |||
3905 | function createAnyTypeChecker() { | ||
3906 | return createChainableTypeChecker(emptyFunction.thatReturnsNull); | ||
3907 | } | ||
3908 | |||
3909 | function createArrayOfTypeChecker(typeChecker) { | ||
3910 | function validate(props, propName, componentName, location, propFullName) { | ||
3911 | if (typeof typeChecker !== 'function') { | ||
3912 | return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); | ||
3913 | } | ||
3914 | var propValue = props[propName]; | ||
3915 | if (!Array.isArray(propValue)) { | ||
3916 | var propType = getPropType(propValue); | ||
3917 | return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); | ||
3918 | } | ||
3919 | for (var i = 0; i < propValue.length; i++) { | ||
3920 | var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); | ||
3921 | if (error instanceof Error) { | ||
3922 | return error; | ||
3923 | } | ||
3924 | } | ||
3925 | return null; | ||
3926 | } | ||
3927 | return createChainableTypeChecker(validate); | ||
3928 | } | ||
3929 | |||
3930 | function createElementTypeChecker() { | ||
3931 | function validate(props, propName, componentName, location, propFullName) { | ||
3932 | var propValue = props[propName]; | ||
3933 | if (!isValidElement(propValue)) { | ||
3934 | var propType = getPropType(propValue); | ||
3935 | return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); | ||
3936 | } | ||
3937 | return null; | ||
3938 | } | ||
3939 | return createChainableTypeChecker(validate); | ||
3940 | } | ||
3941 | |||
3942 | function createInstanceTypeChecker(expectedClass) { | ||
3943 | function validate(props, propName, componentName, location, propFullName) { | ||
3944 | if (!(props[propName] instanceof expectedClass)) { | ||
3945 | var expectedClassName = expectedClass.name || ANONYMOUS; | ||
3946 | var actualClassName = getClassName(props[propName]); | ||
3947 | return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); | ||
3948 | } | ||
3949 | return null; | ||
3950 | } | ||
3951 | return createChainableTypeChecker(validate); | ||
3952 | } | ||
3953 | |||
3954 | function createEnumTypeChecker(expectedValues) { | ||
3955 | if (!Array.isArray(expectedValues)) { | ||
3956 | process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0; | ||
3957 | return emptyFunction.thatReturnsNull; | ||
3958 | } | ||
3959 | |||
3960 | function validate(props, propName, componentName, location, propFullName) { | ||
3961 | var propValue = props[propName]; | ||
3962 | for (var i = 0; i < expectedValues.length; i++) { | ||
3963 | if (is(propValue, expectedValues[i])) { | ||
3964 | return null; | ||
3965 | } | ||
3966 | } | ||
3967 | |||
3968 | var valuesString = JSON.stringify(expectedValues); | ||
3969 | return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); | ||
3970 | } | ||
3971 | return createChainableTypeChecker(validate); | ||
3972 | } | ||
3973 | |||
3974 | function createObjectOfTypeChecker(typeChecker) { | ||
3975 | function validate(props, propName, componentName, location, propFullName) { | ||
3976 | if (typeof typeChecker !== 'function') { | ||
3977 | return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); | ||
3978 | } | ||
3979 | var propValue = props[propName]; | ||
3980 | var propType = getPropType(propValue); | ||
3981 | if (propType !== 'object') { | ||
3982 | return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); | ||
3983 | } | ||
3984 | for (var key in propValue) { | ||
3985 | if (propValue.hasOwnProperty(key)) { | ||
3986 | var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); | ||
3987 | if (error instanceof Error) { | ||
3988 | return error; | ||
3989 | } | ||
3990 | } | ||
3991 | } | ||
3992 | return null; | ||
3993 | } | ||
3994 | return createChainableTypeChecker(validate); | ||
3995 | } | ||
3996 | |||
3997 | function createUnionTypeChecker(arrayOfTypeCheckers) { | ||
3998 | if (!Array.isArray(arrayOfTypeCheckers)) { | ||
3999 | process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; | ||
4000 | return emptyFunction.thatReturnsNull; | ||
4001 | } | ||
4002 | |||
4003 | function validate(props, propName, componentName, location, propFullName) { | ||
4004 | for (var i = 0; i < arrayOfTypeCheckers.length; i++) { | ||
4005 | var checker = arrayOfTypeCheckers[i]; | ||
4006 | if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { | ||
4007 | return null; | ||
4008 | } | ||
4009 | } | ||
4010 | |||
4011 | return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); | ||
4012 | } | ||
4013 | return createChainableTypeChecker(validate); | ||
4014 | } | ||
4015 | |||
4016 | function createNodeChecker() { | ||
4017 | function validate(props, propName, componentName, location, propFullName) { | ||
4018 | if (!isNode(props[propName])) { | ||
4019 | return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); | ||
4020 | } | ||
4021 | return null; | ||
4022 | } | ||
4023 | return createChainableTypeChecker(validate); | ||
4024 | } | ||
4025 | |||
4026 | function createShapeTypeChecker(shapeTypes) { | ||
4027 | function validate(props, propName, componentName, location, propFullName) { | ||
4028 | var propValue = props[propName]; | ||
4029 | var propType = getPropType(propValue); | ||
4030 | if (propType !== 'object') { | ||
4031 | return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); | ||
4032 | } | ||
4033 | for (var key in shapeTypes) { | ||
4034 | var checker = shapeTypes[key]; | ||
4035 | if (!checker) { | ||
4036 | continue; | ||
4037 | } | ||
4038 | var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); | ||
4039 | if (error) { | ||
4040 | return error; | ||
4041 | } | ||
4042 | } | ||
4043 | return null; | ||
4044 | } | ||
4045 | return createChainableTypeChecker(validate); | ||
4046 | } | ||
4047 | |||
4048 | function isNode(propValue) { | ||
4049 | switch (typeof propValue) { | ||
4050 | case 'number': | ||
4051 | case 'string': | ||
4052 | case 'undefined': | ||
4053 | return true; | ||
4054 | case 'boolean': | ||
4055 | return !propValue; | ||
4056 | case 'object': | ||
4057 | if (Array.isArray(propValue)) { | ||
4058 | return propValue.every(isNode); | ||
4059 | } | ||
4060 | if (propValue === null || isValidElement(propValue)) { | ||
4061 | return true; | ||
4062 | } | ||
4063 | |||
4064 | var iteratorFn = getIteratorFn(propValue); | ||
4065 | if (iteratorFn) { | ||
4066 | var iterator = iteratorFn.call(propValue); | ||
4067 | var step; | ||
4068 | if (iteratorFn !== propValue.entries) { | ||
4069 | while (!(step = iterator.next()).done) { | ||
4070 | if (!isNode(step.value)) { | ||
4071 | return false; | ||
4072 | } | ||
4073 | } | ||
4074 | } else { | ||
4075 | // Iterator will provide entry [k,v] tuples rather than values. | ||
4076 | while (!(step = iterator.next()).done) { | ||
4077 | var entry = step.value; | ||
4078 | if (entry) { | ||
4079 | if (!isNode(entry[1])) { | ||
4080 | return false; | ||
4081 | } | ||
4082 | } | ||
4083 | } | ||
4084 | } | ||
4085 | } else { | ||
4086 | return false; | ||
4087 | } | ||
4088 | |||
4089 | return true; | ||
4090 | default: | ||
4091 | return false; | ||
4092 | } | ||
4093 | } | ||
4094 | |||
4095 | function isSymbol(propType, propValue) { | ||
4096 | // Native Symbol. | ||
4097 | if (propType === 'symbol') { | ||
4098 | return true; | ||
4099 | } | ||
4100 | |||
4101 | // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' | ||
4102 | if (propValue['@@toStringTag'] === 'Symbol') { | ||
4103 | return true; | ||
4104 | } | ||
4105 | |||
4106 | // Fallback for non-spec compliant Symbols which are polyfilled. | ||
4107 | if (typeof Symbol === 'function' && propValue instanceof Symbol) { | ||
4108 | return true; | ||
4109 | } | ||
4110 | |||
4111 | return false; | ||
4112 | } | ||
4113 | |||
4114 | // Equivalent of `typeof` but with special handling for array and regexp. | ||
4115 | function getPropType(propValue) { | ||
4116 | var propType = typeof propValue; | ||
4117 | if (Array.isArray(propValue)) { | ||
4118 | return 'array'; | ||
4119 | } | ||
4120 | if (propValue instanceof RegExp) { | ||
4121 | // Old webkits (at least until Android 4.0) return 'function' rather than | ||
4122 | // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ | ||
4123 | // passes PropTypes.object. | ||
4124 | return 'object'; | ||
4125 | } | ||
4126 | if (isSymbol(propType, propValue)) { | ||
4127 | return 'symbol'; | ||
4128 | } | ||
4129 | return propType; | ||
4130 | } | ||
4131 | |||
4132 | // This handles more types than `getPropType`. Only used for error messages. | ||
4133 | // See `createPrimitiveTypeChecker`. | ||
4134 | function getPreciseType(propValue) { | ||
4135 | var propType = getPropType(propValue); | ||
4136 | if (propType === 'object') { | ||
4137 | if (propValue instanceof Date) { | ||
4138 | return 'date'; | ||
4139 | } else if (propValue instanceof RegExp) { | ||
4140 | return 'regexp'; | ||
4141 | } | ||
4142 | } | ||
4143 | return propType; | ||
4144 | } | ||
4145 | |||
4146 | // Returns class name of the object, if any. | ||
4147 | function getClassName(propValue) { | ||
4148 | if (!propValue.constructor || !propValue.constructor.name) { | ||
4149 | return ANONYMOUS; | ||
4150 | } | ||
4151 | return propValue.constructor.name; | ||
4152 | } | ||
4153 | |||
4154 | ReactPropTypes.checkPropTypes = checkPropTypes; | ||
4155 | ReactPropTypes.PropTypes = ReactPropTypes; | ||
4156 | |||
4157 | return ReactPropTypes; | ||
4158 | }; | ||
4159 | |||
4160 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
4161 | |||
4162 | /***/ }), | ||
4163 | /* 34 */ | ||
4164 | /***/ (function(module, exports) { | ||
4165 | |||
4166 | /** | ||
4167 | * Copyright 2013-present, Facebook, Inc. | ||
4168 | * All rights reserved. | ||
4169 | * | ||
4170 | * This source code is licensed under the BSD-style license found in the | ||
4171 | * LICENSE file in the root directory of this source tree. An additional grant | ||
4172 | * of patent rights can be found in the PATENTS file in the same directory. | ||
4173 | */ | ||
4174 | |||
4175 | 'use strict'; | ||
4176 | |||
4177 | var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; | ||
4178 | |||
4179 | module.exports = ReactPropTypesSecret; | ||
4180 | |||
4181 | |||
4182 | /***/ }), | ||
4183 | /* 35 */ | ||
4184 | /***/ (function(module, exports, __webpack_require__) { | ||
4185 | |||
4186 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
4187 | * Copyright 2013-present, Facebook, Inc. | ||
4188 | * All rights reserved. | ||
4189 | * | ||
4190 | * This source code is licensed under the BSD-style license found in the | ||
4191 | * LICENSE file in the root directory of this source tree. An additional grant | ||
4192 | * of patent rights can be found in the PATENTS file in the same directory. | ||
4193 | */ | ||
4194 | |||
4195 | 'use strict'; | ||
4196 | |||
4197 | if (process.env.NODE_ENV !== 'production') { | ||
4198 | var invariant = __webpack_require__(10); | ||
4199 | var warning = __webpack_require__(13); | ||
4200 | var ReactPropTypesSecret = __webpack_require__(34); | ||
4201 | var loggedTypeFailures = {}; | ||
4202 | } | ||
4203 | |||
4204 | /** | ||
4205 | * Assert that the values match with the type specs. | ||
4206 | * Error messages are memorized and will only be shown once. | ||
4207 | * | ||
4208 | * @param {object} typeSpecs Map of name to a ReactPropType | ||
4209 | * @param {object} values Runtime values that need to be type-checked | ||
4210 | * @param {string} location e.g. "prop", "context", "child context" | ||
4211 | * @param {string} componentName Name of the component for error messages. | ||
4212 | * @param {?Function} getStack Returns the component stack. | ||
4213 | * @private | ||
4214 | */ | ||
4215 | function checkPropTypes(typeSpecs, values, location, componentName, getStack) { | ||
4216 | if (process.env.NODE_ENV !== 'production') { | ||
4217 | for (var typeSpecName in typeSpecs) { | ||
4218 | if (typeSpecs.hasOwnProperty(typeSpecName)) { | ||
4219 | var error; | ||
4220 | // Prop type validation may throw. In case they do, we don't want to | ||
4221 | // fail the render phase where it didn't fail before. So we log it. | ||
4222 | // After these have been cleaned up, we'll let them throw. | ||
4223 | try { | ||
4224 | // This is intentionally an invariant that gets caught. It's the same | ||
4225 | // behavior as without this statement except with a better message. | ||
4226 | invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName); | ||
4227 | error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); | ||
4228 | } catch (ex) { | ||
4229 | error = ex; | ||
4230 | } | ||
4231 | warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error); | ||
4232 | if (error instanceof Error && !(error.message in loggedTypeFailures)) { | ||
4233 | // Only monitor this failure once because there tends to be a lot of the | ||
4234 | // same error. | ||
4235 | loggedTypeFailures[error.message] = true; | ||
4236 | |||
4237 | var stack = getStack ? getStack() : ''; | ||
4238 | |||
4239 | warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : ''); | ||
4240 | } | ||
4241 | } | ||
4242 | } | ||
4243 | } | ||
4244 | } | ||
4245 | |||
4246 | module.exports = checkPropTypes; | ||
4247 | |||
4248 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
4249 | |||
4250 | /***/ }), | ||
4251 | /* 36 */ | ||
4252 | /***/ (function(module, exports) { | ||
4253 | |||
4254 | /** | ||
4255 | * Copyright 2013-present, Facebook, Inc. | ||
4256 | * All rights reserved. | ||
4257 | * | ||
4258 | * This source code is licensed under the BSD-style license found in the | ||
4259 | * LICENSE file in the root directory of this source tree. An additional grant | ||
4260 | * of patent rights can be found in the PATENTS file in the same directory. | ||
4261 | * | ||
4262 | */ | ||
4263 | |||
4264 | 'use strict'; | ||
4265 | |||
4266 | module.exports = '15.5.4'; | ||
4267 | |||
4268 | /***/ }), | ||
4269 | /* 37 */ | ||
4270 | /***/ (function(module, exports, __webpack_require__) { | ||
4271 | |||
4272 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
4273 | * Copyright 2013-present, Facebook, Inc. | ||
4274 | * All rights reserved. | ||
4275 | * | ||
4276 | * This source code is licensed under the BSD-style license found in the | ||
4277 | * LICENSE file in the root directory of this source tree. An additional grant | ||
4278 | * of patent rights can be found in the PATENTS file in the same directory. | ||
4279 | * | ||
4280 | */ | ||
4281 | 'use strict'; | ||
4282 | |||
4283 | var _prodInvariant = __webpack_require__(9); | ||
4284 | |||
4285 | var ReactElement = __webpack_require__(11); | ||
4286 | |||
4287 | var invariant = __webpack_require__(10); | ||
4288 | |||
4289 | /** | ||
4290 | * Returns the first child in a collection of children and verifies that there | ||
4291 | * is only one child in the collection. | ||
4292 | * | ||
4293 | * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only | ||
4294 | * | ||
4295 | * The current implementation of this function assumes that a single child gets | ||
4296 | * passed without a wrapper, but the purpose of this helper function is to | ||
4297 | * abstract away the particular structure of children. | ||
4298 | * | ||
4299 | * @param {?object} children Child collection structure. | ||
4300 | * @return {ReactElement} The first and only `ReactElement` contained in the | ||
4301 | * structure. | ||
4302 | */ | ||
4303 | function onlyChild(children) { | ||
4304 | !ReactElement.isValidElement(children) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0; | ||
4305 | return children; | ||
4306 | } | ||
4307 | |||
4308 | module.exports = onlyChild; | ||
4309 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
4310 | |||
4311 | /***/ }), | ||
4312 | /* 38 */ | ||
4313 | /***/ (function(module, exports, __webpack_require__) { | ||
4314 | |||
4315 | 'use strict'; | ||
4316 | |||
4317 | module.exports = __webpack_require__(39); | ||
4318 | |||
4319 | |||
4320 | /***/ }), | ||
4321 | /* 39 */ | ||
4322 | /***/ (function(module, exports, __webpack_require__) { | ||
4323 | |||
4324 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
4325 | * Copyright 2013-present, Facebook, Inc. | ||
4326 | * All rights reserved. | ||
4327 | * | ||
4328 | * This source code is licensed under the BSD-style license found in the | ||
4329 | * LICENSE file in the root directory of this source tree. An additional grant | ||
4330 | * of patent rights can be found in the PATENTS file in the same directory. | ||
4331 | * | ||
4332 | */ | ||
4333 | |||
4334 | /* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/ | ||
4335 | |||
4336 | 'use strict'; | ||
4337 | |||
4338 | var ReactDOMComponentTree = __webpack_require__(40); | ||
4339 | var ReactDefaultInjection = __webpack_require__(44); | ||
4340 | var ReactMount = __webpack_require__(172); | ||
4341 | var ReactReconciler = __webpack_require__(65); | ||
4342 | var ReactUpdates = __webpack_require__(62); | ||
4343 | var ReactVersion = __webpack_require__(177); | ||
4344 | |||
4345 | var findDOMNode = __webpack_require__(178); | ||
4346 | var getHostComponentFromComposite = __webpack_require__(179); | ||
4347 | var renderSubtreeIntoContainer = __webpack_require__(180); | ||
4348 | var warning = __webpack_require__(13); | ||
4349 | |||
4350 | ReactDefaultInjection.inject(); | ||
4351 | |||
4352 | var ReactDOM = { | ||
4353 | findDOMNode: findDOMNode, | ||
4354 | render: ReactMount.render, | ||
4355 | unmountComponentAtNode: ReactMount.unmountComponentAtNode, | ||
4356 | version: ReactVersion, | ||
4357 | |||
4358 | /* eslint-disable camelcase */ | ||
4359 | unstable_batchedUpdates: ReactUpdates.batchedUpdates, | ||
4360 | unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer | ||
4361 | }; | ||
4362 | |||
4363 | // Inject the runtime into a devtools global hook regardless of browser. | ||
4364 | // Allows for debugging when the hook is injected on the page. | ||
4365 | if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') { | ||
4366 | __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({ | ||
4367 | ComponentTree: { | ||
4368 | getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode, | ||
4369 | getNodeFromInstance: function (inst) { | ||
4370 | // inst is an internal instance (but could be a composite) | ||
4371 | if (inst._renderedComponent) { | ||
4372 | inst = getHostComponentFromComposite(inst); | ||
4373 | } | ||
4374 | if (inst) { | ||
4375 | return ReactDOMComponentTree.getNodeFromInstance(inst); | ||
4376 | } else { | ||
4377 | return null; | ||
4378 | } | ||
4379 | } | ||
4380 | }, | ||
4381 | Mount: ReactMount, | ||
4382 | Reconciler: ReactReconciler | ||
4383 | }); | ||
4384 | } | ||
4385 | |||
4386 | if (process.env.NODE_ENV !== 'production') { | ||
4387 | var ExecutionEnvironment = __webpack_require__(54); | ||
4388 | if (ExecutionEnvironment.canUseDOM && window.top === window.self) { | ||
4389 | |||
4390 | // First check if devtools is not installed | ||
4391 | if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') { | ||
4392 | // If we're in Chrome or Firefox, provide a download link if not installed. | ||
4393 | if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) { | ||
4394 | // Firefox does not have the issue with devtools loaded over file:// | ||
4395 | var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1; | ||
4396 | console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools'); | ||
4397 | } | ||
4398 | } | ||
4399 | |||
4400 | var testFunc = function testFn() {}; | ||
4401 | process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, 'It looks like you\'re using a minified copy of the development build ' + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0; | ||
4402 | |||
4403 | // If we're in IE8, check to see if we are in compatibility mode and provide | ||
4404 | // information on preventing compatibility mode | ||
4405 | var ieCompatibilityMode = document.documentMode && document.documentMode < 8; | ||
4406 | |||
4407 | process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv="X-UA-Compatible" content="IE=edge" />') : void 0; | ||
4408 | |||
4409 | var expectedFeatures = [ | ||
4410 | // shims | ||
4411 | Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim]; | ||
4412 | |||
4413 | for (var i = 0; i < expectedFeatures.length; i++) { | ||
4414 | if (!expectedFeatures[i]) { | ||
4415 | process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0; | ||
4416 | break; | ||
4417 | } | ||
4418 | } | ||
4419 | } | ||
4420 | } | ||
4421 | |||
4422 | if (process.env.NODE_ENV !== 'production') { | ||
4423 | var ReactInstrumentation = __webpack_require__(68); | ||
4424 | var ReactDOMUnknownPropertyHook = __webpack_require__(181); | ||
4425 | var ReactDOMNullInputValuePropHook = __webpack_require__(182); | ||
4426 | var ReactDOMInvalidARIAHook = __webpack_require__(183); | ||
4427 | |||
4428 | ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook); | ||
4429 | ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook); | ||
4430 | ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook); | ||
4431 | } | ||
4432 | |||
4433 | module.exports = ReactDOM; | ||
4434 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
4435 | |||
4436 | /***/ }), | ||
4437 | /* 40 */ | ||
4438 | /***/ (function(module, exports, __webpack_require__) { | ||
4439 | |||
4440 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
4441 | * Copyright 2013-present, Facebook, Inc. | ||
4442 | * All rights reserved. | ||
4443 | * | ||
4444 | * This source code is licensed under the BSD-style license found in the | ||
4445 | * LICENSE file in the root directory of this source tree. An additional grant | ||
4446 | * of patent rights can be found in the PATENTS file in the same directory. | ||
4447 | * | ||
4448 | */ | ||
4449 | |||
4450 | 'use strict'; | ||
4451 | |||
4452 | var _prodInvariant = __webpack_require__(41); | ||
4453 | |||
4454 | var DOMProperty = __webpack_require__(42); | ||
4455 | var ReactDOMComponentFlags = __webpack_require__(43); | ||
4456 | |||
4457 | var invariant = __webpack_require__(10); | ||
4458 | |||
4459 | var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME; | ||
4460 | var Flags = ReactDOMComponentFlags; | ||
4461 | |||
4462 | var internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2); | ||
4463 | |||
4464 | /** | ||
4465 | * Check if a given node should be cached. | ||
4466 | */ | ||
4467 | function shouldPrecacheNode(node, nodeID) { | ||
4468 | return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' '; | ||
4469 | } | ||
4470 | |||
4471 | /** | ||
4472 | * Drill down (through composites and empty components) until we get a host or | ||
4473 | * host text component. | ||
4474 | * | ||
4475 | * This is pretty polymorphic but unavoidable with the current structure we have | ||
4476 | * for `_renderedChildren`. | ||
4477 | */ | ||
4478 | function getRenderedHostOrTextFromComponent(component) { | ||
4479 | var rendered; | ||
4480 | while (rendered = component._renderedComponent) { | ||
4481 | component = rendered; | ||
4482 | } | ||
4483 | return component; | ||
4484 | } | ||
4485 | |||
4486 | /** | ||
4487 | * Populate `_hostNode` on the rendered host/text component with the given | ||
4488 | * DOM node. The passed `inst` can be a composite. | ||
4489 | */ | ||
4490 | function precacheNode(inst, node) { | ||
4491 | var hostInst = getRenderedHostOrTextFromComponent(inst); | ||
4492 | hostInst._hostNode = node; | ||
4493 | node[internalInstanceKey] = hostInst; | ||
4494 | } | ||
4495 | |||
4496 | function uncacheNode(inst) { | ||
4497 | var node = inst._hostNode; | ||
4498 | if (node) { | ||
4499 | delete node[internalInstanceKey]; | ||
4500 | inst._hostNode = null; | ||
4501 | } | ||
4502 | } | ||
4503 | |||
4504 | /** | ||
4505 | * Populate `_hostNode` on each child of `inst`, assuming that the children | ||
4506 | * match up with the DOM (element) children of `node`. | ||
4507 | * | ||
4508 | * We cache entire levels at once to avoid an n^2 problem where we access the | ||
4509 | * children of a node sequentially and have to walk from the start to our target | ||
4510 | * node every time. | ||
4511 | * | ||
4512 | * Since we update `_renderedChildren` and the actual DOM at (slightly) | ||
4513 | * different times, we could race here and see a newer `_renderedChildren` than | ||
4514 | * the DOM nodes we see. To avoid this, ReactMultiChild calls | ||
4515 | * `prepareToManageChildren` before we change `_renderedChildren`, at which | ||
4516 | * time the container's child nodes are always cached (until it unmounts). | ||
4517 | */ | ||
4518 | function precacheChildNodes(inst, node) { | ||
4519 | if (inst._flags & Flags.hasCachedChildNodes) { | ||
4520 | return; | ||
4521 | } | ||
4522 | var children = inst._renderedChildren; | ||
4523 | var childNode = node.firstChild; | ||
4524 | outer: for (var name in children) { | ||
4525 | if (!children.hasOwnProperty(name)) { | ||
4526 | continue; | ||
4527 | } | ||
4528 | var childInst = children[name]; | ||
4529 | var childID = getRenderedHostOrTextFromComponent(childInst)._domID; | ||
4530 | if (childID === 0) { | ||
4531 | // We're currently unmounting this child in ReactMultiChild; skip it. | ||
4532 | continue; | ||
4533 | } | ||
4534 | // We assume the child nodes are in the same order as the child instances. | ||
4535 | for (; childNode !== null; childNode = childNode.nextSibling) { | ||
4536 | if (shouldPrecacheNode(childNode, childID)) { | ||
4537 | precacheNode(childInst, childNode); | ||
4538 | continue outer; | ||
4539 | } | ||
4540 | } | ||
4541 | // We reached the end of the DOM children without finding an ID match. | ||
4542 | true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0; | ||
4543 | } | ||
4544 | inst._flags |= Flags.hasCachedChildNodes; | ||
4545 | } | ||
4546 | |||
4547 | /** | ||
4548 | * Given a DOM node, return the closest ReactDOMComponent or | ||
4549 | * ReactDOMTextComponent instance ancestor. | ||
4550 | */ | ||
4551 | function getClosestInstanceFromNode(node) { | ||
4552 | if (node[internalInstanceKey]) { | ||
4553 | return node[internalInstanceKey]; | ||
4554 | } | ||
4555 | |||
4556 | // Walk up the tree until we find an ancestor whose instance we have cached. | ||
4557 | var parents = []; | ||
4558 | while (!node[internalInstanceKey]) { | ||
4559 | parents.push(node); | ||
4560 | if (node.parentNode) { | ||
4561 | node = node.parentNode; | ||
4562 | } else { | ||
4563 | // Top of the tree. This node must not be part of a React tree (or is | ||
4564 | // unmounted, potentially). | ||
4565 | return null; | ||
4566 | } | ||
4567 | } | ||
4568 | |||
4569 | var closest; | ||
4570 | var inst; | ||
4571 | for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) { | ||
4572 | closest = inst; | ||
4573 | if (parents.length) { | ||
4574 | precacheChildNodes(inst, node); | ||
4575 | } | ||
4576 | } | ||
4577 | |||
4578 | return closest; | ||
4579 | } | ||
4580 | |||
4581 | /** | ||
4582 | * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent | ||
4583 | * instance, or null if the node was not rendered by this React. | ||
4584 | */ | ||
4585 | function getInstanceFromNode(node) { | ||
4586 | var inst = getClosestInstanceFromNode(node); | ||
4587 | if (inst != null && inst._hostNode === node) { | ||
4588 | return inst; | ||
4589 | } else { | ||
4590 | return null; | ||
4591 | } | ||
4592 | } | ||
4593 | |||
4594 | /** | ||
4595 | * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding | ||
4596 | * DOM node. | ||
4597 | */ | ||
4598 | function getNodeFromInstance(inst) { | ||
4599 | // Without this first invariant, passing a non-DOM-component triggers the next | ||
4600 | // invariant for a missing parent, which is super confusing. | ||
4601 | !(inst._hostNode !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0; | ||
4602 | |||
4603 | if (inst._hostNode) { | ||
4604 | return inst._hostNode; | ||
4605 | } | ||
4606 | |||
4607 | // Walk up the tree until we find an ancestor whose DOM node we have cached. | ||
4608 | var parents = []; | ||
4609 | while (!inst._hostNode) { | ||
4610 | parents.push(inst); | ||
4611 | !inst._hostParent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0; | ||
4612 | inst = inst._hostParent; | ||
4613 | } | ||
4614 | |||
4615 | // Now parents contains each ancestor that does *not* have a cached native | ||
4616 | // node, and `inst` is the deepest ancestor that does. | ||
4617 | for (; parents.length; inst = parents.pop()) { | ||
4618 | precacheChildNodes(inst, inst._hostNode); | ||
4619 | } | ||
4620 | |||
4621 | return inst._hostNode; | ||
4622 | } | ||
4623 | |||
4624 | var ReactDOMComponentTree = { | ||
4625 | getClosestInstanceFromNode: getClosestInstanceFromNode, | ||
4626 | getInstanceFromNode: getInstanceFromNode, | ||
4627 | getNodeFromInstance: getNodeFromInstance, | ||
4628 | precacheChildNodes: precacheChildNodes, | ||
4629 | precacheNode: precacheNode, | ||
4630 | uncacheNode: uncacheNode | ||
4631 | }; | ||
4632 | |||
4633 | module.exports = ReactDOMComponentTree; | ||
4634 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
4635 | |||
4636 | /***/ }), | ||
4637 | /* 41 */ | ||
4638 | 9, | ||
4639 | /* 42 */ | ||
4640 | /***/ (function(module, exports, __webpack_require__) { | ||
4641 | |||
4642 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
4643 | * Copyright 2013-present, Facebook, Inc. | ||
4644 | * All rights reserved. | ||
4645 | * | ||
4646 | * This source code is licensed under the BSD-style license found in the | ||
4647 | * LICENSE file in the root directory of this source tree. An additional grant | ||
4648 | * of patent rights can be found in the PATENTS file in the same directory. | ||
4649 | * | ||
4650 | */ | ||
4651 | |||
4652 | 'use strict'; | ||
4653 | |||
4654 | var _prodInvariant = __webpack_require__(41); | ||
4655 | |||
4656 | var invariant = __webpack_require__(10); | ||
4657 | |||
4658 | function checkMask(value, bitmask) { | ||
4659 | return (value & bitmask) === bitmask; | ||
4660 | } | ||
4661 | |||
4662 | var DOMPropertyInjection = { | ||
4663 | /** | ||
4664 | * Mapping from normalized, camelcased property names to a configuration that | ||
4665 | * specifies how the associated DOM property should be accessed or rendered. | ||
4666 | */ | ||
4667 | MUST_USE_PROPERTY: 0x1, | ||
4668 | HAS_BOOLEAN_VALUE: 0x4, | ||
4669 | HAS_NUMERIC_VALUE: 0x8, | ||
4670 | HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8, | ||
4671 | HAS_OVERLOADED_BOOLEAN_VALUE: 0x20, | ||
4672 | |||
4673 | /** | ||
4674 | * Inject some specialized knowledge about the DOM. This takes a config object | ||
4675 | * with the following properties: | ||
4676 | * | ||
4677 | * isCustomAttribute: function that given an attribute name will return true | ||
4678 | * if it can be inserted into the DOM verbatim. Useful for data-* or aria-* | ||
4679 | * attributes where it's impossible to enumerate all of the possible | ||
4680 | * attribute names, | ||
4681 | * | ||
4682 | * Properties: object mapping DOM property name to one of the | ||
4683 | * DOMPropertyInjection constants or null. If your attribute isn't in here, | ||
4684 | * it won't get written to the DOM. | ||
4685 | * | ||
4686 | * DOMAttributeNames: object mapping React attribute name to the DOM | ||
4687 | * attribute name. Attribute names not specified use the **lowercase** | ||
4688 | * normalized name. | ||
4689 | * | ||
4690 | * DOMAttributeNamespaces: object mapping React attribute name to the DOM | ||
4691 | * attribute namespace URL. (Attribute names not specified use no namespace.) | ||
4692 | * | ||
4693 | * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties. | ||
4694 | * Property names not specified use the normalized name. | ||
4695 | * | ||
4696 | * DOMMutationMethods: Properties that require special mutation methods. If | ||
4697 | * `value` is undefined, the mutation method should unset the property. | ||
4698 | * | ||
4699 | * @param {object} domPropertyConfig the config as described above. | ||
4700 | */ | ||
4701 | injectDOMPropertyConfig: function (domPropertyConfig) { | ||
4702 | var Injection = DOMPropertyInjection; | ||
4703 | var Properties = domPropertyConfig.Properties || {}; | ||
4704 | var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {}; | ||
4705 | var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {}; | ||
4706 | var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {}; | ||
4707 | var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {}; | ||
4708 | |||
4709 | if (domPropertyConfig.isCustomAttribute) { | ||
4710 | DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute); | ||
4711 | } | ||
4712 | |||
4713 | for (var propName in Properties) { | ||
4714 | !!DOMProperty.properties.hasOwnProperty(propName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'injectDOMPropertyConfig(...): You\'re trying to inject DOM property \'%s\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : _prodInvariant('48', propName) : void 0; | ||
4715 | |||
4716 | var lowerCased = propName.toLowerCase(); | ||
4717 | var propConfig = Properties[propName]; | ||
4718 | |||
4719 | var propertyInfo = { | ||
4720 | attributeName: lowerCased, | ||
4721 | attributeNamespace: null, | ||
4722 | propertyName: propName, | ||
4723 | mutationMethod: null, | ||
4724 | |||
4725 | mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY), | ||
4726 | hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE), | ||
4727 | hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE), | ||
4728 | hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE), | ||
4729 | hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE) | ||
4730 | }; | ||
4731 | !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0; | ||
4732 | |||
4733 | if (process.env.NODE_ENV !== 'production') { | ||
4734 | DOMProperty.getPossibleStandardName[lowerCased] = propName; | ||
4735 | } | ||
4736 | |||
4737 | if (DOMAttributeNames.hasOwnProperty(propName)) { | ||
4738 | var attributeName = DOMAttributeNames[propName]; | ||
4739 | propertyInfo.attributeName = attributeName; | ||
4740 | if (process.env.NODE_ENV !== 'production') { | ||
4741 | DOMProperty.getPossibleStandardName[attributeName] = propName; | ||
4742 | } | ||
4743 | } | ||
4744 | |||
4745 | if (DOMAttributeNamespaces.hasOwnProperty(propName)) { | ||
4746 | propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName]; | ||
4747 | } | ||
4748 | |||
4749 | if (DOMPropertyNames.hasOwnProperty(propName)) { | ||
4750 | propertyInfo.propertyName = DOMPropertyNames[propName]; | ||
4751 | } | ||
4752 | |||
4753 | if (DOMMutationMethods.hasOwnProperty(propName)) { | ||
4754 | propertyInfo.mutationMethod = DOMMutationMethods[propName]; | ||
4755 | } | ||
4756 | |||
4757 | DOMProperty.properties[propName] = propertyInfo; | ||
4758 | } | ||
4759 | } | ||
4760 | }; | ||
4761 | |||
4762 | /* eslint-disable max-len */ | ||
4763 | var ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD'; | ||
4764 | /* eslint-enable max-len */ | ||
4765 | |||
4766 | /** | ||
4767 | * DOMProperty exports lookup objects that can be used like functions: | ||
4768 | * | ||
4769 | * > DOMProperty.isValid['id'] | ||
4770 | * true | ||
4771 | * > DOMProperty.isValid['foobar'] | ||
4772 | * undefined | ||
4773 | * | ||
4774 | * Although this may be confusing, it performs better in general. | ||
4775 | * | ||
4776 | * @see http://jsperf.com/key-exists | ||
4777 | * @see http://jsperf.com/key-missing | ||
4778 | */ | ||
4779 | var DOMProperty = { | ||
4780 | |||
4781 | ID_ATTRIBUTE_NAME: 'data-reactid', | ||
4782 | ROOT_ATTRIBUTE_NAME: 'data-reactroot', | ||
4783 | |||
4784 | ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR, | ||
4785 | ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040', | ||
4786 | |||
4787 | /** | ||
4788 | * Map from property "standard name" to an object with info about how to set | ||
4789 | * the property in the DOM. Each object contains: | ||
4790 | * | ||
4791 | * attributeName: | ||
4792 | * Used when rendering markup or with `*Attribute()`. | ||
4793 | * attributeNamespace | ||
4794 | * propertyName: | ||
4795 | * Used on DOM node instances. (This includes properties that mutate due to | ||
4796 | * external factors.) | ||
4797 | * mutationMethod: | ||
4798 | * If non-null, used instead of the property or `setAttribute()` after | ||
4799 | * initial render. | ||
4800 | * mustUseProperty: | ||
4801 | * Whether the property must be accessed and mutated as an object property. | ||
4802 | * hasBooleanValue: | ||
4803 | * Whether the property should be removed when set to a falsey value. | ||
4804 | * hasNumericValue: | ||
4805 | * Whether the property must be numeric or parse as a numeric and should be | ||
4806 | * removed when set to a falsey value. | ||
4807 | * hasPositiveNumericValue: | ||
4808 | * Whether the property must be positive numeric or parse as a positive | ||
4809 | * numeric and should be removed when set to a falsey value. | ||
4810 | * hasOverloadedBooleanValue: | ||
4811 | * Whether the property can be used as a flag as well as with a value. | ||
4812 | * Removed when strictly equal to false; present without a value when | ||
4813 | * strictly equal to true; present with a value otherwise. | ||
4814 | */ | ||
4815 | properties: {}, | ||
4816 | |||
4817 | /** | ||
4818 | * Mapping from lowercase property names to the properly cased version, used | ||
4819 | * to warn in the case of missing properties. Available only in __DEV__. | ||
4820 | * | ||
4821 | * autofocus is predefined, because adding it to the property whitelist | ||
4822 | * causes unintended side effects. | ||
4823 | * | ||
4824 | * @type {Object} | ||
4825 | */ | ||
4826 | getPossibleStandardName: process.env.NODE_ENV !== 'production' ? { autofocus: 'autoFocus' } : null, | ||
4827 | |||
4828 | /** | ||
4829 | * All of the isCustomAttribute() functions that have been injected. | ||
4830 | */ | ||
4831 | _isCustomAttributeFunctions: [], | ||
4832 | |||
4833 | /** | ||
4834 | * Checks whether a property name is a custom attribute. | ||
4835 | * @method | ||
4836 | */ | ||
4837 | isCustomAttribute: function (attributeName) { | ||
4838 | for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) { | ||
4839 | var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i]; | ||
4840 | if (isCustomAttributeFn(attributeName)) { | ||
4841 | return true; | ||
4842 | } | ||
4843 | } | ||
4844 | return false; | ||
4845 | }, | ||
4846 | |||
4847 | injection: DOMPropertyInjection | ||
4848 | }; | ||
4849 | |||
4850 | module.exports = DOMProperty; | ||
4851 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
4852 | |||
4853 | /***/ }), | ||
4854 | /* 43 */ | ||
4855 | /***/ (function(module, exports) { | ||
4856 | |||
4857 | /** | ||
4858 | * Copyright 2015-present, Facebook, Inc. | ||
4859 | * All rights reserved. | ||
4860 | * | ||
4861 | * This source code is licensed under the BSD-style license found in the | ||
4862 | * LICENSE file in the root directory of this source tree. An additional grant | ||
4863 | * of patent rights can be found in the PATENTS file in the same directory. | ||
4864 | * | ||
4865 | */ | ||
4866 | |||
4867 | 'use strict'; | ||
4868 | |||
4869 | var ReactDOMComponentFlags = { | ||
4870 | hasCachedChildNodes: 1 << 0 | ||
4871 | }; | ||
4872 | |||
4873 | module.exports = ReactDOMComponentFlags; | ||
4874 | |||
4875 | /***/ }), | ||
4876 | /* 44 */ | ||
4877 | /***/ (function(module, exports, __webpack_require__) { | ||
4878 | |||
4879 | /** | ||
4880 | * Copyright 2013-present, Facebook, Inc. | ||
4881 | * All rights reserved. | ||
4882 | * | ||
4883 | * This source code is licensed under the BSD-style license found in the | ||
4884 | * LICENSE file in the root directory of this source tree. An additional grant | ||
4885 | * of patent rights can be found in the PATENTS file in the same directory. | ||
4886 | * | ||
4887 | */ | ||
4888 | |||
4889 | 'use strict'; | ||
4890 | |||
4891 | var ARIADOMPropertyConfig = __webpack_require__(45); | ||
4892 | var BeforeInputEventPlugin = __webpack_require__(46); | ||
4893 | var ChangeEventPlugin = __webpack_require__(61); | ||
4894 | var DefaultEventPluginOrder = __webpack_require__(78); | ||
4895 | var EnterLeaveEventPlugin = __webpack_require__(79); | ||
4896 | var HTMLDOMPropertyConfig = __webpack_require__(84); | ||
4897 | var ReactComponentBrowserEnvironment = __webpack_require__(85); | ||
4898 | var ReactDOMComponent = __webpack_require__(98); | ||
4899 | var ReactDOMComponentTree = __webpack_require__(40); | ||
4900 | var ReactDOMEmptyComponent = __webpack_require__(143); | ||
4901 | var ReactDOMTreeTraversal = __webpack_require__(144); | ||
4902 | var ReactDOMTextComponent = __webpack_require__(145); | ||
4903 | var ReactDefaultBatchingStrategy = __webpack_require__(146); | ||
4904 | var ReactEventListener = __webpack_require__(147); | ||
4905 | var ReactInjection = __webpack_require__(150); | ||
4906 | var ReactReconcileTransaction = __webpack_require__(151); | ||
4907 | var SVGDOMPropertyConfig = __webpack_require__(159); | ||
4908 | var SelectEventPlugin = __webpack_require__(160); | ||
4909 | var SimpleEventPlugin = __webpack_require__(161); | ||
4910 | |||
4911 | var alreadyInjected = false; | ||
4912 | |||
4913 | function inject() { | ||
4914 | if (alreadyInjected) { | ||
4915 | // TODO: This is currently true because these injections are shared between | ||
4916 | // the client and the server package. They should be built independently | ||
4917 | // and not share any injection state. Then this problem will be solved. | ||
4918 | return; | ||
4919 | } | ||
4920 | alreadyInjected = true; | ||
4921 | |||
4922 | ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener); | ||
4923 | |||
4924 | /** | ||
4925 | * Inject modules for resolving DOM hierarchy and plugin ordering. | ||
4926 | */ | ||
4927 | ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder); | ||
4928 | ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree); | ||
4929 | ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal); | ||
4930 | |||
4931 | /** | ||
4932 | * Some important event plugins included by default (without having to require | ||
4933 | * them). | ||
4934 | */ | ||
4935 | ReactInjection.EventPluginHub.injectEventPluginsByName({ | ||
4936 | SimpleEventPlugin: SimpleEventPlugin, | ||
4937 | EnterLeaveEventPlugin: EnterLeaveEventPlugin, | ||
4938 | ChangeEventPlugin: ChangeEventPlugin, | ||
4939 | SelectEventPlugin: SelectEventPlugin, | ||
4940 | BeforeInputEventPlugin: BeforeInputEventPlugin | ||
4941 | }); | ||
4942 | |||
4943 | ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent); | ||
4944 | |||
4945 | ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent); | ||
4946 | |||
4947 | ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig); | ||
4948 | ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig); | ||
4949 | ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig); | ||
4950 | |||
4951 | ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) { | ||
4952 | return new ReactDOMEmptyComponent(instantiate); | ||
4953 | }); | ||
4954 | |||
4955 | ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction); | ||
4956 | ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy); | ||
4957 | |||
4958 | ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment); | ||
4959 | } | ||
4960 | |||
4961 | module.exports = { | ||
4962 | inject: inject | ||
4963 | }; | ||
4964 | |||
4965 | /***/ }), | ||
4966 | /* 45 */ | ||
4967 | /***/ (function(module, exports) { | ||
4968 | |||
4969 | /** | ||
4970 | * Copyright 2013-present, Facebook, Inc. | ||
4971 | * All rights reserved. | ||
4972 | * | ||
4973 | * This source code is licensed under the BSD-style license found in the | ||
4974 | * LICENSE file in the root directory of this source tree. An additional grant | ||
4975 | * of patent rights can be found in the PATENTS file in the same directory. | ||
4976 | * | ||
4977 | */ | ||
4978 | |||
4979 | 'use strict'; | ||
4980 | |||
4981 | var ARIADOMPropertyConfig = { | ||
4982 | Properties: { | ||
4983 | // Global States and Properties | ||
4984 | 'aria-current': 0, // state | ||
4985 | 'aria-details': 0, | ||
4986 | 'aria-disabled': 0, // state | ||
4987 | 'aria-hidden': 0, // state | ||
4988 | 'aria-invalid': 0, // state | ||
4989 | 'aria-keyshortcuts': 0, | ||
4990 | 'aria-label': 0, | ||
4991 | 'aria-roledescription': 0, | ||
4992 | // Widget Attributes | ||
4993 | 'aria-autocomplete': 0, | ||
4994 | 'aria-checked': 0, | ||
4995 | 'aria-expanded': 0, | ||
4996 | 'aria-haspopup': 0, | ||
4997 | 'aria-level': 0, | ||
4998 | 'aria-modal': 0, | ||
4999 | 'aria-multiline': 0, | ||
5000 | 'aria-multiselectable': 0, | ||
5001 | 'aria-orientation': 0, | ||
5002 | 'aria-placeholder': 0, | ||
5003 | 'aria-pressed': 0, | ||
5004 | 'aria-readonly': 0, | ||
5005 | 'aria-required': 0, | ||
5006 | 'aria-selected': 0, | ||
5007 | 'aria-sort': 0, | ||
5008 | 'aria-valuemax': 0, | ||
5009 | 'aria-valuemin': 0, | ||
5010 | 'aria-valuenow': 0, | ||
5011 | 'aria-valuetext': 0, | ||
5012 | // Live Region Attributes | ||
5013 | 'aria-atomic': 0, | ||
5014 | 'aria-busy': 0, | ||
5015 | 'aria-live': 0, | ||
5016 | 'aria-relevant': 0, | ||
5017 | // Drag-and-Drop Attributes | ||
5018 | 'aria-dropeffect': 0, | ||
5019 | 'aria-grabbed': 0, | ||
5020 | // Relationship Attributes | ||
5021 | 'aria-activedescendant': 0, | ||
5022 | 'aria-colcount': 0, | ||
5023 | 'aria-colindex': 0, | ||
5024 | 'aria-colspan': 0, | ||
5025 | 'aria-controls': 0, | ||
5026 | 'aria-describedby': 0, | ||
5027 | 'aria-errormessage': 0, | ||
5028 | 'aria-flowto': 0, | ||
5029 | 'aria-labelledby': 0, | ||
5030 | 'aria-owns': 0, | ||
5031 | 'aria-posinset': 0, | ||
5032 | 'aria-rowcount': 0, | ||
5033 | 'aria-rowindex': 0, | ||
5034 | 'aria-rowspan': 0, | ||
5035 | 'aria-setsize': 0 | ||
5036 | }, | ||
5037 | DOMAttributeNames: {}, | ||
5038 | DOMPropertyNames: {} | ||
5039 | }; | ||
5040 | |||
5041 | module.exports = ARIADOMPropertyConfig; | ||
5042 | |||
5043 | /***/ }), | ||
5044 | /* 46 */ | ||
5045 | /***/ (function(module, exports, __webpack_require__) { | ||
5046 | |||
5047 | /** | ||
5048 | * Copyright 2013-present Facebook, Inc. | ||
5049 | * All rights reserved. | ||
5050 | * | ||
5051 | * This source code is licensed under the BSD-style license found in the | ||
5052 | * LICENSE file in the root directory of this source tree. An additional grant | ||
5053 | * of patent rights can be found in the PATENTS file in the same directory. | ||
5054 | * | ||
5055 | */ | ||
5056 | |||
5057 | 'use strict'; | ||
5058 | |||
5059 | var EventPropagators = __webpack_require__(47); | ||
5060 | var ExecutionEnvironment = __webpack_require__(54); | ||
5061 | var FallbackCompositionState = __webpack_require__(55); | ||
5062 | var SyntheticCompositionEvent = __webpack_require__(58); | ||
5063 | var SyntheticInputEvent = __webpack_require__(60); | ||
5064 | |||
5065 | var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space | ||
5066 | var START_KEYCODE = 229; | ||
5067 | |||
5068 | var canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window; | ||
5069 | |||
5070 | var documentMode = null; | ||
5071 | if (ExecutionEnvironment.canUseDOM && 'documentMode' in document) { | ||
5072 | documentMode = document.documentMode; | ||
5073 | } | ||
5074 | |||
5075 | // Webkit offers a very useful `textInput` event that can be used to | ||
5076 | // directly represent `beforeInput`. The IE `textinput` event is not as | ||
5077 | // useful, so we don't use it. | ||
5078 | var canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto(); | ||
5079 | |||
5080 | // In IE9+, we have access to composition events, but the data supplied | ||
5081 | // by the native compositionend event may be incorrect. Japanese ideographic | ||
5082 | // spaces, for instance (\u3000) are not recorded correctly. | ||
5083 | var useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11); | ||
5084 | |||
5085 | /** | ||
5086 | * Opera <= 12 includes TextEvent in window, but does not fire | ||
5087 | * text input events. Rely on keypress instead. | ||
5088 | */ | ||
5089 | function isPresto() { | ||
5090 | var opera = window.opera; | ||
5091 | return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12; | ||
5092 | } | ||
5093 | |||
5094 | var SPACEBAR_CODE = 32; | ||
5095 | var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE); | ||
5096 | |||
5097 | // Events and their corresponding property names. | ||
5098 | var eventTypes = { | ||
5099 | beforeInput: { | ||
5100 | phasedRegistrationNames: { | ||
5101 | bubbled: 'onBeforeInput', | ||
5102 | captured: 'onBeforeInputCapture' | ||
5103 | }, | ||
5104 | dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste'] | ||
5105 | }, | ||
5106 | compositionEnd: { | ||
5107 | phasedRegistrationNames: { | ||
5108 | bubbled: 'onCompositionEnd', | ||
5109 | captured: 'onCompositionEndCapture' | ||
5110 | }, | ||
5111 | dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown'] | ||
5112 | }, | ||
5113 | compositionStart: { | ||
5114 | phasedRegistrationNames: { | ||
5115 | bubbled: 'onCompositionStart', | ||
5116 | captured: 'onCompositionStartCapture' | ||
5117 | }, | ||
5118 | dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown'] | ||
5119 | }, | ||
5120 | compositionUpdate: { | ||
5121 | phasedRegistrationNames: { | ||
5122 | bubbled: 'onCompositionUpdate', | ||
5123 | captured: 'onCompositionUpdateCapture' | ||
5124 | }, | ||
5125 | dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown'] | ||
5126 | } | ||
5127 | }; | ||
5128 | |||
5129 | // Track whether we've ever handled a keypress on the space key. | ||
5130 | var hasSpaceKeypress = false; | ||
5131 | |||
5132 | /** | ||
5133 | * Return whether a native keypress event is assumed to be a command. | ||
5134 | * This is required because Firefox fires `keypress` events for key commands | ||
5135 | * (cut, copy, select-all, etc.) even though no character is inserted. | ||
5136 | */ | ||
5137 | function isKeypressCommand(nativeEvent) { | ||
5138 | return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && | ||
5139 | // ctrlKey && altKey is equivalent to AltGr, and is not a command. | ||
5140 | !(nativeEvent.ctrlKey && nativeEvent.altKey); | ||
5141 | } | ||
5142 | |||
5143 | /** | ||
5144 | * Translate native top level events into event types. | ||
5145 | * | ||
5146 | * @param {string} topLevelType | ||
5147 | * @return {object} | ||
5148 | */ | ||
5149 | function getCompositionEventType(topLevelType) { | ||
5150 | switch (topLevelType) { | ||
5151 | case 'topCompositionStart': | ||
5152 | return eventTypes.compositionStart; | ||
5153 | case 'topCompositionEnd': | ||
5154 | return eventTypes.compositionEnd; | ||
5155 | case 'topCompositionUpdate': | ||
5156 | return eventTypes.compositionUpdate; | ||
5157 | } | ||
5158 | } | ||
5159 | |||
5160 | /** | ||
5161 | * Does our fallback best-guess model think this event signifies that | ||
5162 | * composition has begun? | ||
5163 | * | ||
5164 | * @param {string} topLevelType | ||
5165 | * @param {object} nativeEvent | ||
5166 | * @return {boolean} | ||
5167 | */ | ||
5168 | function isFallbackCompositionStart(topLevelType, nativeEvent) { | ||
5169 | return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE; | ||
5170 | } | ||
5171 | |||
5172 | /** | ||
5173 | * Does our fallback mode think that this event is the end of composition? | ||
5174 | * | ||
5175 | * @param {string} topLevelType | ||
5176 | * @param {object} nativeEvent | ||
5177 | * @return {boolean} | ||
5178 | */ | ||
5179 | function isFallbackCompositionEnd(topLevelType, nativeEvent) { | ||
5180 | switch (topLevelType) { | ||
5181 | case 'topKeyUp': | ||
5182 | // Command keys insert or clear IME input. | ||
5183 | return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1; | ||
5184 | case 'topKeyDown': | ||
5185 | // Expect IME keyCode on each keydown. If we get any other | ||
5186 | // code we must have exited earlier. | ||
5187 | return nativeEvent.keyCode !== START_KEYCODE; | ||
5188 | case 'topKeyPress': | ||
5189 | case 'topMouseDown': | ||
5190 | case 'topBlur': | ||
5191 | // Events are not possible without cancelling IME. | ||
5192 | return true; | ||
5193 | default: | ||
5194 | return false; | ||
5195 | } | ||
5196 | } | ||
5197 | |||
5198 | /** | ||
5199 | * Google Input Tools provides composition data via a CustomEvent, | ||
5200 | * with the `data` property populated in the `detail` object. If this | ||
5201 | * is available on the event object, use it. If not, this is a plain | ||
5202 | * composition event and we have nothing special to extract. | ||
5203 | * | ||
5204 | * @param {object} nativeEvent | ||
5205 | * @return {?string} | ||
5206 | */ | ||
5207 | function getDataFromCustomEvent(nativeEvent) { | ||
5208 | var detail = nativeEvent.detail; | ||
5209 | if (typeof detail === 'object' && 'data' in detail) { | ||
5210 | return detail.data; | ||
5211 | } | ||
5212 | return null; | ||
5213 | } | ||
5214 | |||
5215 | // Track the current IME composition fallback object, if any. | ||
5216 | var currentComposition = null; | ||
5217 | |||
5218 | /** | ||
5219 | * @return {?object} A SyntheticCompositionEvent. | ||
5220 | */ | ||
5221 | function extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) { | ||
5222 | var eventType; | ||
5223 | var fallbackData; | ||
5224 | |||
5225 | if (canUseCompositionEvent) { | ||
5226 | eventType = getCompositionEventType(topLevelType); | ||
5227 | } else if (!currentComposition) { | ||
5228 | if (isFallbackCompositionStart(topLevelType, nativeEvent)) { | ||
5229 | eventType = eventTypes.compositionStart; | ||
5230 | } | ||
5231 | } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) { | ||
5232 | eventType = eventTypes.compositionEnd; | ||
5233 | } | ||
5234 | |||
5235 | if (!eventType) { | ||
5236 | return null; | ||
5237 | } | ||
5238 | |||
5239 | if (useFallbackCompositionData) { | ||
5240 | // The current composition is stored statically and must not be | ||
5241 | // overwritten while composition continues. | ||
5242 | if (!currentComposition && eventType === eventTypes.compositionStart) { | ||
5243 | currentComposition = FallbackCompositionState.getPooled(nativeEventTarget); | ||
5244 | } else if (eventType === eventTypes.compositionEnd) { | ||
5245 | if (currentComposition) { | ||
5246 | fallbackData = currentComposition.getData(); | ||
5247 | } | ||
5248 | } | ||
5249 | } | ||
5250 | |||
5251 | var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget); | ||
5252 | |||
5253 | if (fallbackData) { | ||
5254 | // Inject data generated from fallback path into the synthetic event. | ||
5255 | // This matches the property of native CompositionEventInterface. | ||
5256 | event.data = fallbackData; | ||
5257 | } else { | ||
5258 | var customData = getDataFromCustomEvent(nativeEvent); | ||
5259 | if (customData !== null) { | ||
5260 | event.data = customData; | ||
5261 | } | ||
5262 | } | ||
5263 | |||
5264 | EventPropagators.accumulateTwoPhaseDispatches(event); | ||
5265 | return event; | ||
5266 | } | ||
5267 | |||
5268 | /** | ||
5269 | * @param {string} topLevelType Record from `EventConstants`. | ||
5270 | * @param {object} nativeEvent Native browser event. | ||
5271 | * @return {?string} The string corresponding to this `beforeInput` event. | ||
5272 | */ | ||
5273 | function getNativeBeforeInputChars(topLevelType, nativeEvent) { | ||
5274 | switch (topLevelType) { | ||
5275 | case 'topCompositionEnd': | ||
5276 | return getDataFromCustomEvent(nativeEvent); | ||
5277 | case 'topKeyPress': | ||
5278 | /** | ||
5279 | * If native `textInput` events are available, our goal is to make | ||
5280 | * use of them. However, there is a special case: the spacebar key. | ||
5281 | * In Webkit, preventing default on a spacebar `textInput` event | ||
5282 | * cancels character insertion, but it *also* causes the browser | ||
5283 | * to fall back to its default spacebar behavior of scrolling the | ||
5284 | * page. | ||
5285 | * | ||
5286 | * Tracking at: | ||
5287 | * https://code.google.com/p/chromium/issues/detail?id=355103 | ||
5288 | * | ||
5289 | * To avoid this issue, use the keypress event as if no `textInput` | ||
5290 | * event is available. | ||
5291 | */ | ||
5292 | var which = nativeEvent.which; | ||
5293 | if (which !== SPACEBAR_CODE) { | ||
5294 | return null; | ||
5295 | } | ||
5296 | |||
5297 | hasSpaceKeypress = true; | ||
5298 | return SPACEBAR_CHAR; | ||
5299 | |||
5300 | case 'topTextInput': | ||
5301 | // Record the characters to be added to the DOM. | ||
5302 | var chars = nativeEvent.data; | ||
5303 | |||
5304 | // If it's a spacebar character, assume that we have already handled | ||
5305 | // it at the keypress level and bail immediately. Android Chrome | ||
5306 | // doesn't give us keycodes, so we need to blacklist it. | ||
5307 | if (chars === SPACEBAR_CHAR && hasSpaceKeypress) { | ||
5308 | return null; | ||
5309 | } | ||
5310 | |||
5311 | return chars; | ||
5312 | |||
5313 | default: | ||
5314 | // For other native event types, do nothing. | ||
5315 | return null; | ||
5316 | } | ||
5317 | } | ||
5318 | |||
5319 | /** | ||
5320 | * For browsers that do not provide the `textInput` event, extract the | ||
5321 | * appropriate string to use for SyntheticInputEvent. | ||
5322 | * | ||
5323 | * @param {string} topLevelType Record from `EventConstants`. | ||
5324 | * @param {object} nativeEvent Native browser event. | ||
5325 | * @return {?string} The fallback string for this `beforeInput` event. | ||
5326 | */ | ||
5327 | function getFallbackBeforeInputChars(topLevelType, nativeEvent) { | ||
5328 | // If we are currently composing (IME) and using a fallback to do so, | ||
5329 | // try to extract the composed characters from the fallback object. | ||
5330 | // If composition event is available, we extract a string only at | ||
5331 | // compositionevent, otherwise extract it at fallback events. | ||
5332 | if (currentComposition) { | ||
5333 | if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) { | ||
5334 | var chars = currentComposition.getData(); | ||
5335 | FallbackCompositionState.release(currentComposition); | ||
5336 | currentComposition = null; | ||
5337 | return chars; | ||
5338 | } | ||
5339 | return null; | ||
5340 | } | ||
5341 | |||
5342 | switch (topLevelType) { | ||
5343 | case 'topPaste': | ||
5344 | // If a paste event occurs after a keypress, throw out the input | ||
5345 | // chars. Paste events should not lead to BeforeInput events. | ||
5346 | return null; | ||
5347 | case 'topKeyPress': | ||
5348 | /** | ||
5349 | * As of v27, Firefox may fire keypress events even when no character | ||
5350 | * will be inserted. A few possibilities: | ||
5351 | * | ||
5352 | * - `which` is `0`. Arrow keys, Esc key, etc. | ||
5353 | * | ||
5354 | * - `which` is the pressed key code, but no char is available. | ||
5355 | * Ex: 'AltGr + d` in Polish. There is no modified character for | ||
5356 | * this key combination and no character is inserted into the | ||
5357 | * document, but FF fires the keypress for char code `100` anyway. | ||
5358 | * No `input` event will occur. | ||
5359 | * | ||
5360 | * - `which` is the pressed key code, but a command combination is | ||
5361 | * being used. Ex: `Cmd+C`. No character is inserted, and no | ||
5362 | * `input` event will occur. | ||
5363 | */ | ||
5364 | if (nativeEvent.which && !isKeypressCommand(nativeEvent)) { | ||
5365 | return String.fromCharCode(nativeEvent.which); | ||
5366 | } | ||
5367 | return null; | ||
5368 | case 'topCompositionEnd': | ||
5369 | return useFallbackCompositionData ? null : nativeEvent.data; | ||
5370 | default: | ||
5371 | return null; | ||
5372 | } | ||
5373 | } | ||
5374 | |||
5375 | /** | ||
5376 | * Extract a SyntheticInputEvent for `beforeInput`, based on either native | ||
5377 | * `textInput` or fallback behavior. | ||
5378 | * | ||
5379 | * @return {?object} A SyntheticInputEvent. | ||
5380 | */ | ||
5381 | function extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) { | ||
5382 | var chars; | ||
5383 | |||
5384 | if (canUseTextInputEvent) { | ||
5385 | chars = getNativeBeforeInputChars(topLevelType, nativeEvent); | ||
5386 | } else { | ||
5387 | chars = getFallbackBeforeInputChars(topLevelType, nativeEvent); | ||
5388 | } | ||
5389 | |||
5390 | // If no characters are being inserted, no BeforeInput event should | ||
5391 | // be fired. | ||
5392 | if (!chars) { | ||
5393 | return null; | ||
5394 | } | ||
5395 | |||
5396 | var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget); | ||
5397 | |||
5398 | event.data = chars; | ||
5399 | EventPropagators.accumulateTwoPhaseDispatches(event); | ||
5400 | return event; | ||
5401 | } | ||
5402 | |||
5403 | /** | ||
5404 | * Create an `onBeforeInput` event to match | ||
5405 | * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents. | ||
5406 | * | ||
5407 | * This event plugin is based on the native `textInput` event | ||
5408 | * available in Chrome, Safari, Opera, and IE. This event fires after | ||
5409 | * `onKeyPress` and `onCompositionEnd`, but before `onInput`. | ||
5410 | * | ||
5411 | * `beforeInput` is spec'd but not implemented in any browsers, and | ||
5412 | * the `input` event does not provide any useful information about what has | ||
5413 | * actually been added, contrary to the spec. Thus, `textInput` is the best | ||
5414 | * available event to identify the characters that have actually been inserted | ||
5415 | * into the target node. | ||
5416 | * | ||
5417 | * This plugin is also responsible for emitting `composition` events, thus | ||
5418 | * allowing us to share composition fallback code for both `beforeInput` and | ||
5419 | * `composition` event types. | ||
5420 | */ | ||
5421 | var BeforeInputEventPlugin = { | ||
5422 | |||
5423 | eventTypes: eventTypes, | ||
5424 | |||
5425 | extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { | ||
5426 | return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)]; | ||
5427 | } | ||
5428 | }; | ||
5429 | |||
5430 | module.exports = BeforeInputEventPlugin; | ||
5431 | |||
5432 | /***/ }), | ||
5433 | /* 47 */ | ||
5434 | /***/ (function(module, exports, __webpack_require__) { | ||
5435 | |||
5436 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
5437 | * Copyright 2013-present, Facebook, Inc. | ||
5438 | * All rights reserved. | ||
5439 | * | ||
5440 | * This source code is licensed under the BSD-style license found in the | ||
5441 | * LICENSE file in the root directory of this source tree. An additional grant | ||
5442 | * of patent rights can be found in the PATENTS file in the same directory. | ||
5443 | * | ||
5444 | */ | ||
5445 | |||
5446 | 'use strict'; | ||
5447 | |||
5448 | var EventPluginHub = __webpack_require__(48); | ||
5449 | var EventPluginUtils = __webpack_require__(50); | ||
5450 | |||
5451 | var accumulateInto = __webpack_require__(52); | ||
5452 | var forEachAccumulated = __webpack_require__(53); | ||
5453 | var warning = __webpack_require__(13); | ||
5454 | |||
5455 | var getListener = EventPluginHub.getListener; | ||
5456 | |||
5457 | /** | ||
5458 | * Some event types have a notion of different registration names for different | ||
5459 | * "phases" of propagation. This finds listeners by a given phase. | ||
5460 | */ | ||
5461 | function listenerAtPhase(inst, event, propagationPhase) { | ||
5462 | var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase]; | ||
5463 | return getListener(inst, registrationName); | ||
5464 | } | ||
5465 | |||
5466 | /** | ||
5467 | * Tags a `SyntheticEvent` with dispatched listeners. Creating this function | ||
5468 | * here, allows us to not have to bind or create functions for each event. | ||
5469 | * Mutating the event's members allows us to not have to create a wrapping | ||
5470 | * "dispatch" object that pairs the event with the listener. | ||
5471 | */ | ||
5472 | function accumulateDirectionalDispatches(inst, phase, event) { | ||
5473 | if (process.env.NODE_ENV !== 'production') { | ||
5474 | process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0; | ||
5475 | } | ||
5476 | var listener = listenerAtPhase(inst, event, phase); | ||
5477 | if (listener) { | ||
5478 | event._dispatchListeners = accumulateInto(event._dispatchListeners, listener); | ||
5479 | event._dispatchInstances = accumulateInto(event._dispatchInstances, inst); | ||
5480 | } | ||
5481 | } | ||
5482 | |||
5483 | /** | ||
5484 | * Collect dispatches (must be entirely collected before dispatching - see unit | ||
5485 | * tests). Lazily allocate the array to conserve memory. We must loop through | ||
5486 | * each event and perform the traversal for each one. We cannot perform a | ||
5487 | * single traversal for the entire collection of events because each event may | ||
5488 | * have a different target. | ||
5489 | */ | ||
5490 | function accumulateTwoPhaseDispatchesSingle(event) { | ||
5491 | if (event && event.dispatchConfig.phasedRegistrationNames) { | ||
5492 | EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event); | ||
5493 | } | ||
5494 | } | ||
5495 | |||
5496 | /** | ||
5497 | * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID. | ||
5498 | */ | ||
5499 | function accumulateTwoPhaseDispatchesSingleSkipTarget(event) { | ||
5500 | if (event && event.dispatchConfig.phasedRegistrationNames) { | ||
5501 | var targetInst = event._targetInst; | ||
5502 | var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null; | ||
5503 | EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event); | ||
5504 | } | ||
5505 | } | ||
5506 | |||
5507 | /** | ||
5508 | * Accumulates without regard to direction, does not look for phased | ||
5509 | * registration names. Same as `accumulateDirectDispatchesSingle` but without | ||
5510 | * requiring that the `dispatchMarker` be the same as the dispatched ID. | ||
5511 | */ | ||
5512 | function accumulateDispatches(inst, ignoredDirection, event) { | ||
5513 | if (event && event.dispatchConfig.registrationName) { | ||
5514 | var registrationName = event.dispatchConfig.registrationName; | ||
5515 | var listener = getListener(inst, registrationName); | ||
5516 | if (listener) { | ||
5517 | event._dispatchListeners = accumulateInto(event._dispatchListeners, listener); | ||
5518 | event._dispatchInstances = accumulateInto(event._dispatchInstances, inst); | ||
5519 | } | ||
5520 | } | ||
5521 | } | ||
5522 | |||
5523 | /** | ||
5524 | * Accumulates dispatches on an `SyntheticEvent`, but only for the | ||
5525 | * `dispatchMarker`. | ||
5526 | * @param {SyntheticEvent} event | ||
5527 | */ | ||
5528 | function accumulateDirectDispatchesSingle(event) { | ||
5529 | if (event && event.dispatchConfig.registrationName) { | ||
5530 | accumulateDispatches(event._targetInst, null, event); | ||
5531 | } | ||
5532 | } | ||
5533 | |||
5534 | function accumulateTwoPhaseDispatches(events) { | ||
5535 | forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle); | ||
5536 | } | ||
5537 | |||
5538 | function accumulateTwoPhaseDispatchesSkipTarget(events) { | ||
5539 | forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget); | ||
5540 | } | ||
5541 | |||
5542 | function accumulateEnterLeaveDispatches(leave, enter, from, to) { | ||
5543 | EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter); | ||
5544 | } | ||
5545 | |||
5546 | function accumulateDirectDispatches(events) { | ||
5547 | forEachAccumulated(events, accumulateDirectDispatchesSingle); | ||
5548 | } | ||
5549 | |||
5550 | /** | ||
5551 | * A small set of propagation patterns, each of which will accept a small amount | ||
5552 | * of information, and generate a set of "dispatch ready event objects" - which | ||
5553 | * are sets of events that have already been annotated with a set of dispatched | ||
5554 | * listener functions/ids. The API is designed this way to discourage these | ||
5555 | * propagation strategies from actually executing the dispatches, since we | ||
5556 | * always want to collect the entire set of dispatches before executing event a | ||
5557 | * single one. | ||
5558 | * | ||
5559 | * @constructor EventPropagators | ||
5560 | */ | ||
5561 | var EventPropagators = { | ||
5562 | accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches, | ||
5563 | accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget, | ||
5564 | accumulateDirectDispatches: accumulateDirectDispatches, | ||
5565 | accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches | ||
5566 | }; | ||
5567 | |||
5568 | module.exports = EventPropagators; | ||
5569 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
5570 | |||
5571 | /***/ }), | ||
5572 | /* 48 */ | ||
5573 | /***/ (function(module, exports, __webpack_require__) { | ||
5574 | |||
5575 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
5576 | * Copyright 2013-present, Facebook, Inc. | ||
5577 | * All rights reserved. | ||
5578 | * | ||
5579 | * This source code is licensed under the BSD-style license found in the | ||
5580 | * LICENSE file in the root directory of this source tree. An additional grant | ||
5581 | * of patent rights can be found in the PATENTS file in the same directory. | ||
5582 | * | ||
5583 | */ | ||
5584 | |||
5585 | 'use strict'; | ||
5586 | |||
5587 | var _prodInvariant = __webpack_require__(41); | ||
5588 | |||
5589 | var EventPluginRegistry = __webpack_require__(49); | ||
5590 | var EventPluginUtils = __webpack_require__(50); | ||
5591 | var ReactErrorUtils = __webpack_require__(51); | ||
5592 | |||
5593 | var accumulateInto = __webpack_require__(52); | ||
5594 | var forEachAccumulated = __webpack_require__(53); | ||
5595 | var invariant = __webpack_require__(10); | ||
5596 | |||
5597 | /** | ||
5598 | * Internal store for event listeners | ||
5599 | */ | ||
5600 | var listenerBank = {}; | ||
5601 | |||
5602 | /** | ||
5603 | * Internal queue of events that have accumulated their dispatches and are | ||
5604 | * waiting to have their dispatches executed. | ||
5605 | */ | ||
5606 | var eventQueue = null; | ||
5607 | |||
5608 | /** | ||
5609 | * Dispatches an event and releases it back into the pool, unless persistent. | ||
5610 | * | ||
5611 | * @param {?object} event Synthetic event to be dispatched. | ||
5612 | * @param {boolean} simulated If the event is simulated (changes exn behavior) | ||
5613 | * @private | ||
5614 | */ | ||
5615 | var executeDispatchesAndRelease = function (event, simulated) { | ||
5616 | if (event) { | ||
5617 | EventPluginUtils.executeDispatchesInOrder(event, simulated); | ||
5618 | |||
5619 | if (!event.isPersistent()) { | ||
5620 | event.constructor.release(event); | ||
5621 | } | ||
5622 | } | ||
5623 | }; | ||
5624 | var executeDispatchesAndReleaseSimulated = function (e) { | ||
5625 | return executeDispatchesAndRelease(e, true); | ||
5626 | }; | ||
5627 | var executeDispatchesAndReleaseTopLevel = function (e) { | ||
5628 | return executeDispatchesAndRelease(e, false); | ||
5629 | }; | ||
5630 | |||
5631 | var getDictionaryKey = function (inst) { | ||
5632 | // Prevents V8 performance issue: | ||
5633 | // https://github.com/facebook/react/pull/7232 | ||
5634 | return '.' + inst._rootNodeID; | ||
5635 | }; | ||
5636 | |||
5637 | function isInteractive(tag) { | ||
5638 | return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea'; | ||
5639 | } | ||
5640 | |||
5641 | function shouldPreventMouseEvent(name, type, props) { | ||
5642 | switch (name) { | ||
5643 | case 'onClick': | ||
5644 | case 'onClickCapture': | ||
5645 | case 'onDoubleClick': | ||
5646 | case 'onDoubleClickCapture': | ||
5647 | case 'onMouseDown': | ||
5648 | case 'onMouseDownCapture': | ||
5649 | case 'onMouseMove': | ||
5650 | case 'onMouseMoveCapture': | ||
5651 | case 'onMouseUp': | ||
5652 | case 'onMouseUpCapture': | ||
5653 | return !!(props.disabled && isInteractive(type)); | ||
5654 | default: | ||
5655 | return false; | ||
5656 | } | ||
5657 | } | ||
5658 | |||
5659 | /** | ||
5660 | * This is a unified interface for event plugins to be installed and configured. | ||
5661 | * | ||
5662 | * Event plugins can implement the following properties: | ||
5663 | * | ||
5664 | * `extractEvents` {function(string, DOMEventTarget, string, object): *} | ||
5665 | * Required. When a top-level event is fired, this method is expected to | ||
5666 | * extract synthetic events that will in turn be queued and dispatched. | ||
5667 | * | ||
5668 | * `eventTypes` {object} | ||
5669 | * Optional, plugins that fire events must publish a mapping of registration | ||
5670 | * names that are used to register listeners. Values of this mapping must | ||
5671 | * be objects that contain `registrationName` or `phasedRegistrationNames`. | ||
5672 | * | ||
5673 | * `executeDispatch` {function(object, function, string)} | ||
5674 | * Optional, allows plugins to override how an event gets dispatched. By | ||
5675 | * default, the listener is simply invoked. | ||
5676 | * | ||
5677 | * Each plugin that is injected into `EventsPluginHub` is immediately operable. | ||
5678 | * | ||
5679 | * @public | ||
5680 | */ | ||
5681 | var EventPluginHub = { | ||
5682 | |||
5683 | /** | ||
5684 | * Methods for injecting dependencies. | ||
5685 | */ | ||
5686 | injection: { | ||
5687 | |||
5688 | /** | ||
5689 | * @param {array} InjectedEventPluginOrder | ||
5690 | * @public | ||
5691 | */ | ||
5692 | injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder, | ||
5693 | |||
5694 | /** | ||
5695 | * @param {object} injectedNamesToPlugins Map from names to plugin modules. | ||
5696 | */ | ||
5697 | injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName | ||
5698 | |||
5699 | }, | ||
5700 | |||
5701 | /** | ||
5702 | * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent. | ||
5703 | * | ||
5704 | * @param {object} inst The instance, which is the source of events. | ||
5705 | * @param {string} registrationName Name of listener (e.g. `onClick`). | ||
5706 | * @param {function} listener The callback to store. | ||
5707 | */ | ||
5708 | putListener: function (inst, registrationName, listener) { | ||
5709 | !(typeof listener === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0; | ||
5710 | |||
5711 | var key = getDictionaryKey(inst); | ||
5712 | var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {}); | ||
5713 | bankForRegistrationName[key] = listener; | ||
5714 | |||
5715 | var PluginModule = EventPluginRegistry.registrationNameModules[registrationName]; | ||
5716 | if (PluginModule && PluginModule.didPutListener) { | ||
5717 | PluginModule.didPutListener(inst, registrationName, listener); | ||
5718 | } | ||
5719 | }, | ||
5720 | |||
5721 | /** | ||
5722 | * @param {object} inst The instance, which is the source of events. | ||
5723 | * @param {string} registrationName Name of listener (e.g. `onClick`). | ||
5724 | * @return {?function} The stored callback. | ||
5725 | */ | ||
5726 | getListener: function (inst, registrationName) { | ||
5727 | // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not | ||
5728 | // live here; needs to be moved to a better place soon | ||
5729 | var bankForRegistrationName = listenerBank[registrationName]; | ||
5730 | if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) { | ||
5731 | return null; | ||
5732 | } | ||
5733 | var key = getDictionaryKey(inst); | ||
5734 | return bankForRegistrationName && bankForRegistrationName[key]; | ||
5735 | }, | ||
5736 | |||
5737 | /** | ||
5738 | * Deletes a listener from the registration bank. | ||
5739 | * | ||
5740 | * @param {object} inst The instance, which is the source of events. | ||
5741 | * @param {string} registrationName Name of listener (e.g. `onClick`). | ||
5742 | */ | ||
5743 | deleteListener: function (inst, registrationName) { | ||
5744 | var PluginModule = EventPluginRegistry.registrationNameModules[registrationName]; | ||
5745 | if (PluginModule && PluginModule.willDeleteListener) { | ||
5746 | PluginModule.willDeleteListener(inst, registrationName); | ||
5747 | } | ||
5748 | |||
5749 | var bankForRegistrationName = listenerBank[registrationName]; | ||
5750 | // TODO: This should never be null -- when is it? | ||
5751 | if (bankForRegistrationName) { | ||
5752 | var key = getDictionaryKey(inst); | ||
5753 | delete bankForRegistrationName[key]; | ||
5754 | } | ||
5755 | }, | ||
5756 | |||
5757 | /** | ||
5758 | * Deletes all listeners for the DOM element with the supplied ID. | ||
5759 | * | ||
5760 | * @param {object} inst The instance, which is the source of events. | ||
5761 | */ | ||
5762 | deleteAllListeners: function (inst) { | ||
5763 | var key = getDictionaryKey(inst); | ||
5764 | for (var registrationName in listenerBank) { | ||
5765 | if (!listenerBank.hasOwnProperty(registrationName)) { | ||
5766 | continue; | ||
5767 | } | ||
5768 | |||
5769 | if (!listenerBank[registrationName][key]) { | ||
5770 | continue; | ||
5771 | } | ||
5772 | |||
5773 | var PluginModule = EventPluginRegistry.registrationNameModules[registrationName]; | ||
5774 | if (PluginModule && PluginModule.willDeleteListener) { | ||
5775 | PluginModule.willDeleteListener(inst, registrationName); | ||
5776 | } | ||
5777 | |||
5778 | delete listenerBank[registrationName][key]; | ||
5779 | } | ||
5780 | }, | ||
5781 | |||
5782 | /** | ||
5783 | * Allows registered plugins an opportunity to extract events from top-level | ||
5784 | * native browser events. | ||
5785 | * | ||
5786 | * @return {*} An accumulation of synthetic events. | ||
5787 | * @internal | ||
5788 | */ | ||
5789 | extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { | ||
5790 | var events; | ||
5791 | var plugins = EventPluginRegistry.plugins; | ||
5792 | for (var i = 0; i < plugins.length; i++) { | ||
5793 | // Not every plugin in the ordering may be loaded at runtime. | ||
5794 | var possiblePlugin = plugins[i]; | ||
5795 | if (possiblePlugin) { | ||
5796 | var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget); | ||
5797 | if (extractedEvents) { | ||
5798 | events = accumulateInto(events, extractedEvents); | ||
5799 | } | ||
5800 | } | ||
5801 | } | ||
5802 | return events; | ||
5803 | }, | ||
5804 | |||
5805 | /** | ||
5806 | * Enqueues a synthetic event that should be dispatched when | ||
5807 | * `processEventQueue` is invoked. | ||
5808 | * | ||
5809 | * @param {*} events An accumulation of synthetic events. | ||
5810 | * @internal | ||
5811 | */ | ||
5812 | enqueueEvents: function (events) { | ||
5813 | if (events) { | ||
5814 | eventQueue = accumulateInto(eventQueue, events); | ||
5815 | } | ||
5816 | }, | ||
5817 | |||
5818 | /** | ||
5819 | * Dispatches all synthetic events on the event queue. | ||
5820 | * | ||
5821 | * @internal | ||
5822 | */ | ||
5823 | processEventQueue: function (simulated) { | ||
5824 | // Set `eventQueue` to null before processing it so that we can tell if more | ||
5825 | // events get enqueued while processing. | ||
5826 | var processingEventQueue = eventQueue; | ||
5827 | eventQueue = null; | ||
5828 | if (simulated) { | ||
5829 | forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated); | ||
5830 | } else { | ||
5831 | forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel); | ||
5832 | } | ||
5833 | !!eventQueue ? process.env.NODE_ENV !== 'production' ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0; | ||
5834 | // This would be a good time to rethrow if any of the event handlers threw. | ||
5835 | ReactErrorUtils.rethrowCaughtError(); | ||
5836 | }, | ||
5837 | |||
5838 | /** | ||
5839 | * These are needed for tests only. Do not use! | ||
5840 | */ | ||
5841 | __purge: function () { | ||
5842 | listenerBank = {}; | ||
5843 | }, | ||
5844 | |||
5845 | __getListenerBank: function () { | ||
5846 | return listenerBank; | ||
5847 | } | ||
5848 | |||
5849 | }; | ||
5850 | |||
5851 | module.exports = EventPluginHub; | ||
5852 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
5853 | |||
5854 | /***/ }), | ||
5855 | /* 49 */ | ||
5856 | /***/ (function(module, exports, __webpack_require__) { | ||
5857 | |||
5858 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
5859 | * Copyright 2013-present, Facebook, Inc. | ||
5860 | * All rights reserved. | ||
5861 | * | ||
5862 | * This source code is licensed under the BSD-style license found in the | ||
5863 | * LICENSE file in the root directory of this source tree. An additional grant | ||
5864 | * of patent rights can be found in the PATENTS file in the same directory. | ||
5865 | * | ||
5866 | * | ||
5867 | */ | ||
5868 | |||
5869 | 'use strict'; | ||
5870 | |||
5871 | var _prodInvariant = __webpack_require__(41); | ||
5872 | |||
5873 | var invariant = __webpack_require__(10); | ||
5874 | |||
5875 | /** | ||
5876 | * Injectable ordering of event plugins. | ||
5877 | */ | ||
5878 | var eventPluginOrder = null; | ||
5879 | |||
5880 | /** | ||
5881 | * Injectable mapping from names to event plugin modules. | ||
5882 | */ | ||
5883 | var namesToPlugins = {}; | ||
5884 | |||
5885 | /** | ||
5886 | * Recomputes the plugin list using the injected plugins and plugin ordering. | ||
5887 | * | ||
5888 | * @private | ||
5889 | */ | ||
5890 | function recomputePluginOrdering() { | ||
5891 | if (!eventPluginOrder) { | ||
5892 | // Wait until an `eventPluginOrder` is injected. | ||
5893 | return; | ||
5894 | } | ||
5895 | for (var pluginName in namesToPlugins) { | ||
5896 | var pluginModule = namesToPlugins[pluginName]; | ||
5897 | var pluginIndex = eventPluginOrder.indexOf(pluginName); | ||
5898 | !(pluginIndex > -1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0; | ||
5899 | if (EventPluginRegistry.plugins[pluginIndex]) { | ||
5900 | continue; | ||
5901 | } | ||
5902 | !pluginModule.extractEvents ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0; | ||
5903 | EventPluginRegistry.plugins[pluginIndex] = pluginModule; | ||
5904 | var publishedEvents = pluginModule.eventTypes; | ||
5905 | for (var eventName in publishedEvents) { | ||
5906 | !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0; | ||
5907 | } | ||
5908 | } | ||
5909 | } | ||
5910 | |||
5911 | /** | ||
5912 | * Publishes an event so that it can be dispatched by the supplied plugin. | ||
5913 | * | ||
5914 | * @param {object} dispatchConfig Dispatch configuration for the event. | ||
5915 | * @param {object} PluginModule Plugin publishing the event. | ||
5916 | * @return {boolean} True if the event was successfully published. | ||
5917 | * @private | ||
5918 | */ | ||
5919 | function publishEventForPlugin(dispatchConfig, pluginModule, eventName) { | ||
5920 | !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0; | ||
5921 | EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig; | ||
5922 | |||
5923 | var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames; | ||
5924 | if (phasedRegistrationNames) { | ||
5925 | for (var phaseName in phasedRegistrationNames) { | ||
5926 | if (phasedRegistrationNames.hasOwnProperty(phaseName)) { | ||
5927 | var phasedRegistrationName = phasedRegistrationNames[phaseName]; | ||
5928 | publishRegistrationName(phasedRegistrationName, pluginModule, eventName); | ||
5929 | } | ||
5930 | } | ||
5931 | return true; | ||
5932 | } else if (dispatchConfig.registrationName) { | ||
5933 | publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName); | ||
5934 | return true; | ||
5935 | } | ||
5936 | return false; | ||
5937 | } | ||
5938 | |||
5939 | /** | ||
5940 | * Publishes a registration name that is used to identify dispatched events and | ||
5941 | * can be used with `EventPluginHub.putListener` to register listeners. | ||
5942 | * | ||
5943 | * @param {string} registrationName Registration name to add. | ||
5944 | * @param {object} PluginModule Plugin publishing the event. | ||
5945 | * @private | ||
5946 | */ | ||
5947 | function publishRegistrationName(registrationName, pluginModule, eventName) { | ||
5948 | !!EventPluginRegistry.registrationNameModules[registrationName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0; | ||
5949 | EventPluginRegistry.registrationNameModules[registrationName] = pluginModule; | ||
5950 | EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies; | ||
5951 | |||
5952 | if (process.env.NODE_ENV !== 'production') { | ||
5953 | var lowerCasedName = registrationName.toLowerCase(); | ||
5954 | EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName; | ||
5955 | |||
5956 | if (registrationName === 'onDoubleClick') { | ||
5957 | EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName; | ||
5958 | } | ||
5959 | } | ||
5960 | } | ||
5961 | |||
5962 | /** | ||
5963 | * Registers plugins so that they can extract and dispatch events. | ||
5964 | * | ||
5965 | * @see {EventPluginHub} | ||
5966 | */ | ||
5967 | var EventPluginRegistry = { | ||
5968 | |||
5969 | /** | ||
5970 | * Ordered list of injected plugins. | ||
5971 | */ | ||
5972 | plugins: [], | ||
5973 | |||
5974 | /** | ||
5975 | * Mapping from event name to dispatch config | ||
5976 | */ | ||
5977 | eventNameDispatchConfigs: {}, | ||
5978 | |||
5979 | /** | ||
5980 | * Mapping from registration name to plugin module | ||
5981 | */ | ||
5982 | registrationNameModules: {}, | ||
5983 | |||
5984 | /** | ||
5985 | * Mapping from registration name to event name | ||
5986 | */ | ||
5987 | registrationNameDependencies: {}, | ||
5988 | |||
5989 | /** | ||
5990 | * Mapping from lowercase registration names to the properly cased version, | ||
5991 | * used to warn in the case of missing event handlers. Available | ||
5992 | * only in __DEV__. | ||
5993 | * @type {Object} | ||
5994 | */ | ||
5995 | possibleRegistrationNames: process.env.NODE_ENV !== 'production' ? {} : null, | ||
5996 | // Trust the developer to only use possibleRegistrationNames in __DEV__ | ||
5997 | |||
5998 | /** | ||
5999 | * Injects an ordering of plugins (by plugin name). This allows the ordering | ||
6000 | * to be decoupled from injection of the actual plugins so that ordering is | ||
6001 | * always deterministic regardless of packaging, on-the-fly injection, etc. | ||
6002 | * | ||
6003 | * @param {array} InjectedEventPluginOrder | ||
6004 | * @internal | ||
6005 | * @see {EventPluginHub.injection.injectEventPluginOrder} | ||
6006 | */ | ||
6007 | injectEventPluginOrder: function (injectedEventPluginOrder) { | ||
6008 | !!eventPluginOrder ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0; | ||
6009 | // Clone the ordering so it cannot be dynamically mutated. | ||
6010 | eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder); | ||
6011 | recomputePluginOrdering(); | ||
6012 | }, | ||
6013 | |||
6014 | /** | ||
6015 | * Injects plugins to be used by `EventPluginHub`. The plugin names must be | ||
6016 | * in the ordering injected by `injectEventPluginOrder`. | ||
6017 | * | ||
6018 | * Plugins can be injected as part of page initialization or on-the-fly. | ||
6019 | * | ||
6020 | * @param {object} injectedNamesToPlugins Map from names to plugin modules. | ||
6021 | * @internal | ||
6022 | * @see {EventPluginHub.injection.injectEventPluginsByName} | ||
6023 | */ | ||
6024 | injectEventPluginsByName: function (injectedNamesToPlugins) { | ||
6025 | var isOrderingDirty = false; | ||
6026 | for (var pluginName in injectedNamesToPlugins) { | ||
6027 | if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) { | ||
6028 | continue; | ||
6029 | } | ||
6030 | var pluginModule = injectedNamesToPlugins[pluginName]; | ||
6031 | if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) { | ||
6032 | !!namesToPlugins[pluginName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0; | ||
6033 | namesToPlugins[pluginName] = pluginModule; | ||
6034 | isOrderingDirty = true; | ||
6035 | } | ||
6036 | } | ||
6037 | if (isOrderingDirty) { | ||
6038 | recomputePluginOrdering(); | ||
6039 | } | ||
6040 | }, | ||
6041 | |||
6042 | /** | ||
6043 | * Looks up the plugin for the supplied event. | ||
6044 | * | ||
6045 | * @param {object} event A synthetic event. | ||
6046 | * @return {?object} The plugin that created the supplied event. | ||
6047 | * @internal | ||
6048 | */ | ||
6049 | getPluginModuleForEvent: function (event) { | ||
6050 | var dispatchConfig = event.dispatchConfig; | ||
6051 | if (dispatchConfig.registrationName) { | ||
6052 | return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null; | ||
6053 | } | ||
6054 | if (dispatchConfig.phasedRegistrationNames !== undefined) { | ||
6055 | // pulling phasedRegistrationNames out of dispatchConfig helps Flow see | ||
6056 | // that it is not undefined. | ||
6057 | var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames; | ||
6058 | |||
6059 | for (var phase in phasedRegistrationNames) { | ||
6060 | if (!phasedRegistrationNames.hasOwnProperty(phase)) { | ||
6061 | continue; | ||
6062 | } | ||
6063 | var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]]; | ||
6064 | if (pluginModule) { | ||
6065 | return pluginModule; | ||
6066 | } | ||
6067 | } | ||
6068 | } | ||
6069 | return null; | ||
6070 | }, | ||
6071 | |||
6072 | /** | ||
6073 | * Exposed for unit testing. | ||
6074 | * @private | ||
6075 | */ | ||
6076 | _resetEventPlugins: function () { | ||
6077 | eventPluginOrder = null; | ||
6078 | for (var pluginName in namesToPlugins) { | ||
6079 | if (namesToPlugins.hasOwnProperty(pluginName)) { | ||
6080 | delete namesToPlugins[pluginName]; | ||
6081 | } | ||
6082 | } | ||
6083 | EventPluginRegistry.plugins.length = 0; | ||
6084 | |||
6085 | var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs; | ||
6086 | for (var eventName in eventNameDispatchConfigs) { | ||
6087 | if (eventNameDispatchConfigs.hasOwnProperty(eventName)) { | ||
6088 | delete eventNameDispatchConfigs[eventName]; | ||
6089 | } | ||
6090 | } | ||
6091 | |||
6092 | var registrationNameModules = EventPluginRegistry.registrationNameModules; | ||
6093 | for (var registrationName in registrationNameModules) { | ||
6094 | if (registrationNameModules.hasOwnProperty(registrationName)) { | ||
6095 | delete registrationNameModules[registrationName]; | ||
6096 | } | ||
6097 | } | ||
6098 | |||
6099 | if (process.env.NODE_ENV !== 'production') { | ||
6100 | var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames; | ||
6101 | for (var lowerCasedName in possibleRegistrationNames) { | ||
6102 | if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) { | ||
6103 | delete possibleRegistrationNames[lowerCasedName]; | ||
6104 | } | ||
6105 | } | ||
6106 | } | ||
6107 | } | ||
6108 | |||
6109 | }; | ||
6110 | |||
6111 | module.exports = EventPluginRegistry; | ||
6112 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
6113 | |||
6114 | /***/ }), | ||
6115 | /* 50 */ | ||
6116 | /***/ (function(module, exports, __webpack_require__) { | ||
6117 | |||
6118 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
6119 | * Copyright 2013-present, Facebook, Inc. | ||
6120 | * All rights reserved. | ||
6121 | * | ||
6122 | * This source code is licensed under the BSD-style license found in the | ||
6123 | * LICENSE file in the root directory of this source tree. An additional grant | ||
6124 | * of patent rights can be found in the PATENTS file in the same directory. | ||
6125 | * | ||
6126 | */ | ||
6127 | |||
6128 | 'use strict'; | ||
6129 | |||
6130 | var _prodInvariant = __webpack_require__(41); | ||
6131 | |||
6132 | var ReactErrorUtils = __webpack_require__(51); | ||
6133 | |||
6134 | var invariant = __webpack_require__(10); | ||
6135 | var warning = __webpack_require__(13); | ||
6136 | |||
6137 | /** | ||
6138 | * Injected dependencies: | ||
6139 | */ | ||
6140 | |||
6141 | /** | ||
6142 | * - `ComponentTree`: [required] Module that can convert between React instances | ||
6143 | * and actual node references. | ||
6144 | */ | ||
6145 | var ComponentTree; | ||
6146 | var TreeTraversal; | ||
6147 | var injection = { | ||
6148 | injectComponentTree: function (Injected) { | ||
6149 | ComponentTree = Injected; | ||
6150 | if (process.env.NODE_ENV !== 'production') { | ||
6151 | process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0; | ||
6152 | } | ||
6153 | }, | ||
6154 | injectTreeTraversal: function (Injected) { | ||
6155 | TreeTraversal = Injected; | ||
6156 | if (process.env.NODE_ENV !== 'production') { | ||
6157 | process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0; | ||
6158 | } | ||
6159 | } | ||
6160 | }; | ||
6161 | |||
6162 | function isEndish(topLevelType) { | ||
6163 | return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel'; | ||
6164 | } | ||
6165 | |||
6166 | function isMoveish(topLevelType) { | ||
6167 | return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove'; | ||
6168 | } | ||
6169 | function isStartish(topLevelType) { | ||
6170 | return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart'; | ||
6171 | } | ||
6172 | |||
6173 | var validateEventDispatches; | ||
6174 | if (process.env.NODE_ENV !== 'production') { | ||
6175 | validateEventDispatches = function (event) { | ||
6176 | var dispatchListeners = event._dispatchListeners; | ||
6177 | var dispatchInstances = event._dispatchInstances; | ||
6178 | |||
6179 | var listenersIsArr = Array.isArray(dispatchListeners); | ||
6180 | var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0; | ||
6181 | |||
6182 | var instancesIsArr = Array.isArray(dispatchInstances); | ||
6183 | var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0; | ||
6184 | |||
6185 | process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0; | ||
6186 | }; | ||
6187 | } | ||
6188 | |||
6189 | /** | ||
6190 | * Dispatch the event to the listener. | ||
6191 | * @param {SyntheticEvent} event SyntheticEvent to handle | ||
6192 | * @param {boolean} simulated If the event is simulated (changes exn behavior) | ||
6193 | * @param {function} listener Application-level callback | ||
6194 | * @param {*} inst Internal component instance | ||
6195 | */ | ||
6196 | function executeDispatch(event, simulated, listener, inst) { | ||
6197 | var type = event.type || 'unknown-event'; | ||
6198 | event.currentTarget = EventPluginUtils.getNodeFromInstance(inst); | ||
6199 | if (simulated) { | ||
6200 | ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event); | ||
6201 | } else { | ||
6202 | ReactErrorUtils.invokeGuardedCallback(type, listener, event); | ||
6203 | } | ||
6204 | event.currentTarget = null; | ||
6205 | } | ||
6206 | |||
6207 | /** | ||
6208 | * Standard/simple iteration through an event's collected dispatches. | ||
6209 | */ | ||
6210 | function executeDispatchesInOrder(event, simulated) { | ||
6211 | var dispatchListeners = event._dispatchListeners; | ||
6212 | var dispatchInstances = event._dispatchInstances; | ||
6213 | if (process.env.NODE_ENV !== 'production') { | ||
6214 | validateEventDispatches(event); | ||
6215 | } | ||
6216 | if (Array.isArray(dispatchListeners)) { | ||
6217 | for (var i = 0; i < dispatchListeners.length; i++) { | ||
6218 | if (event.isPropagationStopped()) { | ||
6219 | break; | ||
6220 | } | ||
6221 | // Listeners and Instances are two parallel arrays that are always in sync. | ||
6222 | executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]); | ||
6223 | } | ||
6224 | } else if (dispatchListeners) { | ||
6225 | executeDispatch(event, simulated, dispatchListeners, dispatchInstances); | ||
6226 | } | ||
6227 | event._dispatchListeners = null; | ||
6228 | event._dispatchInstances = null; | ||
6229 | } | ||
6230 | |||
6231 | /** | ||
6232 | * Standard/simple iteration through an event's collected dispatches, but stops | ||
6233 | * at the first dispatch execution returning true, and returns that id. | ||
6234 | * | ||
6235 | * @return {?string} id of the first dispatch execution who's listener returns | ||
6236 | * true, or null if no listener returned true. | ||
6237 | */ | ||
6238 | function executeDispatchesInOrderStopAtTrueImpl(event) { | ||
6239 | var dispatchListeners = event._dispatchListeners; | ||
6240 | var dispatchInstances = event._dispatchInstances; | ||
6241 | if (process.env.NODE_ENV !== 'production') { | ||
6242 | validateEventDispatches(event); | ||
6243 | } | ||
6244 | if (Array.isArray(dispatchListeners)) { | ||
6245 | for (var i = 0; i < dispatchListeners.length; i++) { | ||
6246 | if (event.isPropagationStopped()) { | ||
6247 | break; | ||
6248 | } | ||
6249 | // Listeners and Instances are two parallel arrays that are always in sync. | ||
6250 | if (dispatchListeners[i](event, dispatchInstances[i])) { | ||
6251 | return dispatchInstances[i]; | ||
6252 | } | ||
6253 | } | ||
6254 | } else if (dispatchListeners) { | ||
6255 | if (dispatchListeners(event, dispatchInstances)) { | ||
6256 | return dispatchInstances; | ||
6257 | } | ||
6258 | } | ||
6259 | return null; | ||
6260 | } | ||
6261 | |||
6262 | /** | ||
6263 | * @see executeDispatchesInOrderStopAtTrueImpl | ||
6264 | */ | ||
6265 | function executeDispatchesInOrderStopAtTrue(event) { | ||
6266 | var ret = executeDispatchesInOrderStopAtTrueImpl(event); | ||
6267 | event._dispatchInstances = null; | ||
6268 | event._dispatchListeners = null; | ||
6269 | return ret; | ||
6270 | } | ||
6271 | |||
6272 | /** | ||
6273 | * Execution of a "direct" dispatch - there must be at most one dispatch | ||
6274 | * accumulated on the event or it is considered an error. It doesn't really make | ||
6275 | * sense for an event with multiple dispatches (bubbled) to keep track of the | ||
6276 | * return values at each dispatch execution, but it does tend to make sense when | ||
6277 | * dealing with "direct" dispatches. | ||
6278 | * | ||
6279 | * @return {*} The return value of executing the single dispatch. | ||
6280 | */ | ||
6281 | function executeDirectDispatch(event) { | ||
6282 | if (process.env.NODE_ENV !== 'production') { | ||
6283 | validateEventDispatches(event); | ||
6284 | } | ||
6285 | var dispatchListener = event._dispatchListeners; | ||
6286 | var dispatchInstance = event._dispatchInstances; | ||
6287 | !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0; | ||
6288 | event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null; | ||
6289 | var res = dispatchListener ? dispatchListener(event) : null; | ||
6290 | event.currentTarget = null; | ||
6291 | event._dispatchListeners = null; | ||
6292 | event._dispatchInstances = null; | ||
6293 | return res; | ||
6294 | } | ||
6295 | |||
6296 | /** | ||
6297 | * @param {SyntheticEvent} event | ||
6298 | * @return {boolean} True iff number of dispatches accumulated is greater than 0. | ||
6299 | */ | ||
6300 | function hasDispatches(event) { | ||
6301 | return !!event._dispatchListeners; | ||
6302 | } | ||
6303 | |||
6304 | /** | ||
6305 | * General utilities that are useful in creating custom Event Plugins. | ||
6306 | */ | ||
6307 | var EventPluginUtils = { | ||
6308 | isEndish: isEndish, | ||
6309 | isMoveish: isMoveish, | ||
6310 | isStartish: isStartish, | ||
6311 | |||
6312 | executeDirectDispatch: executeDirectDispatch, | ||
6313 | executeDispatchesInOrder: executeDispatchesInOrder, | ||
6314 | executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue, | ||
6315 | hasDispatches: hasDispatches, | ||
6316 | |||
6317 | getInstanceFromNode: function (node) { | ||
6318 | return ComponentTree.getInstanceFromNode(node); | ||
6319 | }, | ||
6320 | getNodeFromInstance: function (node) { | ||
6321 | return ComponentTree.getNodeFromInstance(node); | ||
6322 | }, | ||
6323 | isAncestor: function (a, b) { | ||
6324 | return TreeTraversal.isAncestor(a, b); | ||
6325 | }, | ||
6326 | getLowestCommonAncestor: function (a, b) { | ||
6327 | return TreeTraversal.getLowestCommonAncestor(a, b); | ||
6328 | }, | ||
6329 | getParentInstance: function (inst) { | ||
6330 | return TreeTraversal.getParentInstance(inst); | ||
6331 | }, | ||
6332 | traverseTwoPhase: function (target, fn, arg) { | ||
6333 | return TreeTraversal.traverseTwoPhase(target, fn, arg); | ||
6334 | }, | ||
6335 | traverseEnterLeave: function (from, to, fn, argFrom, argTo) { | ||
6336 | return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo); | ||
6337 | }, | ||
6338 | |||
6339 | injection: injection | ||
6340 | }; | ||
6341 | |||
6342 | module.exports = EventPluginUtils; | ||
6343 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
6344 | |||
6345 | /***/ }), | ||
6346 | /* 51 */ | ||
6347 | /***/ (function(module, exports, __webpack_require__) { | ||
6348 | |||
6349 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
6350 | * Copyright 2013-present, Facebook, Inc. | ||
6351 | * All rights reserved. | ||
6352 | * | ||
6353 | * This source code is licensed under the BSD-style license found in the | ||
6354 | * LICENSE file in the root directory of this source tree. An additional grant | ||
6355 | * of patent rights can be found in the PATENTS file in the same directory. | ||
6356 | * | ||
6357 | * | ||
6358 | */ | ||
6359 | |||
6360 | 'use strict'; | ||
6361 | |||
6362 | var caughtError = null; | ||
6363 | |||
6364 | /** | ||
6365 | * Call a function while guarding against errors that happens within it. | ||
6366 | * | ||
6367 | * @param {String} name of the guard to use for logging or debugging | ||
6368 | * @param {Function} func The function to invoke | ||
6369 | * @param {*} a First argument | ||
6370 | * @param {*} b Second argument | ||
6371 | */ | ||
6372 | function invokeGuardedCallback(name, func, a) { | ||
6373 | try { | ||
6374 | func(a); | ||
6375 | } catch (x) { | ||
6376 | if (caughtError === null) { | ||
6377 | caughtError = x; | ||
6378 | } | ||
6379 | } | ||
6380 | } | ||
6381 | |||
6382 | var ReactErrorUtils = { | ||
6383 | invokeGuardedCallback: invokeGuardedCallback, | ||
6384 | |||
6385 | /** | ||
6386 | * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event | ||
6387 | * handler are sure to be rethrown by rethrowCaughtError. | ||
6388 | */ | ||
6389 | invokeGuardedCallbackWithCatch: invokeGuardedCallback, | ||
6390 | |||
6391 | /** | ||
6392 | * During execution of guarded functions we will capture the first error which | ||
6393 | * we will rethrow to be handled by the top level error handler. | ||
6394 | */ | ||
6395 | rethrowCaughtError: function () { | ||
6396 | if (caughtError) { | ||
6397 | var error = caughtError; | ||
6398 | caughtError = null; | ||
6399 | throw error; | ||
6400 | } | ||
6401 | } | ||
6402 | }; | ||
6403 | |||
6404 | if (process.env.NODE_ENV !== 'production') { | ||
6405 | /** | ||
6406 | * To help development we can get better devtools integration by simulating a | ||
6407 | * real browser event. | ||
6408 | */ | ||
6409 | if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') { | ||
6410 | var fakeNode = document.createElement('react'); | ||
6411 | ReactErrorUtils.invokeGuardedCallback = function (name, func, a) { | ||
6412 | var boundFunc = func.bind(null, a); | ||
6413 | var evtType = 'react-' + name; | ||
6414 | fakeNode.addEventListener(evtType, boundFunc, false); | ||
6415 | var evt = document.createEvent('Event'); | ||
6416 | evt.initEvent(evtType, false, false); | ||
6417 | fakeNode.dispatchEvent(evt); | ||
6418 | fakeNode.removeEventListener(evtType, boundFunc, false); | ||
6419 | }; | ||
6420 | } | ||
6421 | } | ||
6422 | |||
6423 | module.exports = ReactErrorUtils; | ||
6424 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
6425 | |||
6426 | /***/ }), | ||
6427 | /* 52 */ | ||
6428 | /***/ (function(module, exports, __webpack_require__) { | ||
6429 | |||
6430 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
6431 | * Copyright 2014-present, Facebook, Inc. | ||
6432 | * All rights reserved. | ||
6433 | * | ||
6434 | * This source code is licensed under the BSD-style license found in the | ||
6435 | * LICENSE file in the root directory of this source tree. An additional grant | ||
6436 | * of patent rights can be found in the PATENTS file in the same directory. | ||
6437 | * | ||
6438 | * | ||
6439 | */ | ||
6440 | |||
6441 | 'use strict'; | ||
6442 | |||
6443 | var _prodInvariant = __webpack_require__(41); | ||
6444 | |||
6445 | var invariant = __webpack_require__(10); | ||
6446 | |||
6447 | /** | ||
6448 | * Accumulates items that must not be null or undefined into the first one. This | ||
6449 | * is used to conserve memory by avoiding array allocations, and thus sacrifices | ||
6450 | * API cleanness. Since `current` can be null before being passed in and not | ||
6451 | * null after this function, make sure to assign it back to `current`: | ||
6452 | * | ||
6453 | * `a = accumulateInto(a, b);` | ||
6454 | * | ||
6455 | * This API should be sparingly used. Try `accumulate` for something cleaner. | ||
6456 | * | ||
6457 | * @return {*|array<*>} An accumulation of items. | ||
6458 | */ | ||
6459 | |||
6460 | function accumulateInto(current, next) { | ||
6461 | !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0; | ||
6462 | |||
6463 | if (current == null) { | ||
6464 | return next; | ||
6465 | } | ||
6466 | |||
6467 | // Both are not empty. Warning: Never call x.concat(y) when you are not | ||
6468 | // certain that x is an Array (x could be a string with concat method). | ||
6469 | if (Array.isArray(current)) { | ||
6470 | if (Array.isArray(next)) { | ||
6471 | current.push.apply(current, next); | ||
6472 | return current; | ||
6473 | } | ||
6474 | current.push(next); | ||
6475 | return current; | ||
6476 | } | ||
6477 | |||
6478 | if (Array.isArray(next)) { | ||
6479 | // A bit too dangerous to mutate `next`. | ||
6480 | return [current].concat(next); | ||
6481 | } | ||
6482 | |||
6483 | return [current, next]; | ||
6484 | } | ||
6485 | |||
6486 | module.exports = accumulateInto; | ||
6487 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
6488 | |||
6489 | /***/ }), | ||
6490 | /* 53 */ | ||
6491 | /***/ (function(module, exports) { | ||
6492 | |||
6493 | /** | ||
6494 | * Copyright 2013-present, Facebook, Inc. | ||
6495 | * All rights reserved. | ||
6496 | * | ||
6497 | * This source code is licensed under the BSD-style license found in the | ||
6498 | * LICENSE file in the root directory of this source tree. An additional grant | ||
6499 | * of patent rights can be found in the PATENTS file in the same directory. | ||
6500 | * | ||
6501 | * | ||
6502 | */ | ||
6503 | |||
6504 | 'use strict'; | ||
6505 | |||
6506 | /** | ||
6507 | * @param {array} arr an "accumulation" of items which is either an Array or | ||
6508 | * a single item. Useful when paired with the `accumulate` module. This is a | ||
6509 | * simple utility that allows us to reason about a collection of items, but | ||
6510 | * handling the case when there is exactly one item (and we do not need to | ||
6511 | * allocate an array). | ||
6512 | */ | ||
6513 | |||
6514 | function forEachAccumulated(arr, cb, scope) { | ||
6515 | if (Array.isArray(arr)) { | ||
6516 | arr.forEach(cb, scope); | ||
6517 | } else if (arr) { | ||
6518 | cb.call(scope, arr); | ||
6519 | } | ||
6520 | } | ||
6521 | |||
6522 | module.exports = forEachAccumulated; | ||
6523 | |||
6524 | /***/ }), | ||
6525 | /* 54 */ | ||
6526 | /***/ (function(module, exports) { | ||
6527 | |||
6528 | /** | ||
6529 | * Copyright (c) 2013-present, Facebook, Inc. | ||
6530 | * All rights reserved. | ||
6531 | * | ||
6532 | * This source code is licensed under the BSD-style license found in the | ||
6533 | * LICENSE file in the root directory of this source tree. An additional grant | ||
6534 | * of patent rights can be found in the PATENTS file in the same directory. | ||
6535 | * | ||
6536 | */ | ||
6537 | |||
6538 | 'use strict'; | ||
6539 | |||
6540 | var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); | ||
6541 | |||
6542 | /** | ||
6543 | * Simple, lightweight module assisting with the detection and context of | ||
6544 | * Worker. Helps avoid circular dependencies and allows code to reason about | ||
6545 | * whether or not they are in a Worker, even if they never include the main | ||
6546 | * `ReactWorker` dependency. | ||
6547 | */ | ||
6548 | var ExecutionEnvironment = { | ||
6549 | |||
6550 | canUseDOM: canUseDOM, | ||
6551 | |||
6552 | canUseWorkers: typeof Worker !== 'undefined', | ||
6553 | |||
6554 | canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent), | ||
6555 | |||
6556 | canUseViewport: canUseDOM && !!window.screen, | ||
6557 | |||
6558 | isInWorker: !canUseDOM // For now, this is true - might change in the future. | ||
6559 | |||
6560 | }; | ||
6561 | |||
6562 | module.exports = ExecutionEnvironment; | ||
6563 | |||
6564 | /***/ }), | ||
6565 | /* 55 */ | ||
6566 | /***/ (function(module, exports, __webpack_require__) { | ||
6567 | |||
6568 | /** | ||
6569 | * Copyright 2013-present, Facebook, Inc. | ||
6570 | * All rights reserved. | ||
6571 | * | ||
6572 | * This source code is licensed under the BSD-style license found in the | ||
6573 | * LICENSE file in the root directory of this source tree. An additional grant | ||
6574 | * of patent rights can be found in the PATENTS file in the same directory. | ||
6575 | * | ||
6576 | */ | ||
6577 | |||
6578 | 'use strict'; | ||
6579 | |||
6580 | var _assign = __webpack_require__(6); | ||
6581 | |||
6582 | var PooledClass = __webpack_require__(56); | ||
6583 | |||
6584 | var getTextContentAccessor = __webpack_require__(57); | ||
6585 | |||
6586 | /** | ||
6587 | * This helper class stores information about text content of a target node, | ||
6588 | * allowing comparison of content before and after a given event. | ||
6589 | * | ||
6590 | * Identify the node where selection currently begins, then observe | ||
6591 | * both its text content and its current position in the DOM. Since the | ||
6592 | * browser may natively replace the target node during composition, we can | ||
6593 | * use its position to find its replacement. | ||
6594 | * | ||
6595 | * @param {DOMEventTarget} root | ||
6596 | */ | ||
6597 | function FallbackCompositionState(root) { | ||
6598 | this._root = root; | ||
6599 | this._startText = this.getText(); | ||
6600 | this._fallbackText = null; | ||
6601 | } | ||
6602 | |||
6603 | _assign(FallbackCompositionState.prototype, { | ||
6604 | destructor: function () { | ||
6605 | this._root = null; | ||
6606 | this._startText = null; | ||
6607 | this._fallbackText = null; | ||
6608 | }, | ||
6609 | |||
6610 | /** | ||
6611 | * Get current text of input. | ||
6612 | * | ||
6613 | * @return {string} | ||
6614 | */ | ||
6615 | getText: function () { | ||
6616 | if ('value' in this._root) { | ||
6617 | return this._root.value; | ||
6618 | } | ||
6619 | return this._root[getTextContentAccessor()]; | ||
6620 | }, | ||
6621 | |||
6622 | /** | ||
6623 | * Determine the differing substring between the initially stored | ||
6624 | * text content and the current content. | ||
6625 | * | ||
6626 | * @return {string} | ||
6627 | */ | ||
6628 | getData: function () { | ||
6629 | if (this._fallbackText) { | ||
6630 | return this._fallbackText; | ||
6631 | } | ||
6632 | |||
6633 | var start; | ||
6634 | var startValue = this._startText; | ||
6635 | var startLength = startValue.length; | ||
6636 | var end; | ||
6637 | var endValue = this.getText(); | ||
6638 | var endLength = endValue.length; | ||
6639 | |||
6640 | for (start = 0; start < startLength; start++) { | ||
6641 | if (startValue[start] !== endValue[start]) { | ||
6642 | break; | ||
6643 | } | ||
6644 | } | ||
6645 | |||
6646 | var minEnd = startLength - start; | ||
6647 | for (end = 1; end <= minEnd; end++) { | ||
6648 | if (startValue[startLength - end] !== endValue[endLength - end]) { | ||
6649 | break; | ||
6650 | } | ||
6651 | } | ||
6652 | |||
6653 | var sliceTail = end > 1 ? 1 - end : undefined; | ||
6654 | this._fallbackText = endValue.slice(start, sliceTail); | ||
6655 | return this._fallbackText; | ||
6656 | } | ||
6657 | }); | ||
6658 | |||
6659 | PooledClass.addPoolingTo(FallbackCompositionState); | ||
6660 | |||
6661 | module.exports = FallbackCompositionState; | ||
6662 | |||
6663 | /***/ }), | ||
6664 | /* 56 */ | ||
6665 | [323, 41], | ||
6666 | /* 57 */ | ||
6667 | /***/ (function(module, exports, __webpack_require__) { | ||
6668 | |||
6669 | /** | ||
6670 | * Copyright 2013-present, Facebook, Inc. | ||
6671 | * All rights reserved. | ||
6672 | * | ||
6673 | * This source code is licensed under the BSD-style license found in the | ||
6674 | * LICENSE file in the root directory of this source tree. An additional grant | ||
6675 | * of patent rights can be found in the PATENTS file in the same directory. | ||
6676 | * | ||
6677 | */ | ||
6678 | |||
6679 | 'use strict'; | ||
6680 | |||
6681 | var ExecutionEnvironment = __webpack_require__(54); | ||
6682 | |||
6683 | var contentKey = null; | ||
6684 | |||
6685 | /** | ||
6686 | * Gets the key used to access text content on a DOM node. | ||
6687 | * | ||
6688 | * @return {?string} Key used to access text content. | ||
6689 | * @internal | ||
6690 | */ | ||
6691 | function getTextContentAccessor() { | ||
6692 | if (!contentKey && ExecutionEnvironment.canUseDOM) { | ||
6693 | // Prefer textContent to innerText because many browsers support both but | ||
6694 | // SVG <text> elements don't support innerText even when <div> does. | ||
6695 | contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText'; | ||
6696 | } | ||
6697 | return contentKey; | ||
6698 | } | ||
6699 | |||
6700 | module.exports = getTextContentAccessor; | ||
6701 | |||
6702 | /***/ }), | ||
6703 | /* 58 */ | ||
6704 | /***/ (function(module, exports, __webpack_require__) { | ||
6705 | |||
6706 | /** | ||
6707 | * Copyright 2013-present, Facebook, Inc. | ||
6708 | * All rights reserved. | ||
6709 | * | ||
6710 | * This source code is licensed under the BSD-style license found in the | ||
6711 | * LICENSE file in the root directory of this source tree. An additional grant | ||
6712 | * of patent rights can be found in the PATENTS file in the same directory. | ||
6713 | * | ||
6714 | */ | ||
6715 | |||
6716 | 'use strict'; | ||
6717 | |||
6718 | var SyntheticEvent = __webpack_require__(59); | ||
6719 | |||
6720 | /** | ||
6721 | * @interface Event | ||
6722 | * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents | ||
6723 | */ | ||
6724 | var CompositionEventInterface = { | ||
6725 | data: null | ||
6726 | }; | ||
6727 | |||
6728 | /** | ||
6729 | * @param {object} dispatchConfig Configuration used to dispatch this event. | ||
6730 | * @param {string} dispatchMarker Marker identifying the event target. | ||
6731 | * @param {object} nativeEvent Native browser event. | ||
6732 | * @extends {SyntheticUIEvent} | ||
6733 | */ | ||
6734 | function SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { | ||
6735 | return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); | ||
6736 | } | ||
6737 | |||
6738 | SyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface); | ||
6739 | |||
6740 | module.exports = SyntheticCompositionEvent; | ||
6741 | |||
6742 | /***/ }), | ||
6743 | /* 59 */ | ||
6744 | /***/ (function(module, exports, __webpack_require__) { | ||
6745 | |||
6746 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
6747 | * Copyright 2013-present, Facebook, Inc. | ||
6748 | * All rights reserved. | ||
6749 | * | ||
6750 | * This source code is licensed under the BSD-style license found in the | ||
6751 | * LICENSE file in the root directory of this source tree. An additional grant | ||
6752 | * of patent rights can be found in the PATENTS file in the same directory. | ||
6753 | * | ||
6754 | */ | ||
6755 | |||
6756 | 'use strict'; | ||
6757 | |||
6758 | var _assign = __webpack_require__(6); | ||
6759 | |||
6760 | var PooledClass = __webpack_require__(56); | ||
6761 | |||
6762 | var emptyFunction = __webpack_require__(14); | ||
6763 | var warning = __webpack_require__(13); | ||
6764 | |||
6765 | var didWarnForAddedNewProperty = false; | ||
6766 | var isProxySupported = typeof Proxy === 'function'; | ||
6767 | |||
6768 | var shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances']; | ||
6769 | |||
6770 | /** | ||
6771 | * @interface Event | ||
6772 | * @see http://www.w3.org/TR/DOM-Level-3-Events/ | ||
6773 | */ | ||
6774 | var EventInterface = { | ||
6775 | type: null, | ||
6776 | target: null, | ||
6777 | // currentTarget is set when dispatching; no use in copying it here | ||
6778 | currentTarget: emptyFunction.thatReturnsNull, | ||
6779 | eventPhase: null, | ||
6780 | bubbles: null, | ||
6781 | cancelable: null, | ||
6782 | timeStamp: function (event) { | ||
6783 | return event.timeStamp || Date.now(); | ||
6784 | }, | ||
6785 | defaultPrevented: null, | ||
6786 | isTrusted: null | ||
6787 | }; | ||
6788 | |||
6789 | /** | ||
6790 | * Synthetic events are dispatched by event plugins, typically in response to a | ||
6791 | * top-level event delegation handler. | ||
6792 | * | ||
6793 | * These systems should generally use pooling to reduce the frequency of garbage | ||
6794 | * collection. The system should check `isPersistent` to determine whether the | ||
6795 | * event should be released into the pool after being dispatched. Users that | ||
6796 | * need a persisted event should invoke `persist`. | ||
6797 | * | ||
6798 | * Synthetic events (and subclasses) implement the DOM Level 3 Events API by | ||
6799 | * normalizing browser quirks. Subclasses do not necessarily have to implement a | ||
6800 | * DOM interface; custom application-specific events can also subclass this. | ||
6801 | * | ||
6802 | * @param {object} dispatchConfig Configuration used to dispatch this event. | ||
6803 | * @param {*} targetInst Marker identifying the event target. | ||
6804 | * @param {object} nativeEvent Native browser event. | ||
6805 | * @param {DOMEventTarget} nativeEventTarget Target node. | ||
6806 | */ | ||
6807 | function SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) { | ||
6808 | if (process.env.NODE_ENV !== 'production') { | ||
6809 | // these have a getter/setter for warnings | ||
6810 | delete this.nativeEvent; | ||
6811 | delete this.preventDefault; | ||
6812 | delete this.stopPropagation; | ||
6813 | } | ||
6814 | |||
6815 | this.dispatchConfig = dispatchConfig; | ||
6816 | this._targetInst = targetInst; | ||
6817 | this.nativeEvent = nativeEvent; | ||
6818 | |||
6819 | var Interface = this.constructor.Interface; | ||
6820 | for (var propName in Interface) { | ||
6821 | if (!Interface.hasOwnProperty(propName)) { | ||
6822 | continue; | ||
6823 | } | ||
6824 | if (process.env.NODE_ENV !== 'production') { | ||
6825 | delete this[propName]; // this has a getter/setter for warnings | ||
6826 | } | ||
6827 | var normalize = Interface[propName]; | ||
6828 | if (normalize) { | ||
6829 | this[propName] = normalize(nativeEvent); | ||
6830 | } else { | ||
6831 | if (propName === 'target') { | ||
6832 | this.target = nativeEventTarget; | ||
6833 | } else { | ||
6834 | this[propName] = nativeEvent[propName]; | ||
6835 | } | ||
6836 | } | ||
6837 | } | ||
6838 | |||
6839 | var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false; | ||
6840 | if (defaultPrevented) { | ||
6841 | this.isDefaultPrevented = emptyFunction.thatReturnsTrue; | ||
6842 | } else { | ||
6843 | this.isDefaultPrevented = emptyFunction.thatReturnsFalse; | ||
6844 | } | ||
6845 | this.isPropagationStopped = emptyFunction.thatReturnsFalse; | ||
6846 | return this; | ||
6847 | } | ||
6848 | |||
6849 | _assign(SyntheticEvent.prototype, { | ||
6850 | |||
6851 | preventDefault: function () { | ||
6852 | this.defaultPrevented = true; | ||
6853 | var event = this.nativeEvent; | ||
6854 | if (!event) { | ||
6855 | return; | ||
6856 | } | ||
6857 | |||
6858 | if (event.preventDefault) { | ||
6859 | event.preventDefault(); | ||
6860 | } else if (typeof event.returnValue !== 'unknown') { | ||
6861 | // eslint-disable-line valid-typeof | ||
6862 | event.returnValue = false; | ||
6863 | } | ||
6864 | this.isDefaultPrevented = emptyFunction.thatReturnsTrue; | ||
6865 | }, | ||
6866 | |||
6867 | stopPropagation: function () { | ||
6868 | var event = this.nativeEvent; | ||
6869 | if (!event) { | ||
6870 | return; | ||
6871 | } | ||
6872 | |||
6873 | if (event.stopPropagation) { | ||
6874 | event.stopPropagation(); | ||
6875 | } else if (typeof event.cancelBubble !== 'unknown') { | ||
6876 | // eslint-disable-line valid-typeof | ||
6877 | // The ChangeEventPlugin registers a "propertychange" event for | ||
6878 | // IE. This event does not support bubbling or cancelling, and | ||
6879 | // any references to cancelBubble throw "Member not found". A | ||
6880 | // typeof check of "unknown" circumvents this issue (and is also | ||
6881 | // IE specific). | ||
6882 | event.cancelBubble = true; | ||
6883 | } | ||
6884 | |||
6885 | this.isPropagationStopped = emptyFunction.thatReturnsTrue; | ||
6886 | }, | ||
6887 | |||
6888 | /** | ||
6889 | * We release all dispatched `SyntheticEvent`s after each event loop, adding | ||
6890 | * them back into the pool. This allows a way to hold onto a reference that | ||
6891 | * won't be added back into the pool. | ||
6892 | */ | ||
6893 | persist: function () { | ||
6894 | this.isPersistent = emptyFunction.thatReturnsTrue; | ||
6895 | }, | ||
6896 | |||
6897 | /** | ||
6898 | * Checks if this event should be released back into the pool. | ||
6899 | * | ||
6900 | * @return {boolean} True if this should not be released, false otherwise. | ||
6901 | */ | ||
6902 | isPersistent: emptyFunction.thatReturnsFalse, | ||
6903 | |||
6904 | /** | ||
6905 | * `PooledClass` looks for `destructor` on each instance it releases. | ||
6906 | */ | ||
6907 | destructor: function () { | ||
6908 | var Interface = this.constructor.Interface; | ||
6909 | for (var propName in Interface) { | ||
6910 | if (process.env.NODE_ENV !== 'production') { | ||
6911 | Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName])); | ||
6912 | } else { | ||
6913 | this[propName] = null; | ||
6914 | } | ||
6915 | } | ||
6916 | for (var i = 0; i < shouldBeReleasedProperties.length; i++) { | ||
6917 | this[shouldBeReleasedProperties[i]] = null; | ||
6918 | } | ||
6919 | if (process.env.NODE_ENV !== 'production') { | ||
6920 | Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null)); | ||
6921 | Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction)); | ||
6922 | Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction)); | ||
6923 | } | ||
6924 | } | ||
6925 | |||
6926 | }); | ||
6927 | |||
6928 | SyntheticEvent.Interface = EventInterface; | ||
6929 | |||
6930 | if (process.env.NODE_ENV !== 'production') { | ||
6931 | if (isProxySupported) { | ||
6932 | /*eslint-disable no-func-assign */ | ||
6933 | SyntheticEvent = new Proxy(SyntheticEvent, { | ||
6934 | construct: function (target, args) { | ||
6935 | return this.apply(target, Object.create(target.prototype), args); | ||
6936 | }, | ||
6937 | apply: function (constructor, that, args) { | ||
6938 | return new Proxy(constructor.apply(that, args), { | ||
6939 | set: function (target, prop, value) { | ||
6940 | if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) { | ||
6941 | process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), 'This synthetic event is reused for performance reasons. If you\'re ' + 'seeing this, you\'re adding a new property in the synthetic event object. ' + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0; | ||
6942 | didWarnForAddedNewProperty = true; | ||
6943 | } | ||
6944 | target[prop] = value; | ||
6945 | return true; | ||
6946 | } | ||
6947 | }); | ||
6948 | } | ||
6949 | }); | ||
6950 | /*eslint-enable no-func-assign */ | ||
6951 | } | ||
6952 | } | ||
6953 | /** | ||
6954 | * Helper to reduce boilerplate when creating subclasses. | ||
6955 | * | ||
6956 | * @param {function} Class | ||
6957 | * @param {?object} Interface | ||
6958 | */ | ||
6959 | SyntheticEvent.augmentClass = function (Class, Interface) { | ||
6960 | var Super = this; | ||
6961 | |||
6962 | var E = function () {}; | ||
6963 | E.prototype = Super.prototype; | ||
6964 | var prototype = new E(); | ||
6965 | |||
6966 | _assign(prototype, Class.prototype); | ||
6967 | Class.prototype = prototype; | ||
6968 | Class.prototype.constructor = Class; | ||
6969 | |||
6970 | Class.Interface = _assign({}, Super.Interface, Interface); | ||
6971 | Class.augmentClass = Super.augmentClass; | ||
6972 | |||
6973 | PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler); | ||
6974 | }; | ||
6975 | |||
6976 | PooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler); | ||
6977 | |||
6978 | module.exports = SyntheticEvent; | ||
6979 | |||
6980 | /** | ||
6981 | * Helper to nullify syntheticEvent instance properties when destructing | ||
6982 | * | ||
6983 | * @param {object} SyntheticEvent | ||
6984 | * @param {String} propName | ||
6985 | * @return {object} defineProperty object | ||
6986 | */ | ||
6987 | function getPooledWarningPropertyDefinition(propName, getVal) { | ||
6988 | var isFunction = typeof getVal === 'function'; | ||
6989 | return { | ||
6990 | configurable: true, | ||
6991 | set: set, | ||
6992 | get: get | ||
6993 | }; | ||
6994 | |||
6995 | function set(val) { | ||
6996 | var action = isFunction ? 'setting the method' : 'setting the property'; | ||
6997 | warn(action, 'This is effectively a no-op'); | ||
6998 | return val; | ||
6999 | } | ||
7000 | |||
7001 | function get() { | ||
7002 | var action = isFunction ? 'accessing the method' : 'accessing the property'; | ||
7003 | var result = isFunction ? 'This is a no-op function' : 'This is set to null'; | ||
7004 | warn(action, result); | ||
7005 | return getVal; | ||
7006 | } | ||
7007 | |||
7008 | function warn(action, result) { | ||
7009 | var warningCondition = false; | ||
7010 | process.env.NODE_ENV !== 'production' ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\'re seeing this, ' + 'you\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0; | ||
7011 | } | ||
7012 | } | ||
7013 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
7014 | |||
7015 | /***/ }), | ||
7016 | /* 60 */ | ||
7017 | /***/ (function(module, exports, __webpack_require__) { | ||
7018 | |||
7019 | /** | ||
7020 | * Copyright 2013-present, Facebook, Inc. | ||
7021 | * All rights reserved. | ||
7022 | * | ||
7023 | * This source code is licensed under the BSD-style license found in the | ||
7024 | * LICENSE file in the root directory of this source tree. An additional grant | ||
7025 | * of patent rights can be found in the PATENTS file in the same directory. | ||
7026 | * | ||
7027 | */ | ||
7028 | |||
7029 | 'use strict'; | ||
7030 | |||
7031 | var SyntheticEvent = __webpack_require__(59); | ||
7032 | |||
7033 | /** | ||
7034 | * @interface Event | ||
7035 | * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105 | ||
7036 | * /#events-inputevents | ||
7037 | */ | ||
7038 | var InputEventInterface = { | ||
7039 | data: null | ||
7040 | }; | ||
7041 | |||
7042 | /** | ||
7043 | * @param {object} dispatchConfig Configuration used to dispatch this event. | ||
7044 | * @param {string} dispatchMarker Marker identifying the event target. | ||
7045 | * @param {object} nativeEvent Native browser event. | ||
7046 | * @extends {SyntheticUIEvent} | ||
7047 | */ | ||
7048 | function SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { | ||
7049 | return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); | ||
7050 | } | ||
7051 | |||
7052 | SyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface); | ||
7053 | |||
7054 | module.exports = SyntheticInputEvent; | ||
7055 | |||
7056 | /***/ }), | ||
7057 | /* 61 */ | ||
7058 | /***/ (function(module, exports, __webpack_require__) { | ||
7059 | |||
7060 | /** | ||
7061 | * Copyright 2013-present, Facebook, Inc. | ||
7062 | * All rights reserved. | ||
7063 | * | ||
7064 | * This source code is licensed under the BSD-style license found in the | ||
7065 | * LICENSE file in the root directory of this source tree. An additional grant | ||
7066 | * of patent rights can be found in the PATENTS file in the same directory. | ||
7067 | * | ||
7068 | */ | ||
7069 | |||
7070 | 'use strict'; | ||
7071 | |||
7072 | var EventPluginHub = __webpack_require__(48); | ||
7073 | var EventPropagators = __webpack_require__(47); | ||
7074 | var ExecutionEnvironment = __webpack_require__(54); | ||
7075 | var ReactDOMComponentTree = __webpack_require__(40); | ||
7076 | var ReactUpdates = __webpack_require__(62); | ||
7077 | var SyntheticEvent = __webpack_require__(59); | ||
7078 | |||
7079 | var getEventTarget = __webpack_require__(75); | ||
7080 | var isEventSupported = __webpack_require__(76); | ||
7081 | var isTextInputElement = __webpack_require__(77); | ||
7082 | |||
7083 | var eventTypes = { | ||
7084 | change: { | ||
7085 | phasedRegistrationNames: { | ||
7086 | bubbled: 'onChange', | ||
7087 | captured: 'onChangeCapture' | ||
7088 | }, | ||
7089 | dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange'] | ||
7090 | } | ||
7091 | }; | ||
7092 | |||
7093 | /** | ||
7094 | * For IE shims | ||
7095 | */ | ||
7096 | var activeElement = null; | ||
7097 | var activeElementInst = null; | ||
7098 | var activeElementValue = null; | ||
7099 | var activeElementValueProp = null; | ||
7100 | |||
7101 | /** | ||
7102 | * SECTION: handle `change` event | ||
7103 | */ | ||
7104 | function shouldUseChangeEvent(elem) { | ||
7105 | var nodeName = elem.nodeName && elem.nodeName.toLowerCase(); | ||
7106 | return nodeName === 'select' || nodeName === 'input' && elem.type === 'file'; | ||
7107 | } | ||
7108 | |||
7109 | var doesChangeEventBubble = false; | ||
7110 | if (ExecutionEnvironment.canUseDOM) { | ||
7111 | // See `handleChange` comment below | ||
7112 | doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8); | ||
7113 | } | ||
7114 | |||
7115 | function manualDispatchChangeEvent(nativeEvent) { | ||
7116 | var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent)); | ||
7117 | EventPropagators.accumulateTwoPhaseDispatches(event); | ||
7118 | |||
7119 | // If change and propertychange bubbled, we'd just bind to it like all the | ||
7120 | // other events and have it go through ReactBrowserEventEmitter. Since it | ||
7121 | // doesn't, we manually listen for the events and so we have to enqueue and | ||
7122 | // process the abstract event manually. | ||
7123 | // | ||
7124 | // Batching is necessary here in order to ensure that all event handlers run | ||
7125 | // before the next rerender (including event handlers attached to ancestor | ||
7126 | // elements instead of directly on the input). Without this, controlled | ||
7127 | // components don't work properly in conjunction with event bubbling because | ||
7128 | // the component is rerendered and the value reverted before all the event | ||
7129 | // handlers can run. See https://github.com/facebook/react/issues/708. | ||
7130 | ReactUpdates.batchedUpdates(runEventInBatch, event); | ||
7131 | } | ||
7132 | |||
7133 | function runEventInBatch(event) { | ||
7134 | EventPluginHub.enqueueEvents(event); | ||
7135 | EventPluginHub.processEventQueue(false); | ||
7136 | } | ||
7137 | |||
7138 | function startWatchingForChangeEventIE8(target, targetInst) { | ||
7139 | activeElement = target; | ||
7140 | activeElementInst = targetInst; | ||
7141 | activeElement.attachEvent('onchange', manualDispatchChangeEvent); | ||
7142 | } | ||
7143 | |||
7144 | function stopWatchingForChangeEventIE8() { | ||
7145 | if (!activeElement) { | ||
7146 | return; | ||
7147 | } | ||
7148 | activeElement.detachEvent('onchange', manualDispatchChangeEvent); | ||
7149 | activeElement = null; | ||
7150 | activeElementInst = null; | ||
7151 | } | ||
7152 | |||
7153 | function getTargetInstForChangeEvent(topLevelType, targetInst) { | ||
7154 | if (topLevelType === 'topChange') { | ||
7155 | return targetInst; | ||
7156 | } | ||
7157 | } | ||
7158 | function handleEventsForChangeEventIE8(topLevelType, target, targetInst) { | ||
7159 | if (topLevelType === 'topFocus') { | ||
7160 | // stopWatching() should be a noop here but we call it just in case we | ||
7161 | // missed a blur event somehow. | ||
7162 | stopWatchingForChangeEventIE8(); | ||
7163 | startWatchingForChangeEventIE8(target, targetInst); | ||
7164 | } else if (topLevelType === 'topBlur') { | ||
7165 | stopWatchingForChangeEventIE8(); | ||
7166 | } | ||
7167 | } | ||
7168 | |||
7169 | /** | ||
7170 | * SECTION: handle `input` event | ||
7171 | */ | ||
7172 | var isInputEventSupported = false; | ||
7173 | if (ExecutionEnvironment.canUseDOM) { | ||
7174 | // IE9 claims to support the input event but fails to trigger it when | ||
7175 | // deleting text, so we ignore its input events. | ||
7176 | // IE10+ fire input events to often, such when a placeholder | ||
7177 | // changes or when an input with a placeholder is focused. | ||
7178 | isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11); | ||
7179 | } | ||
7180 | |||
7181 | /** | ||
7182 | * (For IE <=11) Replacement getter/setter for the `value` property that gets | ||
7183 | * set on the active element. | ||
7184 | */ | ||
7185 | var newValueProp = { | ||
7186 | get: function () { | ||
7187 | return activeElementValueProp.get.call(this); | ||
7188 | }, | ||
7189 | set: function (val) { | ||
7190 | // Cast to a string so we can do equality checks. | ||
7191 | activeElementValue = '' + val; | ||
7192 | activeElementValueProp.set.call(this, val); | ||
7193 | } | ||
7194 | }; | ||
7195 | |||
7196 | /** | ||
7197 | * (For IE <=11) Starts tracking propertychange events on the passed-in element | ||
7198 | * and override the value property so that we can distinguish user events from | ||
7199 | * value changes in JS. | ||
7200 | */ | ||
7201 | function startWatchingForValueChange(target, targetInst) { | ||
7202 | activeElement = target; | ||
7203 | activeElementInst = targetInst; | ||
7204 | activeElementValue = target.value; | ||
7205 | activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value'); | ||
7206 | |||
7207 | // Not guarded in a canDefineProperty check: IE8 supports defineProperty only | ||
7208 | // on DOM elements | ||
7209 | Object.defineProperty(activeElement, 'value', newValueProp); | ||
7210 | if (activeElement.attachEvent) { | ||
7211 | activeElement.attachEvent('onpropertychange', handlePropertyChange); | ||
7212 | } else { | ||
7213 | activeElement.addEventListener('propertychange', handlePropertyChange, false); | ||
7214 | } | ||
7215 | } | ||
7216 | |||
7217 | /** | ||
7218 | * (For IE <=11) Removes the event listeners from the currently-tracked element, | ||
7219 | * if any exists. | ||
7220 | */ | ||
7221 | function stopWatchingForValueChange() { | ||
7222 | if (!activeElement) { | ||
7223 | return; | ||
7224 | } | ||
7225 | |||
7226 | // delete restores the original property definition | ||
7227 | delete activeElement.value; | ||
7228 | |||
7229 | if (activeElement.detachEvent) { | ||
7230 | activeElement.detachEvent('onpropertychange', handlePropertyChange); | ||
7231 | } else { | ||
7232 | activeElement.removeEventListener('propertychange', handlePropertyChange, false); | ||
7233 | } | ||
7234 | |||
7235 | activeElement = null; | ||
7236 | activeElementInst = null; | ||
7237 | activeElementValue = null; | ||
7238 | activeElementValueProp = null; | ||
7239 | } | ||
7240 | |||
7241 | /** | ||
7242 | * (For IE <=11) Handles a propertychange event, sending a `change` event if | ||
7243 | * the value of the active element has changed. | ||
7244 | */ | ||
7245 | function handlePropertyChange(nativeEvent) { | ||
7246 | if (nativeEvent.propertyName !== 'value') { | ||
7247 | return; | ||
7248 | } | ||
7249 | var value = nativeEvent.srcElement.value; | ||
7250 | if (value === activeElementValue) { | ||
7251 | return; | ||
7252 | } | ||
7253 | activeElementValue = value; | ||
7254 | |||
7255 | manualDispatchChangeEvent(nativeEvent); | ||
7256 | } | ||
7257 | |||
7258 | /** | ||
7259 | * If a `change` event should be fired, returns the target's ID. | ||
7260 | */ | ||
7261 | function getTargetInstForInputEvent(topLevelType, targetInst) { | ||
7262 | if (topLevelType === 'topInput') { | ||
7263 | // In modern browsers (i.e., not IE8 or IE9), the input event is exactly | ||
7264 | // what we want so fall through here and trigger an abstract event | ||
7265 | return targetInst; | ||
7266 | } | ||
7267 | } | ||
7268 | |||
7269 | function handleEventsForInputEventIE(topLevelType, target, targetInst) { | ||
7270 | if (topLevelType === 'topFocus') { | ||
7271 | // In IE8, we can capture almost all .value changes by adding a | ||
7272 | // propertychange handler and looking for events with propertyName | ||
7273 | // equal to 'value' | ||
7274 | // In IE9-11, propertychange fires for most input events but is buggy and | ||
7275 | // doesn't fire when text is deleted, but conveniently, selectionchange | ||
7276 | // appears to fire in all of the remaining cases so we catch those and | ||
7277 | // forward the event if the value has changed | ||
7278 | // In either case, we don't want to call the event handler if the value | ||
7279 | // is changed from JS so we redefine a setter for `.value` that updates | ||
7280 | // our activeElementValue variable, allowing us to ignore those changes | ||
7281 | // | ||
7282 | // stopWatching() should be a noop here but we call it just in case we | ||
7283 | // missed a blur event somehow. | ||
7284 | stopWatchingForValueChange(); | ||
7285 | startWatchingForValueChange(target, targetInst); | ||
7286 | } else if (topLevelType === 'topBlur') { | ||
7287 | stopWatchingForValueChange(); | ||
7288 | } | ||
7289 | } | ||
7290 | |||
7291 | // For IE8 and IE9. | ||
7292 | function getTargetInstForInputEventIE(topLevelType, targetInst) { | ||
7293 | if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') { | ||
7294 | // On the selectionchange event, the target is just document which isn't | ||
7295 | // helpful for us so just check activeElement instead. | ||
7296 | // | ||
7297 | // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire | ||
7298 | // propertychange on the first input event after setting `value` from a | ||
7299 | // script and fires only keydown, keypress, keyup. Catching keyup usually | ||
7300 | // gets it and catching keydown lets us fire an event for the first | ||
7301 | // keystroke if user does a key repeat (it'll be a little delayed: right | ||
7302 | // before the second keystroke). Other input methods (e.g., paste) seem to | ||
7303 | // fire selectionchange normally. | ||
7304 | if (activeElement && activeElement.value !== activeElementValue) { | ||
7305 | activeElementValue = activeElement.value; | ||
7306 | return activeElementInst; | ||
7307 | } | ||
7308 | } | ||
7309 | } | ||
7310 | |||
7311 | /** | ||
7312 | * SECTION: handle `click` event | ||
7313 | */ | ||
7314 | function shouldUseClickEvent(elem) { | ||
7315 | // Use the `click` event to detect changes to checkbox and radio inputs. | ||
7316 | // This approach works across all browsers, whereas `change` does not fire | ||
7317 | // until `blur` in IE8. | ||
7318 | return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio'); | ||
7319 | } | ||
7320 | |||
7321 | function getTargetInstForClickEvent(topLevelType, targetInst) { | ||
7322 | if (topLevelType === 'topClick') { | ||
7323 | return targetInst; | ||
7324 | } | ||
7325 | } | ||
7326 | |||
7327 | function handleControlledInputBlur(inst, node) { | ||
7328 | // TODO: In IE, inst is occasionally null. Why? | ||
7329 | if (inst == null) { | ||
7330 | return; | ||
7331 | } | ||
7332 | |||
7333 | // Fiber and ReactDOM keep wrapper state in separate places | ||
7334 | var state = inst._wrapperState || node._wrapperState; | ||
7335 | |||
7336 | if (!state || !state.controlled || node.type !== 'number') { | ||
7337 | return; | ||
7338 | } | ||
7339 | |||
7340 | // If controlled, assign the value attribute to the current value on blur | ||
7341 | var value = '' + node.value; | ||
7342 | if (node.getAttribute('value') !== value) { | ||
7343 | node.setAttribute('value', value); | ||
7344 | } | ||
7345 | } | ||
7346 | |||
7347 | /** | ||
7348 | * This plugin creates an `onChange` event that normalizes change events | ||
7349 | * across form elements. This event fires at a time when it's possible to | ||
7350 | * change the element's value without seeing a flicker. | ||
7351 | * | ||
7352 | * Supported elements are: | ||
7353 | * - input (see `isTextInputElement`) | ||
7354 | * - textarea | ||
7355 | * - select | ||
7356 | */ | ||
7357 | var ChangeEventPlugin = { | ||
7358 | |||
7359 | eventTypes: eventTypes, | ||
7360 | |||
7361 | extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { | ||
7362 | var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window; | ||
7363 | |||
7364 | var getTargetInstFunc, handleEventFunc; | ||
7365 | if (shouldUseChangeEvent(targetNode)) { | ||
7366 | if (doesChangeEventBubble) { | ||
7367 | getTargetInstFunc = getTargetInstForChangeEvent; | ||
7368 | } else { | ||
7369 | handleEventFunc = handleEventsForChangeEventIE8; | ||
7370 | } | ||
7371 | } else if (isTextInputElement(targetNode)) { | ||
7372 | if (isInputEventSupported) { | ||
7373 | getTargetInstFunc = getTargetInstForInputEvent; | ||
7374 | } else { | ||
7375 | getTargetInstFunc = getTargetInstForInputEventIE; | ||
7376 | handleEventFunc = handleEventsForInputEventIE; | ||
7377 | } | ||
7378 | } else if (shouldUseClickEvent(targetNode)) { | ||
7379 | getTargetInstFunc = getTargetInstForClickEvent; | ||
7380 | } | ||
7381 | |||
7382 | if (getTargetInstFunc) { | ||
7383 | var inst = getTargetInstFunc(topLevelType, targetInst); | ||
7384 | if (inst) { | ||
7385 | var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget); | ||
7386 | event.type = 'change'; | ||
7387 | EventPropagators.accumulateTwoPhaseDispatches(event); | ||
7388 | return event; | ||
7389 | } | ||
7390 | } | ||
7391 | |||
7392 | if (handleEventFunc) { | ||
7393 | handleEventFunc(topLevelType, targetNode, targetInst); | ||
7394 | } | ||
7395 | |||
7396 | // When blurring, set the value attribute for number inputs | ||
7397 | if (topLevelType === 'topBlur') { | ||
7398 | handleControlledInputBlur(targetInst, targetNode); | ||
7399 | } | ||
7400 | } | ||
7401 | |||
7402 | }; | ||
7403 | |||
7404 | module.exports = ChangeEventPlugin; | ||
7405 | |||
7406 | /***/ }), | ||
7407 | /* 62 */ | ||
7408 | /***/ (function(module, exports, __webpack_require__) { | ||
7409 | |||
7410 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
7411 | * Copyright 2013-present, Facebook, Inc. | ||
7412 | * All rights reserved. | ||
7413 | * | ||
7414 | * This source code is licensed under the BSD-style license found in the | ||
7415 | * LICENSE file in the root directory of this source tree. An additional grant | ||
7416 | * of patent rights can be found in the PATENTS file in the same directory. | ||
7417 | * | ||
7418 | */ | ||
7419 | |||
7420 | 'use strict'; | ||
7421 | |||
7422 | var _prodInvariant = __webpack_require__(41), | ||
7423 | _assign = __webpack_require__(6); | ||
7424 | |||
7425 | var CallbackQueue = __webpack_require__(63); | ||
7426 | var PooledClass = __webpack_require__(56); | ||
7427 | var ReactFeatureFlags = __webpack_require__(64); | ||
7428 | var ReactReconciler = __webpack_require__(65); | ||
7429 | var Transaction = __webpack_require__(74); | ||
7430 | |||
7431 | var invariant = __webpack_require__(10); | ||
7432 | |||
7433 | var dirtyComponents = []; | ||
7434 | var updateBatchNumber = 0; | ||
7435 | var asapCallbackQueue = CallbackQueue.getPooled(); | ||
7436 | var asapEnqueued = false; | ||
7437 | |||
7438 | var batchingStrategy = null; | ||
7439 | |||
7440 | function ensureInjected() { | ||
7441 | !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0; | ||
7442 | } | ||
7443 | |||
7444 | var NESTED_UPDATES = { | ||
7445 | initialize: function () { | ||
7446 | this.dirtyComponentsLength = dirtyComponents.length; | ||
7447 | }, | ||
7448 | close: function () { | ||
7449 | if (this.dirtyComponentsLength !== dirtyComponents.length) { | ||
7450 | // Additional updates were enqueued by componentDidUpdate handlers or | ||
7451 | // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run | ||
7452 | // these new updates so that if A's componentDidUpdate calls setState on | ||
7453 | // B, B will update before the callback A's updater provided when calling | ||
7454 | // setState. | ||
7455 | dirtyComponents.splice(0, this.dirtyComponentsLength); | ||
7456 | flushBatchedUpdates(); | ||
7457 | } else { | ||
7458 | dirtyComponents.length = 0; | ||
7459 | } | ||
7460 | } | ||
7461 | }; | ||
7462 | |||
7463 | var UPDATE_QUEUEING = { | ||
7464 | initialize: function () { | ||
7465 | this.callbackQueue.reset(); | ||
7466 | }, | ||
7467 | close: function () { | ||
7468 | this.callbackQueue.notifyAll(); | ||
7469 | } | ||
7470 | }; | ||
7471 | |||
7472 | var TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING]; | ||
7473 | |||
7474 | function ReactUpdatesFlushTransaction() { | ||
7475 | this.reinitializeTransaction(); | ||
7476 | this.dirtyComponentsLength = null; | ||
7477 | this.callbackQueue = CallbackQueue.getPooled(); | ||
7478 | this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled( | ||
7479 | /* useCreateElement */true); | ||
7480 | } | ||
7481 | |||
7482 | _assign(ReactUpdatesFlushTransaction.prototype, Transaction, { | ||
7483 | getTransactionWrappers: function () { | ||
7484 | return TRANSACTION_WRAPPERS; | ||
7485 | }, | ||
7486 | |||
7487 | destructor: function () { | ||
7488 | this.dirtyComponentsLength = null; | ||
7489 | CallbackQueue.release(this.callbackQueue); | ||
7490 | this.callbackQueue = null; | ||
7491 | ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction); | ||
7492 | this.reconcileTransaction = null; | ||
7493 | }, | ||
7494 | |||
7495 | perform: function (method, scope, a) { | ||
7496 | // Essentially calls `this.reconcileTransaction.perform(method, scope, a)` | ||
7497 | // with this transaction's wrappers around it. | ||
7498 | return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a); | ||
7499 | } | ||
7500 | }); | ||
7501 | |||
7502 | PooledClass.addPoolingTo(ReactUpdatesFlushTransaction); | ||
7503 | |||
7504 | function batchedUpdates(callback, a, b, c, d, e) { | ||
7505 | ensureInjected(); | ||
7506 | return batchingStrategy.batchedUpdates(callback, a, b, c, d, e); | ||
7507 | } | ||
7508 | |||
7509 | /** | ||
7510 | * Array comparator for ReactComponents by mount ordering. | ||
7511 | * | ||
7512 | * @param {ReactComponent} c1 first component you're comparing | ||
7513 | * @param {ReactComponent} c2 second component you're comparing | ||
7514 | * @return {number} Return value usable by Array.prototype.sort(). | ||
7515 | */ | ||
7516 | function mountOrderComparator(c1, c2) { | ||
7517 | return c1._mountOrder - c2._mountOrder; | ||
7518 | } | ||
7519 | |||
7520 | function runBatchedUpdates(transaction) { | ||
7521 | var len = transaction.dirtyComponentsLength; | ||
7522 | !(len === dirtyComponents.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected flush transaction\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0; | ||
7523 | |||
7524 | // Since reconciling a component higher in the owner hierarchy usually (not | ||
7525 | // always -- see shouldComponentUpdate()) will reconcile children, reconcile | ||
7526 | // them before their children by sorting the array. | ||
7527 | dirtyComponents.sort(mountOrderComparator); | ||
7528 | |||
7529 | // Any updates enqueued while reconciling must be performed after this entire | ||
7530 | // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and | ||
7531 | // C, B could update twice in a single batch if C's render enqueues an update | ||
7532 | // to B (since B would have already updated, we should skip it, and the only | ||
7533 | // way we can know to do so is by checking the batch counter). | ||
7534 | updateBatchNumber++; | ||
7535 | |||
7536 | for (var i = 0; i < len; i++) { | ||
7537 | // If a component is unmounted before pending changes apply, it will still | ||
7538 | // be here, but we assume that it has cleared its _pendingCallbacks and | ||
7539 | // that performUpdateIfNecessary is a noop. | ||
7540 | var component = dirtyComponents[i]; | ||
7541 | |||
7542 | // If performUpdateIfNecessary happens to enqueue any new updates, we | ||
7543 | // shouldn't execute the callbacks until the next render happens, so | ||
7544 | // stash the callbacks first | ||
7545 | var callbacks = component._pendingCallbacks; | ||
7546 | component._pendingCallbacks = null; | ||
7547 | |||
7548 | var markerName; | ||
7549 | if (ReactFeatureFlags.logTopLevelRenders) { | ||
7550 | var namedComponent = component; | ||
7551 | // Duck type TopLevelWrapper. This is probably always true. | ||
7552 | if (component._currentElement.type.isReactTopLevelWrapper) { | ||
7553 | namedComponent = component._renderedComponent; | ||
7554 | } | ||
7555 | markerName = 'React update: ' + namedComponent.getName(); | ||
7556 | console.time(markerName); | ||
7557 | } | ||
7558 | |||
7559 | ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber); | ||
7560 | |||
7561 | if (markerName) { | ||
7562 | console.timeEnd(markerName); | ||
7563 | } | ||
7564 | |||
7565 | if (callbacks) { | ||
7566 | for (var j = 0; j < callbacks.length; j++) { | ||
7567 | transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance()); | ||
7568 | } | ||
7569 | } | ||
7570 | } | ||
7571 | } | ||
7572 | |||
7573 | var flushBatchedUpdates = function () { | ||
7574 | // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents | ||
7575 | // array and perform any updates enqueued by mount-ready handlers (i.e., | ||
7576 | // componentDidUpdate) but we need to check here too in order to catch | ||
7577 | // updates enqueued by setState callbacks and asap calls. | ||
7578 | while (dirtyComponents.length || asapEnqueued) { | ||
7579 | if (dirtyComponents.length) { | ||
7580 | var transaction = ReactUpdatesFlushTransaction.getPooled(); | ||
7581 | transaction.perform(runBatchedUpdates, null, transaction); | ||
7582 | ReactUpdatesFlushTransaction.release(transaction); | ||
7583 | } | ||
7584 | |||
7585 | if (asapEnqueued) { | ||
7586 | asapEnqueued = false; | ||
7587 | var queue = asapCallbackQueue; | ||
7588 | asapCallbackQueue = CallbackQueue.getPooled(); | ||
7589 | queue.notifyAll(); | ||
7590 | CallbackQueue.release(queue); | ||
7591 | } | ||
7592 | } | ||
7593 | }; | ||
7594 | |||
7595 | /** | ||
7596 | * Mark a component as needing a rerender, adding an optional callback to a | ||
7597 | * list of functions which will be executed once the rerender occurs. | ||
7598 | */ | ||
7599 | function enqueueUpdate(component) { | ||
7600 | ensureInjected(); | ||
7601 | |||
7602 | // Various parts of our code (such as ReactCompositeComponent's | ||
7603 | // _renderValidatedComponent) assume that calls to render aren't nested; | ||
7604 | // verify that that's the case. (This is called by each top-level update | ||
7605 | // function, like setState, forceUpdate, etc.; creation and | ||
7606 | // destruction of top-level components is guarded in ReactMount.) | ||
7607 | |||
7608 | if (!batchingStrategy.isBatchingUpdates) { | ||
7609 | batchingStrategy.batchedUpdates(enqueueUpdate, component); | ||
7610 | return; | ||
7611 | } | ||
7612 | |||
7613 | dirtyComponents.push(component); | ||
7614 | if (component._updateBatchNumber == null) { | ||
7615 | component._updateBatchNumber = updateBatchNumber + 1; | ||
7616 | } | ||
7617 | } | ||
7618 | |||
7619 | /** | ||
7620 | * Enqueue a callback to be run at the end of the current batching cycle. Throws | ||
7621 | * if no updates are currently being performed. | ||
7622 | */ | ||
7623 | function asap(callback, context) { | ||
7624 | !batchingStrategy.isBatchingUpdates ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates.asap: Can\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0; | ||
7625 | asapCallbackQueue.enqueue(callback, context); | ||
7626 | asapEnqueued = true; | ||
7627 | } | ||
7628 | |||
7629 | var ReactUpdatesInjection = { | ||
7630 | injectReconcileTransaction: function (ReconcileTransaction) { | ||
7631 | !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0; | ||
7632 | ReactUpdates.ReactReconcileTransaction = ReconcileTransaction; | ||
7633 | }, | ||
7634 | |||
7635 | injectBatchingStrategy: function (_batchingStrategy) { | ||
7636 | !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0; | ||
7637 | !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0; | ||
7638 | !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0; | ||
7639 | batchingStrategy = _batchingStrategy; | ||
7640 | } | ||
7641 | }; | ||
7642 | |||
7643 | var ReactUpdates = { | ||
7644 | /** | ||
7645 | * React references `ReactReconcileTransaction` using this property in order | ||
7646 | * to allow dependency injection. | ||
7647 | * | ||
7648 | * @internal | ||
7649 | */ | ||
7650 | ReactReconcileTransaction: null, | ||
7651 | |||
7652 | batchedUpdates: batchedUpdates, | ||
7653 | enqueueUpdate: enqueueUpdate, | ||
7654 | flushBatchedUpdates: flushBatchedUpdates, | ||
7655 | injection: ReactUpdatesInjection, | ||
7656 | asap: asap | ||
7657 | }; | ||
7658 | |||
7659 | module.exports = ReactUpdates; | ||
7660 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
7661 | |||
7662 | /***/ }), | ||
7663 | /* 63 */ | ||
7664 | /***/ (function(module, exports, __webpack_require__) { | ||
7665 | |||
7666 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
7667 | * Copyright 2013-present, Facebook, Inc. | ||
7668 | * All rights reserved. | ||
7669 | * | ||
7670 | * This source code is licensed under the BSD-style license found in the | ||
7671 | * LICENSE file in the root directory of this source tree. An additional grant | ||
7672 | * of patent rights can be found in the PATENTS file in the same directory. | ||
7673 | * | ||
7674 | * | ||
7675 | */ | ||
7676 | |||
7677 | 'use strict'; | ||
7678 | |||
7679 | var _prodInvariant = __webpack_require__(41); | ||
7680 | |||
7681 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
7682 | |||
7683 | var PooledClass = __webpack_require__(56); | ||
7684 | |||
7685 | var invariant = __webpack_require__(10); | ||
7686 | |||
7687 | /** | ||
7688 | * A specialized pseudo-event module to help keep track of components waiting to | ||
7689 | * be notified when their DOM representations are available for use. | ||
7690 | * | ||
7691 | * This implements `PooledClass`, so you should never need to instantiate this. | ||
7692 | * Instead, use `CallbackQueue.getPooled()`. | ||
7693 | * | ||
7694 | * @class ReactMountReady | ||
7695 | * @implements PooledClass | ||
7696 | * @internal | ||
7697 | */ | ||
7698 | |||
7699 | var CallbackQueue = function () { | ||
7700 | function CallbackQueue(arg) { | ||
7701 | _classCallCheck(this, CallbackQueue); | ||
7702 | |||
7703 | this._callbacks = null; | ||
7704 | this._contexts = null; | ||
7705 | this._arg = arg; | ||
7706 | } | ||
7707 | |||
7708 | /** | ||
7709 | * Enqueues a callback to be invoked when `notifyAll` is invoked. | ||
7710 | * | ||
7711 | * @param {function} callback Invoked when `notifyAll` is invoked. | ||
7712 | * @param {?object} context Context to call `callback` with. | ||
7713 | * @internal | ||
7714 | */ | ||
7715 | |||
7716 | |||
7717 | CallbackQueue.prototype.enqueue = function enqueue(callback, context) { | ||
7718 | this._callbacks = this._callbacks || []; | ||
7719 | this._callbacks.push(callback); | ||
7720 | this._contexts = this._contexts || []; | ||
7721 | this._contexts.push(context); | ||
7722 | }; | ||
7723 | |||
7724 | /** | ||
7725 | * Invokes all enqueued callbacks and clears the queue. This is invoked after | ||
7726 | * the DOM representation of a component has been created or updated. | ||
7727 | * | ||
7728 | * @internal | ||
7729 | */ | ||
7730 | |||
7731 | |||
7732 | CallbackQueue.prototype.notifyAll = function notifyAll() { | ||
7733 | var callbacks = this._callbacks; | ||
7734 | var contexts = this._contexts; | ||
7735 | var arg = this._arg; | ||
7736 | if (callbacks && contexts) { | ||
7737 | !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0; | ||
7738 | this._callbacks = null; | ||
7739 | this._contexts = null; | ||
7740 | for (var i = 0; i < callbacks.length; i++) { | ||
7741 | callbacks[i].call(contexts[i], arg); | ||
7742 | } | ||
7743 | callbacks.length = 0; | ||
7744 | contexts.length = 0; | ||
7745 | } | ||
7746 | }; | ||
7747 | |||
7748 | CallbackQueue.prototype.checkpoint = function checkpoint() { | ||
7749 | return this._callbacks ? this._callbacks.length : 0; | ||
7750 | }; | ||
7751 | |||
7752 | CallbackQueue.prototype.rollback = function rollback(len) { | ||
7753 | if (this._callbacks && this._contexts) { | ||
7754 | this._callbacks.length = len; | ||
7755 | this._contexts.length = len; | ||
7756 | } | ||
7757 | }; | ||
7758 | |||
7759 | /** | ||
7760 | * Resets the internal queue. | ||
7761 | * | ||
7762 | * @internal | ||
7763 | */ | ||
7764 | |||
7765 | |||
7766 | CallbackQueue.prototype.reset = function reset() { | ||
7767 | this._callbacks = null; | ||
7768 | this._contexts = null; | ||
7769 | }; | ||
7770 | |||
7771 | /** | ||
7772 | * `PooledClass` looks for this. | ||
7773 | */ | ||
7774 | |||
7775 | |||
7776 | CallbackQueue.prototype.destructor = function destructor() { | ||
7777 | this.reset(); | ||
7778 | }; | ||
7779 | |||
7780 | return CallbackQueue; | ||
7781 | }(); | ||
7782 | |||
7783 | module.exports = PooledClass.addPoolingTo(CallbackQueue); | ||
7784 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
7785 | |||
7786 | /***/ }), | ||
7787 | /* 64 */ | ||
7788 | /***/ (function(module, exports) { | ||
7789 | |||
7790 | /** | ||
7791 | * Copyright 2013-present, Facebook, Inc. | ||
7792 | * All rights reserved. | ||
7793 | * | ||
7794 | * This source code is licensed under the BSD-style license found in the | ||
7795 | * LICENSE file in the root directory of this source tree. An additional grant | ||
7796 | * of patent rights can be found in the PATENTS file in the same directory. | ||
7797 | * | ||
7798 | * | ||
7799 | */ | ||
7800 | |||
7801 | 'use strict'; | ||
7802 | |||
7803 | var ReactFeatureFlags = { | ||
7804 | // When true, call console.time() before and .timeEnd() after each top-level | ||
7805 | // render (both initial renders and updates). Useful when looking at prod-mode | ||
7806 | // timeline profiles in Chrome, for example. | ||
7807 | logTopLevelRenders: false | ||
7808 | }; | ||
7809 | |||
7810 | module.exports = ReactFeatureFlags; | ||
7811 | |||
7812 | /***/ }), | ||
7813 | /* 65 */ | ||
7814 | /***/ (function(module, exports, __webpack_require__) { | ||
7815 | |||
7816 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
7817 | * Copyright 2013-present, Facebook, Inc. | ||
7818 | * All rights reserved. | ||
7819 | * | ||
7820 | * This source code is licensed under the BSD-style license found in the | ||
7821 | * LICENSE file in the root directory of this source tree. An additional grant | ||
7822 | * of patent rights can be found in the PATENTS file in the same directory. | ||
7823 | * | ||
7824 | */ | ||
7825 | |||
7826 | 'use strict'; | ||
7827 | |||
7828 | var ReactRef = __webpack_require__(66); | ||
7829 | var ReactInstrumentation = __webpack_require__(68); | ||
7830 | |||
7831 | var warning = __webpack_require__(13); | ||
7832 | |||
7833 | /** | ||
7834 | * Helper to call ReactRef.attachRefs with this composite component, split out | ||
7835 | * to avoid allocations in the transaction mount-ready queue. | ||
7836 | */ | ||
7837 | function attachRefs() { | ||
7838 | ReactRef.attachRefs(this, this._currentElement); | ||
7839 | } | ||
7840 | |||
7841 | var ReactReconciler = { | ||
7842 | |||
7843 | /** | ||
7844 | * Initializes the component, renders markup, and registers event listeners. | ||
7845 | * | ||
7846 | * @param {ReactComponent} internalInstance | ||
7847 | * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction | ||
7848 | * @param {?object} the containing host component instance | ||
7849 | * @param {?object} info about the host container | ||
7850 | * @return {?string} Rendered markup to be inserted into the DOM. | ||
7851 | * @final | ||
7852 | * @internal | ||
7853 | */ | ||
7854 | mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots | ||
7855 | ) { | ||
7856 | if (process.env.NODE_ENV !== 'production') { | ||
7857 | if (internalInstance._debugID !== 0) { | ||
7858 | ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID); | ||
7859 | } | ||
7860 | } | ||
7861 | var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID); | ||
7862 | if (internalInstance._currentElement && internalInstance._currentElement.ref != null) { | ||
7863 | transaction.getReactMountReady().enqueue(attachRefs, internalInstance); | ||
7864 | } | ||
7865 | if (process.env.NODE_ENV !== 'production') { | ||
7866 | if (internalInstance._debugID !== 0) { | ||
7867 | ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID); | ||
7868 | } | ||
7869 | } | ||
7870 | return markup; | ||
7871 | }, | ||
7872 | |||
7873 | /** | ||
7874 | * Returns a value that can be passed to | ||
7875 | * ReactComponentEnvironment.replaceNodeWithMarkup. | ||
7876 | */ | ||
7877 | getHostNode: function (internalInstance) { | ||
7878 | return internalInstance.getHostNode(); | ||
7879 | }, | ||
7880 | |||
7881 | /** | ||
7882 | * Releases any resources allocated by `mountComponent`. | ||
7883 | * | ||
7884 | * @final | ||
7885 | * @internal | ||
7886 | */ | ||
7887 | unmountComponent: function (internalInstance, safely) { | ||
7888 | if (process.env.NODE_ENV !== 'production') { | ||
7889 | if (internalInstance._debugID !== 0) { | ||
7890 | ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID); | ||
7891 | } | ||
7892 | } | ||
7893 | ReactRef.detachRefs(internalInstance, internalInstance._currentElement); | ||
7894 | internalInstance.unmountComponent(safely); | ||
7895 | if (process.env.NODE_ENV !== 'production') { | ||
7896 | if (internalInstance._debugID !== 0) { | ||
7897 | ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID); | ||
7898 | } | ||
7899 | } | ||
7900 | }, | ||
7901 | |||
7902 | /** | ||
7903 | * Update a component using a new element. | ||
7904 | * | ||
7905 | * @param {ReactComponent} internalInstance | ||
7906 | * @param {ReactElement} nextElement | ||
7907 | * @param {ReactReconcileTransaction} transaction | ||
7908 | * @param {object} context | ||
7909 | * @internal | ||
7910 | */ | ||
7911 | receiveComponent: function (internalInstance, nextElement, transaction, context) { | ||
7912 | var prevElement = internalInstance._currentElement; | ||
7913 | |||
7914 | if (nextElement === prevElement && context === internalInstance._context) { | ||
7915 | // Since elements are immutable after the owner is rendered, | ||
7916 | // we can do a cheap identity compare here to determine if this is a | ||
7917 | // superfluous reconcile. It's possible for state to be mutable but such | ||
7918 | // change should trigger an update of the owner which would recreate | ||
7919 | // the element. We explicitly check for the existence of an owner since | ||
7920 | // it's possible for an element created outside a composite to be | ||
7921 | // deeply mutated and reused. | ||
7922 | |||
7923 | // TODO: Bailing out early is just a perf optimization right? | ||
7924 | // TODO: Removing the return statement should affect correctness? | ||
7925 | return; | ||
7926 | } | ||
7927 | |||
7928 | if (process.env.NODE_ENV !== 'production') { | ||
7929 | if (internalInstance._debugID !== 0) { | ||
7930 | ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement); | ||
7931 | } | ||
7932 | } | ||
7933 | |||
7934 | var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement); | ||
7935 | |||
7936 | if (refsChanged) { | ||
7937 | ReactRef.detachRefs(internalInstance, prevElement); | ||
7938 | } | ||
7939 | |||
7940 | internalInstance.receiveComponent(nextElement, transaction, context); | ||
7941 | |||
7942 | if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) { | ||
7943 | transaction.getReactMountReady().enqueue(attachRefs, internalInstance); | ||
7944 | } | ||
7945 | |||
7946 | if (process.env.NODE_ENV !== 'production') { | ||
7947 | if (internalInstance._debugID !== 0) { | ||
7948 | ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID); | ||
7949 | } | ||
7950 | } | ||
7951 | }, | ||
7952 | |||
7953 | /** | ||
7954 | * Flush any dirty changes in a component. | ||
7955 | * | ||
7956 | * @param {ReactComponent} internalInstance | ||
7957 | * @param {ReactReconcileTransaction} transaction | ||
7958 | * @internal | ||
7959 | */ | ||
7960 | performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) { | ||
7961 | if (internalInstance._updateBatchNumber !== updateBatchNumber) { | ||
7962 | // The component's enqueued batch number should always be the current | ||
7963 | // batch or the following one. | ||
7964 | process.env.NODE_ENV !== 'production' ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0; | ||
7965 | return; | ||
7966 | } | ||
7967 | if (process.env.NODE_ENV !== 'production') { | ||
7968 | if (internalInstance._debugID !== 0) { | ||
7969 | ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement); | ||
7970 | } | ||
7971 | } | ||
7972 | internalInstance.performUpdateIfNecessary(transaction); | ||
7973 | if (process.env.NODE_ENV !== 'production') { | ||
7974 | if (internalInstance._debugID !== 0) { | ||
7975 | ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID); | ||
7976 | } | ||
7977 | } | ||
7978 | } | ||
7979 | |||
7980 | }; | ||
7981 | |||
7982 | module.exports = ReactReconciler; | ||
7983 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
7984 | |||
7985 | /***/ }), | ||
7986 | /* 66 */ | ||
7987 | /***/ (function(module, exports, __webpack_require__) { | ||
7988 | |||
7989 | /** | ||
7990 | * Copyright 2013-present, Facebook, Inc. | ||
7991 | * All rights reserved. | ||
7992 | * | ||
7993 | * This source code is licensed under the BSD-style license found in the | ||
7994 | * LICENSE file in the root directory of this source tree. An additional grant | ||
7995 | * of patent rights can be found in the PATENTS file in the same directory. | ||
7996 | * | ||
7997 | * | ||
7998 | */ | ||
7999 | |||
8000 | 'use strict'; | ||
8001 | |||
8002 | var ReactOwner = __webpack_require__(67); | ||
8003 | |||
8004 | var ReactRef = {}; | ||
8005 | |||
8006 | function attachRef(ref, component, owner) { | ||
8007 | if (typeof ref === 'function') { | ||
8008 | ref(component.getPublicInstance()); | ||
8009 | } else { | ||
8010 | // Legacy ref | ||
8011 | ReactOwner.addComponentAsRefTo(component, ref, owner); | ||
8012 | } | ||
8013 | } | ||
8014 | |||
8015 | function detachRef(ref, component, owner) { | ||
8016 | if (typeof ref === 'function') { | ||
8017 | ref(null); | ||
8018 | } else { | ||
8019 | // Legacy ref | ||
8020 | ReactOwner.removeComponentAsRefFrom(component, ref, owner); | ||
8021 | } | ||
8022 | } | ||
8023 | |||
8024 | ReactRef.attachRefs = function (instance, element) { | ||
8025 | if (element === null || typeof element !== 'object') { | ||
8026 | return; | ||
8027 | } | ||
8028 | var ref = element.ref; | ||
8029 | if (ref != null) { | ||
8030 | attachRef(ref, instance, element._owner); | ||
8031 | } | ||
8032 | }; | ||
8033 | |||
8034 | ReactRef.shouldUpdateRefs = function (prevElement, nextElement) { | ||
8035 | // If either the owner or a `ref` has changed, make sure the newest owner | ||
8036 | // has stored a reference to `this`, and the previous owner (if different) | ||
8037 | // has forgotten the reference to `this`. We use the element instead | ||
8038 | // of the public this.props because the post processing cannot determine | ||
8039 | // a ref. The ref conceptually lives on the element. | ||
8040 | |||
8041 | // TODO: Should this even be possible? The owner cannot change because | ||
8042 | // it's forbidden by shouldUpdateReactComponent. The ref can change | ||
8043 | // if you swap the keys of but not the refs. Reconsider where this check | ||
8044 | // is made. It probably belongs where the key checking and | ||
8045 | // instantiateReactComponent is done. | ||
8046 | |||
8047 | var prevRef = null; | ||
8048 | var prevOwner = null; | ||
8049 | if (prevElement !== null && typeof prevElement === 'object') { | ||
8050 | prevRef = prevElement.ref; | ||
8051 | prevOwner = prevElement._owner; | ||
8052 | } | ||
8053 | |||
8054 | var nextRef = null; | ||
8055 | var nextOwner = null; | ||
8056 | if (nextElement !== null && typeof nextElement === 'object') { | ||
8057 | nextRef = nextElement.ref; | ||
8058 | nextOwner = nextElement._owner; | ||
8059 | } | ||
8060 | |||
8061 | return prevRef !== nextRef || | ||
8062 | // If owner changes but we have an unchanged function ref, don't update refs | ||
8063 | typeof nextRef === 'string' && nextOwner !== prevOwner; | ||
8064 | }; | ||
8065 | |||
8066 | ReactRef.detachRefs = function (instance, element) { | ||
8067 | if (element === null || typeof element !== 'object') { | ||
8068 | return; | ||
8069 | } | ||
8070 | var ref = element.ref; | ||
8071 | if (ref != null) { | ||
8072 | detachRef(ref, instance, element._owner); | ||
8073 | } | ||
8074 | }; | ||
8075 | |||
8076 | module.exports = ReactRef; | ||
8077 | |||
8078 | /***/ }), | ||
8079 | /* 67 */ | ||
8080 | /***/ (function(module, exports, __webpack_require__) { | ||
8081 | |||
8082 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
8083 | * Copyright 2013-present, Facebook, Inc. | ||
8084 | * All rights reserved. | ||
8085 | * | ||
8086 | * This source code is licensed under the BSD-style license found in the | ||
8087 | * LICENSE file in the root directory of this source tree. An additional grant | ||
8088 | * of patent rights can be found in the PATENTS file in the same directory. | ||
8089 | * | ||
8090 | * | ||
8091 | */ | ||
8092 | |||
8093 | 'use strict'; | ||
8094 | |||
8095 | var _prodInvariant = __webpack_require__(41); | ||
8096 | |||
8097 | var invariant = __webpack_require__(10); | ||
8098 | |||
8099 | /** | ||
8100 | * @param {?object} object | ||
8101 | * @return {boolean} True if `object` is a valid owner. | ||
8102 | * @final | ||
8103 | */ | ||
8104 | function isValidOwner(object) { | ||
8105 | return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function'); | ||
8106 | } | ||
8107 | |||
8108 | /** | ||
8109 | * ReactOwners are capable of storing references to owned components. | ||
8110 | * | ||
8111 | * All components are capable of //being// referenced by owner components, but | ||
8112 | * only ReactOwner components are capable of //referencing// owned components. | ||
8113 | * The named reference is known as a "ref". | ||
8114 | * | ||
8115 | * Refs are available when mounted and updated during reconciliation. | ||
8116 | * | ||
8117 | * var MyComponent = React.createClass({ | ||
8118 | * render: function() { | ||
8119 | * return ( | ||
8120 | * <div onClick={this.handleClick}> | ||
8121 | * <CustomComponent ref="custom" /> | ||
8122 | * </div> | ||
8123 | * ); | ||
8124 | * }, | ||
8125 | * handleClick: function() { | ||
8126 | * this.refs.custom.handleClick(); | ||
8127 | * }, | ||
8128 | * componentDidMount: function() { | ||
8129 | * this.refs.custom.initialize(); | ||
8130 | * } | ||
8131 | * }); | ||
8132 | * | ||
8133 | * Refs should rarely be used. When refs are used, they should only be done to | ||
8134 | * control data that is not handled by React's data flow. | ||
8135 | * | ||
8136 | * @class ReactOwner | ||
8137 | */ | ||
8138 | var ReactOwner = { | ||
8139 | /** | ||
8140 | * Adds a component by ref to an owner component. | ||
8141 | * | ||
8142 | * @param {ReactComponent} component Component to reference. | ||
8143 | * @param {string} ref Name by which to refer to the component. | ||
8144 | * @param {ReactOwner} owner Component on which to record the ref. | ||
8145 | * @final | ||
8146 | * @internal | ||
8147 | */ | ||
8148 | addComponentAsRefTo: function (component, ref, owner) { | ||
8149 | !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0; | ||
8150 | owner.attachRef(ref, component); | ||
8151 | }, | ||
8152 | |||
8153 | /** | ||
8154 | * Removes a component by ref from an owner component. | ||
8155 | * | ||
8156 | * @param {ReactComponent} component Component to dereference. | ||
8157 | * @param {string} ref Name of the ref to remove. | ||
8158 | * @param {ReactOwner} owner Component on which the ref is recorded. | ||
8159 | * @final | ||
8160 | * @internal | ||
8161 | */ | ||
8162 | removeComponentAsRefFrom: function (component, ref, owner) { | ||
8163 | !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0; | ||
8164 | var ownerPublicInstance = owner.getPublicInstance(); | ||
8165 | // Check that `component`'s owner is still alive and that `component` is still the current ref | ||
8166 | // because we do not want to detach the ref if another component stole it. | ||
8167 | if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) { | ||
8168 | owner.detachRef(ref); | ||
8169 | } | ||
8170 | } | ||
8171 | |||
8172 | }; | ||
8173 | |||
8174 | module.exports = ReactOwner; | ||
8175 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
8176 | |||
8177 | /***/ }), | ||
8178 | /* 68 */ | ||
8179 | /***/ (function(module, exports, __webpack_require__) { | ||
8180 | |||
8181 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
8182 | * Copyright 2016-present, Facebook, Inc. | ||
8183 | * All rights reserved. | ||
8184 | * | ||
8185 | * This source code is licensed under the BSD-style license found in the | ||
8186 | * LICENSE file in the root directory of this source tree. An additional grant | ||
8187 | * of patent rights can be found in the PATENTS file in the same directory. | ||
8188 | * | ||
8189 | * | ||
8190 | */ | ||
8191 | |||
8192 | 'use strict'; | ||
8193 | |||
8194 | // Trust the developer to only use ReactInstrumentation with a __DEV__ check | ||
8195 | |||
8196 | var debugTool = null; | ||
8197 | |||
8198 | if (process.env.NODE_ENV !== 'production') { | ||
8199 | var ReactDebugTool = __webpack_require__(69); | ||
8200 | debugTool = ReactDebugTool; | ||
8201 | } | ||
8202 | |||
8203 | module.exports = { debugTool: debugTool }; | ||
8204 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
8205 | |||
8206 | /***/ }), | ||
8207 | /* 69 */ | ||
8208 | /***/ (function(module, exports, __webpack_require__) { | ||
8209 | |||
8210 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
8211 | * Copyright 2016-present, Facebook, Inc. | ||
8212 | * All rights reserved. | ||
8213 | * | ||
8214 | * This source code is licensed under the BSD-style license found in the | ||
8215 | * LICENSE file in the root directory of this source tree. An additional grant | ||
8216 | * of patent rights can be found in the PATENTS file in the same directory. | ||
8217 | * | ||
8218 | * | ||
8219 | */ | ||
8220 | |||
8221 | 'use strict'; | ||
8222 | |||
8223 | var ReactInvalidSetStateWarningHook = __webpack_require__(70); | ||
8224 | var ReactHostOperationHistoryHook = __webpack_require__(71); | ||
8225 | var ReactComponentTreeHook = __webpack_require__(28); | ||
8226 | var ExecutionEnvironment = __webpack_require__(54); | ||
8227 | |||
8228 | var performanceNow = __webpack_require__(72); | ||
8229 | var warning = __webpack_require__(13); | ||
8230 | |||
8231 | var hooks = []; | ||
8232 | var didHookThrowForEvent = {}; | ||
8233 | |||
8234 | function callHook(event, fn, context, arg1, arg2, arg3, arg4, arg5) { | ||
8235 | try { | ||
8236 | fn.call(context, arg1, arg2, arg3, arg4, arg5); | ||
8237 | } catch (e) { | ||
8238 | process.env.NODE_ENV !== 'production' ? warning(didHookThrowForEvent[event], 'Exception thrown by hook while handling %s: %s', event, e + '\n' + e.stack) : void 0; | ||
8239 | didHookThrowForEvent[event] = true; | ||
8240 | } | ||
8241 | } | ||
8242 | |||
8243 | function emitEvent(event, arg1, arg2, arg3, arg4, arg5) { | ||
8244 | for (var i = 0; i < hooks.length; i++) { | ||
8245 | var hook = hooks[i]; | ||
8246 | var fn = hook[event]; | ||
8247 | if (fn) { | ||
8248 | callHook(event, fn, hook, arg1, arg2, arg3, arg4, arg5); | ||
8249 | } | ||
8250 | } | ||
8251 | } | ||
8252 | |||
8253 | var isProfiling = false; | ||
8254 | var flushHistory = []; | ||
8255 | var lifeCycleTimerStack = []; | ||
8256 | var currentFlushNesting = 0; | ||
8257 | var currentFlushMeasurements = []; | ||
8258 | var currentFlushStartTime = 0; | ||
8259 | var currentTimerDebugID = null; | ||
8260 | var currentTimerStartTime = 0; | ||
8261 | var currentTimerNestedFlushDuration = 0; | ||
8262 | var currentTimerType = null; | ||
8263 | |||
8264 | var lifeCycleTimerHasWarned = false; | ||
8265 | |||
8266 | function clearHistory() { | ||
8267 | ReactComponentTreeHook.purgeUnmountedComponents(); | ||
8268 | ReactHostOperationHistoryHook.clearHistory(); | ||
8269 | } | ||
8270 | |||
8271 | function getTreeSnapshot(registeredIDs) { | ||
8272 | return registeredIDs.reduce(function (tree, id) { | ||
8273 | var ownerID = ReactComponentTreeHook.getOwnerID(id); | ||
8274 | var parentID = ReactComponentTreeHook.getParentID(id); | ||
8275 | tree[id] = { | ||
8276 | displayName: ReactComponentTreeHook.getDisplayName(id), | ||
8277 | text: ReactComponentTreeHook.getText(id), | ||
8278 | updateCount: ReactComponentTreeHook.getUpdateCount(id), | ||
8279 | childIDs: ReactComponentTreeHook.getChildIDs(id), | ||
8280 | // Text nodes don't have owners but this is close enough. | ||
8281 | ownerID: ownerID || parentID && ReactComponentTreeHook.getOwnerID(parentID) || 0, | ||
8282 | parentID: parentID | ||
8283 | }; | ||
8284 | return tree; | ||
8285 | }, {}); | ||
8286 | } | ||
8287 | |||
8288 | function resetMeasurements() { | ||
8289 | var previousStartTime = currentFlushStartTime; | ||
8290 | var previousMeasurements = currentFlushMeasurements; | ||
8291 | var previousOperations = ReactHostOperationHistoryHook.getHistory(); | ||
8292 | |||
8293 | if (currentFlushNesting === 0) { | ||
8294 | currentFlushStartTime = 0; | ||
8295 | currentFlushMeasurements = []; | ||
8296 | clearHistory(); | ||
8297 | return; | ||
8298 | } | ||
8299 | |||
8300 | if (previousMeasurements.length || previousOperations.length) { | ||
8301 | var registeredIDs = ReactComponentTreeHook.getRegisteredIDs(); | ||
8302 | flushHistory.push({ | ||
8303 | duration: performanceNow() - previousStartTime, | ||
8304 | measurements: previousMeasurements || [], | ||
8305 | operations: previousOperations || [], | ||
8306 | treeSnapshot: getTreeSnapshot(registeredIDs) | ||
8307 | }); | ||
8308 | } | ||
8309 | |||
8310 | clearHistory(); | ||
8311 | currentFlushStartTime = performanceNow(); | ||
8312 | currentFlushMeasurements = []; | ||
8313 | } | ||
8314 | |||
8315 | function checkDebugID(debugID) { | ||
8316 | var allowRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; | ||
8317 | |||
8318 | if (allowRoot && debugID === 0) { | ||
8319 | return; | ||
8320 | } | ||
8321 | if (!debugID) { | ||
8322 | process.env.NODE_ENV !== 'production' ? warning(false, 'ReactDebugTool: debugID may not be empty.') : void 0; | ||
8323 | } | ||
8324 | } | ||
8325 | |||
8326 | function beginLifeCycleTimer(debugID, timerType) { | ||
8327 | if (currentFlushNesting === 0) { | ||
8328 | return; | ||
8329 | } | ||
8330 | if (currentTimerType && !lifeCycleTimerHasWarned) { | ||
8331 | process.env.NODE_ENV !== 'production' ? warning(false, 'There is an internal error in the React performance measurement code. ' + 'Did not expect %s timer to start while %s timer is still in ' + 'progress for %s instance.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0; | ||
8332 | lifeCycleTimerHasWarned = true; | ||
8333 | } | ||
8334 | currentTimerStartTime = performanceNow(); | ||
8335 | currentTimerNestedFlushDuration = 0; | ||
8336 | currentTimerDebugID = debugID; | ||
8337 | currentTimerType = timerType; | ||
8338 | } | ||
8339 | |||
8340 | function endLifeCycleTimer(debugID, timerType) { | ||
8341 | if (currentFlushNesting === 0) { | ||
8342 | return; | ||
8343 | } | ||
8344 | if (currentTimerType !== timerType && !lifeCycleTimerHasWarned) { | ||
8345 | process.env.NODE_ENV !== 'production' ? warning(false, 'There is an internal error in the React performance measurement code. ' + 'We did not expect %s timer to stop while %s timer is still in ' + 'progress for %s instance. Please report this as a bug in React.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0; | ||
8346 | lifeCycleTimerHasWarned = true; | ||
8347 | } | ||
8348 | if (isProfiling) { | ||
8349 | currentFlushMeasurements.push({ | ||
8350 | timerType: timerType, | ||
8351 | instanceID: debugID, | ||
8352 | duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration | ||
8353 | }); | ||
8354 | } | ||
8355 | currentTimerStartTime = 0; | ||
8356 | currentTimerNestedFlushDuration = 0; | ||
8357 | currentTimerDebugID = null; | ||
8358 | currentTimerType = null; | ||
8359 | } | ||
8360 | |||
8361 | function pauseCurrentLifeCycleTimer() { | ||
8362 | var currentTimer = { | ||
8363 | startTime: currentTimerStartTime, | ||
8364 | nestedFlushStartTime: performanceNow(), | ||
8365 | debugID: currentTimerDebugID, | ||
8366 | timerType: currentTimerType | ||
8367 | }; | ||
8368 | lifeCycleTimerStack.push(currentTimer); | ||
8369 | currentTimerStartTime = 0; | ||
8370 | currentTimerNestedFlushDuration = 0; | ||
8371 | currentTimerDebugID = null; | ||
8372 | currentTimerType = null; | ||
8373 | } | ||
8374 | |||
8375 | function resumeCurrentLifeCycleTimer() { | ||
8376 | var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(), | ||
8377 | startTime = _lifeCycleTimerStack$.startTime, | ||
8378 | nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime, | ||
8379 | debugID = _lifeCycleTimerStack$.debugID, | ||
8380 | timerType = _lifeCycleTimerStack$.timerType; | ||
8381 | |||
8382 | var nestedFlushDuration = performanceNow() - nestedFlushStartTime; | ||
8383 | currentTimerStartTime = startTime; | ||
8384 | currentTimerNestedFlushDuration += nestedFlushDuration; | ||
8385 | currentTimerDebugID = debugID; | ||
8386 | currentTimerType = timerType; | ||
8387 | } | ||
8388 | |||
8389 | var lastMarkTimeStamp = 0; | ||
8390 | var canUsePerformanceMeasure = typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function'; | ||
8391 | |||
8392 | function shouldMark(debugID) { | ||
8393 | if (!isProfiling || !canUsePerformanceMeasure) { | ||
8394 | return false; | ||
8395 | } | ||
8396 | var element = ReactComponentTreeHook.getElement(debugID); | ||
8397 | if (element == null || typeof element !== 'object') { | ||
8398 | return false; | ||
8399 | } | ||
8400 | var isHostElement = typeof element.type === 'string'; | ||
8401 | if (isHostElement) { | ||
8402 | return false; | ||
8403 | } | ||
8404 | return true; | ||
8405 | } | ||
8406 | |||
8407 | function markBegin(debugID, markType) { | ||
8408 | if (!shouldMark(debugID)) { | ||
8409 | return; | ||
8410 | } | ||
8411 | |||
8412 | var markName = debugID + '::' + markType; | ||
8413 | lastMarkTimeStamp = performanceNow(); | ||
8414 | performance.mark(markName); | ||
8415 | } | ||
8416 | |||
8417 | function markEnd(debugID, markType) { | ||
8418 | if (!shouldMark(debugID)) { | ||
8419 | return; | ||
8420 | } | ||
8421 | |||
8422 | var markName = debugID + '::' + markType; | ||
8423 | var displayName = ReactComponentTreeHook.getDisplayName(debugID) || 'Unknown'; | ||
8424 | |||
8425 | // Chrome has an issue of dropping markers recorded too fast: | ||
8426 | // https://bugs.chromium.org/p/chromium/issues/detail?id=640652 | ||
8427 | // To work around this, we will not report very small measurements. | ||
8428 | // I determined the magic number by tweaking it back and forth. | ||
8429 | // 0.05ms was enough to prevent the issue, but I set it to 0.1ms to be safe. | ||
8430 | // When the bug is fixed, we can `measure()` unconditionally if we want to. | ||
8431 | var timeStamp = performanceNow(); | ||
8432 | if (timeStamp - lastMarkTimeStamp > 0.1) { | ||
8433 | var measurementName = displayName + ' [' + markType + ']'; | ||
8434 | performance.measure(measurementName, markName); | ||
8435 | } | ||
8436 | |||
8437 | performance.clearMarks(markName); | ||
8438 | performance.clearMeasures(measurementName); | ||
8439 | } | ||
8440 | |||
8441 | var ReactDebugTool = { | ||
8442 | addHook: function (hook) { | ||
8443 | hooks.push(hook); | ||
8444 | }, | ||
8445 | removeHook: function (hook) { | ||
8446 | for (var i = 0; i < hooks.length; i++) { | ||
8447 | if (hooks[i] === hook) { | ||
8448 | hooks.splice(i, 1); | ||
8449 | i--; | ||
8450 | } | ||
8451 | } | ||
8452 | }, | ||
8453 | isProfiling: function () { | ||
8454 | return isProfiling; | ||
8455 | }, | ||
8456 | beginProfiling: function () { | ||
8457 | if (isProfiling) { | ||
8458 | return; | ||
8459 | } | ||
8460 | |||
8461 | isProfiling = true; | ||
8462 | flushHistory.length = 0; | ||
8463 | resetMeasurements(); | ||
8464 | ReactDebugTool.addHook(ReactHostOperationHistoryHook); | ||
8465 | }, | ||
8466 | endProfiling: function () { | ||
8467 | if (!isProfiling) { | ||
8468 | return; | ||
8469 | } | ||
8470 | |||
8471 | isProfiling = false; | ||
8472 | resetMeasurements(); | ||
8473 | ReactDebugTool.removeHook(ReactHostOperationHistoryHook); | ||
8474 | }, | ||
8475 | getFlushHistory: function () { | ||
8476 | return flushHistory; | ||
8477 | }, | ||
8478 | onBeginFlush: function () { | ||
8479 | currentFlushNesting++; | ||
8480 | resetMeasurements(); | ||
8481 | pauseCurrentLifeCycleTimer(); | ||
8482 | emitEvent('onBeginFlush'); | ||
8483 | }, | ||
8484 | onEndFlush: function () { | ||
8485 | resetMeasurements(); | ||
8486 | currentFlushNesting--; | ||
8487 | resumeCurrentLifeCycleTimer(); | ||
8488 | emitEvent('onEndFlush'); | ||
8489 | }, | ||
8490 | onBeginLifeCycleTimer: function (debugID, timerType) { | ||
8491 | checkDebugID(debugID); | ||
8492 | emitEvent('onBeginLifeCycleTimer', debugID, timerType); | ||
8493 | markBegin(debugID, timerType); | ||
8494 | beginLifeCycleTimer(debugID, timerType); | ||
8495 | }, | ||
8496 | onEndLifeCycleTimer: function (debugID, timerType) { | ||
8497 | checkDebugID(debugID); | ||
8498 | endLifeCycleTimer(debugID, timerType); | ||
8499 | markEnd(debugID, timerType); | ||
8500 | emitEvent('onEndLifeCycleTimer', debugID, timerType); | ||
8501 | }, | ||
8502 | onBeginProcessingChildContext: function () { | ||
8503 | emitEvent('onBeginProcessingChildContext'); | ||
8504 | }, | ||
8505 | onEndProcessingChildContext: function () { | ||
8506 | emitEvent('onEndProcessingChildContext'); | ||
8507 | }, | ||
8508 | onHostOperation: function (operation) { | ||
8509 | checkDebugID(operation.instanceID); | ||
8510 | emitEvent('onHostOperation', operation); | ||
8511 | }, | ||
8512 | onSetState: function () { | ||
8513 | emitEvent('onSetState'); | ||
8514 | }, | ||
8515 | onSetChildren: function (debugID, childDebugIDs) { | ||
8516 | checkDebugID(debugID); | ||
8517 | childDebugIDs.forEach(checkDebugID); | ||
8518 | emitEvent('onSetChildren', debugID, childDebugIDs); | ||
8519 | }, | ||
8520 | onBeforeMountComponent: function (debugID, element, parentDebugID) { | ||
8521 | checkDebugID(debugID); | ||
8522 | checkDebugID(parentDebugID, true); | ||
8523 | emitEvent('onBeforeMountComponent', debugID, element, parentDebugID); | ||
8524 | markBegin(debugID, 'mount'); | ||
8525 | }, | ||
8526 | onMountComponent: function (debugID) { | ||
8527 | checkDebugID(debugID); | ||
8528 | markEnd(debugID, 'mount'); | ||
8529 | emitEvent('onMountComponent', debugID); | ||
8530 | }, | ||
8531 | onBeforeUpdateComponent: function (debugID, element) { | ||
8532 | checkDebugID(debugID); | ||
8533 | emitEvent('onBeforeUpdateComponent', debugID, element); | ||
8534 | markBegin(debugID, 'update'); | ||
8535 | }, | ||
8536 | onUpdateComponent: function (debugID) { | ||
8537 | checkDebugID(debugID); | ||
8538 | markEnd(debugID, 'update'); | ||
8539 | emitEvent('onUpdateComponent', debugID); | ||
8540 | }, | ||
8541 | onBeforeUnmountComponent: function (debugID) { | ||
8542 | checkDebugID(debugID); | ||
8543 | emitEvent('onBeforeUnmountComponent', debugID); | ||
8544 | markBegin(debugID, 'unmount'); | ||
8545 | }, | ||
8546 | onUnmountComponent: function (debugID) { | ||
8547 | checkDebugID(debugID); | ||
8548 | markEnd(debugID, 'unmount'); | ||
8549 | emitEvent('onUnmountComponent', debugID); | ||
8550 | }, | ||
8551 | onTestEvent: function () { | ||
8552 | emitEvent('onTestEvent'); | ||
8553 | } | ||
8554 | }; | ||
8555 | |||
8556 | // TODO remove these when RN/www gets updated | ||
8557 | ReactDebugTool.addDevtool = ReactDebugTool.addHook; | ||
8558 | ReactDebugTool.removeDevtool = ReactDebugTool.removeHook; | ||
8559 | |||
8560 | ReactDebugTool.addHook(ReactInvalidSetStateWarningHook); | ||
8561 | ReactDebugTool.addHook(ReactComponentTreeHook); | ||
8562 | var url = ExecutionEnvironment.canUseDOM && window.location.href || ''; | ||
8563 | if (/[?&]react_perf\b/.test(url)) { | ||
8564 | ReactDebugTool.beginProfiling(); | ||
8565 | } | ||
8566 | |||
8567 | module.exports = ReactDebugTool; | ||
8568 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
8569 | |||
8570 | /***/ }), | ||
8571 | /* 70 */ | ||
8572 | /***/ (function(module, exports, __webpack_require__) { | ||
8573 | |||
8574 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
8575 | * Copyright 2016-present, Facebook, Inc. | ||
8576 | * All rights reserved. | ||
8577 | * | ||
8578 | * This source code is licensed under the BSD-style license found in the | ||
8579 | * LICENSE file in the root directory of this source tree. An additional grant | ||
8580 | * of patent rights can be found in the PATENTS file in the same directory. | ||
8581 | * | ||
8582 | * | ||
8583 | */ | ||
8584 | |||
8585 | 'use strict'; | ||
8586 | |||
8587 | var warning = __webpack_require__(13); | ||
8588 | |||
8589 | if (process.env.NODE_ENV !== 'production') { | ||
8590 | var processingChildContext = false; | ||
8591 | |||
8592 | var warnInvalidSetState = function () { | ||
8593 | process.env.NODE_ENV !== 'production' ? warning(!processingChildContext, 'setState(...): Cannot call setState() inside getChildContext()') : void 0; | ||
8594 | }; | ||
8595 | } | ||
8596 | |||
8597 | var ReactInvalidSetStateWarningHook = { | ||
8598 | onBeginProcessingChildContext: function () { | ||
8599 | processingChildContext = true; | ||
8600 | }, | ||
8601 | onEndProcessingChildContext: function () { | ||
8602 | processingChildContext = false; | ||
8603 | }, | ||
8604 | onSetState: function () { | ||
8605 | warnInvalidSetState(); | ||
8606 | } | ||
8607 | }; | ||
8608 | |||
8609 | module.exports = ReactInvalidSetStateWarningHook; | ||
8610 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
8611 | |||
8612 | /***/ }), | ||
8613 | /* 71 */ | ||
8614 | /***/ (function(module, exports) { | ||
8615 | |||
8616 | /** | ||
8617 | * Copyright 2016-present, Facebook, Inc. | ||
8618 | * All rights reserved. | ||
8619 | * | ||
8620 | * This source code is licensed under the BSD-style license found in the | ||
8621 | * LICENSE file in the root directory of this source tree. An additional grant | ||
8622 | * of patent rights can be found in the PATENTS file in the same directory. | ||
8623 | * | ||
8624 | * | ||
8625 | */ | ||
8626 | |||
8627 | 'use strict'; | ||
8628 | |||
8629 | var history = []; | ||
8630 | |||
8631 | var ReactHostOperationHistoryHook = { | ||
8632 | onHostOperation: function (operation) { | ||
8633 | history.push(operation); | ||
8634 | }, | ||
8635 | clearHistory: function () { | ||
8636 | if (ReactHostOperationHistoryHook._preventClearing) { | ||
8637 | // Should only be used for tests. | ||
8638 | return; | ||
8639 | } | ||
8640 | |||
8641 | history = []; | ||
8642 | }, | ||
8643 | getHistory: function () { | ||
8644 | return history; | ||
8645 | } | ||
8646 | }; | ||
8647 | |||
8648 | module.exports = ReactHostOperationHistoryHook; | ||
8649 | |||
8650 | /***/ }), | ||
8651 | /* 72 */ | ||
8652 | /***/ (function(module, exports, __webpack_require__) { | ||
8653 | |||
8654 | 'use strict'; | ||
8655 | |||
8656 | /** | ||
8657 | * Copyright (c) 2013-present, Facebook, Inc. | ||
8658 | * All rights reserved. | ||
8659 | * | ||
8660 | * This source code is licensed under the BSD-style license found in the | ||
8661 | * LICENSE file in the root directory of this source tree. An additional grant | ||
8662 | * of patent rights can be found in the PATENTS file in the same directory. | ||
8663 | * | ||
8664 | * @typechecks | ||
8665 | */ | ||
8666 | |||
8667 | var performance = __webpack_require__(73); | ||
8668 | |||
8669 | var performanceNow; | ||
8670 | |||
8671 | /** | ||
8672 | * Detect if we can use `window.performance.now()` and gracefully fallback to | ||
8673 | * `Date.now()` if it doesn't exist. We need to support Firefox < 15 for now | ||
8674 | * because of Facebook's testing infrastructure. | ||
8675 | */ | ||
8676 | if (performance.now) { | ||
8677 | performanceNow = function performanceNow() { | ||
8678 | return performance.now(); | ||
8679 | }; | ||
8680 | } else { | ||
8681 | performanceNow = function performanceNow() { | ||
8682 | return Date.now(); | ||
8683 | }; | ||
8684 | } | ||
8685 | |||
8686 | module.exports = performanceNow; | ||
8687 | |||
8688 | /***/ }), | ||
8689 | /* 73 */ | ||
8690 | /***/ (function(module, exports, __webpack_require__) { | ||
8691 | |||
8692 | /** | ||
8693 | * Copyright (c) 2013-present, Facebook, Inc. | ||
8694 | * All rights reserved. | ||
8695 | * | ||
8696 | * This source code is licensed under the BSD-style license found in the | ||
8697 | * LICENSE file in the root directory of this source tree. An additional grant | ||
8698 | * of patent rights can be found in the PATENTS file in the same directory. | ||
8699 | * | ||
8700 | * @typechecks | ||
8701 | */ | ||
8702 | |||
8703 | 'use strict'; | ||
8704 | |||
8705 | var ExecutionEnvironment = __webpack_require__(54); | ||
8706 | |||
8707 | var performance; | ||
8708 | |||
8709 | if (ExecutionEnvironment.canUseDOM) { | ||
8710 | performance = window.performance || window.msPerformance || window.webkitPerformance; | ||
8711 | } | ||
8712 | |||
8713 | module.exports = performance || {}; | ||
8714 | |||
8715 | /***/ }), | ||
8716 | /* 74 */ | ||
8717 | /***/ (function(module, exports, __webpack_require__) { | ||
8718 | |||
8719 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
8720 | * Copyright 2013-present, Facebook, Inc. | ||
8721 | * All rights reserved. | ||
8722 | * | ||
8723 | * This source code is licensed under the BSD-style license found in the | ||
8724 | * LICENSE file in the root directory of this source tree. An additional grant | ||
8725 | * of patent rights can be found in the PATENTS file in the same directory. | ||
8726 | * | ||
8727 | * | ||
8728 | */ | ||
8729 | |||
8730 | 'use strict'; | ||
8731 | |||
8732 | var _prodInvariant = __webpack_require__(41); | ||
8733 | |||
8734 | var invariant = __webpack_require__(10); | ||
8735 | |||
8736 | var OBSERVED_ERROR = {}; | ||
8737 | |||
8738 | /** | ||
8739 | * `Transaction` creates a black box that is able to wrap any method such that | ||
8740 | * certain invariants are maintained before and after the method is invoked | ||
8741 | * (Even if an exception is thrown while invoking the wrapped method). Whoever | ||
8742 | * instantiates a transaction can provide enforcers of the invariants at | ||
8743 | * creation time. The `Transaction` class itself will supply one additional | ||
8744 | * automatic invariant for you - the invariant that any transaction instance | ||
8745 | * should not be run while it is already being run. You would typically create a | ||
8746 | * single instance of a `Transaction` for reuse multiple times, that potentially | ||
8747 | * is used to wrap several different methods. Wrappers are extremely simple - | ||
8748 | * they only require implementing two methods. | ||
8749 | * | ||
8750 | * <pre> | ||
8751 | * wrappers (injected at creation time) | ||
8752 | * + + | ||
8753 | * | | | ||
8754 | * +-----------------|--------|--------------+ | ||
8755 | * | v | | | ||
8756 | * | +---------------+ | | | ||
8757 | * | +--| wrapper1 |---|----+ | | ||
8758 | * | | +---------------+ v | | | ||
8759 | * | | +-------------+ | | | ||
8760 | * | | +----| wrapper2 |--------+ | | ||
8761 | * | | | +-------------+ | | | | ||
8762 | * | | | | | | | ||
8763 | * | v v v v | wrapper | ||
8764 | * | +---+ +---+ +---------+ +---+ +---+ | invariants | ||
8765 | * perform(anyMethod) | | | | | | | | | | | | maintained | ||
8766 | * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|--------> | ||
8767 | * | | | | | | | | | | | | | ||
8768 | * | | | | | | | | | | | | | ||
8769 | * | | | | | | | | | | | | | ||
8770 | * | +---+ +---+ +---------+ +---+ +---+ | | ||
8771 | * | initialize close | | ||
8772 | * +-----------------------------------------+ | ||
8773 | * </pre> | ||
8774 | * | ||
8775 | * Use cases: | ||
8776 | * - Preserving the input selection ranges before/after reconciliation. | ||
8777 | * Restoring selection even in the event of an unexpected error. | ||
8778 | * - Deactivating events while rearranging the DOM, preventing blurs/focuses, | ||
8779 | * while guaranteeing that afterwards, the event system is reactivated. | ||
8780 | * - Flushing a queue of collected DOM mutations to the main UI thread after a | ||
8781 | * reconciliation takes place in a worker thread. | ||
8782 | * - Invoking any collected `componentDidUpdate` callbacks after rendering new | ||
8783 | * content. | ||
8784 | * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue | ||
8785 | * to preserve the `scrollTop` (an automatic scroll aware DOM). | ||
8786 | * - (Future use case): Layout calculations before and after DOM updates. | ||
8787 | * | ||
8788 | * Transactional plugin API: | ||
8789 | * - A module that has an `initialize` method that returns any precomputation. | ||
8790 | * - and a `close` method that accepts the precomputation. `close` is invoked | ||
8791 | * when the wrapped process is completed, or has failed. | ||
8792 | * | ||
8793 | * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules | ||
8794 | * that implement `initialize` and `close`. | ||
8795 | * @return {Transaction} Single transaction for reuse in thread. | ||
8796 | * | ||
8797 | * @class Transaction | ||
8798 | */ | ||
8799 | var TransactionImpl = { | ||
8800 | /** | ||
8801 | * Sets up this instance so that it is prepared for collecting metrics. Does | ||
8802 | * so such that this setup method may be used on an instance that is already | ||
8803 | * initialized, in a way that does not consume additional memory upon reuse. | ||
8804 | * That can be useful if you decide to make your subclass of this mixin a | ||
8805 | * "PooledClass". | ||
8806 | */ | ||
8807 | reinitializeTransaction: function () { | ||
8808 | this.transactionWrappers = this.getTransactionWrappers(); | ||
8809 | if (this.wrapperInitData) { | ||
8810 | this.wrapperInitData.length = 0; | ||
8811 | } else { | ||
8812 | this.wrapperInitData = []; | ||
8813 | } | ||
8814 | this._isInTransaction = false; | ||
8815 | }, | ||
8816 | |||
8817 | _isInTransaction: false, | ||
8818 | |||
8819 | /** | ||
8820 | * @abstract | ||
8821 | * @return {Array<TransactionWrapper>} Array of transaction wrappers. | ||
8822 | */ | ||
8823 | getTransactionWrappers: null, | ||
8824 | |||
8825 | isInTransaction: function () { | ||
8826 | return !!this._isInTransaction; | ||
8827 | }, | ||
8828 | |||
8829 | /** | ||
8830 | * Executes the function within a safety window. Use this for the top level | ||
8831 | * methods that result in large amounts of computation/mutations that would | ||
8832 | * need to be safety checked. The optional arguments helps prevent the need | ||
8833 | * to bind in many cases. | ||
8834 | * | ||
8835 | * @param {function} method Member of scope to call. | ||
8836 | * @param {Object} scope Scope to invoke from. | ||
8837 | * @param {Object?=} a Argument to pass to the method. | ||
8838 | * @param {Object?=} b Argument to pass to the method. | ||
8839 | * @param {Object?=} c Argument to pass to the method. | ||
8840 | * @param {Object?=} d Argument to pass to the method. | ||
8841 | * @param {Object?=} e Argument to pass to the method. | ||
8842 | * @param {Object?=} f Argument to pass to the method. | ||
8843 | * | ||
8844 | * @return {*} Return value from `method`. | ||
8845 | */ | ||
8846 | perform: function (method, scope, a, b, c, d, e, f) { | ||
8847 | !!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0; | ||
8848 | var errorThrown; | ||
8849 | var ret; | ||
8850 | try { | ||
8851 | this._isInTransaction = true; | ||
8852 | // Catching errors makes debugging more difficult, so we start with | ||
8853 | // errorThrown set to true before setting it to false after calling | ||
8854 | // close -- if it's still set to true in the finally block, it means | ||
8855 | // one of these calls threw. | ||
8856 | errorThrown = true; | ||
8857 | this.initializeAll(0); | ||
8858 | ret = method.call(scope, a, b, c, d, e, f); | ||
8859 | errorThrown = false; | ||
8860 | } finally { | ||
8861 | try { | ||
8862 | if (errorThrown) { | ||
8863 | // If `method` throws, prefer to show that stack trace over any thrown | ||
8864 | // by invoking `closeAll`. | ||
8865 | try { | ||
8866 | this.closeAll(0); | ||
8867 | } catch (err) {} | ||
8868 | } else { | ||
8869 | // Since `method` didn't throw, we don't want to silence the exception | ||
8870 | // here. | ||
8871 | this.closeAll(0); | ||
8872 | } | ||
8873 | } finally { | ||
8874 | this._isInTransaction = false; | ||
8875 | } | ||
8876 | } | ||
8877 | return ret; | ||
8878 | }, | ||
8879 | |||
8880 | initializeAll: function (startIndex) { | ||
8881 | var transactionWrappers = this.transactionWrappers; | ||
8882 | for (var i = startIndex; i < transactionWrappers.length; i++) { | ||
8883 | var wrapper = transactionWrappers[i]; | ||
8884 | try { | ||
8885 | // Catching errors makes debugging more difficult, so we start with the | ||
8886 | // OBSERVED_ERROR state before overwriting it with the real return value | ||
8887 | // of initialize -- if it's still set to OBSERVED_ERROR in the finally | ||
8888 | // block, it means wrapper.initialize threw. | ||
8889 | this.wrapperInitData[i] = OBSERVED_ERROR; | ||
8890 | this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null; | ||
8891 | } finally { | ||
8892 | if (this.wrapperInitData[i] === OBSERVED_ERROR) { | ||
8893 | // The initializer for wrapper i threw an error; initialize the | ||
8894 | // remaining wrappers but silence any exceptions from them to ensure | ||
8895 | // that the first error is the one to bubble up. | ||
8896 | try { | ||
8897 | this.initializeAll(i + 1); | ||
8898 | } catch (err) {} | ||
8899 | } | ||
8900 | } | ||
8901 | } | ||
8902 | }, | ||
8903 | |||
8904 | /** | ||
8905 | * Invokes each of `this.transactionWrappers.close[i]` functions, passing into | ||
8906 | * them the respective return values of `this.transactionWrappers.init[i]` | ||
8907 | * (`close`rs that correspond to initializers that failed will not be | ||
8908 | * invoked). | ||
8909 | */ | ||
8910 | closeAll: function (startIndex) { | ||
8911 | !this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0; | ||
8912 | var transactionWrappers = this.transactionWrappers; | ||
8913 | for (var i = startIndex; i < transactionWrappers.length; i++) { | ||
8914 | var wrapper = transactionWrappers[i]; | ||
8915 | var initData = this.wrapperInitData[i]; | ||
8916 | var errorThrown; | ||
8917 | try { | ||
8918 | // Catching errors makes debugging more difficult, so we start with | ||
8919 | // errorThrown set to true before setting it to false after calling | ||
8920 | // close -- if it's still set to true in the finally block, it means | ||
8921 | // wrapper.close threw. | ||
8922 | errorThrown = true; | ||
8923 | if (initData !== OBSERVED_ERROR && wrapper.close) { | ||
8924 | wrapper.close.call(this, initData); | ||
8925 | } | ||
8926 | errorThrown = false; | ||
8927 | } finally { | ||
8928 | if (errorThrown) { | ||
8929 | // The closer for wrapper i threw an error; close the remaining | ||
8930 | // wrappers but silence any exceptions from them to ensure that the | ||
8931 | // first error is the one to bubble up. | ||
8932 | try { | ||
8933 | this.closeAll(i + 1); | ||
8934 | } catch (e) {} | ||
8935 | } | ||
8936 | } | ||
8937 | } | ||
8938 | this.wrapperInitData.length = 0; | ||
8939 | } | ||
8940 | }; | ||
8941 | |||
8942 | module.exports = TransactionImpl; | ||
8943 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
8944 | |||
8945 | /***/ }), | ||
8946 | /* 75 */ | ||
8947 | /***/ (function(module, exports) { | ||
8948 | |||
8949 | /** | ||
8950 | * Copyright 2013-present, Facebook, Inc. | ||
8951 | * All rights reserved. | ||
8952 | * | ||
8953 | * This source code is licensed under the BSD-style license found in the | ||
8954 | * LICENSE file in the root directory of this source tree. An additional grant | ||
8955 | * of patent rights can be found in the PATENTS file in the same directory. | ||
8956 | * | ||
8957 | */ | ||
8958 | |||
8959 | 'use strict'; | ||
8960 | |||
8961 | /** | ||
8962 | * Gets the target node from a native browser event by accounting for | ||
8963 | * inconsistencies in browser DOM APIs. | ||
8964 | * | ||
8965 | * @param {object} nativeEvent Native browser event. | ||
8966 | * @return {DOMEventTarget} Target node. | ||
8967 | */ | ||
8968 | |||
8969 | function getEventTarget(nativeEvent) { | ||
8970 | var target = nativeEvent.target || nativeEvent.srcElement || window; | ||
8971 | |||
8972 | // Normalize SVG <use> element events #4963 | ||
8973 | if (target.correspondingUseElement) { | ||
8974 | target = target.correspondingUseElement; | ||
8975 | } | ||
8976 | |||
8977 | // Safari may fire events on text nodes (Node.TEXT_NODE is 3). | ||
8978 | // @see http://www.quirksmode.org/js/events_properties.html | ||
8979 | return target.nodeType === 3 ? target.parentNode : target; | ||
8980 | } | ||
8981 | |||
8982 | module.exports = getEventTarget; | ||
8983 | |||
8984 | /***/ }), | ||
8985 | /* 76 */ | ||
8986 | /***/ (function(module, exports, __webpack_require__) { | ||
8987 | |||
8988 | /** | ||
8989 | * Copyright 2013-present, Facebook, Inc. | ||
8990 | * All rights reserved. | ||
8991 | * | ||
8992 | * This source code is licensed under the BSD-style license found in the | ||
8993 | * LICENSE file in the root directory of this source tree. An additional grant | ||
8994 | * of patent rights can be found in the PATENTS file in the same directory. | ||
8995 | * | ||
8996 | */ | ||
8997 | |||
8998 | 'use strict'; | ||
8999 | |||
9000 | var ExecutionEnvironment = __webpack_require__(54); | ||
9001 | |||
9002 | var useHasFeature; | ||
9003 | if (ExecutionEnvironment.canUseDOM) { | ||
9004 | useHasFeature = document.implementation && document.implementation.hasFeature && | ||
9005 | // always returns true in newer browsers as per the standard. | ||
9006 | // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature | ||
9007 | document.implementation.hasFeature('', '') !== true; | ||
9008 | } | ||
9009 | |||
9010 | /** | ||
9011 | * Checks if an event is supported in the current execution environment. | ||
9012 | * | ||
9013 | * NOTE: This will not work correctly for non-generic events such as `change`, | ||
9014 | * `reset`, `load`, `error`, and `select`. | ||
9015 | * | ||
9016 | * Borrows from Modernizr. | ||
9017 | * | ||
9018 | * @param {string} eventNameSuffix Event name, e.g. "click". | ||
9019 | * @param {?boolean} capture Check if the capture phase is supported. | ||
9020 | * @return {boolean} True if the event is supported. | ||
9021 | * @internal | ||
9022 | * @license Modernizr 3.0.0pre (Custom Build) | MIT | ||
9023 | */ | ||
9024 | function isEventSupported(eventNameSuffix, capture) { | ||
9025 | if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) { | ||
9026 | return false; | ||
9027 | } | ||
9028 | |||
9029 | var eventName = 'on' + eventNameSuffix; | ||
9030 | var isSupported = eventName in document; | ||
9031 | |||
9032 | if (!isSupported) { | ||
9033 | var element = document.createElement('div'); | ||
9034 | element.setAttribute(eventName, 'return;'); | ||
9035 | isSupported = typeof element[eventName] === 'function'; | ||
9036 | } | ||
9037 | |||
9038 | if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') { | ||
9039 | // This is the only way to test support for the `wheel` event in IE9+. | ||
9040 | isSupported = document.implementation.hasFeature('Events.wheel', '3.0'); | ||
9041 | } | ||
9042 | |||
9043 | return isSupported; | ||
9044 | } | ||
9045 | |||
9046 | module.exports = isEventSupported; | ||
9047 | |||
9048 | /***/ }), | ||
9049 | /* 77 */ | ||
9050 | /***/ (function(module, exports) { | ||
9051 | |||
9052 | /** | ||
9053 | * Copyright 2013-present, Facebook, Inc. | ||
9054 | * All rights reserved. | ||
9055 | * | ||
9056 | * This source code is licensed under the BSD-style license found in the | ||
9057 | * LICENSE file in the root directory of this source tree. An additional grant | ||
9058 | * of patent rights can be found in the PATENTS file in the same directory. | ||
9059 | * | ||
9060 | * | ||
9061 | */ | ||
9062 | |||
9063 | 'use strict'; | ||
9064 | |||
9065 | /** | ||
9066 | * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary | ||
9067 | */ | ||
9068 | |||
9069 | var supportedInputTypes = { | ||
9070 | 'color': true, | ||
9071 | 'date': true, | ||
9072 | 'datetime': true, | ||
9073 | 'datetime-local': true, | ||
9074 | 'email': true, | ||
9075 | 'month': true, | ||
9076 | 'number': true, | ||
9077 | 'password': true, | ||
9078 | 'range': true, | ||
9079 | 'search': true, | ||
9080 | 'tel': true, | ||
9081 | 'text': true, | ||
9082 | 'time': true, | ||
9083 | 'url': true, | ||
9084 | 'week': true | ||
9085 | }; | ||
9086 | |||
9087 | function isTextInputElement(elem) { | ||
9088 | var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase(); | ||
9089 | |||
9090 | if (nodeName === 'input') { | ||
9091 | return !!supportedInputTypes[elem.type]; | ||
9092 | } | ||
9093 | |||
9094 | if (nodeName === 'textarea') { | ||
9095 | return true; | ||
9096 | } | ||
9097 | |||
9098 | return false; | ||
9099 | } | ||
9100 | |||
9101 | module.exports = isTextInputElement; | ||
9102 | |||
9103 | /***/ }), | ||
9104 | /* 78 */ | ||
9105 | /***/ (function(module, exports) { | ||
9106 | |||
9107 | /** | ||
9108 | * Copyright 2013-present, Facebook, Inc. | ||
9109 | * All rights reserved. | ||
9110 | * | ||
9111 | * This source code is licensed under the BSD-style license found in the | ||
9112 | * LICENSE file in the root directory of this source tree. An additional grant | ||
9113 | * of patent rights can be found in the PATENTS file in the same directory. | ||
9114 | * | ||
9115 | */ | ||
9116 | |||
9117 | 'use strict'; | ||
9118 | |||
9119 | /** | ||
9120 | * Module that is injectable into `EventPluginHub`, that specifies a | ||
9121 | * deterministic ordering of `EventPlugin`s. A convenient way to reason about | ||
9122 | * plugins, without having to package every one of them. This is better than | ||
9123 | * having plugins be ordered in the same order that they are injected because | ||
9124 | * that ordering would be influenced by the packaging order. | ||
9125 | * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that | ||
9126 | * preventing default on events is convenient in `SimpleEventPlugin` handlers. | ||
9127 | */ | ||
9128 | |||
9129 | var DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin']; | ||
9130 | |||
9131 | module.exports = DefaultEventPluginOrder; | ||
9132 | |||
9133 | /***/ }), | ||
9134 | /* 79 */ | ||
9135 | /***/ (function(module, exports, __webpack_require__) { | ||
9136 | |||
9137 | /** | ||
9138 | * Copyright 2013-present, Facebook, Inc. | ||
9139 | * All rights reserved. | ||
9140 | * | ||
9141 | * This source code is licensed under the BSD-style license found in the | ||
9142 | * LICENSE file in the root directory of this source tree. An additional grant | ||
9143 | * of patent rights can be found in the PATENTS file in the same directory. | ||
9144 | * | ||
9145 | */ | ||
9146 | |||
9147 | 'use strict'; | ||
9148 | |||
9149 | var EventPropagators = __webpack_require__(47); | ||
9150 | var ReactDOMComponentTree = __webpack_require__(40); | ||
9151 | var SyntheticMouseEvent = __webpack_require__(80); | ||
9152 | |||
9153 | var eventTypes = { | ||
9154 | mouseEnter: { | ||
9155 | registrationName: 'onMouseEnter', | ||
9156 | dependencies: ['topMouseOut', 'topMouseOver'] | ||
9157 | }, | ||
9158 | mouseLeave: { | ||
9159 | registrationName: 'onMouseLeave', | ||
9160 | dependencies: ['topMouseOut', 'topMouseOver'] | ||
9161 | } | ||
9162 | }; | ||
9163 | |||
9164 | var EnterLeaveEventPlugin = { | ||
9165 | |||
9166 | eventTypes: eventTypes, | ||
9167 | |||
9168 | /** | ||
9169 | * For almost every interaction we care about, there will be both a top-level | ||
9170 | * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that | ||
9171 | * we do not extract duplicate events. However, moving the mouse into the | ||
9172 | * browser from outside will not fire a `mouseout` event. In this case, we use | ||
9173 | * the `mouseover` top-level event. | ||
9174 | */ | ||
9175 | extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { | ||
9176 | if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) { | ||
9177 | return null; | ||
9178 | } | ||
9179 | if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') { | ||
9180 | // Must not be a mouse in or mouse out - ignoring. | ||
9181 | return null; | ||
9182 | } | ||
9183 | |||
9184 | var win; | ||
9185 | if (nativeEventTarget.window === nativeEventTarget) { | ||
9186 | // `nativeEventTarget` is probably a window object. | ||
9187 | win = nativeEventTarget; | ||
9188 | } else { | ||
9189 | // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8. | ||
9190 | var doc = nativeEventTarget.ownerDocument; | ||
9191 | if (doc) { | ||
9192 | win = doc.defaultView || doc.parentWindow; | ||
9193 | } else { | ||
9194 | win = window; | ||
9195 | } | ||
9196 | } | ||
9197 | |||
9198 | var from; | ||
9199 | var to; | ||
9200 | if (topLevelType === 'topMouseOut') { | ||
9201 | from = targetInst; | ||
9202 | var related = nativeEvent.relatedTarget || nativeEvent.toElement; | ||
9203 | to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null; | ||
9204 | } else { | ||
9205 | // Moving to a node from outside the window. | ||
9206 | from = null; | ||
9207 | to = targetInst; | ||
9208 | } | ||
9209 | |||
9210 | if (from === to) { | ||
9211 | // Nothing pertains to our managed components. | ||
9212 | return null; | ||
9213 | } | ||
9214 | |||
9215 | var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from); | ||
9216 | var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to); | ||
9217 | |||
9218 | var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget); | ||
9219 | leave.type = 'mouseleave'; | ||
9220 | leave.target = fromNode; | ||
9221 | leave.relatedTarget = toNode; | ||
9222 | |||
9223 | var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget); | ||
9224 | enter.type = 'mouseenter'; | ||
9225 | enter.target = toNode; | ||
9226 | enter.relatedTarget = fromNode; | ||
9227 | |||
9228 | EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to); | ||
9229 | |||
9230 | return [leave, enter]; | ||
9231 | } | ||
9232 | |||
9233 | }; | ||
9234 | |||
9235 | module.exports = EnterLeaveEventPlugin; | ||
9236 | |||
9237 | /***/ }), | ||
9238 | /* 80 */ | ||
9239 | /***/ (function(module, exports, __webpack_require__) { | ||
9240 | |||
9241 | /** | ||
9242 | * Copyright 2013-present, Facebook, Inc. | ||
9243 | * All rights reserved. | ||
9244 | * | ||
9245 | * This source code is licensed under the BSD-style license found in the | ||
9246 | * LICENSE file in the root directory of this source tree. An additional grant | ||
9247 | * of patent rights can be found in the PATENTS file in the same directory. | ||
9248 | * | ||
9249 | */ | ||
9250 | |||
9251 | 'use strict'; | ||
9252 | |||
9253 | var SyntheticUIEvent = __webpack_require__(81); | ||
9254 | var ViewportMetrics = __webpack_require__(82); | ||
9255 | |||
9256 | var getEventModifierState = __webpack_require__(83); | ||
9257 | |||
9258 | /** | ||
9259 | * @interface MouseEvent | ||
9260 | * @see http://www.w3.org/TR/DOM-Level-3-Events/ | ||
9261 | */ | ||
9262 | var MouseEventInterface = { | ||
9263 | screenX: null, | ||
9264 | screenY: null, | ||
9265 | clientX: null, | ||
9266 | clientY: null, | ||
9267 | ctrlKey: null, | ||
9268 | shiftKey: null, | ||
9269 | altKey: null, | ||
9270 | metaKey: null, | ||
9271 | getModifierState: getEventModifierState, | ||
9272 | button: function (event) { | ||
9273 | // Webkit, Firefox, IE9+ | ||
9274 | // which: 1 2 3 | ||
9275 | // button: 0 1 2 (standard) | ||
9276 | var button = event.button; | ||
9277 | if ('which' in event) { | ||
9278 | return button; | ||
9279 | } | ||
9280 | // IE<9 | ||
9281 | // which: undefined | ||
9282 | // button: 0 0 0 | ||
9283 | // button: 1 4 2 (onmouseup) | ||
9284 | return button === 2 ? 2 : button === 4 ? 1 : 0; | ||
9285 | }, | ||
9286 | buttons: null, | ||
9287 | relatedTarget: function (event) { | ||
9288 | return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement); | ||
9289 | }, | ||
9290 | // "Proprietary" Interface. | ||
9291 | pageX: function (event) { | ||
9292 | return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft; | ||
9293 | }, | ||
9294 | pageY: function (event) { | ||
9295 | return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop; | ||
9296 | } | ||
9297 | }; | ||
9298 | |||
9299 | /** | ||
9300 | * @param {object} dispatchConfig Configuration used to dispatch this event. | ||
9301 | * @param {string} dispatchMarker Marker identifying the event target. | ||
9302 | * @param {object} nativeEvent Native browser event. | ||
9303 | * @extends {SyntheticUIEvent} | ||
9304 | */ | ||
9305 | function SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { | ||
9306 | return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); | ||
9307 | } | ||
9308 | |||
9309 | SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface); | ||
9310 | |||
9311 | module.exports = SyntheticMouseEvent; | ||
9312 | |||
9313 | /***/ }), | ||
9314 | /* 81 */ | ||
9315 | /***/ (function(module, exports, __webpack_require__) { | ||
9316 | |||
9317 | /** | ||
9318 | * Copyright 2013-present, Facebook, Inc. | ||
9319 | * All rights reserved. | ||
9320 | * | ||
9321 | * This source code is licensed under the BSD-style license found in the | ||
9322 | * LICENSE file in the root directory of this source tree. An additional grant | ||
9323 | * of patent rights can be found in the PATENTS file in the same directory. | ||
9324 | * | ||
9325 | */ | ||
9326 | |||
9327 | 'use strict'; | ||
9328 | |||
9329 | var SyntheticEvent = __webpack_require__(59); | ||
9330 | |||
9331 | var getEventTarget = __webpack_require__(75); | ||
9332 | |||
9333 | /** | ||
9334 | * @interface UIEvent | ||
9335 | * @see http://www.w3.org/TR/DOM-Level-3-Events/ | ||
9336 | */ | ||
9337 | var UIEventInterface = { | ||
9338 | view: function (event) { | ||
9339 | if (event.view) { | ||
9340 | return event.view; | ||
9341 | } | ||
9342 | |||
9343 | var target = getEventTarget(event); | ||
9344 | if (target.window === target) { | ||
9345 | // target is a window object | ||
9346 | return target; | ||
9347 | } | ||
9348 | |||
9349 | var doc = target.ownerDocument; | ||
9350 | // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8. | ||
9351 | if (doc) { | ||
9352 | return doc.defaultView || doc.parentWindow; | ||
9353 | } else { | ||
9354 | return window; | ||
9355 | } | ||
9356 | }, | ||
9357 | detail: function (event) { | ||
9358 | return event.detail || 0; | ||
9359 | } | ||
9360 | }; | ||
9361 | |||
9362 | /** | ||
9363 | * @param {object} dispatchConfig Configuration used to dispatch this event. | ||
9364 | * @param {string} dispatchMarker Marker identifying the event target. | ||
9365 | * @param {object} nativeEvent Native browser event. | ||
9366 | * @extends {SyntheticEvent} | ||
9367 | */ | ||
9368 | function SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { | ||
9369 | return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); | ||
9370 | } | ||
9371 | |||
9372 | SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface); | ||
9373 | |||
9374 | module.exports = SyntheticUIEvent; | ||
9375 | |||
9376 | /***/ }), | ||
9377 | /* 82 */ | ||
9378 | /***/ (function(module, exports) { | ||
9379 | |||
9380 | /** | ||
9381 | * Copyright 2013-present, Facebook, Inc. | ||
9382 | * All rights reserved. | ||
9383 | * | ||
9384 | * This source code is licensed under the BSD-style license found in the | ||
9385 | * LICENSE file in the root directory of this source tree. An additional grant | ||
9386 | * of patent rights can be found in the PATENTS file in the same directory. | ||
9387 | * | ||
9388 | */ | ||
9389 | |||
9390 | 'use strict'; | ||
9391 | |||
9392 | var ViewportMetrics = { | ||
9393 | |||
9394 | currentScrollLeft: 0, | ||
9395 | |||
9396 | currentScrollTop: 0, | ||
9397 | |||
9398 | refreshScrollValues: function (scrollPosition) { | ||
9399 | ViewportMetrics.currentScrollLeft = scrollPosition.x; | ||
9400 | ViewportMetrics.currentScrollTop = scrollPosition.y; | ||
9401 | } | ||
9402 | |||
9403 | }; | ||
9404 | |||
9405 | module.exports = ViewportMetrics; | ||
9406 | |||
9407 | /***/ }), | ||
9408 | /* 83 */ | ||
9409 | /***/ (function(module, exports) { | ||
9410 | |||
9411 | /** | ||
9412 | * Copyright 2013-present, Facebook, Inc. | ||
9413 | * All rights reserved. | ||
9414 | * | ||
9415 | * This source code is licensed under the BSD-style license found in the | ||
9416 | * LICENSE file in the root directory of this source tree. An additional grant | ||
9417 | * of patent rights can be found in the PATENTS file in the same directory. | ||
9418 | * | ||
9419 | */ | ||
9420 | |||
9421 | 'use strict'; | ||
9422 | |||
9423 | /** | ||
9424 | * Translation from modifier key to the associated property in the event. | ||
9425 | * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers | ||
9426 | */ | ||
9427 | |||
9428 | var modifierKeyToProp = { | ||
9429 | 'Alt': 'altKey', | ||
9430 | 'Control': 'ctrlKey', | ||
9431 | 'Meta': 'metaKey', | ||
9432 | 'Shift': 'shiftKey' | ||
9433 | }; | ||
9434 | |||
9435 | // IE8 does not implement getModifierState so we simply map it to the only | ||
9436 | // modifier keys exposed by the event itself, does not support Lock-keys. | ||
9437 | // Currently, all major browsers except Chrome seems to support Lock-keys. | ||
9438 | function modifierStateGetter(keyArg) { | ||
9439 | var syntheticEvent = this; | ||
9440 | var nativeEvent = syntheticEvent.nativeEvent; | ||
9441 | if (nativeEvent.getModifierState) { | ||
9442 | return nativeEvent.getModifierState(keyArg); | ||
9443 | } | ||
9444 | var keyProp = modifierKeyToProp[keyArg]; | ||
9445 | return keyProp ? !!nativeEvent[keyProp] : false; | ||
9446 | } | ||
9447 | |||
9448 | function getEventModifierState(nativeEvent) { | ||
9449 | return modifierStateGetter; | ||
9450 | } | ||
9451 | |||
9452 | module.exports = getEventModifierState; | ||
9453 | |||
9454 | /***/ }), | ||
9455 | /* 84 */ | ||
9456 | /***/ (function(module, exports, __webpack_require__) { | ||
9457 | |||
9458 | /** | ||
9459 | * Copyright 2013-present, Facebook, Inc. | ||
9460 | * All rights reserved. | ||
9461 | * | ||
9462 | * This source code is licensed under the BSD-style license found in the | ||
9463 | * LICENSE file in the root directory of this source tree. An additional grant | ||
9464 | * of patent rights can be found in the PATENTS file in the same directory. | ||
9465 | * | ||
9466 | */ | ||
9467 | |||
9468 | 'use strict'; | ||
9469 | |||
9470 | var DOMProperty = __webpack_require__(42); | ||
9471 | |||
9472 | var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY; | ||
9473 | var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE; | ||
9474 | var HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE; | ||
9475 | var HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE; | ||
9476 | var HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE; | ||
9477 | |||
9478 | var HTMLDOMPropertyConfig = { | ||
9479 | isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')), | ||
9480 | Properties: { | ||
9481 | /** | ||
9482 | * Standard Properties | ||
9483 | */ | ||
9484 | accept: 0, | ||
9485 | acceptCharset: 0, | ||
9486 | accessKey: 0, | ||
9487 | action: 0, | ||
9488 | allowFullScreen: HAS_BOOLEAN_VALUE, | ||
9489 | allowTransparency: 0, | ||
9490 | alt: 0, | ||
9491 | // specifies target context for links with `preload` type | ||
9492 | as: 0, | ||
9493 | async: HAS_BOOLEAN_VALUE, | ||
9494 | autoComplete: 0, | ||
9495 | // autoFocus is polyfilled/normalized by AutoFocusUtils | ||
9496 | // autoFocus: HAS_BOOLEAN_VALUE, | ||
9497 | autoPlay: HAS_BOOLEAN_VALUE, | ||
9498 | capture: HAS_BOOLEAN_VALUE, | ||
9499 | cellPadding: 0, | ||
9500 | cellSpacing: 0, | ||
9501 | charSet: 0, | ||
9502 | challenge: 0, | ||
9503 | checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, | ||
9504 | cite: 0, | ||
9505 | classID: 0, | ||
9506 | className: 0, | ||
9507 | cols: HAS_POSITIVE_NUMERIC_VALUE, | ||
9508 | colSpan: 0, | ||
9509 | content: 0, | ||
9510 | contentEditable: 0, | ||
9511 | contextMenu: 0, | ||
9512 | controls: HAS_BOOLEAN_VALUE, | ||
9513 | coords: 0, | ||
9514 | crossOrigin: 0, | ||
9515 | data: 0, // For `<object />` acts as `src`. | ||
9516 | dateTime: 0, | ||
9517 | 'default': HAS_BOOLEAN_VALUE, | ||
9518 | defer: HAS_BOOLEAN_VALUE, | ||
9519 | dir: 0, | ||
9520 | disabled: HAS_BOOLEAN_VALUE, | ||
9521 | download: HAS_OVERLOADED_BOOLEAN_VALUE, | ||
9522 | draggable: 0, | ||
9523 | encType: 0, | ||
9524 | form: 0, | ||
9525 | formAction: 0, | ||
9526 | formEncType: 0, | ||
9527 | formMethod: 0, | ||
9528 | formNoValidate: HAS_BOOLEAN_VALUE, | ||
9529 | formTarget: 0, | ||
9530 | frameBorder: 0, | ||
9531 | headers: 0, | ||
9532 | height: 0, | ||
9533 | hidden: HAS_BOOLEAN_VALUE, | ||
9534 | high: 0, | ||
9535 | href: 0, | ||
9536 | hrefLang: 0, | ||
9537 | htmlFor: 0, | ||
9538 | httpEquiv: 0, | ||
9539 | icon: 0, | ||
9540 | id: 0, | ||
9541 | inputMode: 0, | ||
9542 | integrity: 0, | ||
9543 | is: 0, | ||
9544 | keyParams: 0, | ||
9545 | keyType: 0, | ||
9546 | kind: 0, | ||
9547 | label: 0, | ||
9548 | lang: 0, | ||
9549 | list: 0, | ||
9550 | loop: HAS_BOOLEAN_VALUE, | ||
9551 | low: 0, | ||
9552 | manifest: 0, | ||
9553 | marginHeight: 0, | ||
9554 | marginWidth: 0, | ||
9555 | max: 0, | ||
9556 | maxLength: 0, | ||
9557 | media: 0, | ||
9558 | mediaGroup: 0, | ||
9559 | method: 0, | ||
9560 | min: 0, | ||
9561 | minLength: 0, | ||
9562 | // Caution; `option.selected` is not updated if `select.multiple` is | ||
9563 | // disabled with `removeAttribute`. | ||
9564 | multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, | ||
9565 | muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, | ||
9566 | name: 0, | ||
9567 | nonce: 0, | ||
9568 | noValidate: HAS_BOOLEAN_VALUE, | ||
9569 | open: HAS_BOOLEAN_VALUE, | ||
9570 | optimum: 0, | ||
9571 | pattern: 0, | ||
9572 | placeholder: 0, | ||
9573 | playsInline: HAS_BOOLEAN_VALUE, | ||
9574 | poster: 0, | ||
9575 | preload: 0, | ||
9576 | profile: 0, | ||
9577 | radioGroup: 0, | ||
9578 | readOnly: HAS_BOOLEAN_VALUE, | ||
9579 | referrerPolicy: 0, | ||
9580 | rel: 0, | ||
9581 | required: HAS_BOOLEAN_VALUE, | ||
9582 | reversed: HAS_BOOLEAN_VALUE, | ||
9583 | role: 0, | ||
9584 | rows: HAS_POSITIVE_NUMERIC_VALUE, | ||
9585 | rowSpan: HAS_NUMERIC_VALUE, | ||
9586 | sandbox: 0, | ||
9587 | scope: 0, | ||
9588 | scoped: HAS_BOOLEAN_VALUE, | ||
9589 | scrolling: 0, | ||
9590 | seamless: HAS_BOOLEAN_VALUE, | ||
9591 | selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, | ||
9592 | shape: 0, | ||
9593 | size: HAS_POSITIVE_NUMERIC_VALUE, | ||
9594 | sizes: 0, | ||
9595 | span: HAS_POSITIVE_NUMERIC_VALUE, | ||
9596 | spellCheck: 0, | ||
9597 | src: 0, | ||
9598 | srcDoc: 0, | ||
9599 | srcLang: 0, | ||
9600 | srcSet: 0, | ||
9601 | start: HAS_NUMERIC_VALUE, | ||
9602 | step: 0, | ||
9603 | style: 0, | ||
9604 | summary: 0, | ||
9605 | tabIndex: 0, | ||
9606 | target: 0, | ||
9607 | title: 0, | ||
9608 | // Setting .type throws on non-<input> tags | ||
9609 | type: 0, | ||
9610 | useMap: 0, | ||
9611 | value: 0, | ||
9612 | width: 0, | ||
9613 | wmode: 0, | ||
9614 | wrap: 0, | ||
9615 | |||
9616 | /** | ||
9617 | * RDFa Properties | ||
9618 | */ | ||
9619 | about: 0, | ||
9620 | datatype: 0, | ||
9621 | inlist: 0, | ||
9622 | prefix: 0, | ||
9623 | // property is also supported for OpenGraph in meta tags. | ||
9624 | property: 0, | ||
9625 | resource: 0, | ||
9626 | 'typeof': 0, | ||
9627 | vocab: 0, | ||
9628 | |||
9629 | /** | ||
9630 | * Non-standard Properties | ||
9631 | */ | ||
9632 | // autoCapitalize and autoCorrect are supported in Mobile Safari for | ||
9633 | // keyboard hints. | ||
9634 | autoCapitalize: 0, | ||
9635 | autoCorrect: 0, | ||
9636 | // autoSave allows WebKit/Blink to persist values of input fields on page reloads | ||
9637 | autoSave: 0, | ||
9638 | // color is for Safari mask-icon link | ||
9639 | color: 0, | ||
9640 | // itemProp, itemScope, itemType are for | ||
9641 | // Microdata support. See http://schema.org/docs/gs.html | ||
9642 | itemProp: 0, | ||
9643 | itemScope: HAS_BOOLEAN_VALUE, | ||
9644 | itemType: 0, | ||
9645 | // itemID and itemRef are for Microdata support as well but | ||
9646 | // only specified in the WHATWG spec document. See | ||
9647 | // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api | ||
9648 | itemID: 0, | ||
9649 | itemRef: 0, | ||
9650 | // results show looking glass icon and recent searches on input | ||
9651 | // search fields in WebKit/Blink | ||
9652 | results: 0, | ||
9653 | // IE-only attribute that specifies security restrictions on an iframe | ||
9654 | // as an alternative to the sandbox attribute on IE<10 | ||
9655 | security: 0, | ||
9656 | // IE-only attribute that controls focus behavior | ||
9657 | unselectable: 0 | ||
9658 | }, | ||
9659 | DOMAttributeNames: { | ||
9660 | acceptCharset: 'accept-charset', | ||
9661 | className: 'class', | ||
9662 | htmlFor: 'for', | ||
9663 | httpEquiv: 'http-equiv' | ||
9664 | }, | ||
9665 | DOMPropertyNames: {}, | ||
9666 | DOMMutationMethods: { | ||
9667 | value: function (node, value) { | ||
9668 | if (value == null) { | ||
9669 | return node.removeAttribute('value'); | ||
9670 | } | ||
9671 | |||
9672 | // Number inputs get special treatment due to some edge cases in | ||
9673 | // Chrome. Let everything else assign the value attribute as normal. | ||
9674 | // https://github.com/facebook/react/issues/7253#issuecomment-236074326 | ||
9675 | if (node.type !== 'number' || node.hasAttribute('value') === false) { | ||
9676 | node.setAttribute('value', '' + value); | ||
9677 | } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) { | ||
9678 | // Don't assign an attribute if validation reports bad | ||
9679 | // input. Chrome will clear the value. Additionally, don't | ||
9680 | // operate on inputs that have focus, otherwise Chrome might | ||
9681 | // strip off trailing decimal places and cause the user's | ||
9682 | // cursor position to jump to the beginning of the input. | ||
9683 | // | ||
9684 | // In ReactDOMInput, we have an onBlur event that will trigger | ||
9685 | // this function again when focus is lost. | ||
9686 | node.setAttribute('value', '' + value); | ||
9687 | } | ||
9688 | } | ||
9689 | } | ||
9690 | }; | ||
9691 | |||
9692 | module.exports = HTMLDOMPropertyConfig; | ||
9693 | |||
9694 | /***/ }), | ||
9695 | /* 85 */ | ||
9696 | /***/ (function(module, exports, __webpack_require__) { | ||
9697 | |||
9698 | /** | ||
9699 | * Copyright 2013-present, Facebook, Inc. | ||
9700 | * All rights reserved. | ||
9701 | * | ||
9702 | * This source code is licensed under the BSD-style license found in the | ||
9703 | * LICENSE file in the root directory of this source tree. An additional grant | ||
9704 | * of patent rights can be found in the PATENTS file in the same directory. | ||
9705 | * | ||
9706 | */ | ||
9707 | |||
9708 | 'use strict'; | ||
9709 | |||
9710 | var DOMChildrenOperations = __webpack_require__(86); | ||
9711 | var ReactDOMIDOperations = __webpack_require__(97); | ||
9712 | |||
9713 | /** | ||
9714 | * Abstracts away all functionality of the reconciler that requires knowledge of | ||
9715 | * the browser context. TODO: These callers should be refactored to avoid the | ||
9716 | * need for this injection. | ||
9717 | */ | ||
9718 | var ReactComponentBrowserEnvironment = { | ||
9719 | |||
9720 | processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates, | ||
9721 | |||
9722 | replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup | ||
9723 | |||
9724 | }; | ||
9725 | |||
9726 | module.exports = ReactComponentBrowserEnvironment; | ||
9727 | |||
9728 | /***/ }), | ||
9729 | /* 86 */ | ||
9730 | /***/ (function(module, exports, __webpack_require__) { | ||
9731 | |||
9732 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
9733 | * Copyright 2013-present, Facebook, Inc. | ||
9734 | * All rights reserved. | ||
9735 | * | ||
9736 | * This source code is licensed under the BSD-style license found in the | ||
9737 | * LICENSE file in the root directory of this source tree. An additional grant | ||
9738 | * of patent rights can be found in the PATENTS file in the same directory. | ||
9739 | * | ||
9740 | */ | ||
9741 | |||
9742 | 'use strict'; | ||
9743 | |||
9744 | var DOMLazyTree = __webpack_require__(87); | ||
9745 | var Danger = __webpack_require__(93); | ||
9746 | var ReactDOMComponentTree = __webpack_require__(40); | ||
9747 | var ReactInstrumentation = __webpack_require__(68); | ||
9748 | |||
9749 | var createMicrosoftUnsafeLocalFunction = __webpack_require__(90); | ||
9750 | var setInnerHTML = __webpack_require__(89); | ||
9751 | var setTextContent = __webpack_require__(91); | ||
9752 | |||
9753 | function getNodeAfter(parentNode, node) { | ||
9754 | // Special case for text components, which return [open, close] comments | ||
9755 | // from getHostNode. | ||
9756 | if (Array.isArray(node)) { | ||
9757 | node = node[1]; | ||
9758 | } | ||
9759 | return node ? node.nextSibling : parentNode.firstChild; | ||
9760 | } | ||
9761 | |||
9762 | /** | ||
9763 | * Inserts `childNode` as a child of `parentNode` at the `index`. | ||
9764 | * | ||
9765 | * @param {DOMElement} parentNode Parent node in which to insert. | ||
9766 | * @param {DOMElement} childNode Child node to insert. | ||
9767 | * @param {number} index Index at which to insert the child. | ||
9768 | * @internal | ||
9769 | */ | ||
9770 | var insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) { | ||
9771 | // We rely exclusively on `insertBefore(node, null)` instead of also using | ||
9772 | // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so | ||
9773 | // we are careful to use `null`.) | ||
9774 | parentNode.insertBefore(childNode, referenceNode); | ||
9775 | }); | ||
9776 | |||
9777 | function insertLazyTreeChildAt(parentNode, childTree, referenceNode) { | ||
9778 | DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode); | ||
9779 | } | ||
9780 | |||
9781 | function moveChild(parentNode, childNode, referenceNode) { | ||
9782 | if (Array.isArray(childNode)) { | ||
9783 | moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode); | ||
9784 | } else { | ||
9785 | insertChildAt(parentNode, childNode, referenceNode); | ||
9786 | } | ||
9787 | } | ||
9788 | |||
9789 | function removeChild(parentNode, childNode) { | ||
9790 | if (Array.isArray(childNode)) { | ||
9791 | var closingComment = childNode[1]; | ||
9792 | childNode = childNode[0]; | ||
9793 | removeDelimitedText(parentNode, childNode, closingComment); | ||
9794 | parentNode.removeChild(closingComment); | ||
9795 | } | ||
9796 | parentNode.removeChild(childNode); | ||
9797 | } | ||
9798 | |||
9799 | function moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) { | ||
9800 | var node = openingComment; | ||
9801 | while (true) { | ||
9802 | var nextNode = node.nextSibling; | ||
9803 | insertChildAt(parentNode, node, referenceNode); | ||
9804 | if (node === closingComment) { | ||
9805 | break; | ||
9806 | } | ||
9807 | node = nextNode; | ||
9808 | } | ||
9809 | } | ||
9810 | |||
9811 | function removeDelimitedText(parentNode, startNode, closingComment) { | ||
9812 | while (true) { | ||
9813 | var node = startNode.nextSibling; | ||
9814 | if (node === closingComment) { | ||
9815 | // The closing comment is removed by ReactMultiChild. | ||
9816 | break; | ||
9817 | } else { | ||
9818 | parentNode.removeChild(node); | ||
9819 | } | ||
9820 | } | ||
9821 | } | ||
9822 | |||
9823 | function replaceDelimitedText(openingComment, closingComment, stringText) { | ||
9824 | var parentNode = openingComment.parentNode; | ||
9825 | var nodeAfterComment = openingComment.nextSibling; | ||
9826 | if (nodeAfterComment === closingComment) { | ||
9827 | // There are no text nodes between the opening and closing comments; insert | ||
9828 | // a new one if stringText isn't empty. | ||
9829 | if (stringText) { | ||
9830 | insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment); | ||
9831 | } | ||
9832 | } else { | ||
9833 | if (stringText) { | ||
9834 | // Set the text content of the first node after the opening comment, and | ||
9835 | // remove all following nodes up until the closing comment. | ||
9836 | setTextContent(nodeAfterComment, stringText); | ||
9837 | removeDelimitedText(parentNode, nodeAfterComment, closingComment); | ||
9838 | } else { | ||
9839 | removeDelimitedText(parentNode, openingComment, closingComment); | ||
9840 | } | ||
9841 | } | ||
9842 | |||
9843 | if (process.env.NODE_ENV !== 'production') { | ||
9844 | ReactInstrumentation.debugTool.onHostOperation({ | ||
9845 | instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID, | ||
9846 | type: 'replace text', | ||
9847 | payload: stringText | ||
9848 | }); | ||
9849 | } | ||
9850 | } | ||
9851 | |||
9852 | var dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup; | ||
9853 | if (process.env.NODE_ENV !== 'production') { | ||
9854 | dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) { | ||
9855 | Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup); | ||
9856 | if (prevInstance._debugID !== 0) { | ||
9857 | ReactInstrumentation.debugTool.onHostOperation({ | ||
9858 | instanceID: prevInstance._debugID, | ||
9859 | type: 'replace with', | ||
9860 | payload: markup.toString() | ||
9861 | }); | ||
9862 | } else { | ||
9863 | var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node); | ||
9864 | if (nextInstance._debugID !== 0) { | ||
9865 | ReactInstrumentation.debugTool.onHostOperation({ | ||
9866 | instanceID: nextInstance._debugID, | ||
9867 | type: 'mount', | ||
9868 | payload: markup.toString() | ||
9869 | }); | ||
9870 | } | ||
9871 | } | ||
9872 | }; | ||
9873 | } | ||
9874 | |||
9875 | /** | ||
9876 | * Operations for updating with DOM children. | ||
9877 | */ | ||
9878 | var DOMChildrenOperations = { | ||
9879 | |||
9880 | dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup, | ||
9881 | |||
9882 | replaceDelimitedText: replaceDelimitedText, | ||
9883 | |||
9884 | /** | ||
9885 | * Updates a component's children by processing a series of updates. The | ||
9886 | * update configurations are each expected to have a `parentNode` property. | ||
9887 | * | ||
9888 | * @param {array<object>} updates List of update configurations. | ||
9889 | * @internal | ||
9890 | */ | ||
9891 | processUpdates: function (parentNode, updates) { | ||
9892 | if (process.env.NODE_ENV !== 'production') { | ||
9893 | var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID; | ||
9894 | } | ||
9895 | |||
9896 | for (var k = 0; k < updates.length; k++) { | ||
9897 | var update = updates[k]; | ||
9898 | switch (update.type) { | ||
9899 | case 'INSERT_MARKUP': | ||
9900 | insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode)); | ||
9901 | if (process.env.NODE_ENV !== 'production') { | ||
9902 | ReactInstrumentation.debugTool.onHostOperation({ | ||
9903 | instanceID: parentNodeDebugID, | ||
9904 | type: 'insert child', | ||
9905 | payload: { toIndex: update.toIndex, content: update.content.toString() } | ||
9906 | }); | ||
9907 | } | ||
9908 | break; | ||
9909 | case 'MOVE_EXISTING': | ||
9910 | moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode)); | ||
9911 | if (process.env.NODE_ENV !== 'production') { | ||
9912 | ReactInstrumentation.debugTool.onHostOperation({ | ||
9913 | instanceID: parentNodeDebugID, | ||
9914 | type: 'move child', | ||
9915 | payload: { fromIndex: update.fromIndex, toIndex: update.toIndex } | ||
9916 | }); | ||
9917 | } | ||
9918 | break; | ||
9919 | case 'SET_MARKUP': | ||
9920 | setInnerHTML(parentNode, update.content); | ||
9921 | if (process.env.NODE_ENV !== 'production') { | ||
9922 | ReactInstrumentation.debugTool.onHostOperation({ | ||
9923 | instanceID: parentNodeDebugID, | ||
9924 | type: 'replace children', | ||
9925 | payload: update.content.toString() | ||
9926 | }); | ||
9927 | } | ||
9928 | break; | ||
9929 | case 'TEXT_CONTENT': | ||
9930 | setTextContent(parentNode, update.content); | ||
9931 | if (process.env.NODE_ENV !== 'production') { | ||
9932 | ReactInstrumentation.debugTool.onHostOperation({ | ||
9933 | instanceID: parentNodeDebugID, | ||
9934 | type: 'replace text', | ||
9935 | payload: update.content.toString() | ||
9936 | }); | ||
9937 | } | ||
9938 | break; | ||
9939 | case 'REMOVE_NODE': | ||
9940 | removeChild(parentNode, update.fromNode); | ||
9941 | if (process.env.NODE_ENV !== 'production') { | ||
9942 | ReactInstrumentation.debugTool.onHostOperation({ | ||
9943 | instanceID: parentNodeDebugID, | ||
9944 | type: 'remove child', | ||
9945 | payload: { fromIndex: update.fromIndex } | ||
9946 | }); | ||
9947 | } | ||
9948 | break; | ||
9949 | } | ||
9950 | } | ||
9951 | } | ||
9952 | |||
9953 | }; | ||
9954 | |||
9955 | module.exports = DOMChildrenOperations; | ||
9956 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
9957 | |||
9958 | /***/ }), | ||
9959 | /* 87 */ | ||
9960 | /***/ (function(module, exports, __webpack_require__) { | ||
9961 | |||
9962 | /** | ||
9963 | * Copyright 2015-present, Facebook, Inc. | ||
9964 | * All rights reserved. | ||
9965 | * | ||
9966 | * This source code is licensed under the BSD-style license found in the | ||
9967 | * LICENSE file in the root directory of this source tree. An additional grant | ||
9968 | * of patent rights can be found in the PATENTS file in the same directory. | ||
9969 | * | ||
9970 | */ | ||
9971 | |||
9972 | 'use strict'; | ||
9973 | |||
9974 | var DOMNamespaces = __webpack_require__(88); | ||
9975 | var setInnerHTML = __webpack_require__(89); | ||
9976 | |||
9977 | var createMicrosoftUnsafeLocalFunction = __webpack_require__(90); | ||
9978 | var setTextContent = __webpack_require__(91); | ||
9979 | |||
9980 | var ELEMENT_NODE_TYPE = 1; | ||
9981 | var DOCUMENT_FRAGMENT_NODE_TYPE = 11; | ||
9982 | |||
9983 | /** | ||
9984 | * In IE (8-11) and Edge, appending nodes with no children is dramatically | ||
9985 | * faster than appending a full subtree, so we essentially queue up the | ||
9986 | * .appendChild calls here and apply them so each node is added to its parent | ||
9987 | * before any children are added. | ||
9988 | * | ||
9989 | * In other browsers, doing so is slower or neutral compared to the other order | ||
9990 | * (in Firefox, twice as slow) so we only do this inversion in IE. | ||
9991 | * | ||
9992 | * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode. | ||
9993 | */ | ||
9994 | var enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\bEdge\/\d/.test(navigator.userAgent); | ||
9995 | |||
9996 | function insertTreeChildren(tree) { | ||
9997 | if (!enableLazy) { | ||
9998 | return; | ||
9999 | } | ||
10000 | var node = tree.node; | ||
10001 | var children = tree.children; | ||
10002 | if (children.length) { | ||
10003 | for (var i = 0; i < children.length; i++) { | ||
10004 | insertTreeBefore(node, children[i], null); | ||
10005 | } | ||
10006 | } else if (tree.html != null) { | ||
10007 | setInnerHTML(node, tree.html); | ||
10008 | } else if (tree.text != null) { | ||
10009 | setTextContent(node, tree.text); | ||
10010 | } | ||
10011 | } | ||
10012 | |||
10013 | var insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) { | ||
10014 | // DocumentFragments aren't actually part of the DOM after insertion so | ||
10015 | // appending children won't update the DOM. We need to ensure the fragment | ||
10016 | // is properly populated first, breaking out of our lazy approach for just | ||
10017 | // this level. Also, some <object> plugins (like Flash Player) will read | ||
10018 | // <param> nodes immediately upon insertion into the DOM, so <object> | ||
10019 | // must also be populated prior to insertion into the DOM. | ||
10020 | if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) { | ||
10021 | insertTreeChildren(tree); | ||
10022 | parentNode.insertBefore(tree.node, referenceNode); | ||
10023 | } else { | ||
10024 | parentNode.insertBefore(tree.node, referenceNode); | ||
10025 | insertTreeChildren(tree); | ||
10026 | } | ||
10027 | }); | ||
10028 | |||
10029 | function replaceChildWithTree(oldNode, newTree) { | ||
10030 | oldNode.parentNode.replaceChild(newTree.node, oldNode); | ||
10031 | insertTreeChildren(newTree); | ||
10032 | } | ||
10033 | |||
10034 | function queueChild(parentTree, childTree) { | ||
10035 | if (enableLazy) { | ||
10036 | parentTree.children.push(childTree); | ||
10037 | } else { | ||
10038 | parentTree.node.appendChild(childTree.node); | ||
10039 | } | ||
10040 | } | ||
10041 | |||
10042 | function queueHTML(tree, html) { | ||
10043 | if (enableLazy) { | ||
10044 | tree.html = html; | ||
10045 | } else { | ||
10046 | setInnerHTML(tree.node, html); | ||
10047 | } | ||
10048 | } | ||
10049 | |||
10050 | function queueText(tree, text) { | ||
10051 | if (enableLazy) { | ||
10052 | tree.text = text; | ||
10053 | } else { | ||
10054 | setTextContent(tree.node, text); | ||
10055 | } | ||
10056 | } | ||
10057 | |||
10058 | function toString() { | ||
10059 | return this.node.nodeName; | ||
10060 | } | ||
10061 | |||
10062 | function DOMLazyTree(node) { | ||
10063 | return { | ||
10064 | node: node, | ||
10065 | children: [], | ||
10066 | html: null, | ||
10067 | text: null, | ||
10068 | toString: toString | ||
10069 | }; | ||
10070 | } | ||
10071 | |||
10072 | DOMLazyTree.insertTreeBefore = insertTreeBefore; | ||
10073 | DOMLazyTree.replaceChildWithTree = replaceChildWithTree; | ||
10074 | DOMLazyTree.queueChild = queueChild; | ||
10075 | DOMLazyTree.queueHTML = queueHTML; | ||
10076 | DOMLazyTree.queueText = queueText; | ||
10077 | |||
10078 | module.exports = DOMLazyTree; | ||
10079 | |||
10080 | /***/ }), | ||
10081 | /* 88 */ | ||
10082 | /***/ (function(module, exports) { | ||
10083 | |||
10084 | /** | ||
10085 | * Copyright 2013-present, Facebook, Inc. | ||
10086 | * All rights reserved. | ||
10087 | * | ||
10088 | * This source code is licensed under the BSD-style license found in the | ||
10089 | * LICENSE file in the root directory of this source tree. An additional grant | ||
10090 | * of patent rights can be found in the PATENTS file in the same directory. | ||
10091 | * | ||
10092 | */ | ||
10093 | |||
10094 | 'use strict'; | ||
10095 | |||
10096 | var DOMNamespaces = { | ||
10097 | html: 'http://www.w3.org/1999/xhtml', | ||
10098 | mathml: 'http://www.w3.org/1998/Math/MathML', | ||
10099 | svg: 'http://www.w3.org/2000/svg' | ||
10100 | }; | ||
10101 | |||
10102 | module.exports = DOMNamespaces; | ||
10103 | |||
10104 | /***/ }), | ||
10105 | /* 89 */ | ||
10106 | /***/ (function(module, exports, __webpack_require__) { | ||
10107 | |||
10108 | /** | ||
10109 | * Copyright 2013-present, Facebook, Inc. | ||
10110 | * All rights reserved. | ||
10111 | * | ||
10112 | * This source code is licensed under the BSD-style license found in the | ||
10113 | * LICENSE file in the root directory of this source tree. An additional grant | ||
10114 | * of patent rights can be found in the PATENTS file in the same directory. | ||
10115 | * | ||
10116 | */ | ||
10117 | |||
10118 | 'use strict'; | ||
10119 | |||
10120 | var ExecutionEnvironment = __webpack_require__(54); | ||
10121 | var DOMNamespaces = __webpack_require__(88); | ||
10122 | |||
10123 | var WHITESPACE_TEST = /^[ \r\n\t\f]/; | ||
10124 | var NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/; | ||
10125 | |||
10126 | var createMicrosoftUnsafeLocalFunction = __webpack_require__(90); | ||
10127 | |||
10128 | // SVG temp container for IE lacking innerHTML | ||
10129 | var reusableSVGContainer; | ||
10130 | |||
10131 | /** | ||
10132 | * Set the innerHTML property of a node, ensuring that whitespace is preserved | ||
10133 | * even in IE8. | ||
10134 | * | ||
10135 | * @param {DOMElement} node | ||
10136 | * @param {string} html | ||
10137 | * @internal | ||
10138 | */ | ||
10139 | var setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) { | ||
10140 | // IE does not have innerHTML for SVG nodes, so instead we inject the | ||
10141 | // new markup in a temp node and then move the child nodes across into | ||
10142 | // the target node | ||
10143 | if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) { | ||
10144 | reusableSVGContainer = reusableSVGContainer || document.createElement('div'); | ||
10145 | reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>'; | ||
10146 | var svgNode = reusableSVGContainer.firstChild; | ||
10147 | while (svgNode.firstChild) { | ||
10148 | node.appendChild(svgNode.firstChild); | ||
10149 | } | ||
10150 | } else { | ||
10151 | node.innerHTML = html; | ||
10152 | } | ||
10153 | }); | ||
10154 | |||
10155 | if (ExecutionEnvironment.canUseDOM) { | ||
10156 | // IE8: When updating a just created node with innerHTML only leading | ||
10157 | // whitespace is removed. When updating an existing node with innerHTML | ||
10158 | // whitespace in root TextNodes is also collapsed. | ||
10159 | // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html | ||
10160 | |||
10161 | // Feature detection; only IE8 is known to behave improperly like this. | ||
10162 | var testElement = document.createElement('div'); | ||
10163 | testElement.innerHTML = ' '; | ||
10164 | if (testElement.innerHTML === '') { | ||
10165 | setInnerHTML = function (node, html) { | ||
10166 | // Magic theory: IE8 supposedly differentiates between added and updated | ||
10167 | // nodes when processing innerHTML, innerHTML on updated nodes suffers | ||
10168 | // from worse whitespace behavior. Re-adding a node like this triggers | ||
10169 | // the initial and more favorable whitespace behavior. | ||
10170 | // TODO: What to do on a detached node? | ||
10171 | if (node.parentNode) { | ||
10172 | node.parentNode.replaceChild(node, node); | ||
10173 | } | ||
10174 | |||
10175 | // We also implement a workaround for non-visible tags disappearing into | ||
10176 | // thin air on IE8, this only happens if there is no visible text | ||
10177 | // in-front of the non-visible tags. Piggyback on the whitespace fix | ||
10178 | // and simply check if any non-visible tags appear in the source. | ||
10179 | if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) { | ||
10180 | // Recover leading whitespace by temporarily prepending any character. | ||
10181 | // \uFEFF has the potential advantage of being zero-width/invisible. | ||
10182 | // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode | ||
10183 | // in hopes that this is preserved even if "\uFEFF" is transformed to | ||
10184 | // the actual Unicode character (by Babel, for example). | ||
10185 | // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216 | ||
10186 | node.innerHTML = String.fromCharCode(0xFEFF) + html; | ||
10187 | |||
10188 | // deleteData leaves an empty `TextNode` which offsets the index of all | ||
10189 | // children. Definitely want to avoid this. | ||
10190 | var textNode = node.firstChild; | ||
10191 | if (textNode.data.length === 1) { | ||
10192 | node.removeChild(textNode); | ||
10193 | } else { | ||
10194 | textNode.deleteData(0, 1); | ||
10195 | } | ||
10196 | } else { | ||
10197 | node.innerHTML = html; | ||
10198 | } | ||
10199 | }; | ||
10200 | } | ||
10201 | testElement = null; | ||
10202 | } | ||
10203 | |||
10204 | module.exports = setInnerHTML; | ||
10205 | |||
10206 | /***/ }), | ||
10207 | /* 90 */ | ||
10208 | /***/ (function(module, exports) { | ||
10209 | |||
10210 | /** | ||
10211 | * Copyright 2013-present, Facebook, Inc. | ||
10212 | * All rights reserved. | ||
10213 | * | ||
10214 | * This source code is licensed under the BSD-style license found in the | ||
10215 | * LICENSE file in the root directory of this source tree. An additional grant | ||
10216 | * of patent rights can be found in the PATENTS file in the same directory. | ||
10217 | * | ||
10218 | */ | ||
10219 | |||
10220 | /* globals MSApp */ | ||
10221 | |||
10222 | 'use strict'; | ||
10223 | |||
10224 | /** | ||
10225 | * Create a function which has 'unsafe' privileges (required by windows8 apps) | ||
10226 | */ | ||
10227 | |||
10228 | var createMicrosoftUnsafeLocalFunction = function (func) { | ||
10229 | if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) { | ||
10230 | return function (arg0, arg1, arg2, arg3) { | ||
10231 | MSApp.execUnsafeLocalFunction(function () { | ||
10232 | return func(arg0, arg1, arg2, arg3); | ||
10233 | }); | ||
10234 | }; | ||
10235 | } else { | ||
10236 | return func; | ||
10237 | } | ||
10238 | }; | ||
10239 | |||
10240 | module.exports = createMicrosoftUnsafeLocalFunction; | ||
10241 | |||
10242 | /***/ }), | ||
10243 | /* 91 */ | ||
10244 | /***/ (function(module, exports, __webpack_require__) { | ||
10245 | |||
10246 | /** | ||
10247 | * Copyright 2013-present, Facebook, Inc. | ||
10248 | * All rights reserved. | ||
10249 | * | ||
10250 | * This source code is licensed under the BSD-style license found in the | ||
10251 | * LICENSE file in the root directory of this source tree. An additional grant | ||
10252 | * of patent rights can be found in the PATENTS file in the same directory. | ||
10253 | * | ||
10254 | */ | ||
10255 | |||
10256 | 'use strict'; | ||
10257 | |||
10258 | var ExecutionEnvironment = __webpack_require__(54); | ||
10259 | var escapeTextContentForBrowser = __webpack_require__(92); | ||
10260 | var setInnerHTML = __webpack_require__(89); | ||
10261 | |||
10262 | /** | ||
10263 | * Set the textContent property of a node, ensuring that whitespace is preserved | ||
10264 | * even in IE8. innerText is a poor substitute for textContent and, among many | ||
10265 | * issues, inserts <br> instead of the literal newline chars. innerHTML behaves | ||
10266 | * as it should. | ||
10267 | * | ||
10268 | * @param {DOMElement} node | ||
10269 | * @param {string} text | ||
10270 | * @internal | ||
10271 | */ | ||
10272 | var setTextContent = function (node, text) { | ||
10273 | if (text) { | ||
10274 | var firstChild = node.firstChild; | ||
10275 | |||
10276 | if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) { | ||
10277 | firstChild.nodeValue = text; | ||
10278 | return; | ||
10279 | } | ||
10280 | } | ||
10281 | node.textContent = text; | ||
10282 | }; | ||
10283 | |||
10284 | if (ExecutionEnvironment.canUseDOM) { | ||
10285 | if (!('textContent' in document.documentElement)) { | ||
10286 | setTextContent = function (node, text) { | ||
10287 | if (node.nodeType === 3) { | ||
10288 | node.nodeValue = text; | ||
10289 | return; | ||
10290 | } | ||
10291 | setInnerHTML(node, escapeTextContentForBrowser(text)); | ||
10292 | }; | ||
10293 | } | ||
10294 | } | ||
10295 | |||
10296 | module.exports = setTextContent; | ||
10297 | |||
10298 | /***/ }), | ||
10299 | /* 92 */ | ||
10300 | /***/ (function(module, exports) { | ||
10301 | |||
10302 | /** | ||
10303 | * Copyright 2016-present, Facebook, Inc. | ||
10304 | * All rights reserved. | ||
10305 | * | ||
10306 | * This source code is licensed under the BSD-style license found in the | ||
10307 | * LICENSE file in the root directory of this source tree. An additional grant | ||
10308 | * of patent rights can be found in the PATENTS file in the same directory. | ||
10309 | * | ||
10310 | * Based on the escape-html library, which is used under the MIT License below: | ||
10311 | * | ||
10312 | * Copyright (c) 2012-2013 TJ Holowaychuk | ||
10313 | * Copyright (c) 2015 Andreas Lubbe | ||
10314 | * Copyright (c) 2015 Tiancheng "Timothy" Gu | ||
10315 | * | ||
10316 | * Permission is hereby granted, free of charge, to any person obtaining | ||
10317 | * a copy of this software and associated documentation files (the | ||
10318 | * 'Software'), to deal in the Software without restriction, including | ||
10319 | * without limitation the rights to use, copy, modify, merge, publish, | ||
10320 | * distribute, sublicense, and/or sell copies of the Software, and to | ||
10321 | * permit persons to whom the Software is furnished to do so, subject to | ||
10322 | * the following conditions: | ||
10323 | * | ||
10324 | * The above copyright notice and this permission notice shall be | ||
10325 | * included in all copies or substantial portions of the Software. | ||
10326 | * | ||
10327 | * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, | ||
10328 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
10329 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | ||
10330 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY | ||
10331 | * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | ||
10332 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | ||
10333 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
10334 | * | ||
10335 | */ | ||
10336 | |||
10337 | 'use strict'; | ||
10338 | |||
10339 | // code copied and modified from escape-html | ||
10340 | /** | ||
10341 | * Module variables. | ||
10342 | * @private | ||
10343 | */ | ||
10344 | |||
10345 | var matchHtmlRegExp = /["'&<>]/; | ||
10346 | |||
10347 | /** | ||
10348 | * Escape special characters in the given string of html. | ||
10349 | * | ||
10350 | * @param {string} string The string to escape for inserting into HTML | ||
10351 | * @return {string} | ||
10352 | * @public | ||
10353 | */ | ||
10354 | |||
10355 | function escapeHtml(string) { | ||
10356 | var str = '' + string; | ||
10357 | var match = matchHtmlRegExp.exec(str); | ||
10358 | |||
10359 | if (!match) { | ||
10360 | return str; | ||
10361 | } | ||
10362 | |||
10363 | var escape; | ||
10364 | var html = ''; | ||
10365 | var index = 0; | ||
10366 | var lastIndex = 0; | ||
10367 | |||
10368 | for (index = match.index; index < str.length; index++) { | ||
10369 | switch (str.charCodeAt(index)) { | ||
10370 | case 34: | ||
10371 | // " | ||
10372 | escape = '"'; | ||
10373 | break; | ||
10374 | case 38: | ||
10375 | // & | ||
10376 | escape = '&'; | ||
10377 | break; | ||
10378 | case 39: | ||
10379 | // ' | ||
10380 | escape = '''; // modified from escape-html; used to be ''' | ||
10381 | break; | ||
10382 | case 60: | ||
10383 | // < | ||
10384 | escape = '<'; | ||
10385 | break; | ||
10386 | case 62: | ||
10387 | // > | ||
10388 | escape = '>'; | ||
10389 | break; | ||
10390 | default: | ||
10391 | continue; | ||
10392 | } | ||
10393 | |||
10394 | if (lastIndex !== index) { | ||
10395 | html += str.substring(lastIndex, index); | ||
10396 | } | ||
10397 | |||
10398 | lastIndex = index + 1; | ||
10399 | html += escape; | ||
10400 | } | ||
10401 | |||
10402 | return lastIndex !== index ? html + str.substring(lastIndex, index) : html; | ||
10403 | } | ||
10404 | // end code copied and modified from escape-html | ||
10405 | |||
10406 | |||
10407 | /** | ||
10408 | * Escapes text to prevent scripting attacks. | ||
10409 | * | ||
10410 | * @param {*} text Text value to escape. | ||
10411 | * @return {string} An escaped string. | ||
10412 | */ | ||
10413 | function escapeTextContentForBrowser(text) { | ||
10414 | if (typeof text === 'boolean' || typeof text === 'number') { | ||
10415 | // this shortcircuit helps perf for types that we know will never have | ||
10416 | // special characters, especially given that this function is used often | ||
10417 | // for numeric dom ids. | ||
10418 | return '' + text; | ||
10419 | } | ||
10420 | return escapeHtml(text); | ||
10421 | } | ||
10422 | |||
10423 | module.exports = escapeTextContentForBrowser; | ||
10424 | |||
10425 | /***/ }), | ||
10426 | /* 93 */ | ||
10427 | /***/ (function(module, exports, __webpack_require__) { | ||
10428 | |||
10429 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
10430 | * Copyright 2013-present, Facebook, Inc. | ||
10431 | * All rights reserved. | ||
10432 | * | ||
10433 | * This source code is licensed under the BSD-style license found in the | ||
10434 | * LICENSE file in the root directory of this source tree. An additional grant | ||
10435 | * of patent rights can be found in the PATENTS file in the same directory. | ||
10436 | * | ||
10437 | */ | ||
10438 | |||
10439 | 'use strict'; | ||
10440 | |||
10441 | var _prodInvariant = __webpack_require__(41); | ||
10442 | |||
10443 | var DOMLazyTree = __webpack_require__(87); | ||
10444 | var ExecutionEnvironment = __webpack_require__(54); | ||
10445 | |||
10446 | var createNodesFromMarkup = __webpack_require__(94); | ||
10447 | var emptyFunction = __webpack_require__(14); | ||
10448 | var invariant = __webpack_require__(10); | ||
10449 | |||
10450 | var Danger = { | ||
10451 | |||
10452 | /** | ||
10453 | * Replaces a node with a string of markup at its current position within its | ||
10454 | * parent. The markup must render into a single root node. | ||
10455 | * | ||
10456 | * @param {DOMElement} oldChild Child node to replace. | ||
10457 | * @param {string} markup Markup to render in place of the child node. | ||
10458 | * @internal | ||
10459 | */ | ||
10460 | dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) { | ||
10461 | !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0; | ||
10462 | !markup ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0; | ||
10463 | !(oldChild.nodeName !== 'HTML') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> 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 ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0; | ||
10464 | |||
10465 | if (typeof markup === 'string') { | ||
10466 | var newChild = createNodesFromMarkup(markup, emptyFunction)[0]; | ||
10467 | oldChild.parentNode.replaceChild(newChild, oldChild); | ||
10468 | } else { | ||
10469 | DOMLazyTree.replaceChildWithTree(oldChild, markup); | ||
10470 | } | ||
10471 | } | ||
10472 | |||
10473 | }; | ||
10474 | |||
10475 | module.exports = Danger; | ||
10476 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
10477 | |||
10478 | /***/ }), | ||
10479 | /* 94 */ | ||
10480 | /***/ (function(module, exports, __webpack_require__) { | ||
10481 | |||
10482 | /* WEBPACK VAR INJECTION */(function(process) {'use strict'; | ||
10483 | |||
10484 | /** | ||
10485 | * Copyright (c) 2013-present, Facebook, Inc. | ||
10486 | * All rights reserved. | ||
10487 | * | ||
10488 | * This source code is licensed under the BSD-style license found in the | ||
10489 | * LICENSE file in the root directory of this source tree. An additional grant | ||
10490 | * of patent rights can be found in the PATENTS file in the same directory. | ||
10491 | * | ||
10492 | * @typechecks | ||
10493 | */ | ||
10494 | |||
10495 | /*eslint-disable fb-www/unsafe-html*/ | ||
10496 | |||
10497 | var ExecutionEnvironment = __webpack_require__(54); | ||
10498 | |||
10499 | var createArrayFromMixed = __webpack_require__(95); | ||
10500 | var getMarkupWrap = __webpack_require__(96); | ||
10501 | var invariant = __webpack_require__(10); | ||
10502 | |||
10503 | /** | ||
10504 | * Dummy container used to render all markup. | ||
10505 | */ | ||
10506 | var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null; | ||
10507 | |||
10508 | /** | ||
10509 | * Pattern used by `getNodeName`. | ||
10510 | */ | ||
10511 | var nodeNamePattern = /^\s*<(\w+)/; | ||
10512 | |||
10513 | /** | ||
10514 | * Extracts the `nodeName` of the first element in a string of markup. | ||
10515 | * | ||
10516 | * @param {string} markup String of markup. | ||
10517 | * @return {?string} Node name of the supplied markup. | ||
10518 | */ | ||
10519 | function getNodeName(markup) { | ||
10520 | var nodeNameMatch = markup.match(nodeNamePattern); | ||
10521 | return nodeNameMatch && nodeNameMatch[1].toLowerCase(); | ||
10522 | } | ||
10523 | |||
10524 | /** | ||
10525 | * Creates an array containing the nodes rendered from the supplied markup. The | ||
10526 | * optionally supplied `handleScript` function will be invoked once for each | ||
10527 | * <script> element that is rendered. If no `handleScript` function is supplied, | ||
10528 | * an exception is thrown if any <script> elements are rendered. | ||
10529 | * | ||
10530 | * @param {string} markup A string of valid HTML markup. | ||
10531 | * @param {?function} handleScript Invoked once for each rendered <script>. | ||
10532 | * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes. | ||
10533 | */ | ||
10534 | function createNodesFromMarkup(markup, handleScript) { | ||
10535 | var node = dummyNode; | ||
10536 | !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0; | ||
10537 | var nodeName = getNodeName(markup); | ||
10538 | |||
10539 | var wrap = nodeName && getMarkupWrap(nodeName); | ||
10540 | if (wrap) { | ||
10541 | node.innerHTML = wrap[1] + markup + wrap[2]; | ||
10542 | |||
10543 | var wrapDepth = wrap[0]; | ||
10544 | while (wrapDepth--) { | ||
10545 | node = node.lastChild; | ||
10546 | } | ||
10547 | } else { | ||
10548 | node.innerHTML = markup; | ||
10549 | } | ||
10550 | |||
10551 | var scripts = node.getElementsByTagName('script'); | ||
10552 | if (scripts.length) { | ||
10553 | !handleScript ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0; | ||
10554 | createArrayFromMixed(scripts).forEach(handleScript); | ||
10555 | } | ||
10556 | |||
10557 | var nodes = Array.from(node.childNodes); | ||
10558 | while (node.lastChild) { | ||
10559 | node.removeChild(node.lastChild); | ||
10560 | } | ||
10561 | return nodes; | ||
10562 | } | ||
10563 | |||
10564 | module.exports = createNodesFromMarkup; | ||
10565 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
10566 | |||
10567 | /***/ }), | ||
10568 | /* 95 */ | ||
10569 | /***/ (function(module, exports, __webpack_require__) { | ||
10570 | |||
10571 | /* WEBPACK VAR INJECTION */(function(process) {'use strict'; | ||
10572 | |||
10573 | /** | ||
10574 | * Copyright (c) 2013-present, Facebook, Inc. | ||
10575 | * All rights reserved. | ||
10576 | * | ||
10577 | * This source code is licensed under the BSD-style license found in the | ||
10578 | * LICENSE file in the root directory of this source tree. An additional grant | ||
10579 | * of patent rights can be found in the PATENTS file in the same directory. | ||
10580 | * | ||
10581 | * @typechecks | ||
10582 | */ | ||
10583 | |||
10584 | var invariant = __webpack_require__(10); | ||
10585 | |||
10586 | /** | ||
10587 | * Convert array-like objects to arrays. | ||
10588 | * | ||
10589 | * This API assumes the caller knows the contents of the data type. For less | ||
10590 | * well defined inputs use createArrayFromMixed. | ||
10591 | * | ||
10592 | * @param {object|function|filelist} obj | ||
10593 | * @return {array} | ||
10594 | */ | ||
10595 | function toArray(obj) { | ||
10596 | var length = obj.length; | ||
10597 | |||
10598 | // Some browsers builtin objects can report typeof 'function' (e.g. NodeList | ||
10599 | // in old versions of Safari). | ||
10600 | !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0; | ||
10601 | |||
10602 | !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0; | ||
10603 | |||
10604 | !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0; | ||
10605 | |||
10606 | !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object can\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0; | ||
10607 | |||
10608 | // Old IE doesn't give collections access to hasOwnProperty. Assume inputs | ||
10609 | // without method will throw during the slice call and skip straight to the | ||
10610 | // fallback. | ||
10611 | if (obj.hasOwnProperty) { | ||
10612 | try { | ||
10613 | return Array.prototype.slice.call(obj); | ||
10614 | } catch (e) { | ||
10615 | // IE < 9 does not support Array#slice on collections objects | ||
10616 | } | ||
10617 | } | ||
10618 | |||
10619 | // Fall back to copying key by key. This assumes all keys have a value, | ||
10620 | // so will not preserve sparsely populated inputs. | ||
10621 | var ret = Array(length); | ||
10622 | for (var ii = 0; ii < length; ii++) { | ||
10623 | ret[ii] = obj[ii]; | ||
10624 | } | ||
10625 | return ret; | ||
10626 | } | ||
10627 | |||
10628 | /** | ||
10629 | * Perform a heuristic test to determine if an object is "array-like". | ||
10630 | * | ||
10631 | * A monk asked Joshu, a Zen master, "Has a dog Buddha nature?" | ||
10632 | * Joshu replied: "Mu." | ||
10633 | * | ||
10634 | * This function determines if its argument has "array nature": it returns | ||
10635 | * true if the argument is an actual array, an `arguments' object, or an | ||
10636 | * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()). | ||
10637 | * | ||
10638 | * It will return false for other array-like objects like Filelist. | ||
10639 | * | ||
10640 | * @param {*} obj | ||
10641 | * @return {boolean} | ||
10642 | */ | ||
10643 | function hasArrayNature(obj) { | ||
10644 | return ( | ||
10645 | // not null/false | ||
10646 | !!obj && ( | ||
10647 | // arrays are objects, NodeLists are functions in Safari | ||
10648 | typeof obj == 'object' || typeof obj == 'function') && | ||
10649 | // quacks like an array | ||
10650 | 'length' in obj && | ||
10651 | // not window | ||
10652 | !('setInterval' in obj) && | ||
10653 | // no DOM node should be considered an array-like | ||
10654 | // a 'select' element has 'length' and 'item' properties on IE8 | ||
10655 | typeof obj.nodeType != 'number' && ( | ||
10656 | // a real array | ||
10657 | Array.isArray(obj) || | ||
10658 | // arguments | ||
10659 | 'callee' in obj || | ||
10660 | // HTMLCollection/NodeList | ||
10661 | 'item' in obj) | ||
10662 | ); | ||
10663 | } | ||
10664 | |||
10665 | /** | ||
10666 | * Ensure that the argument is an array by wrapping it in an array if it is not. | ||
10667 | * Creates a copy of the argument if it is already an array. | ||
10668 | * | ||
10669 | * This is mostly useful idiomatically: | ||
10670 | * | ||
10671 | * var createArrayFromMixed = require('createArrayFromMixed'); | ||
10672 | * | ||
10673 | * function takesOneOrMoreThings(things) { | ||
10674 | * things = createArrayFromMixed(things); | ||
10675 | * ... | ||
10676 | * } | ||
10677 | * | ||
10678 | * This allows you to treat `things' as an array, but accept scalars in the API. | ||
10679 | * | ||
10680 | * If you need to convert an array-like object, like `arguments`, into an array | ||
10681 | * use toArray instead. | ||
10682 | * | ||
10683 | * @param {*} obj | ||
10684 | * @return {array} | ||
10685 | */ | ||
10686 | function createArrayFromMixed(obj) { | ||
10687 | if (!hasArrayNature(obj)) { | ||
10688 | return [obj]; | ||
10689 | } else if (Array.isArray(obj)) { | ||
10690 | return obj.slice(); | ||
10691 | } else { | ||
10692 | return toArray(obj); | ||
10693 | } | ||
10694 | } | ||
10695 | |||
10696 | module.exports = createArrayFromMixed; | ||
10697 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
10698 | |||
10699 | /***/ }), | ||
10700 | /* 96 */ | ||
10701 | /***/ (function(module, exports, __webpack_require__) { | ||
10702 | |||
10703 | /* WEBPACK VAR INJECTION */(function(process) {'use strict'; | ||
10704 | |||
10705 | /** | ||
10706 | * Copyright (c) 2013-present, Facebook, Inc. | ||
10707 | * All rights reserved. | ||
10708 | * | ||
10709 | * This source code is licensed under the BSD-style license found in the | ||
10710 | * LICENSE file in the root directory of this source tree. An additional grant | ||
10711 | * of patent rights can be found in the PATENTS file in the same directory. | ||
10712 | * | ||
10713 | */ | ||
10714 | |||
10715 | /*eslint-disable fb-www/unsafe-html */ | ||
10716 | |||
10717 | var ExecutionEnvironment = __webpack_require__(54); | ||
10718 | |||
10719 | var invariant = __webpack_require__(10); | ||
10720 | |||
10721 | /** | ||
10722 | * Dummy container used to detect which wraps are necessary. | ||
10723 | */ | ||
10724 | var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null; | ||
10725 | |||
10726 | /** | ||
10727 | * Some browsers cannot use `innerHTML` to render certain elements standalone, | ||
10728 | * so we wrap them, render the wrapped nodes, then extract the desired node. | ||
10729 | * | ||
10730 | * In IE8, certain elements cannot render alone, so wrap all elements ('*'). | ||
10731 | */ | ||
10732 | |||
10733 | var shouldWrap = {}; | ||
10734 | |||
10735 | var selectWrap = [1, '<select multiple="true">', '</select>']; | ||
10736 | var tableWrap = [1, '<table>', '</table>']; | ||
10737 | var trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>']; | ||
10738 | |||
10739 | var svgWrap = [1, '<svg xmlns="http://www.w3.org/2000/svg">', '</svg>']; | ||
10740 | |||
10741 | var markupWrap = { | ||
10742 | '*': [1, '?<div>', '</div>'], | ||
10743 | |||
10744 | 'area': [1, '<map>', '</map>'], | ||
10745 | 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'], | ||
10746 | 'legend': [1, '<fieldset>', '</fieldset>'], | ||
10747 | 'param': [1, '<object>', '</object>'], | ||
10748 | 'tr': [2, '<table><tbody>', '</tbody></table>'], | ||
10749 | |||
10750 | 'optgroup': selectWrap, | ||
10751 | 'option': selectWrap, | ||
10752 | |||
10753 | 'caption': tableWrap, | ||
10754 | 'colgroup': tableWrap, | ||
10755 | 'tbody': tableWrap, | ||
10756 | 'tfoot': tableWrap, | ||
10757 | 'thead': tableWrap, | ||
10758 | |||
10759 | 'td': trWrap, | ||
10760 | 'th': trWrap | ||
10761 | }; | ||
10762 | |||
10763 | // Initialize the SVG elements since we know they'll always need to be wrapped | ||
10764 | // consistently. If they are created inside a <div> they will be initialized in | ||
10765 | // the wrong namespace (and will not display). | ||
10766 | var svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan']; | ||
10767 | svgElements.forEach(function (nodeName) { | ||
10768 | markupWrap[nodeName] = svgWrap; | ||
10769 | shouldWrap[nodeName] = true; | ||
10770 | }); | ||
10771 | |||
10772 | /** | ||
10773 | * Gets the markup wrap configuration for the supplied `nodeName`. | ||
10774 | * | ||
10775 | * NOTE: This lazily detects which wraps are necessary for the current browser. | ||
10776 | * | ||
10777 | * @param {string} nodeName Lowercase `nodeName`. | ||
10778 | * @return {?array} Markup wrap configuration, if applicable. | ||
10779 | */ | ||
10780 | function getMarkupWrap(nodeName) { | ||
10781 | !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0; | ||
10782 | if (!markupWrap.hasOwnProperty(nodeName)) { | ||
10783 | nodeName = '*'; | ||
10784 | } | ||
10785 | if (!shouldWrap.hasOwnProperty(nodeName)) { | ||
10786 | if (nodeName === '*') { | ||
10787 | dummyNode.innerHTML = '<link />'; | ||
10788 | } else { | ||
10789 | dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>'; | ||
10790 | } | ||
10791 | shouldWrap[nodeName] = !dummyNode.firstChild; | ||
10792 | } | ||
10793 | return shouldWrap[nodeName] ? markupWrap[nodeName] : null; | ||
10794 | } | ||
10795 | |||
10796 | module.exports = getMarkupWrap; | ||
10797 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
10798 | |||
10799 | /***/ }), | ||
10800 | /* 97 */ | ||
10801 | /***/ (function(module, exports, __webpack_require__) { | ||
10802 | |||
10803 | /** | ||
10804 | * Copyright 2013-present, Facebook, Inc. | ||
10805 | * All rights reserved. | ||
10806 | * | ||
10807 | * This source code is licensed under the BSD-style license found in the | ||
10808 | * LICENSE file in the root directory of this source tree. An additional grant | ||
10809 | * of patent rights can be found in the PATENTS file in the same directory. | ||
10810 | * | ||
10811 | */ | ||
10812 | |||
10813 | 'use strict'; | ||
10814 | |||
10815 | var DOMChildrenOperations = __webpack_require__(86); | ||
10816 | var ReactDOMComponentTree = __webpack_require__(40); | ||
10817 | |||
10818 | /** | ||
10819 | * Operations used to process updates to DOM nodes. | ||
10820 | */ | ||
10821 | var ReactDOMIDOperations = { | ||
10822 | |||
10823 | /** | ||
10824 | * Updates a component's children by processing a series of updates. | ||
10825 | * | ||
10826 | * @param {array<object>} updates List of update configurations. | ||
10827 | * @internal | ||
10828 | */ | ||
10829 | dangerouslyProcessChildrenUpdates: function (parentInst, updates) { | ||
10830 | var node = ReactDOMComponentTree.getNodeFromInstance(parentInst); | ||
10831 | DOMChildrenOperations.processUpdates(node, updates); | ||
10832 | } | ||
10833 | }; | ||
10834 | |||
10835 | module.exports = ReactDOMIDOperations; | ||
10836 | |||
10837 | /***/ }), | ||
10838 | /* 98 */ | ||
10839 | /***/ (function(module, exports, __webpack_require__) { | ||
10840 | |||
10841 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
10842 | * Copyright 2013-present, Facebook, Inc. | ||
10843 | * All rights reserved. | ||
10844 | * | ||
10845 | * This source code is licensed under the BSD-style license found in the | ||
10846 | * LICENSE file in the root directory of this source tree. An additional grant | ||
10847 | * of patent rights can be found in the PATENTS file in the same directory. | ||
10848 | * | ||
10849 | */ | ||
10850 | |||
10851 | /* global hasOwnProperty:true */ | ||
10852 | |||
10853 | 'use strict'; | ||
10854 | |||
10855 | var _prodInvariant = __webpack_require__(41), | ||
10856 | _assign = __webpack_require__(6); | ||
10857 | |||
10858 | var AutoFocusUtils = __webpack_require__(99); | ||
10859 | var CSSPropertyOperations = __webpack_require__(101); | ||
10860 | var DOMLazyTree = __webpack_require__(87); | ||
10861 | var DOMNamespaces = __webpack_require__(88); | ||
10862 | var DOMProperty = __webpack_require__(42); | ||
10863 | var DOMPropertyOperations = __webpack_require__(109); | ||
10864 | var EventPluginHub = __webpack_require__(48); | ||
10865 | var EventPluginRegistry = __webpack_require__(49); | ||
10866 | var ReactBrowserEventEmitter = __webpack_require__(111); | ||
10867 | var ReactDOMComponentFlags = __webpack_require__(43); | ||
10868 | var ReactDOMComponentTree = __webpack_require__(40); | ||
10869 | var ReactDOMInput = __webpack_require__(114); | ||
10870 | var ReactDOMOption = __webpack_require__(117); | ||
10871 | var ReactDOMSelect = __webpack_require__(118); | ||
10872 | var ReactDOMTextarea = __webpack_require__(119); | ||
10873 | var ReactInstrumentation = __webpack_require__(68); | ||
10874 | var ReactMultiChild = __webpack_require__(120); | ||
10875 | var ReactServerRenderingTransaction = __webpack_require__(139); | ||
10876 | |||
10877 | var emptyFunction = __webpack_require__(14); | ||
10878 | var escapeTextContentForBrowser = __webpack_require__(92); | ||
10879 | var invariant = __webpack_require__(10); | ||
10880 | var isEventSupported = __webpack_require__(76); | ||
10881 | var shallowEqual = __webpack_require__(129); | ||
10882 | var validateDOMNesting = __webpack_require__(142); | ||
10883 | var warning = __webpack_require__(13); | ||
10884 | |||
10885 | var Flags = ReactDOMComponentFlags; | ||
10886 | var deleteListener = EventPluginHub.deleteListener; | ||
10887 | var getNode = ReactDOMComponentTree.getNodeFromInstance; | ||
10888 | var listenTo = ReactBrowserEventEmitter.listenTo; | ||
10889 | var registrationNameModules = EventPluginRegistry.registrationNameModules; | ||
10890 | |||
10891 | // For quickly matching children type, to test if can be treated as content. | ||
10892 | var CONTENT_TYPES = { 'string': true, 'number': true }; | ||
10893 | |||
10894 | var STYLE = 'style'; | ||
10895 | var HTML = '__html'; | ||
10896 | var RESERVED_PROPS = { | ||
10897 | children: null, | ||
10898 | dangerouslySetInnerHTML: null, | ||
10899 | suppressContentEditableWarning: null | ||
10900 | }; | ||
10901 | |||
10902 | // Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE). | ||
10903 | var DOC_FRAGMENT_TYPE = 11; | ||
10904 | |||
10905 | function getDeclarationErrorAddendum(internalInstance) { | ||
10906 | if (internalInstance) { | ||
10907 | var owner = internalInstance._currentElement._owner || null; | ||
10908 | if (owner) { | ||
10909 | var name = owner.getName(); | ||
10910 | if (name) { | ||
10911 | return ' This DOM node was rendered by `' + name + '`.'; | ||
10912 | } | ||
10913 | } | ||
10914 | } | ||
10915 | return ''; | ||
10916 | } | ||
10917 | |||
10918 | function friendlyStringify(obj) { | ||
10919 | if (typeof obj === 'object') { | ||
10920 | if (Array.isArray(obj)) { | ||
10921 | return '[' + obj.map(friendlyStringify).join(', ') + ']'; | ||
10922 | } else { | ||
10923 | var pairs = []; | ||
10924 | for (var key in obj) { | ||
10925 | if (Object.prototype.hasOwnProperty.call(obj, key)) { | ||
10926 | var keyEscaped = /^[a-z$_][\w$_]*$/i.test(key) ? key : JSON.stringify(key); | ||
10927 | pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key])); | ||
10928 | } | ||
10929 | } | ||
10930 | return '{' + pairs.join(', ') + '}'; | ||
10931 | } | ||
10932 | } else if (typeof obj === 'string') { | ||
10933 | return JSON.stringify(obj); | ||
10934 | } else if (typeof obj === 'function') { | ||
10935 | return '[function object]'; | ||
10936 | } | ||
10937 | // Differs from JSON.stringify in that undefined because undefined and that | ||
10938 | // inf and nan don't become null | ||
10939 | return String(obj); | ||
10940 | } | ||
10941 | |||
10942 | var styleMutationWarning = {}; | ||
10943 | |||
10944 | function checkAndWarnForMutatedStyle(style1, style2, component) { | ||
10945 | if (style1 == null || style2 == null) { | ||
10946 | return; | ||
10947 | } | ||
10948 | if (shallowEqual(style1, style2)) { | ||
10949 | return; | ||
10950 | } | ||
10951 | |||
10952 | var componentName = component._tag; | ||
10953 | var owner = component._currentElement._owner; | ||
10954 | var ownerName; | ||
10955 | if (owner) { | ||
10956 | ownerName = owner.getName(); | ||
10957 | } | ||
10958 | |||
10959 | var hash = ownerName + '|' + componentName; | ||
10960 | |||
10961 | if (styleMutationWarning.hasOwnProperty(hash)) { | ||
10962 | return; | ||
10963 | } | ||
10964 | |||
10965 | styleMutationWarning[hash] = true; | ||
10966 | |||
10967 | process.env.NODE_ENV !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0; | ||
10968 | } | ||
10969 | |||
10970 | /** | ||
10971 | * @param {object} component | ||
10972 | * @param {?object} props | ||
10973 | */ | ||
10974 | function assertValidProps(component, props) { | ||
10975 | if (!props) { | ||
10976 | return; | ||
10977 | } | ||
10978 | // Note the use of `==` which checks for null or undefined. | ||
10979 | if (voidElementTags[component._tag]) { | ||
10980 | !(props.children == null && props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0; | ||
10981 | } | ||
10982 | if (props.dangerouslySetInnerHTML != null) { | ||
10983 | !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0; | ||
10984 | !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0; | ||
10985 | } | ||
10986 | if (process.env.NODE_ENV !== 'production') { | ||
10987 | process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0; | ||
10988 | process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0; | ||
10989 | process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0; | ||
10990 | } | ||
10991 | !(props.style == null || typeof props.style === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \'em\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0; | ||
10992 | } | ||
10993 | |||
10994 | function enqueuePutListener(inst, registrationName, listener, transaction) { | ||
10995 | if (transaction instanceof ReactServerRenderingTransaction) { | ||
10996 | return; | ||
10997 | } | ||
10998 | if (process.env.NODE_ENV !== 'production') { | ||
10999 | // IE8 has no API for event capturing and the `onScroll` event doesn't | ||
11000 | // bubble. | ||
11001 | process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\'t support the `onScroll` event') : void 0; | ||
11002 | } | ||
11003 | var containerInfo = inst._hostContainerInfo; | ||
11004 | var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE; | ||
11005 | var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument; | ||
11006 | listenTo(registrationName, doc); | ||
11007 | transaction.getReactMountReady().enqueue(putListener, { | ||
11008 | inst: inst, | ||
11009 | registrationName: registrationName, | ||
11010 | listener: listener | ||
11011 | }); | ||
11012 | } | ||
11013 | |||
11014 | function putListener() { | ||
11015 | var listenerToPut = this; | ||
11016 | EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener); | ||
11017 | } | ||
11018 | |||
11019 | function inputPostMount() { | ||
11020 | var inst = this; | ||
11021 | ReactDOMInput.postMountWrapper(inst); | ||
11022 | } | ||
11023 | |||
11024 | function textareaPostMount() { | ||
11025 | var inst = this; | ||
11026 | ReactDOMTextarea.postMountWrapper(inst); | ||
11027 | } | ||
11028 | |||
11029 | function optionPostMount() { | ||
11030 | var inst = this; | ||
11031 | ReactDOMOption.postMountWrapper(inst); | ||
11032 | } | ||
11033 | |||
11034 | var setAndValidateContentChildDev = emptyFunction; | ||
11035 | if (process.env.NODE_ENV !== 'production') { | ||
11036 | setAndValidateContentChildDev = function (content) { | ||
11037 | var hasExistingContent = this._contentDebugID != null; | ||
11038 | var debugID = this._debugID; | ||
11039 | // This ID represents the inlined child that has no backing instance: | ||
11040 | var contentDebugID = -debugID; | ||
11041 | |||
11042 | if (content == null) { | ||
11043 | if (hasExistingContent) { | ||
11044 | ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID); | ||
11045 | } | ||
11046 | this._contentDebugID = null; | ||
11047 | return; | ||
11048 | } | ||
11049 | |||
11050 | validateDOMNesting(null, String(content), this, this._ancestorInfo); | ||
11051 | this._contentDebugID = contentDebugID; | ||
11052 | if (hasExistingContent) { | ||
11053 | ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content); | ||
11054 | ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID); | ||
11055 | } else { | ||
11056 | ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID); | ||
11057 | ReactInstrumentation.debugTool.onMountComponent(contentDebugID); | ||
11058 | ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]); | ||
11059 | } | ||
11060 | }; | ||
11061 | } | ||
11062 | |||
11063 | // There are so many media events, it makes sense to just | ||
11064 | // maintain a list rather than create a `trapBubbledEvent` for each | ||
11065 | var mediaEvents = { | ||
11066 | topAbort: 'abort', | ||
11067 | topCanPlay: 'canplay', | ||
11068 | topCanPlayThrough: 'canplaythrough', | ||
11069 | topDurationChange: 'durationchange', | ||
11070 | topEmptied: 'emptied', | ||
11071 | topEncrypted: 'encrypted', | ||
11072 | topEnded: 'ended', | ||
11073 | topError: 'error', | ||
11074 | topLoadedData: 'loadeddata', | ||
11075 | topLoadedMetadata: 'loadedmetadata', | ||
11076 | topLoadStart: 'loadstart', | ||
11077 | topPause: 'pause', | ||
11078 | topPlay: 'play', | ||
11079 | topPlaying: 'playing', | ||
11080 | topProgress: 'progress', | ||
11081 | topRateChange: 'ratechange', | ||
11082 | topSeeked: 'seeked', | ||
11083 | topSeeking: 'seeking', | ||
11084 | topStalled: 'stalled', | ||
11085 | topSuspend: 'suspend', | ||
11086 | topTimeUpdate: 'timeupdate', | ||
11087 | topVolumeChange: 'volumechange', | ||
11088 | topWaiting: 'waiting' | ||
11089 | }; | ||
11090 | |||
11091 | function trapBubbledEventsLocal() { | ||
11092 | var inst = this; | ||
11093 | // If a component renders to null or if another component fatals and causes | ||
11094 | // the state of the tree to be corrupted, `node` here can be null. | ||
11095 | !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0; | ||
11096 | var node = getNode(inst); | ||
11097 | !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0; | ||
11098 | |||
11099 | switch (inst._tag) { | ||
11100 | case 'iframe': | ||
11101 | case 'object': | ||
11102 | inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)]; | ||
11103 | break; | ||
11104 | case 'video': | ||
11105 | case 'audio': | ||
11106 | |||
11107 | inst._wrapperState.listeners = []; | ||
11108 | // Create listener for each media event | ||
11109 | for (var event in mediaEvents) { | ||
11110 | if (mediaEvents.hasOwnProperty(event)) { | ||
11111 | inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node)); | ||
11112 | } | ||
11113 | } | ||
11114 | break; | ||
11115 | case 'source': | ||
11116 | inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)]; | ||
11117 | break; | ||
11118 | case 'img': | ||
11119 | inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)]; | ||
11120 | break; | ||
11121 | case 'form': | ||
11122 | inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)]; | ||
11123 | break; | ||
11124 | case 'input': | ||
11125 | case 'select': | ||
11126 | case 'textarea': | ||
11127 | inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)]; | ||
11128 | break; | ||
11129 | } | ||
11130 | } | ||
11131 | |||
11132 | function postUpdateSelectWrapper() { | ||
11133 | ReactDOMSelect.postUpdateWrapper(this); | ||
11134 | } | ||
11135 | |||
11136 | // For HTML, certain tags should omit their close tag. We keep a whitelist for | ||
11137 | // those special-case tags. | ||
11138 | |||
11139 | var omittedCloseTags = { | ||
11140 | 'area': true, | ||
11141 | 'base': true, | ||
11142 | 'br': true, | ||
11143 | 'col': true, | ||
11144 | 'embed': true, | ||
11145 | 'hr': true, | ||
11146 | 'img': true, | ||
11147 | 'input': true, | ||
11148 | 'keygen': true, | ||
11149 | 'link': true, | ||
11150 | 'meta': true, | ||
11151 | 'param': true, | ||
11152 | 'source': true, | ||
11153 | 'track': true, | ||
11154 | 'wbr': true | ||
11155 | }; | ||
11156 | |||
11157 | var newlineEatingTags = { | ||
11158 | 'listing': true, | ||
11159 | 'pre': true, | ||
11160 | 'textarea': true | ||
11161 | }; | ||
11162 | |||
11163 | // For HTML, certain tags cannot have children. This has the same purpose as | ||
11164 | // `omittedCloseTags` except that `menuitem` should still have its closing tag. | ||
11165 | |||
11166 | var voidElementTags = _assign({ | ||
11167 | 'menuitem': true | ||
11168 | }, omittedCloseTags); | ||
11169 | |||
11170 | // We accept any tag to be rendered but since this gets injected into arbitrary | ||
11171 | // HTML, we want to make sure that it's a safe tag. | ||
11172 | // http://www.w3.org/TR/REC-xml/#NT-Name | ||
11173 | |||
11174 | var VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\.\-\d]*$/; // Simplified subset | ||
11175 | var validatedTagCache = {}; | ||
11176 | var hasOwnProperty = {}.hasOwnProperty; | ||
11177 | |||
11178 | function validateDangerousTag(tag) { | ||
11179 | if (!hasOwnProperty.call(validatedTagCache, tag)) { | ||
11180 | !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0; | ||
11181 | validatedTagCache[tag] = true; | ||
11182 | } | ||
11183 | } | ||
11184 | |||
11185 | function isCustomComponent(tagName, props) { | ||
11186 | return tagName.indexOf('-') >= 0 || props.is != null; | ||
11187 | } | ||
11188 | |||
11189 | var globalIdCounter = 1; | ||
11190 | |||
11191 | /** | ||
11192 | * Creates a new React class that is idempotent and capable of containing other | ||
11193 | * React components. It accepts event listeners and DOM properties that are | ||
11194 | * valid according to `DOMProperty`. | ||
11195 | * | ||
11196 | * - Event listeners: `onClick`, `onMouseDown`, etc. | ||
11197 | * - DOM properties: `className`, `name`, `title`, etc. | ||
11198 | * | ||
11199 | * The `style` property functions differently from the DOM API. It accepts an | ||
11200 | * object mapping of style properties to values. | ||
11201 | * | ||
11202 | * @constructor ReactDOMComponent | ||
11203 | * @extends ReactMultiChild | ||
11204 | */ | ||
11205 | function ReactDOMComponent(element) { | ||
11206 | var tag = element.type; | ||
11207 | validateDangerousTag(tag); | ||
11208 | this._currentElement = element; | ||
11209 | this._tag = tag.toLowerCase(); | ||
11210 | this._namespaceURI = null; | ||
11211 | this._renderedChildren = null; | ||
11212 | this._previousStyle = null; | ||
11213 | this._previousStyleCopy = null; | ||
11214 | this._hostNode = null; | ||
11215 | this._hostParent = null; | ||
11216 | this._rootNodeID = 0; | ||
11217 | this._domID = 0; | ||
11218 | this._hostContainerInfo = null; | ||
11219 | this._wrapperState = null; | ||
11220 | this._topLevelWrapper = null; | ||
11221 | this._flags = 0; | ||
11222 | if (process.env.NODE_ENV !== 'production') { | ||
11223 | this._ancestorInfo = null; | ||
11224 | setAndValidateContentChildDev.call(this, null); | ||
11225 | } | ||
11226 | } | ||
11227 | |||
11228 | ReactDOMComponent.displayName = 'ReactDOMComponent'; | ||
11229 | |||
11230 | ReactDOMComponent.Mixin = { | ||
11231 | |||
11232 | /** | ||
11233 | * Generates root tag markup then recurses. This method has side effects and | ||
11234 | * is not idempotent. | ||
11235 | * | ||
11236 | * @internal | ||
11237 | * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction | ||
11238 | * @param {?ReactDOMComponent} the parent component instance | ||
11239 | * @param {?object} info about the host container | ||
11240 | * @param {object} context | ||
11241 | * @return {string} The computed markup. | ||
11242 | */ | ||
11243 | mountComponent: function (transaction, hostParent, hostContainerInfo, context) { | ||
11244 | this._rootNodeID = globalIdCounter++; | ||
11245 | this._domID = hostContainerInfo._idCounter++; | ||
11246 | this._hostParent = hostParent; | ||
11247 | this._hostContainerInfo = hostContainerInfo; | ||
11248 | |||
11249 | var props = this._currentElement.props; | ||
11250 | |||
11251 | switch (this._tag) { | ||
11252 | case 'audio': | ||
11253 | case 'form': | ||
11254 | case 'iframe': | ||
11255 | case 'img': | ||
11256 | case 'link': | ||
11257 | case 'object': | ||
11258 | case 'source': | ||
11259 | case 'video': | ||
11260 | this._wrapperState = { | ||
11261 | listeners: null | ||
11262 | }; | ||
11263 | transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this); | ||
11264 | break; | ||
11265 | case 'input': | ||
11266 | ReactDOMInput.mountWrapper(this, props, hostParent); | ||
11267 | props = ReactDOMInput.getHostProps(this, props); | ||
11268 | transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this); | ||
11269 | break; | ||
11270 | case 'option': | ||
11271 | ReactDOMOption.mountWrapper(this, props, hostParent); | ||
11272 | props = ReactDOMOption.getHostProps(this, props); | ||
11273 | break; | ||
11274 | case 'select': | ||
11275 | ReactDOMSelect.mountWrapper(this, props, hostParent); | ||
11276 | props = ReactDOMSelect.getHostProps(this, props); | ||
11277 | transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this); | ||
11278 | break; | ||
11279 | case 'textarea': | ||
11280 | ReactDOMTextarea.mountWrapper(this, props, hostParent); | ||
11281 | props = ReactDOMTextarea.getHostProps(this, props); | ||
11282 | transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this); | ||
11283 | break; | ||
11284 | } | ||
11285 | |||
11286 | assertValidProps(this, props); | ||
11287 | |||
11288 | // We create tags in the namespace of their parent container, except HTML | ||
11289 | // tags get no namespace. | ||
11290 | var namespaceURI; | ||
11291 | var parentTag; | ||
11292 | if (hostParent != null) { | ||
11293 | namespaceURI = hostParent._namespaceURI; | ||
11294 | parentTag = hostParent._tag; | ||
11295 | } else if (hostContainerInfo._tag) { | ||
11296 | namespaceURI = hostContainerInfo._namespaceURI; | ||
11297 | parentTag = hostContainerInfo._tag; | ||
11298 | } | ||
11299 | if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') { | ||
11300 | namespaceURI = DOMNamespaces.html; | ||
11301 | } | ||
11302 | if (namespaceURI === DOMNamespaces.html) { | ||
11303 | if (this._tag === 'svg') { | ||
11304 | namespaceURI = DOMNamespaces.svg; | ||
11305 | } else if (this._tag === 'math') { | ||
11306 | namespaceURI = DOMNamespaces.mathml; | ||
11307 | } | ||
11308 | } | ||
11309 | this._namespaceURI = namespaceURI; | ||
11310 | |||
11311 | if (process.env.NODE_ENV !== 'production') { | ||
11312 | var parentInfo; | ||
11313 | if (hostParent != null) { | ||
11314 | parentInfo = hostParent._ancestorInfo; | ||
11315 | } else if (hostContainerInfo._tag) { | ||
11316 | parentInfo = hostContainerInfo._ancestorInfo; | ||
11317 | } | ||
11318 | if (parentInfo) { | ||
11319 | // parentInfo should always be present except for the top-level | ||
11320 | // component when server rendering | ||
11321 | validateDOMNesting(this._tag, null, this, parentInfo); | ||
11322 | } | ||
11323 | this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this); | ||
11324 | } | ||
11325 | |||
11326 | var mountImage; | ||
11327 | if (transaction.useCreateElement) { | ||
11328 | var ownerDocument = hostContainerInfo._ownerDocument; | ||
11329 | var el; | ||
11330 | if (namespaceURI === DOMNamespaces.html) { | ||
11331 | if (this._tag === 'script') { | ||
11332 | // Create the script via .innerHTML so its "parser-inserted" flag is | ||
11333 | // set to true and it does not execute | ||
11334 | var div = ownerDocument.createElement('div'); | ||
11335 | var type = this._currentElement.type; | ||
11336 | div.innerHTML = '<' + type + '></' + type + '>'; | ||
11337 | el = div.removeChild(div.firstChild); | ||
11338 | } else if (props.is) { | ||
11339 | el = ownerDocument.createElement(this._currentElement.type, props.is); | ||
11340 | } else { | ||
11341 | // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug. | ||
11342 | // See discussion in https://github.com/facebook/react/pull/6896 | ||
11343 | // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240 | ||
11344 | el = ownerDocument.createElement(this._currentElement.type); | ||
11345 | } | ||
11346 | } else { | ||
11347 | el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type); | ||
11348 | } | ||
11349 | ReactDOMComponentTree.precacheNode(this, el); | ||
11350 | this._flags |= Flags.hasCachedChildNodes; | ||
11351 | if (!this._hostParent) { | ||
11352 | DOMPropertyOperations.setAttributeForRoot(el); | ||
11353 | } | ||
11354 | this._updateDOMProperties(null, props, transaction); | ||
11355 | var lazyTree = DOMLazyTree(el); | ||
11356 | this._createInitialChildren(transaction, props, context, lazyTree); | ||
11357 | mountImage = lazyTree; | ||
11358 | } else { | ||
11359 | var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props); | ||
11360 | var tagContent = this._createContentMarkup(transaction, props, context); | ||
11361 | if (!tagContent && omittedCloseTags[this._tag]) { | ||
11362 | mountImage = tagOpen + '/>'; | ||
11363 | } else { | ||
11364 | mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>'; | ||
11365 | } | ||
11366 | } | ||
11367 | |||
11368 | switch (this._tag) { | ||
11369 | case 'input': | ||
11370 | transaction.getReactMountReady().enqueue(inputPostMount, this); | ||
11371 | if (props.autoFocus) { | ||
11372 | transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this); | ||
11373 | } | ||
11374 | break; | ||
11375 | case 'textarea': | ||
11376 | transaction.getReactMountReady().enqueue(textareaPostMount, this); | ||
11377 | if (props.autoFocus) { | ||
11378 | transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this); | ||
11379 | } | ||
11380 | break; | ||
11381 | case 'select': | ||
11382 | if (props.autoFocus) { | ||
11383 | transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this); | ||
11384 | } | ||
11385 | break; | ||
11386 | case 'button': | ||
11387 | if (props.autoFocus) { | ||
11388 | transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this); | ||
11389 | } | ||
11390 | break; | ||
11391 | case 'option': | ||
11392 | transaction.getReactMountReady().enqueue(optionPostMount, this); | ||
11393 | break; | ||
11394 | } | ||
11395 | |||
11396 | return mountImage; | ||
11397 | }, | ||
11398 | |||
11399 | /** | ||
11400 | * Creates markup for the open tag and all attributes. | ||
11401 | * | ||
11402 | * This method has side effects because events get registered. | ||
11403 | * | ||
11404 | * Iterating over object properties is faster than iterating over arrays. | ||
11405 | * @see http://jsperf.com/obj-vs-arr-iteration | ||
11406 | * | ||
11407 | * @private | ||
11408 | * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction | ||
11409 | * @param {object} props | ||
11410 | * @return {string} Markup of opening tag. | ||
11411 | */ | ||
11412 | _createOpenTagMarkupAndPutListeners: function (transaction, props) { | ||
11413 | var ret = '<' + this._currentElement.type; | ||
11414 | |||
11415 | for (var propKey in props) { | ||
11416 | if (!props.hasOwnProperty(propKey)) { | ||
11417 | continue; | ||
11418 | } | ||
11419 | var propValue = props[propKey]; | ||
11420 | if (propValue == null) { | ||
11421 | continue; | ||
11422 | } | ||
11423 | if (registrationNameModules.hasOwnProperty(propKey)) { | ||
11424 | if (propValue) { | ||
11425 | enqueuePutListener(this, propKey, propValue, transaction); | ||
11426 | } | ||
11427 | } else { | ||
11428 | if (propKey === STYLE) { | ||
11429 | if (propValue) { | ||
11430 | if (process.env.NODE_ENV !== 'production') { | ||
11431 | // See `_updateDOMProperties`. style block | ||
11432 | this._previousStyle = propValue; | ||
11433 | } | ||
11434 | propValue = this._previousStyleCopy = _assign({}, props.style); | ||
11435 | } | ||
11436 | propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this); | ||
11437 | } | ||
11438 | var markup = null; | ||
11439 | if (this._tag != null && isCustomComponent(this._tag, props)) { | ||
11440 | if (!RESERVED_PROPS.hasOwnProperty(propKey)) { | ||
11441 | markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue); | ||
11442 | } | ||
11443 | } else { | ||
11444 | markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue); | ||
11445 | } | ||
11446 | if (markup) { | ||
11447 | ret += ' ' + markup; | ||
11448 | } | ||
11449 | } | ||
11450 | } | ||
11451 | |||
11452 | // For static pages, no need to put React ID and checksum. Saves lots of | ||
11453 | // bytes. | ||
11454 | if (transaction.renderToStaticMarkup) { | ||
11455 | return ret; | ||
11456 | } | ||
11457 | |||
11458 | if (!this._hostParent) { | ||
11459 | ret += ' ' + DOMPropertyOperations.createMarkupForRoot(); | ||
11460 | } | ||
11461 | ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID); | ||
11462 | return ret; | ||
11463 | }, | ||
11464 | |||
11465 | /** | ||
11466 | * Creates markup for the content between the tags. | ||
11467 | * | ||
11468 | * @private | ||
11469 | * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction | ||
11470 | * @param {object} props | ||
11471 | * @param {object} context | ||
11472 | * @return {string} Content markup. | ||
11473 | */ | ||
11474 | _createContentMarkup: function (transaction, props, context) { | ||
11475 | var ret = ''; | ||
11476 | |||
11477 | // Intentional use of != to avoid catching zero/false. | ||
11478 | var innerHTML = props.dangerouslySetInnerHTML; | ||
11479 | if (innerHTML != null) { | ||
11480 | if (innerHTML.__html != null) { | ||
11481 | ret = innerHTML.__html; | ||
11482 | } | ||
11483 | } else { | ||
11484 | var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null; | ||
11485 | var childrenToUse = contentToUse != null ? null : props.children; | ||
11486 | if (contentToUse != null) { | ||
11487 | // TODO: Validate that text is allowed as a child of this node | ||
11488 | ret = escapeTextContentForBrowser(contentToUse); | ||
11489 | if (process.env.NODE_ENV !== 'production') { | ||
11490 | setAndValidateContentChildDev.call(this, contentToUse); | ||
11491 | } | ||
11492 | } else if (childrenToUse != null) { | ||
11493 | var mountImages = this.mountChildren(childrenToUse, transaction, context); | ||
11494 | ret = mountImages.join(''); | ||
11495 | } | ||
11496 | } | ||
11497 | if (newlineEatingTags[this._tag] && ret.charAt(0) === '\n') { | ||
11498 | // text/html ignores the first character in these tags if it's a newline | ||
11499 | // Prefer to break application/xml over text/html (for now) by adding | ||
11500 | // a newline specifically to get eaten by the parser. (Alternately for | ||
11501 | // textareas, replacing "^\n" with "\r\n" doesn't get eaten, and the first | ||
11502 | // \r is normalized out by HTMLTextAreaElement#value.) | ||
11503 | // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre> | ||
11504 | // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions> | ||
11505 | // See: <http://www.w3.org/TR/html5/syntax.html#newlines> | ||
11506 | // See: Parsing of "textarea" "listing" and "pre" elements | ||
11507 | // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody> | ||
11508 | return '\n' + ret; | ||
11509 | } else { | ||
11510 | return ret; | ||
11511 | } | ||
11512 | }, | ||
11513 | |||
11514 | _createInitialChildren: function (transaction, props, context, lazyTree) { | ||
11515 | // Intentional use of != to avoid catching zero/false. | ||
11516 | var innerHTML = props.dangerouslySetInnerHTML; | ||
11517 | if (innerHTML != null) { | ||
11518 | if (innerHTML.__html != null) { | ||
11519 | DOMLazyTree.queueHTML(lazyTree, innerHTML.__html); | ||
11520 | } | ||
11521 | } else { | ||
11522 | var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null; | ||
11523 | var childrenToUse = contentToUse != null ? null : props.children; | ||
11524 | // TODO: Validate that text is allowed as a child of this node | ||
11525 | if (contentToUse != null) { | ||
11526 | // Avoid setting textContent when the text is empty. In IE11 setting | ||
11527 | // textContent on a text area will cause the placeholder to not | ||
11528 | // show within the textarea until it has been focused and blurred again. | ||
11529 | // https://github.com/facebook/react/issues/6731#issuecomment-254874553 | ||
11530 | if (contentToUse !== '') { | ||
11531 | if (process.env.NODE_ENV !== 'production') { | ||
11532 | setAndValidateContentChildDev.call(this, contentToUse); | ||
11533 | } | ||
11534 | DOMLazyTree.queueText(lazyTree, contentToUse); | ||
11535 | } | ||
11536 | } else if (childrenToUse != null) { | ||
11537 | var mountImages = this.mountChildren(childrenToUse, transaction, context); | ||
11538 | for (var i = 0; i < mountImages.length; i++) { | ||
11539 | DOMLazyTree.queueChild(lazyTree, mountImages[i]); | ||
11540 | } | ||
11541 | } | ||
11542 | } | ||
11543 | }, | ||
11544 | |||
11545 | /** | ||
11546 | * Receives a next element and updates the component. | ||
11547 | * | ||
11548 | * @internal | ||
11549 | * @param {ReactElement} nextElement | ||
11550 | * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction | ||
11551 | * @param {object} context | ||
11552 | */ | ||
11553 | receiveComponent: function (nextElement, transaction, context) { | ||
11554 | var prevElement = this._currentElement; | ||
11555 | this._currentElement = nextElement; | ||
11556 | this.updateComponent(transaction, prevElement, nextElement, context); | ||
11557 | }, | ||
11558 | |||
11559 | /** | ||
11560 | * Updates a DOM component after it has already been allocated and | ||
11561 | * attached to the DOM. Reconciles the root DOM node, then recurses. | ||
11562 | * | ||
11563 | * @param {ReactReconcileTransaction} transaction | ||
11564 | * @param {ReactElement} prevElement | ||
11565 | * @param {ReactElement} nextElement | ||
11566 | * @internal | ||
11567 | * @overridable | ||
11568 | */ | ||
11569 | updateComponent: function (transaction, prevElement, nextElement, context) { | ||
11570 | var lastProps = prevElement.props; | ||
11571 | var nextProps = this._currentElement.props; | ||
11572 | |||
11573 | switch (this._tag) { | ||
11574 | case 'input': | ||
11575 | lastProps = ReactDOMInput.getHostProps(this, lastProps); | ||
11576 | nextProps = ReactDOMInput.getHostProps(this, nextProps); | ||
11577 | break; | ||
11578 | case 'option': | ||
11579 | lastProps = ReactDOMOption.getHostProps(this, lastProps); | ||
11580 | nextProps = ReactDOMOption.getHostProps(this, nextProps); | ||
11581 | break; | ||
11582 | case 'select': | ||
11583 | lastProps = ReactDOMSelect.getHostProps(this, lastProps); | ||
11584 | nextProps = ReactDOMSelect.getHostProps(this, nextProps); | ||
11585 | break; | ||
11586 | case 'textarea': | ||
11587 | lastProps = ReactDOMTextarea.getHostProps(this, lastProps); | ||
11588 | nextProps = ReactDOMTextarea.getHostProps(this, nextProps); | ||
11589 | break; | ||
11590 | } | ||
11591 | |||
11592 | assertValidProps(this, nextProps); | ||
11593 | this._updateDOMProperties(lastProps, nextProps, transaction); | ||
11594 | this._updateDOMChildren(lastProps, nextProps, transaction, context); | ||
11595 | |||
11596 | switch (this._tag) { | ||
11597 | case 'input': | ||
11598 | // Update the wrapper around inputs *after* updating props. This has to | ||
11599 | // happen after `_updateDOMProperties`. Otherwise HTML5 input validations | ||
11600 | // raise warnings and prevent the new value from being assigned. | ||
11601 | ReactDOMInput.updateWrapper(this); | ||
11602 | break; | ||
11603 | case 'textarea': | ||
11604 | ReactDOMTextarea.updateWrapper(this); | ||
11605 | break; | ||
11606 | case 'select': | ||
11607 | // <select> value update needs to occur after <option> children | ||
11608 | // reconciliation | ||
11609 | transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this); | ||
11610 | break; | ||
11611 | } | ||
11612 | }, | ||
11613 | |||
11614 | /** | ||
11615 | * Reconciles the properties by detecting differences in property values and | ||
11616 | * updating the DOM as necessary. This function is probably the single most | ||
11617 | * critical path for performance optimization. | ||
11618 | * | ||
11619 | * TODO: Benchmark whether checking for changed values in memory actually | ||
11620 | * improves performance (especially statically positioned elements). | ||
11621 | * TODO: Benchmark the effects of putting this at the top since 99% of props | ||
11622 | * do not change for a given reconciliation. | ||
11623 | * TODO: Benchmark areas that can be improved with caching. | ||
11624 | * | ||
11625 | * @private | ||
11626 | * @param {object} lastProps | ||
11627 | * @param {object} nextProps | ||
11628 | * @param {?DOMElement} node | ||
11629 | */ | ||
11630 | _updateDOMProperties: function (lastProps, nextProps, transaction) { | ||
11631 | var propKey; | ||
11632 | var styleName; | ||
11633 | var styleUpdates; | ||
11634 | for (propKey in lastProps) { | ||
11635 | if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) { | ||
11636 | continue; | ||
11637 | } | ||
11638 | if (propKey === STYLE) { | ||
11639 | var lastStyle = this._previousStyleCopy; | ||
11640 | for (styleName in lastStyle) { | ||
11641 | if (lastStyle.hasOwnProperty(styleName)) { | ||
11642 | styleUpdates = styleUpdates || {}; | ||
11643 | styleUpdates[styleName] = ''; | ||
11644 | } | ||
11645 | } | ||
11646 | this._previousStyleCopy = null; | ||
11647 | } else if (registrationNameModules.hasOwnProperty(propKey)) { | ||
11648 | if (lastProps[propKey]) { | ||
11649 | // Only call deleteListener if there was a listener previously or | ||
11650 | // else willDeleteListener gets called when there wasn't actually a | ||
11651 | // listener (e.g., onClick={null}) | ||
11652 | deleteListener(this, propKey); | ||
11653 | } | ||
11654 | } else if (isCustomComponent(this._tag, lastProps)) { | ||
11655 | if (!RESERVED_PROPS.hasOwnProperty(propKey)) { | ||
11656 | DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey); | ||
11657 | } | ||
11658 | } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) { | ||
11659 | DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey); | ||
11660 | } | ||
11661 | } | ||
11662 | for (propKey in nextProps) { | ||
11663 | var nextProp = nextProps[propKey]; | ||
11664 | var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined; | ||
11665 | if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) { | ||
11666 | continue; | ||
11667 | } | ||
11668 | if (propKey === STYLE) { | ||
11669 | if (nextProp) { | ||
11670 | if (process.env.NODE_ENV !== 'production') { | ||
11671 | checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this); | ||
11672 | this._previousStyle = nextProp; | ||
11673 | } | ||
11674 | nextProp = this._previousStyleCopy = _assign({}, nextProp); | ||
11675 | } else { | ||
11676 | this._previousStyleCopy = null; | ||
11677 | } | ||
11678 | if (lastProp) { | ||
11679 | // Unset styles on `lastProp` but not on `nextProp`. | ||
11680 | for (styleName in lastProp) { | ||
11681 | if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) { | ||
11682 | styleUpdates = styleUpdates || {}; | ||
11683 | styleUpdates[styleName] = ''; | ||
11684 | } | ||
11685 | } | ||
11686 | // Update styles that changed since `lastProp`. | ||
11687 | for (styleName in nextProp) { | ||
11688 | if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) { | ||
11689 | styleUpdates = styleUpdates || {}; | ||
11690 | styleUpdates[styleName] = nextProp[styleName]; | ||
11691 | } | ||
11692 | } | ||
11693 | } else { | ||
11694 | // Relies on `updateStylesByID` not mutating `styleUpdates`. | ||
11695 | styleUpdates = nextProp; | ||
11696 | } | ||
11697 | } else if (registrationNameModules.hasOwnProperty(propKey)) { | ||
11698 | if (nextProp) { | ||
11699 | enqueuePutListener(this, propKey, nextProp, transaction); | ||
11700 | } else if (lastProp) { | ||
11701 | deleteListener(this, propKey); | ||
11702 | } | ||
11703 | } else if (isCustomComponent(this._tag, nextProps)) { | ||
11704 | if (!RESERVED_PROPS.hasOwnProperty(propKey)) { | ||
11705 | DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp); | ||
11706 | } | ||
11707 | } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) { | ||
11708 | var node = getNode(this); | ||
11709 | // If we're updating to null or undefined, we should remove the property | ||
11710 | // from the DOM node instead of inadvertently setting to a string. This | ||
11711 | // brings us in line with the same behavior we have on initial render. | ||
11712 | if (nextProp != null) { | ||
11713 | DOMPropertyOperations.setValueForProperty(node, propKey, nextProp); | ||
11714 | } else { | ||
11715 | DOMPropertyOperations.deleteValueForProperty(node, propKey); | ||
11716 | } | ||
11717 | } | ||
11718 | } | ||
11719 | if (styleUpdates) { | ||
11720 | CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this); | ||
11721 | } | ||
11722 | }, | ||
11723 | |||
11724 | /** | ||
11725 | * Reconciles the children with the various properties that affect the | ||
11726 | * children content. | ||
11727 | * | ||
11728 | * @param {object} lastProps | ||
11729 | * @param {object} nextProps | ||
11730 | * @param {ReactReconcileTransaction} transaction | ||
11731 | * @param {object} context | ||
11732 | */ | ||
11733 | _updateDOMChildren: function (lastProps, nextProps, transaction, context) { | ||
11734 | var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null; | ||
11735 | var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null; | ||
11736 | |||
11737 | var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html; | ||
11738 | var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html; | ||
11739 | |||
11740 | // Note the use of `!=` which checks for null or undefined. | ||
11741 | var lastChildren = lastContent != null ? null : lastProps.children; | ||
11742 | var nextChildren = nextContent != null ? null : nextProps.children; | ||
11743 | |||
11744 | // If we're switching from children to content/html or vice versa, remove | ||
11745 | // the old content | ||
11746 | var lastHasContentOrHtml = lastContent != null || lastHtml != null; | ||
11747 | var nextHasContentOrHtml = nextContent != null || nextHtml != null; | ||
11748 | if (lastChildren != null && nextChildren == null) { | ||
11749 | this.updateChildren(null, transaction, context); | ||
11750 | } else if (lastHasContentOrHtml && !nextHasContentOrHtml) { | ||
11751 | this.updateTextContent(''); | ||
11752 | if (process.env.NODE_ENV !== 'production') { | ||
11753 | ReactInstrumentation.debugTool.onSetChildren(this._debugID, []); | ||
11754 | } | ||
11755 | } | ||
11756 | |||
11757 | if (nextContent != null) { | ||
11758 | if (lastContent !== nextContent) { | ||
11759 | this.updateTextContent('' + nextContent); | ||
11760 | if (process.env.NODE_ENV !== 'production') { | ||
11761 | setAndValidateContentChildDev.call(this, nextContent); | ||
11762 | } | ||
11763 | } | ||
11764 | } else if (nextHtml != null) { | ||
11765 | if (lastHtml !== nextHtml) { | ||
11766 | this.updateMarkup('' + nextHtml); | ||
11767 | } | ||
11768 | if (process.env.NODE_ENV !== 'production') { | ||
11769 | ReactInstrumentation.debugTool.onSetChildren(this._debugID, []); | ||
11770 | } | ||
11771 | } else if (nextChildren != null) { | ||
11772 | if (process.env.NODE_ENV !== 'production') { | ||
11773 | setAndValidateContentChildDev.call(this, null); | ||
11774 | } | ||
11775 | |||
11776 | this.updateChildren(nextChildren, transaction, context); | ||
11777 | } | ||
11778 | }, | ||
11779 | |||
11780 | getHostNode: function () { | ||
11781 | return getNode(this); | ||
11782 | }, | ||
11783 | |||
11784 | /** | ||
11785 | * Destroys all event registrations for this instance. Does not remove from | ||
11786 | * the DOM. That must be done by the parent. | ||
11787 | * | ||
11788 | * @internal | ||
11789 | */ | ||
11790 | unmountComponent: function (safely) { | ||
11791 | switch (this._tag) { | ||
11792 | case 'audio': | ||
11793 | case 'form': | ||
11794 | case 'iframe': | ||
11795 | case 'img': | ||
11796 | case 'link': | ||
11797 | case 'object': | ||
11798 | case 'source': | ||
11799 | case 'video': | ||
11800 | var listeners = this._wrapperState.listeners; | ||
11801 | if (listeners) { | ||
11802 | for (var i = 0; i < listeners.length; i++) { | ||
11803 | listeners[i].remove(); | ||
11804 | } | ||
11805 | } | ||
11806 | break; | ||
11807 | case 'html': | ||
11808 | case 'head': | ||
11809 | case 'body': | ||
11810 | /** | ||
11811 | * Components like <html> <head> and <body> can't be removed or added | ||
11812 | * easily in a cross-browser way, however it's valuable to be able to | ||
11813 | * take advantage of React's reconciliation for styling and <title> | ||
11814 | * management. So we just document it and throw in dangerous cases. | ||
11815 | */ | ||
11816 | true ? process.env.NODE_ENV !== 'production' ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0; | ||
11817 | break; | ||
11818 | } | ||
11819 | |||
11820 | this.unmountChildren(safely); | ||
11821 | ReactDOMComponentTree.uncacheNode(this); | ||
11822 | EventPluginHub.deleteAllListeners(this); | ||
11823 | this._rootNodeID = 0; | ||
11824 | this._domID = 0; | ||
11825 | this._wrapperState = null; | ||
11826 | |||
11827 | if (process.env.NODE_ENV !== 'production') { | ||
11828 | setAndValidateContentChildDev.call(this, null); | ||
11829 | } | ||
11830 | }, | ||
11831 | |||
11832 | getPublicInstance: function () { | ||
11833 | return getNode(this); | ||
11834 | } | ||
11835 | |||
11836 | }; | ||
11837 | |||
11838 | _assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin); | ||
11839 | |||
11840 | module.exports = ReactDOMComponent; | ||
11841 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
11842 | |||
11843 | /***/ }), | ||
11844 | /* 99 */ | ||
11845 | /***/ (function(module, exports, __webpack_require__) { | ||
11846 | |||
11847 | /** | ||
11848 | * Copyright 2013-present, Facebook, Inc. | ||
11849 | * All rights reserved. | ||
11850 | * | ||
11851 | * This source code is licensed under the BSD-style license found in the | ||
11852 | * LICENSE file in the root directory of this source tree. An additional grant | ||
11853 | * of patent rights can be found in the PATENTS file in the same directory. | ||
11854 | * | ||
11855 | */ | ||
11856 | |||
11857 | 'use strict'; | ||
11858 | |||
11859 | var ReactDOMComponentTree = __webpack_require__(40); | ||
11860 | |||
11861 | var focusNode = __webpack_require__(100); | ||
11862 | |||
11863 | var AutoFocusUtils = { | ||
11864 | focusDOMComponent: function () { | ||
11865 | focusNode(ReactDOMComponentTree.getNodeFromInstance(this)); | ||
11866 | } | ||
11867 | }; | ||
11868 | |||
11869 | module.exports = AutoFocusUtils; | ||
11870 | |||
11871 | /***/ }), | ||
11872 | /* 100 */ | ||
11873 | /***/ (function(module, exports) { | ||
11874 | |||
11875 | /** | ||
11876 | * Copyright (c) 2013-present, Facebook, Inc. | ||
11877 | * All rights reserved. | ||
11878 | * | ||
11879 | * This source code is licensed under the BSD-style license found in the | ||
11880 | * LICENSE file in the root directory of this source tree. An additional grant | ||
11881 | * of patent rights can be found in the PATENTS file in the same directory. | ||
11882 | * | ||
11883 | */ | ||
11884 | |||
11885 | 'use strict'; | ||
11886 | |||
11887 | /** | ||
11888 | * @param {DOMElement} node input/textarea to focus | ||
11889 | */ | ||
11890 | |||
11891 | function focusNode(node) { | ||
11892 | // IE8 can throw "Can't move focus to the control because it is invisible, | ||
11893 | // not enabled, or of a type that does not accept the focus." for all kinds of | ||
11894 | // reasons that are too expensive and fragile to test. | ||
11895 | try { | ||
11896 | node.focus(); | ||
11897 | } catch (e) {} | ||
11898 | } | ||
11899 | |||
11900 | module.exports = focusNode; | ||
11901 | |||
11902 | /***/ }), | ||
11903 | /* 101 */ | ||
11904 | /***/ (function(module, exports, __webpack_require__) { | ||
11905 | |||
11906 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
11907 | * Copyright 2013-present, Facebook, Inc. | ||
11908 | * All rights reserved. | ||
11909 | * | ||
11910 | * This source code is licensed under the BSD-style license found in the | ||
11911 | * LICENSE file in the root directory of this source tree. An additional grant | ||
11912 | * of patent rights can be found in the PATENTS file in the same directory. | ||
11913 | * | ||
11914 | */ | ||
11915 | |||
11916 | 'use strict'; | ||
11917 | |||
11918 | var CSSProperty = __webpack_require__(102); | ||
11919 | var ExecutionEnvironment = __webpack_require__(54); | ||
11920 | var ReactInstrumentation = __webpack_require__(68); | ||
11921 | |||
11922 | var camelizeStyleName = __webpack_require__(103); | ||
11923 | var dangerousStyleValue = __webpack_require__(105); | ||
11924 | var hyphenateStyleName = __webpack_require__(106); | ||
11925 | var memoizeStringOnly = __webpack_require__(108); | ||
11926 | var warning = __webpack_require__(13); | ||
11927 | |||
11928 | var processStyleName = memoizeStringOnly(function (styleName) { | ||
11929 | return hyphenateStyleName(styleName); | ||
11930 | }); | ||
11931 | |||
11932 | var hasShorthandPropertyBug = false; | ||
11933 | var styleFloatAccessor = 'cssFloat'; | ||
11934 | if (ExecutionEnvironment.canUseDOM) { | ||
11935 | var tempStyle = document.createElement('div').style; | ||
11936 | try { | ||
11937 | // IE8 throws "Invalid argument." if resetting shorthand style properties. | ||
11938 | tempStyle.font = ''; | ||
11939 | } catch (e) { | ||
11940 | hasShorthandPropertyBug = true; | ||
11941 | } | ||
11942 | // IE8 only supports accessing cssFloat (standard) as styleFloat | ||
11943 | if (document.documentElement.style.cssFloat === undefined) { | ||
11944 | styleFloatAccessor = 'styleFloat'; | ||
11945 | } | ||
11946 | } | ||
11947 | |||
11948 | if (process.env.NODE_ENV !== 'production') { | ||
11949 | // 'msTransform' is correct, but the other prefixes should be capitalized | ||
11950 | var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/; | ||
11951 | |||
11952 | // style values shouldn't contain a semicolon | ||
11953 | var badStyleValueWithSemicolonPattern = /;\s*$/; | ||
11954 | |||
11955 | var warnedStyleNames = {}; | ||
11956 | var warnedStyleValues = {}; | ||
11957 | var warnedForNaNValue = false; | ||
11958 | |||
11959 | var warnHyphenatedStyleName = function (name, owner) { | ||
11960 | if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) { | ||
11961 | return; | ||
11962 | } | ||
11963 | |||
11964 | warnedStyleNames[name] = true; | ||
11965 | process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0; | ||
11966 | }; | ||
11967 | |||
11968 | var warnBadVendoredStyleName = function (name, owner) { | ||
11969 | if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) { | ||
11970 | return; | ||
11971 | } | ||
11972 | |||
11973 | warnedStyleNames[name] = true; | ||
11974 | process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0; | ||
11975 | }; | ||
11976 | |||
11977 | var warnStyleValueWithSemicolon = function (name, value, owner) { | ||
11978 | if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) { | ||
11979 | return; | ||
11980 | } | ||
11981 | |||
11982 | warnedStyleValues[value] = true; | ||
11983 | process.env.NODE_ENV !== 'production' ? warning(false, 'Style property values shouldn\'t contain a semicolon.%s ' + 'Try "%s: %s" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0; | ||
11984 | }; | ||
11985 | |||
11986 | var warnStyleValueIsNaN = function (name, value, owner) { | ||
11987 | if (warnedForNaNValue) { | ||
11988 | return; | ||
11989 | } | ||
11990 | |||
11991 | warnedForNaNValue = true; | ||
11992 | process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0; | ||
11993 | }; | ||
11994 | |||
11995 | var checkRenderMessage = function (owner) { | ||
11996 | if (owner) { | ||
11997 | var name = owner.getName(); | ||
11998 | if (name) { | ||
11999 | return ' Check the render method of `' + name + '`.'; | ||
12000 | } | ||
12001 | } | ||
12002 | return ''; | ||
12003 | }; | ||
12004 | |||
12005 | /** | ||
12006 | * @param {string} name | ||
12007 | * @param {*} value | ||
12008 | * @param {ReactDOMComponent} component | ||
12009 | */ | ||
12010 | var warnValidStyle = function (name, value, component) { | ||
12011 | var owner; | ||
12012 | if (component) { | ||
12013 | owner = component._currentElement._owner; | ||
12014 | } | ||
12015 | if (name.indexOf('-') > -1) { | ||
12016 | warnHyphenatedStyleName(name, owner); | ||
12017 | } else if (badVendoredStyleNamePattern.test(name)) { | ||
12018 | warnBadVendoredStyleName(name, owner); | ||
12019 | } else if (badStyleValueWithSemicolonPattern.test(value)) { | ||
12020 | warnStyleValueWithSemicolon(name, value, owner); | ||
12021 | } | ||
12022 | |||
12023 | if (typeof value === 'number' && isNaN(value)) { | ||
12024 | warnStyleValueIsNaN(name, value, owner); | ||
12025 | } | ||
12026 | }; | ||
12027 | } | ||
12028 | |||
12029 | /** | ||
12030 | * Operations for dealing with CSS properties. | ||
12031 | */ | ||
12032 | var CSSPropertyOperations = { | ||
12033 | |||
12034 | /** | ||
12035 | * Serializes a mapping of style properties for use as inline styles: | ||
12036 | * | ||
12037 | * > createMarkupForStyles({width: '200px', height: 0}) | ||
12038 | * "width:200px;height:0;" | ||
12039 | * | ||
12040 | * Undefined values are ignored so that declarative programming is easier. | ||
12041 | * The result should be HTML-escaped before insertion into the DOM. | ||
12042 | * | ||
12043 | * @param {object} styles | ||
12044 | * @param {ReactDOMComponent} component | ||
12045 | * @return {?string} | ||
12046 | */ | ||
12047 | createMarkupForStyles: function (styles, component) { | ||
12048 | var serialized = ''; | ||
12049 | for (var styleName in styles) { | ||
12050 | if (!styles.hasOwnProperty(styleName)) { | ||
12051 | continue; | ||
12052 | } | ||
12053 | var styleValue = styles[styleName]; | ||
12054 | if (process.env.NODE_ENV !== 'production') { | ||
12055 | warnValidStyle(styleName, styleValue, component); | ||
12056 | } | ||
12057 | if (styleValue != null) { | ||
12058 | serialized += processStyleName(styleName) + ':'; | ||
12059 | serialized += dangerousStyleValue(styleName, styleValue, component) + ';'; | ||
12060 | } | ||
12061 | } | ||
12062 | return serialized || null; | ||
12063 | }, | ||
12064 | |||
12065 | /** | ||
12066 | * Sets the value for multiple styles on a node. If a value is specified as | ||
12067 | * '' (empty string), the corresponding style property will be unset. | ||
12068 | * | ||
12069 | * @param {DOMElement} node | ||
12070 | * @param {object} styles | ||
12071 | * @param {ReactDOMComponent} component | ||
12072 | */ | ||
12073 | setValueForStyles: function (node, styles, component) { | ||
12074 | if (process.env.NODE_ENV !== 'production') { | ||
12075 | ReactInstrumentation.debugTool.onHostOperation({ | ||
12076 | instanceID: component._debugID, | ||
12077 | type: 'update styles', | ||
12078 | payload: styles | ||
12079 | }); | ||
12080 | } | ||
12081 | |||
12082 | var style = node.style; | ||
12083 | for (var styleName in styles) { | ||
12084 | if (!styles.hasOwnProperty(styleName)) { | ||
12085 | continue; | ||
12086 | } | ||
12087 | if (process.env.NODE_ENV !== 'production') { | ||
12088 | warnValidStyle(styleName, styles[styleName], component); | ||
12089 | } | ||
12090 | var styleValue = dangerousStyleValue(styleName, styles[styleName], component); | ||
12091 | if (styleName === 'float' || styleName === 'cssFloat') { | ||
12092 | styleName = styleFloatAccessor; | ||
12093 | } | ||
12094 | if (styleValue) { | ||
12095 | style[styleName] = styleValue; | ||
12096 | } else { | ||
12097 | var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName]; | ||
12098 | if (expansion) { | ||
12099 | // Shorthand property that IE8 won't like unsetting, so unset each | ||
12100 | // component to placate it | ||
12101 | for (var individualStyleName in expansion) { | ||
12102 | style[individualStyleName] = ''; | ||
12103 | } | ||
12104 | } else { | ||
12105 | style[styleName] = ''; | ||
12106 | } | ||
12107 | } | ||
12108 | } | ||
12109 | } | ||
12110 | |||
12111 | }; | ||
12112 | |||
12113 | module.exports = CSSPropertyOperations; | ||
12114 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
12115 | |||
12116 | /***/ }), | ||
12117 | /* 102 */ | ||
12118 | /***/ (function(module, exports) { | ||
12119 | |||
12120 | /** | ||
12121 | * Copyright 2013-present, Facebook, Inc. | ||
12122 | * All rights reserved. | ||
12123 | * | ||
12124 | * This source code is licensed under the BSD-style license found in the | ||
12125 | * LICENSE file in the root directory of this source tree. An additional grant | ||
12126 | * of patent rights can be found in the PATENTS file in the same directory. | ||
12127 | * | ||
12128 | */ | ||
12129 | |||
12130 | 'use strict'; | ||
12131 | |||
12132 | /** | ||
12133 | * CSS properties which accept numbers but are not in units of "px". | ||
12134 | */ | ||
12135 | |||
12136 | var isUnitlessNumber = { | ||
12137 | animationIterationCount: true, | ||
12138 | borderImageOutset: true, | ||
12139 | borderImageSlice: true, | ||
12140 | borderImageWidth: true, | ||
12141 | boxFlex: true, | ||
12142 | boxFlexGroup: true, | ||
12143 | boxOrdinalGroup: true, | ||
12144 | columnCount: true, | ||
12145 | flex: true, | ||
12146 | flexGrow: true, | ||
12147 | flexPositive: true, | ||
12148 | flexShrink: true, | ||
12149 | flexNegative: true, | ||
12150 | flexOrder: true, | ||
12151 | gridRow: true, | ||
12152 | gridColumn: true, | ||
12153 | fontWeight: true, | ||
12154 | lineClamp: true, | ||
12155 | lineHeight: true, | ||
12156 | opacity: true, | ||
12157 | order: true, | ||
12158 | orphans: true, | ||
12159 | tabSize: true, | ||
12160 | widows: true, | ||
12161 | zIndex: true, | ||
12162 | zoom: true, | ||
12163 | |||
12164 | // SVG-related properties | ||
12165 | fillOpacity: true, | ||
12166 | floodOpacity: true, | ||
12167 | stopOpacity: true, | ||
12168 | strokeDasharray: true, | ||
12169 | strokeDashoffset: true, | ||
12170 | strokeMiterlimit: true, | ||
12171 | strokeOpacity: true, | ||
12172 | strokeWidth: true | ||
12173 | }; | ||
12174 | |||
12175 | /** | ||
12176 | * @param {string} prefix vendor-specific prefix, eg: Webkit | ||
12177 | * @param {string} key style name, eg: transitionDuration | ||
12178 | * @return {string} style name prefixed with `prefix`, properly camelCased, eg: | ||
12179 | * WebkitTransitionDuration | ||
12180 | */ | ||
12181 | function prefixKey(prefix, key) { | ||
12182 | return prefix + key.charAt(0).toUpperCase() + key.substring(1); | ||
12183 | } | ||
12184 | |||
12185 | /** | ||
12186 | * Support style names that may come passed in prefixed by adding permutations | ||
12187 | * of vendor prefixes. | ||
12188 | */ | ||
12189 | var prefixes = ['Webkit', 'ms', 'Moz', 'O']; | ||
12190 | |||
12191 | // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an | ||
12192 | // infinite loop, because it iterates over the newly added props too. | ||
12193 | Object.keys(isUnitlessNumber).forEach(function (prop) { | ||
12194 | prefixes.forEach(function (prefix) { | ||
12195 | isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop]; | ||
12196 | }); | ||
12197 | }); | ||
12198 | |||
12199 | /** | ||
12200 | * Most style properties can be unset by doing .style[prop] = '' but IE8 | ||
12201 | * doesn't like doing that with shorthand properties so for the properties that | ||
12202 | * IE8 breaks on, which are listed here, we instead unset each of the | ||
12203 | * individual properties. See http://bugs.jquery.com/ticket/12385. | ||
12204 | * The 4-value 'clock' properties like margin, padding, border-width seem to | ||
12205 | * behave without any problems. Curiously, list-style works too without any | ||
12206 | * special prodding. | ||
12207 | */ | ||
12208 | var shorthandPropertyExpansions = { | ||
12209 | background: { | ||
12210 | backgroundAttachment: true, | ||
12211 | backgroundColor: true, | ||
12212 | backgroundImage: true, | ||
12213 | backgroundPositionX: true, | ||
12214 | backgroundPositionY: true, | ||
12215 | backgroundRepeat: true | ||
12216 | }, | ||
12217 | backgroundPosition: { | ||
12218 | backgroundPositionX: true, | ||
12219 | backgroundPositionY: true | ||
12220 | }, | ||
12221 | border: { | ||
12222 | borderWidth: true, | ||
12223 | borderStyle: true, | ||
12224 | borderColor: true | ||
12225 | }, | ||
12226 | borderBottom: { | ||
12227 | borderBottomWidth: true, | ||
12228 | borderBottomStyle: true, | ||
12229 | borderBottomColor: true | ||
12230 | }, | ||
12231 | borderLeft: { | ||
12232 | borderLeftWidth: true, | ||
12233 | borderLeftStyle: true, | ||
12234 | borderLeftColor: true | ||
12235 | }, | ||
12236 | borderRight: { | ||
12237 | borderRightWidth: true, | ||
12238 | borderRightStyle: true, | ||
12239 | borderRightColor: true | ||
12240 | }, | ||
12241 | borderTop: { | ||
12242 | borderTopWidth: true, | ||
12243 | borderTopStyle: true, | ||
12244 | borderTopColor: true | ||
12245 | }, | ||
12246 | font: { | ||
12247 | fontStyle: true, | ||
12248 | fontVariant: true, | ||
12249 | fontWeight: true, | ||
12250 | fontSize: true, | ||
12251 | lineHeight: true, | ||
12252 | fontFamily: true | ||
12253 | }, | ||
12254 | outline: { | ||
12255 | outlineWidth: true, | ||
12256 | outlineStyle: true, | ||
12257 | outlineColor: true | ||
12258 | } | ||
12259 | }; | ||
12260 | |||
12261 | var CSSProperty = { | ||
12262 | isUnitlessNumber: isUnitlessNumber, | ||
12263 | shorthandPropertyExpansions: shorthandPropertyExpansions | ||
12264 | }; | ||
12265 | |||
12266 | module.exports = CSSProperty; | ||
12267 | |||
12268 | /***/ }), | ||
12269 | /* 103 */ | ||
12270 | /***/ (function(module, exports, __webpack_require__) { | ||
12271 | |||
12272 | /** | ||
12273 | * Copyright (c) 2013-present, Facebook, Inc. | ||
12274 | * All rights reserved. | ||
12275 | * | ||
12276 | * This source code is licensed under the BSD-style license found in the | ||
12277 | * LICENSE file in the root directory of this source tree. An additional grant | ||
12278 | * of patent rights can be found in the PATENTS file in the same directory. | ||
12279 | * | ||
12280 | * @typechecks | ||
12281 | */ | ||
12282 | |||
12283 | 'use strict'; | ||
12284 | |||
12285 | var camelize = __webpack_require__(104); | ||
12286 | |||
12287 | var msPattern = /^-ms-/; | ||
12288 | |||
12289 | /** | ||
12290 | * Camelcases a hyphenated CSS property name, for example: | ||
12291 | * | ||
12292 | * > camelizeStyleName('background-color') | ||
12293 | * < "backgroundColor" | ||
12294 | * > camelizeStyleName('-moz-transition') | ||
12295 | * < "MozTransition" | ||
12296 | * > camelizeStyleName('-ms-transition') | ||
12297 | * < "msTransition" | ||
12298 | * | ||
12299 | * As Andi Smith suggests | ||
12300 | * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix | ||
12301 | * is converted to lowercase `ms`. | ||
12302 | * | ||
12303 | * @param {string} string | ||
12304 | * @return {string} | ||
12305 | */ | ||
12306 | function camelizeStyleName(string) { | ||
12307 | return camelize(string.replace(msPattern, 'ms-')); | ||
12308 | } | ||
12309 | |||
12310 | module.exports = camelizeStyleName; | ||
12311 | |||
12312 | /***/ }), | ||
12313 | /* 104 */ | ||
12314 | /***/ (function(module, exports) { | ||
12315 | |||
12316 | "use strict"; | ||
12317 | |||
12318 | /** | ||
12319 | * Copyright (c) 2013-present, Facebook, Inc. | ||
12320 | * All rights reserved. | ||
12321 | * | ||
12322 | * This source code is licensed under the BSD-style license found in the | ||
12323 | * LICENSE file in the root directory of this source tree. An additional grant | ||
12324 | * of patent rights can be found in the PATENTS file in the same directory. | ||
12325 | * | ||
12326 | * @typechecks | ||
12327 | */ | ||
12328 | |||
12329 | var _hyphenPattern = /-(.)/g; | ||
12330 | |||
12331 | /** | ||
12332 | * Camelcases a hyphenated string, for example: | ||
12333 | * | ||
12334 | * > camelize('background-color') | ||
12335 | * < "backgroundColor" | ||
12336 | * | ||
12337 | * @param {string} string | ||
12338 | * @return {string} | ||
12339 | */ | ||
12340 | function camelize(string) { | ||
12341 | return string.replace(_hyphenPattern, function (_, character) { | ||
12342 | return character.toUpperCase(); | ||
12343 | }); | ||
12344 | } | ||
12345 | |||
12346 | module.exports = camelize; | ||
12347 | |||
12348 | /***/ }), | ||
12349 | /* 105 */ | ||
12350 | /***/ (function(module, exports, __webpack_require__) { | ||
12351 | |||
12352 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
12353 | * Copyright 2013-present, Facebook, Inc. | ||
12354 | * All rights reserved. | ||
12355 | * | ||
12356 | * This source code is licensed under the BSD-style license found in the | ||
12357 | * LICENSE file in the root directory of this source tree. An additional grant | ||
12358 | * of patent rights can be found in the PATENTS file in the same directory. | ||
12359 | * | ||
12360 | */ | ||
12361 | |||
12362 | 'use strict'; | ||
12363 | |||
12364 | var CSSProperty = __webpack_require__(102); | ||
12365 | var warning = __webpack_require__(13); | ||
12366 | |||
12367 | var isUnitlessNumber = CSSProperty.isUnitlessNumber; | ||
12368 | var styleWarnings = {}; | ||
12369 | |||
12370 | /** | ||
12371 | * Convert a value into the proper css writable value. The style name `name` | ||
12372 | * should be logical (no hyphens), as specified | ||
12373 | * in `CSSProperty.isUnitlessNumber`. | ||
12374 | * | ||
12375 | * @param {string} name CSS property name such as `topMargin`. | ||
12376 | * @param {*} value CSS property value such as `10px`. | ||
12377 | * @param {ReactDOMComponent} component | ||
12378 | * @return {string} Normalized style value with dimensions applied. | ||
12379 | */ | ||
12380 | function dangerousStyleValue(name, value, component) { | ||
12381 | // Note that we've removed escapeTextForBrowser() calls here since the | ||
12382 | // whole string will be escaped when the attribute is injected into | ||
12383 | // the markup. If you provide unsafe user data here they can inject | ||
12384 | // arbitrary CSS which may be problematic (I couldn't repro this): | ||
12385 | // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet | ||
12386 | // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/ | ||
12387 | // This is not an XSS hole but instead a potential CSS injection issue | ||
12388 | // which has lead to a greater discussion about how we're going to | ||
12389 | // trust URLs moving forward. See #2115901 | ||
12390 | |||
12391 | var isEmpty = value == null || typeof value === 'boolean' || value === ''; | ||
12392 | if (isEmpty) { | ||
12393 | return ''; | ||
12394 | } | ||
12395 | |||
12396 | var isNonNumeric = isNaN(value); | ||
12397 | if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) { | ||
12398 | return '' + value; // cast to string | ||
12399 | } | ||
12400 | |||
12401 | if (typeof value === 'string') { | ||
12402 | if (process.env.NODE_ENV !== 'production') { | ||
12403 | // Allow '0' to pass through without warning. 0 is already special and | ||
12404 | // doesn't require units, so we don't need to warn about it. | ||
12405 | if (component && value !== '0') { | ||
12406 | var owner = component._currentElement._owner; | ||
12407 | var ownerName = owner ? owner.getName() : null; | ||
12408 | if (ownerName && !styleWarnings[ownerName]) { | ||
12409 | styleWarnings[ownerName] = {}; | ||
12410 | } | ||
12411 | var warned = false; | ||
12412 | if (ownerName) { | ||
12413 | var warnings = styleWarnings[ownerName]; | ||
12414 | warned = warnings[name]; | ||
12415 | if (!warned) { | ||
12416 | warnings[name] = true; | ||
12417 | } | ||
12418 | } | ||
12419 | if (!warned) { | ||
12420 | process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0; | ||
12421 | } | ||
12422 | } | ||
12423 | } | ||
12424 | value = value.trim(); | ||
12425 | } | ||
12426 | return value + 'px'; | ||
12427 | } | ||
12428 | |||
12429 | module.exports = dangerousStyleValue; | ||
12430 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
12431 | |||
12432 | /***/ }), | ||
12433 | /* 106 */ | ||
12434 | /***/ (function(module, exports, __webpack_require__) { | ||
12435 | |||
12436 | /** | ||
12437 | * Copyright (c) 2013-present, Facebook, Inc. | ||
12438 | * All rights reserved. | ||
12439 | * | ||
12440 | * This source code is licensed under the BSD-style license found in the | ||
12441 | * LICENSE file in the root directory of this source tree. An additional grant | ||
12442 | * of patent rights can be found in the PATENTS file in the same directory. | ||
12443 | * | ||
12444 | * @typechecks | ||
12445 | */ | ||
12446 | |||
12447 | 'use strict'; | ||
12448 | |||
12449 | var hyphenate = __webpack_require__(107); | ||
12450 | |||
12451 | var msPattern = /^ms-/; | ||
12452 | |||
12453 | /** | ||
12454 | * Hyphenates a camelcased CSS property name, for example: | ||
12455 | * | ||
12456 | * > hyphenateStyleName('backgroundColor') | ||
12457 | * < "background-color" | ||
12458 | * > hyphenateStyleName('MozTransition') | ||
12459 | * < "-moz-transition" | ||
12460 | * > hyphenateStyleName('msTransition') | ||
12461 | * < "-ms-transition" | ||
12462 | * | ||
12463 | * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix | ||
12464 | * is converted to `-ms-`. | ||
12465 | * | ||
12466 | * @param {string} string | ||
12467 | * @return {string} | ||
12468 | */ | ||
12469 | function hyphenateStyleName(string) { | ||
12470 | return hyphenate(string).replace(msPattern, '-ms-'); | ||
12471 | } | ||
12472 | |||
12473 | module.exports = hyphenateStyleName; | ||
12474 | |||
12475 | /***/ }), | ||
12476 | /* 107 */ | ||
12477 | /***/ (function(module, exports) { | ||
12478 | |||
12479 | 'use strict'; | ||
12480 | |||
12481 | /** | ||
12482 | * Copyright (c) 2013-present, Facebook, Inc. | ||
12483 | * All rights reserved. | ||
12484 | * | ||
12485 | * This source code is licensed under the BSD-style license found in the | ||
12486 | * LICENSE file in the root directory of this source tree. An additional grant | ||
12487 | * of patent rights can be found in the PATENTS file in the same directory. | ||
12488 | * | ||
12489 | * @typechecks | ||
12490 | */ | ||
12491 | |||
12492 | var _uppercasePattern = /([A-Z])/g; | ||
12493 | |||
12494 | /** | ||
12495 | * Hyphenates a camelcased string, for example: | ||
12496 | * | ||
12497 | * > hyphenate('backgroundColor') | ||
12498 | * < "background-color" | ||
12499 | * | ||
12500 | * For CSS style names, use `hyphenateStyleName` instead which works properly | ||
12501 | * with all vendor prefixes, including `ms`. | ||
12502 | * | ||
12503 | * @param {string} string | ||
12504 | * @return {string} | ||
12505 | */ | ||
12506 | function hyphenate(string) { | ||
12507 | return string.replace(_uppercasePattern, '-$1').toLowerCase(); | ||
12508 | } | ||
12509 | |||
12510 | module.exports = hyphenate; | ||
12511 | |||
12512 | /***/ }), | ||
12513 | /* 108 */ | ||
12514 | /***/ (function(module, exports) { | ||
12515 | |||
12516 | /** | ||
12517 | * Copyright (c) 2013-present, Facebook, Inc. | ||
12518 | * All rights reserved. | ||
12519 | * | ||
12520 | * This source code is licensed under the BSD-style license found in the | ||
12521 | * LICENSE file in the root directory of this source tree. An additional grant | ||
12522 | * of patent rights can be found in the PATENTS file in the same directory. | ||
12523 | * | ||
12524 | * | ||
12525 | * @typechecks static-only | ||
12526 | */ | ||
12527 | |||
12528 | 'use strict'; | ||
12529 | |||
12530 | /** | ||
12531 | * Memoizes the return value of a function that accepts one string argument. | ||
12532 | */ | ||
12533 | |||
12534 | function memoizeStringOnly(callback) { | ||
12535 | var cache = {}; | ||
12536 | return function (string) { | ||
12537 | if (!cache.hasOwnProperty(string)) { | ||
12538 | cache[string] = callback.call(this, string); | ||
12539 | } | ||
12540 | return cache[string]; | ||
12541 | }; | ||
12542 | } | ||
12543 | |||
12544 | module.exports = memoizeStringOnly; | ||
12545 | |||
12546 | /***/ }), | ||
12547 | /* 109 */ | ||
12548 | /***/ (function(module, exports, __webpack_require__) { | ||
12549 | |||
12550 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
12551 | * Copyright 2013-present, Facebook, Inc. | ||
12552 | * All rights reserved. | ||
12553 | * | ||
12554 | * This source code is licensed under the BSD-style license found in the | ||
12555 | * LICENSE file in the root directory of this source tree. An additional grant | ||
12556 | * of patent rights can be found in the PATENTS file in the same directory. | ||
12557 | * | ||
12558 | */ | ||
12559 | |||
12560 | 'use strict'; | ||
12561 | |||
12562 | var DOMProperty = __webpack_require__(42); | ||
12563 | var ReactDOMComponentTree = __webpack_require__(40); | ||
12564 | var ReactInstrumentation = __webpack_require__(68); | ||
12565 | |||
12566 | var quoteAttributeValueForBrowser = __webpack_require__(110); | ||
12567 | var warning = __webpack_require__(13); | ||
12568 | |||
12569 | var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$'); | ||
12570 | var illegalAttributeNameCache = {}; | ||
12571 | var validatedAttributeNameCache = {}; | ||
12572 | |||
12573 | function isAttributeNameSafe(attributeName) { | ||
12574 | if (validatedAttributeNameCache.hasOwnProperty(attributeName)) { | ||
12575 | return true; | ||
12576 | } | ||
12577 | if (illegalAttributeNameCache.hasOwnProperty(attributeName)) { | ||
12578 | return false; | ||
12579 | } | ||
12580 | if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) { | ||
12581 | validatedAttributeNameCache[attributeName] = true; | ||
12582 | return true; | ||
12583 | } | ||
12584 | illegalAttributeNameCache[attributeName] = true; | ||
12585 | process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0; | ||
12586 | return false; | ||
12587 | } | ||
12588 | |||
12589 | function shouldIgnoreValue(propertyInfo, value) { | ||
12590 | return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false; | ||
12591 | } | ||
12592 | |||
12593 | /** | ||
12594 | * Operations for dealing with DOM properties. | ||
12595 | */ | ||
12596 | var DOMPropertyOperations = { | ||
12597 | |||
12598 | /** | ||
12599 | * Creates markup for the ID property. | ||
12600 | * | ||
12601 | * @param {string} id Unescaped ID. | ||
12602 | * @return {string} Markup string. | ||
12603 | */ | ||
12604 | createMarkupForID: function (id) { | ||
12605 | return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id); | ||
12606 | }, | ||
12607 | |||
12608 | setAttributeForID: function (node, id) { | ||
12609 | node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id); | ||
12610 | }, | ||
12611 | |||
12612 | createMarkupForRoot: function () { | ||
12613 | return DOMProperty.ROOT_ATTRIBUTE_NAME + '=""'; | ||
12614 | }, | ||
12615 | |||
12616 | setAttributeForRoot: function (node) { | ||
12617 | node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, ''); | ||
12618 | }, | ||
12619 | |||
12620 | /** | ||
12621 | * Creates markup for a property. | ||
12622 | * | ||
12623 | * @param {string} name | ||
12624 | * @param {*} value | ||
12625 | * @return {?string} Markup string, or null if the property was invalid. | ||
12626 | */ | ||
12627 | createMarkupForProperty: function (name, value) { | ||
12628 | var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null; | ||
12629 | if (propertyInfo) { | ||
12630 | if (shouldIgnoreValue(propertyInfo, value)) { | ||
12631 | return ''; | ||
12632 | } | ||
12633 | var attributeName = propertyInfo.attributeName; | ||
12634 | if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) { | ||
12635 | return attributeName + '=""'; | ||
12636 | } | ||
12637 | return attributeName + '=' + quoteAttributeValueForBrowser(value); | ||
12638 | } else if (DOMProperty.isCustomAttribute(name)) { | ||
12639 | if (value == null) { | ||
12640 | return ''; | ||
12641 | } | ||
12642 | return name + '=' + quoteAttributeValueForBrowser(value); | ||
12643 | } | ||
12644 | return null; | ||
12645 | }, | ||
12646 | |||
12647 | /** | ||
12648 | * Creates markup for a custom property. | ||
12649 | * | ||
12650 | * @param {string} name | ||
12651 | * @param {*} value | ||
12652 | * @return {string} Markup string, or empty string if the property was invalid. | ||
12653 | */ | ||
12654 | createMarkupForCustomAttribute: function (name, value) { | ||
12655 | if (!isAttributeNameSafe(name) || value == null) { | ||
12656 | return ''; | ||
12657 | } | ||
12658 | return name + '=' + quoteAttributeValueForBrowser(value); | ||
12659 | }, | ||
12660 | |||
12661 | /** | ||
12662 | * Sets the value for a property on a node. | ||
12663 | * | ||
12664 | * @param {DOMElement} node | ||
12665 | * @param {string} name | ||
12666 | * @param {*} value | ||
12667 | */ | ||
12668 | setValueForProperty: function (node, name, value) { | ||
12669 | var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null; | ||
12670 | if (propertyInfo) { | ||
12671 | var mutationMethod = propertyInfo.mutationMethod; | ||
12672 | if (mutationMethod) { | ||
12673 | mutationMethod(node, value); | ||
12674 | } else if (shouldIgnoreValue(propertyInfo, value)) { | ||
12675 | this.deleteValueForProperty(node, name); | ||
12676 | return; | ||
12677 | } else if (propertyInfo.mustUseProperty) { | ||
12678 | // Contrary to `setAttribute`, object properties are properly | ||
12679 | // `toString`ed by IE8/9. | ||
12680 | node[propertyInfo.propertyName] = value; | ||
12681 | } else { | ||
12682 | var attributeName = propertyInfo.attributeName; | ||
12683 | var namespace = propertyInfo.attributeNamespace; | ||
12684 | // `setAttribute` with objects becomes only `[object]` in IE8/9, | ||
12685 | // ('' + value) makes it output the correct toString()-value. | ||
12686 | if (namespace) { | ||
12687 | node.setAttributeNS(namespace, attributeName, '' + value); | ||
12688 | } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) { | ||
12689 | node.setAttribute(attributeName, ''); | ||
12690 | } else { | ||
12691 | node.setAttribute(attributeName, '' + value); | ||
12692 | } | ||
12693 | } | ||
12694 | } else if (DOMProperty.isCustomAttribute(name)) { | ||
12695 | DOMPropertyOperations.setValueForAttribute(node, name, value); | ||
12696 | return; | ||
12697 | } | ||
12698 | |||
12699 | if (process.env.NODE_ENV !== 'production') { | ||
12700 | var payload = {}; | ||
12701 | payload[name] = value; | ||
12702 | ReactInstrumentation.debugTool.onHostOperation({ | ||
12703 | instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, | ||
12704 | type: 'update attribute', | ||
12705 | payload: payload | ||
12706 | }); | ||
12707 | } | ||
12708 | }, | ||
12709 | |||
12710 | setValueForAttribute: function (node, name, value) { | ||
12711 | if (!isAttributeNameSafe(name)) { | ||
12712 | return; | ||
12713 | } | ||
12714 | if (value == null) { | ||
12715 | node.removeAttribute(name); | ||
12716 | } else { | ||
12717 | node.setAttribute(name, '' + value); | ||
12718 | } | ||
12719 | |||
12720 | if (process.env.NODE_ENV !== 'production') { | ||
12721 | var payload = {}; | ||
12722 | payload[name] = value; | ||
12723 | ReactInstrumentation.debugTool.onHostOperation({ | ||
12724 | instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, | ||
12725 | type: 'update attribute', | ||
12726 | payload: payload | ||
12727 | }); | ||
12728 | } | ||
12729 | }, | ||
12730 | |||
12731 | /** | ||
12732 | * Deletes an attributes from a node. | ||
12733 | * | ||
12734 | * @param {DOMElement} node | ||
12735 | * @param {string} name | ||
12736 | */ | ||
12737 | deleteValueForAttribute: function (node, name) { | ||
12738 | node.removeAttribute(name); | ||
12739 | if (process.env.NODE_ENV !== 'production') { | ||
12740 | ReactInstrumentation.debugTool.onHostOperation({ | ||
12741 | instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, | ||
12742 | type: 'remove attribute', | ||
12743 | payload: name | ||
12744 | }); | ||
12745 | } | ||
12746 | }, | ||
12747 | |||
12748 | /** | ||
12749 | * Deletes the value for a property on a node. | ||
12750 | * | ||
12751 | * @param {DOMElement} node | ||
12752 | * @param {string} name | ||
12753 | */ | ||
12754 | deleteValueForProperty: function (node, name) { | ||
12755 | var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null; | ||
12756 | if (propertyInfo) { | ||
12757 | var mutationMethod = propertyInfo.mutationMethod; | ||
12758 | if (mutationMethod) { | ||
12759 | mutationMethod(node, undefined); | ||
12760 | } else if (propertyInfo.mustUseProperty) { | ||
12761 | var propName = propertyInfo.propertyName; | ||
12762 | if (propertyInfo.hasBooleanValue) { | ||
12763 | node[propName] = false; | ||
12764 | } else { | ||
12765 | node[propName] = ''; | ||
12766 | } | ||
12767 | } else { | ||
12768 | node.removeAttribute(propertyInfo.attributeName); | ||
12769 | } | ||
12770 | } else if (DOMProperty.isCustomAttribute(name)) { | ||
12771 | node.removeAttribute(name); | ||
12772 | } | ||
12773 | |||
12774 | if (process.env.NODE_ENV !== 'production') { | ||
12775 | ReactInstrumentation.debugTool.onHostOperation({ | ||
12776 | instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID, | ||
12777 | type: 'remove attribute', | ||
12778 | payload: name | ||
12779 | }); | ||
12780 | } | ||
12781 | } | ||
12782 | |||
12783 | }; | ||
12784 | |||
12785 | module.exports = DOMPropertyOperations; | ||
12786 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
12787 | |||
12788 | /***/ }), | ||
12789 | /* 110 */ | ||
12790 | /***/ (function(module, exports, __webpack_require__) { | ||
12791 | |||
12792 | /** | ||
12793 | * Copyright 2013-present, Facebook, Inc. | ||
12794 | * All rights reserved. | ||
12795 | * | ||
12796 | * This source code is licensed under the BSD-style license found in the | ||
12797 | * LICENSE file in the root directory of this source tree. An additional grant | ||
12798 | * of patent rights can be found in the PATENTS file in the same directory. | ||
12799 | * | ||
12800 | */ | ||
12801 | |||
12802 | 'use strict'; | ||
12803 | |||
12804 | var escapeTextContentForBrowser = __webpack_require__(92); | ||
12805 | |||
12806 | /** | ||
12807 | * Escapes attribute value to prevent scripting attacks. | ||
12808 | * | ||
12809 | * @param {*} value Value to escape. | ||
12810 | * @return {string} An escaped string. | ||
12811 | */ | ||
12812 | function quoteAttributeValueForBrowser(value) { | ||
12813 | return '"' + escapeTextContentForBrowser(value) + '"'; | ||
12814 | } | ||
12815 | |||
12816 | module.exports = quoteAttributeValueForBrowser; | ||
12817 | |||
12818 | /***/ }), | ||
12819 | /* 111 */ | ||
12820 | /***/ (function(module, exports, __webpack_require__) { | ||
12821 | |||
12822 | /** | ||
12823 | * Copyright 2013-present, Facebook, Inc. | ||
12824 | * All rights reserved. | ||
12825 | * | ||
12826 | * This source code is licensed under the BSD-style license found in the | ||
12827 | * LICENSE file in the root directory of this source tree. An additional grant | ||
12828 | * of patent rights can be found in the PATENTS file in the same directory. | ||
12829 | * | ||
12830 | */ | ||
12831 | |||
12832 | 'use strict'; | ||
12833 | |||
12834 | var _assign = __webpack_require__(6); | ||
12835 | |||
12836 | var EventPluginRegistry = __webpack_require__(49); | ||
12837 | var ReactEventEmitterMixin = __webpack_require__(112); | ||
12838 | var ViewportMetrics = __webpack_require__(82); | ||
12839 | |||
12840 | var getVendorPrefixedEventName = __webpack_require__(113); | ||
12841 | var isEventSupported = __webpack_require__(76); | ||
12842 | |||
12843 | /** | ||
12844 | * Summary of `ReactBrowserEventEmitter` event handling: | ||
12845 | * | ||
12846 | * - Top-level delegation is used to trap most native browser events. This | ||
12847 | * may only occur in the main thread and is the responsibility of | ||
12848 | * ReactEventListener, which is injected and can therefore support pluggable | ||
12849 | * event sources. This is the only work that occurs in the main thread. | ||
12850 | * | ||
12851 | * - We normalize and de-duplicate events to account for browser quirks. This | ||
12852 | * may be done in the worker thread. | ||
12853 | * | ||
12854 | * - Forward these native events (with the associated top-level type used to | ||
12855 | * trap it) to `EventPluginHub`, which in turn will ask plugins if they want | ||
12856 | * to extract any synthetic events. | ||
12857 | * | ||
12858 | * - The `EventPluginHub` will then process each event by annotating them with | ||
12859 | * "dispatches", a sequence of listeners and IDs that care about that event. | ||
12860 | * | ||
12861 | * - The `EventPluginHub` then dispatches the events. | ||
12862 | * | ||
12863 | * Overview of React and the event system: | ||
12864 | * | ||
12865 | * +------------+ . | ||
12866 | * | DOM | . | ||
12867 | * +------------+ . | ||
12868 | * | . | ||
12869 | * v . | ||
12870 | * +------------+ . | ||
12871 | * | ReactEvent | . | ||
12872 | * | Listener | . | ||
12873 | * +------------+ . +-----------+ | ||
12874 | * | . +--------+|SimpleEvent| | ||
12875 | * | . | |Plugin | | ||
12876 | * +-----|------+ . v +-----------+ | ||
12877 | * | | | . +--------------+ +------------+ | ||
12878 | * | +-----------.--->|EventPluginHub| | Event | | ||
12879 | * | | . | | +-----------+ | Propagators| | ||
12880 | * | ReactEvent | . | | |TapEvent | |------------| | ||
12881 | * | Emitter | . | |<---+|Plugin | |other plugin| | ||
12882 | * | | . | | +-----------+ | utilities | | ||
12883 | * | +-----------.--->| | +------------+ | ||
12884 | * | | | . +--------------+ | ||
12885 | * +-----|------+ . ^ +-----------+ | ||
12886 | * | . | |Enter/Leave| | ||
12887 | * + . +-------+|Plugin | | ||
12888 | * +-------------+ . +-----------+ | ||
12889 | * | application | . | ||
12890 | * |-------------| . | ||
12891 | * | | . | ||
12892 | * | | . | ||
12893 | * +-------------+ . | ||
12894 | * . | ||
12895 | * React Core . General Purpose Event Plugin System | ||
12896 | */ | ||
12897 | |||
12898 | var hasEventPageXY; | ||
12899 | var alreadyListeningTo = {}; | ||
12900 | var isMonitoringScrollValue = false; | ||
12901 | var reactTopListenersCounter = 0; | ||
12902 | |||
12903 | // For events like 'submit' which don't consistently bubble (which we trap at a | ||
12904 | // lower node than `document`), binding at `document` would cause duplicate | ||
12905 | // events so we don't include them here | ||
12906 | var topEventMapping = { | ||
12907 | topAbort: 'abort', | ||
12908 | topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend', | ||
12909 | topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration', | ||
12910 | topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart', | ||
12911 | topBlur: 'blur', | ||
12912 | topCanPlay: 'canplay', | ||
12913 | topCanPlayThrough: 'canplaythrough', | ||
12914 | topChange: 'change', | ||
12915 | topClick: 'click', | ||
12916 | topCompositionEnd: 'compositionend', | ||
12917 | topCompositionStart: 'compositionstart', | ||
12918 | topCompositionUpdate: 'compositionupdate', | ||
12919 | topContextMenu: 'contextmenu', | ||
12920 | topCopy: 'copy', | ||
12921 | topCut: 'cut', | ||
12922 | topDoubleClick: 'dblclick', | ||
12923 | topDrag: 'drag', | ||
12924 | topDragEnd: 'dragend', | ||
12925 | topDragEnter: 'dragenter', | ||
12926 | topDragExit: 'dragexit', | ||
12927 | topDragLeave: 'dragleave', | ||
12928 | topDragOver: 'dragover', | ||
12929 | topDragStart: 'dragstart', | ||
12930 | topDrop: 'drop', | ||
12931 | topDurationChange: 'durationchange', | ||
12932 | topEmptied: 'emptied', | ||
12933 | topEncrypted: 'encrypted', | ||
12934 | topEnded: 'ended', | ||
12935 | topError: 'error', | ||
12936 | topFocus: 'focus', | ||
12937 | topInput: 'input', | ||
12938 | topKeyDown: 'keydown', | ||
12939 | topKeyPress: 'keypress', | ||
12940 | topKeyUp: 'keyup', | ||
12941 | topLoadedData: 'loadeddata', | ||
12942 | topLoadedMetadata: 'loadedmetadata', | ||
12943 | topLoadStart: 'loadstart', | ||
12944 | topMouseDown: 'mousedown', | ||
12945 | topMouseMove: 'mousemove', | ||
12946 | topMouseOut: 'mouseout', | ||
12947 | topMouseOver: 'mouseover', | ||
12948 | topMouseUp: 'mouseup', | ||
12949 | topPaste: 'paste', | ||
12950 | topPause: 'pause', | ||
12951 | topPlay: 'play', | ||
12952 | topPlaying: 'playing', | ||
12953 | topProgress: 'progress', | ||
12954 | topRateChange: 'ratechange', | ||
12955 | topScroll: 'scroll', | ||
12956 | topSeeked: 'seeked', | ||
12957 | topSeeking: 'seeking', | ||
12958 | topSelectionChange: 'selectionchange', | ||
12959 | topStalled: 'stalled', | ||
12960 | topSuspend: 'suspend', | ||
12961 | topTextInput: 'textInput', | ||
12962 | topTimeUpdate: 'timeupdate', | ||
12963 | topTouchCancel: 'touchcancel', | ||
12964 | topTouchEnd: 'touchend', | ||
12965 | topTouchMove: 'touchmove', | ||
12966 | topTouchStart: 'touchstart', | ||
12967 | topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend', | ||
12968 | topVolumeChange: 'volumechange', | ||
12969 | topWaiting: 'waiting', | ||
12970 | topWheel: 'wheel' | ||
12971 | }; | ||
12972 | |||
12973 | /** | ||
12974 | * To ensure no conflicts with other potential React instances on the page | ||
12975 | */ | ||
12976 | var topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2); | ||
12977 | |||
12978 | function getListeningForDocument(mountAt) { | ||
12979 | // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty` | ||
12980 | // directly. | ||
12981 | if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) { | ||
12982 | mountAt[topListenersIDKey] = reactTopListenersCounter++; | ||
12983 | alreadyListeningTo[mountAt[topListenersIDKey]] = {}; | ||
12984 | } | ||
12985 | return alreadyListeningTo[mountAt[topListenersIDKey]]; | ||
12986 | } | ||
12987 | |||
12988 | /** | ||
12989 | * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For | ||
12990 | * example: | ||
12991 | * | ||
12992 | * EventPluginHub.putListener('myID', 'onClick', myFunction); | ||
12993 | * | ||
12994 | * This would allocate a "registration" of `('onClick', myFunction)` on 'myID'. | ||
12995 | * | ||
12996 | * @internal | ||
12997 | */ | ||
12998 | var ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, { | ||
12999 | |||
13000 | /** | ||
13001 | * Injectable event backend | ||
13002 | */ | ||
13003 | ReactEventListener: null, | ||
13004 | |||
13005 | injection: { | ||
13006 | /** | ||
13007 | * @param {object} ReactEventListener | ||
13008 | */ | ||
13009 | injectReactEventListener: function (ReactEventListener) { | ||
13010 | ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel); | ||
13011 | ReactBrowserEventEmitter.ReactEventListener = ReactEventListener; | ||
13012 | } | ||
13013 | }, | ||
13014 | |||
13015 | /** | ||
13016 | * Sets whether or not any created callbacks should be enabled. | ||
13017 | * | ||
13018 | * @param {boolean} enabled True if callbacks should be enabled. | ||
13019 | */ | ||
13020 | setEnabled: function (enabled) { | ||
13021 | if (ReactBrowserEventEmitter.ReactEventListener) { | ||
13022 | ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled); | ||
13023 | } | ||
13024 | }, | ||
13025 | |||
13026 | /** | ||
13027 | * @return {boolean} True if callbacks are enabled. | ||
13028 | */ | ||
13029 | isEnabled: function () { | ||
13030 | return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled()); | ||
13031 | }, | ||
13032 | |||
13033 | /** | ||
13034 | * We listen for bubbled touch events on the document object. | ||
13035 | * | ||
13036 | * Firefox v8.01 (and possibly others) exhibited strange behavior when | ||
13037 | * mounting `onmousemove` events at some node that was not the document | ||
13038 | * element. The symptoms were that if your mouse is not moving over something | ||
13039 | * contained within that mount point (for example on the background) the | ||
13040 | * top-level listeners for `onmousemove` won't be called. However, if you | ||
13041 | * register the `mousemove` on the document object, then it will of course | ||
13042 | * catch all `mousemove`s. This along with iOS quirks, justifies restricting | ||
13043 | * top-level listeners to the document object only, at least for these | ||
13044 | * movement types of events and possibly all events. | ||
13045 | * | ||
13046 | * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html | ||
13047 | * | ||
13048 | * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but | ||
13049 | * they bubble to document. | ||
13050 | * | ||
13051 | * @param {string} registrationName Name of listener (e.g. `onClick`). | ||
13052 | * @param {object} contentDocumentHandle Document which owns the container | ||
13053 | */ | ||
13054 | listenTo: function (registrationName, contentDocumentHandle) { | ||
13055 | var mountAt = contentDocumentHandle; | ||
13056 | var isListening = getListeningForDocument(mountAt); | ||
13057 | var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName]; | ||
13058 | |||
13059 | for (var i = 0; i < dependencies.length; i++) { | ||
13060 | var dependency = dependencies[i]; | ||
13061 | if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) { | ||
13062 | if (dependency === 'topWheel') { | ||
13063 | if (isEventSupported('wheel')) { | ||
13064 | ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt); | ||
13065 | } else if (isEventSupported('mousewheel')) { | ||
13066 | ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt); | ||
13067 | } else { | ||
13068 | // Firefox needs to capture a different mouse scroll event. | ||
13069 | // @see http://www.quirksmode.org/dom/events/tests/scroll.html | ||
13070 | ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt); | ||
13071 | } | ||
13072 | } else if (dependency === 'topScroll') { | ||
13073 | |||
13074 | if (isEventSupported('scroll', true)) { | ||
13075 | ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt); | ||
13076 | } else { | ||
13077 | ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE); | ||
13078 | } | ||
13079 | } else if (dependency === 'topFocus' || dependency === 'topBlur') { | ||
13080 | |||
13081 | if (isEventSupported('focus', true)) { | ||
13082 | ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt); | ||
13083 | ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt); | ||
13084 | } else if (isEventSupported('focusin')) { | ||
13085 | // IE has `focusin` and `focusout` events which bubble. | ||
13086 | // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html | ||
13087 | ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt); | ||
13088 | ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt); | ||
13089 | } | ||
13090 | |||
13091 | // to make sure blur and focus event listeners are only attached once | ||
13092 | isListening.topBlur = true; | ||
13093 | isListening.topFocus = true; | ||
13094 | } else if (topEventMapping.hasOwnProperty(dependency)) { | ||
13095 | ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt); | ||
13096 | } | ||
13097 | |||
13098 | isListening[dependency] = true; | ||
13099 | } | ||
13100 | } | ||
13101 | }, | ||
13102 | |||
13103 | trapBubbledEvent: function (topLevelType, handlerBaseName, handle) { | ||
13104 | return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle); | ||
13105 | }, | ||
13106 | |||
13107 | trapCapturedEvent: function (topLevelType, handlerBaseName, handle) { | ||
13108 | return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle); | ||
13109 | }, | ||
13110 | |||
13111 | /** | ||
13112 | * Protect against document.createEvent() returning null | ||
13113 | * Some popup blocker extensions appear to do this: | ||
13114 | * https://github.com/facebook/react/issues/6887 | ||
13115 | */ | ||
13116 | supportsEventPageXY: function () { | ||
13117 | if (!document.createEvent) { | ||
13118 | return false; | ||
13119 | } | ||
13120 | var ev = document.createEvent('MouseEvent'); | ||
13121 | return ev != null && 'pageX' in ev; | ||
13122 | }, | ||
13123 | |||
13124 | /** | ||
13125 | * Listens to window scroll and resize events. We cache scroll values so that | ||
13126 | * application code can access them without triggering reflows. | ||
13127 | * | ||
13128 | * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when | ||
13129 | * pageX/pageY isn't supported (legacy browsers). | ||
13130 | * | ||
13131 | * NOTE: Scroll events do not bubble. | ||
13132 | * | ||
13133 | * @see http://www.quirksmode.org/dom/events/scroll.html | ||
13134 | */ | ||
13135 | ensureScrollValueMonitoring: function () { | ||
13136 | if (hasEventPageXY === undefined) { | ||
13137 | hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY(); | ||
13138 | } | ||
13139 | if (!hasEventPageXY && !isMonitoringScrollValue) { | ||
13140 | var refresh = ViewportMetrics.refreshScrollValues; | ||
13141 | ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh); | ||
13142 | isMonitoringScrollValue = true; | ||
13143 | } | ||
13144 | } | ||
13145 | |||
13146 | }); | ||
13147 | |||
13148 | module.exports = ReactBrowserEventEmitter; | ||
13149 | |||
13150 | /***/ }), | ||
13151 | /* 112 */ | ||
13152 | /***/ (function(module, exports, __webpack_require__) { | ||
13153 | |||
13154 | /** | ||
13155 | * Copyright 2013-present, Facebook, Inc. | ||
13156 | * All rights reserved. | ||
13157 | * | ||
13158 | * This source code is licensed under the BSD-style license found in the | ||
13159 | * LICENSE file in the root directory of this source tree. An additional grant | ||
13160 | * of patent rights can be found in the PATENTS file in the same directory. | ||
13161 | * | ||
13162 | */ | ||
13163 | |||
13164 | 'use strict'; | ||
13165 | |||
13166 | var EventPluginHub = __webpack_require__(48); | ||
13167 | |||
13168 | function runEventQueueInBatch(events) { | ||
13169 | EventPluginHub.enqueueEvents(events); | ||
13170 | EventPluginHub.processEventQueue(false); | ||
13171 | } | ||
13172 | |||
13173 | var ReactEventEmitterMixin = { | ||
13174 | |||
13175 | /** | ||
13176 | * Streams a fired top-level event to `EventPluginHub` where plugins have the | ||
13177 | * opportunity to create `ReactEvent`s to be dispatched. | ||
13178 | */ | ||
13179 | handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { | ||
13180 | var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget); | ||
13181 | runEventQueueInBatch(events); | ||
13182 | } | ||
13183 | }; | ||
13184 | |||
13185 | module.exports = ReactEventEmitterMixin; | ||
13186 | |||
13187 | /***/ }), | ||
13188 | /* 113 */ | ||
13189 | /***/ (function(module, exports, __webpack_require__) { | ||
13190 | |||
13191 | /** | ||
13192 | * Copyright 2013-present, Facebook, Inc. | ||
13193 | * All rights reserved. | ||
13194 | * | ||
13195 | * This source code is licensed under the BSD-style license found in the | ||
13196 | * LICENSE file in the root directory of this source tree. An additional grant | ||
13197 | * of patent rights can be found in the PATENTS file in the same directory. | ||
13198 | * | ||
13199 | */ | ||
13200 | |||
13201 | 'use strict'; | ||
13202 | |||
13203 | var ExecutionEnvironment = __webpack_require__(54); | ||
13204 | |||
13205 | /** | ||
13206 | * Generate a mapping of standard vendor prefixes using the defined style property and event name. | ||
13207 | * | ||
13208 | * @param {string} styleProp | ||
13209 | * @param {string} eventName | ||
13210 | * @returns {object} | ||
13211 | */ | ||
13212 | function makePrefixMap(styleProp, eventName) { | ||
13213 | var prefixes = {}; | ||
13214 | |||
13215 | prefixes[styleProp.toLowerCase()] = eventName.toLowerCase(); | ||
13216 | prefixes['Webkit' + styleProp] = 'webkit' + eventName; | ||
13217 | prefixes['Moz' + styleProp] = 'moz' + eventName; | ||
13218 | prefixes['ms' + styleProp] = 'MS' + eventName; | ||
13219 | prefixes['O' + styleProp] = 'o' + eventName.toLowerCase(); | ||
13220 | |||
13221 | return prefixes; | ||
13222 | } | ||
13223 | |||
13224 | /** | ||
13225 | * A list of event names to a configurable list of vendor prefixes. | ||
13226 | */ | ||
13227 | var vendorPrefixes = { | ||
13228 | animationend: makePrefixMap('Animation', 'AnimationEnd'), | ||
13229 | animationiteration: makePrefixMap('Animation', 'AnimationIteration'), | ||
13230 | animationstart: makePrefixMap('Animation', 'AnimationStart'), | ||
13231 | transitionend: makePrefixMap('Transition', 'TransitionEnd') | ||
13232 | }; | ||
13233 | |||
13234 | /** | ||
13235 | * Event names that have already been detected and prefixed (if applicable). | ||
13236 | */ | ||
13237 | var prefixedEventNames = {}; | ||
13238 | |||
13239 | /** | ||
13240 | * Element to check for prefixes on. | ||
13241 | */ | ||
13242 | var style = {}; | ||
13243 | |||
13244 | /** | ||
13245 | * Bootstrap if a DOM exists. | ||
13246 | */ | ||
13247 | if (ExecutionEnvironment.canUseDOM) { | ||
13248 | style = document.createElement('div').style; | ||
13249 | |||
13250 | // On some platforms, in particular some releases of Android 4.x, | ||
13251 | // the un-prefixed "animation" and "transition" properties are defined on the | ||
13252 | // style object but the events that fire will still be prefixed, so we need | ||
13253 | // to check if the un-prefixed events are usable, and if not remove them from the map. | ||
13254 | if (!('AnimationEvent' in window)) { | ||
13255 | delete vendorPrefixes.animationend.animation; | ||
13256 | delete vendorPrefixes.animationiteration.animation; | ||
13257 | delete vendorPrefixes.animationstart.animation; | ||
13258 | } | ||
13259 | |||
13260 | // Same as above | ||
13261 | if (!('TransitionEvent' in window)) { | ||
13262 | delete vendorPrefixes.transitionend.transition; | ||
13263 | } | ||
13264 | } | ||
13265 | |||
13266 | /** | ||
13267 | * Attempts to determine the correct vendor prefixed event name. | ||
13268 | * | ||
13269 | * @param {string} eventName | ||
13270 | * @returns {string} | ||
13271 | */ | ||
13272 | function getVendorPrefixedEventName(eventName) { | ||
13273 | if (prefixedEventNames[eventName]) { | ||
13274 | return prefixedEventNames[eventName]; | ||
13275 | } else if (!vendorPrefixes[eventName]) { | ||
13276 | return eventName; | ||
13277 | } | ||
13278 | |||
13279 | var prefixMap = vendorPrefixes[eventName]; | ||
13280 | |||
13281 | for (var styleProp in prefixMap) { | ||
13282 | if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) { | ||
13283 | return prefixedEventNames[eventName] = prefixMap[styleProp]; | ||
13284 | } | ||
13285 | } | ||
13286 | |||
13287 | return ''; | ||
13288 | } | ||
13289 | |||
13290 | module.exports = getVendorPrefixedEventName; | ||
13291 | |||
13292 | /***/ }), | ||
13293 | /* 114 */ | ||
13294 | /***/ (function(module, exports, __webpack_require__) { | ||
13295 | |||
13296 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
13297 | * Copyright 2013-present, Facebook, Inc. | ||
13298 | * All rights reserved. | ||
13299 | * | ||
13300 | * This source code is licensed under the BSD-style license found in the | ||
13301 | * LICENSE file in the root directory of this source tree. An additional grant | ||
13302 | * of patent rights can be found in the PATENTS file in the same directory. | ||
13303 | * | ||
13304 | */ | ||
13305 | |||
13306 | 'use strict'; | ||
13307 | |||
13308 | var _prodInvariant = __webpack_require__(41), | ||
13309 | _assign = __webpack_require__(6); | ||
13310 | |||
13311 | var DOMPropertyOperations = __webpack_require__(109); | ||
13312 | var LinkedValueUtils = __webpack_require__(115); | ||
13313 | var ReactDOMComponentTree = __webpack_require__(40); | ||
13314 | var ReactUpdates = __webpack_require__(62); | ||
13315 | |||
13316 | var invariant = __webpack_require__(10); | ||
13317 | var warning = __webpack_require__(13); | ||
13318 | |||
13319 | var didWarnValueLink = false; | ||
13320 | var didWarnCheckedLink = false; | ||
13321 | var didWarnValueDefaultValue = false; | ||
13322 | var didWarnCheckedDefaultChecked = false; | ||
13323 | var didWarnControlledToUncontrolled = false; | ||
13324 | var didWarnUncontrolledToControlled = false; | ||
13325 | |||
13326 | function forceUpdateIfMounted() { | ||
13327 | if (this._rootNodeID) { | ||
13328 | // DOM component is still mounted; update | ||
13329 | ReactDOMInput.updateWrapper(this); | ||
13330 | } | ||
13331 | } | ||
13332 | |||
13333 | function isControlled(props) { | ||
13334 | var usesChecked = props.type === 'checkbox' || props.type === 'radio'; | ||
13335 | return usesChecked ? props.checked != null : props.value != null; | ||
13336 | } | ||
13337 | |||
13338 | /** | ||
13339 | * Implements an <input> host component that allows setting these optional | ||
13340 | * props: `checked`, `value`, `defaultChecked`, and `defaultValue`. | ||
13341 | * | ||
13342 | * If `checked` or `value` are not supplied (or null/undefined), user actions | ||
13343 | * that affect the checked state or value will trigger updates to the element. | ||
13344 | * | ||
13345 | * If they are supplied (and not null/undefined), the rendered element will not | ||
13346 | * trigger updates to the element. Instead, the props must change in order for | ||
13347 | * the rendered element to be updated. | ||
13348 | * | ||
13349 | * The rendered element will be initialized as unchecked (or `defaultChecked`) | ||
13350 | * with an empty value (or `defaultValue`). | ||
13351 | * | ||
13352 | * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html | ||
13353 | */ | ||
13354 | var ReactDOMInput = { | ||
13355 | getHostProps: function (inst, props) { | ||
13356 | var value = LinkedValueUtils.getValue(props); | ||
13357 | var checked = LinkedValueUtils.getChecked(props); | ||
13358 | |||
13359 | var hostProps = _assign({ | ||
13360 | // Make sure we set .type before any other properties (setting .value | ||
13361 | // before .type means .value is lost in IE11 and below) | ||
13362 | type: undefined, | ||
13363 | // Make sure we set .step before .value (setting .value before .step | ||
13364 | // means .value is rounded on mount, based upon step precision) | ||
13365 | step: undefined, | ||
13366 | // Make sure we set .min & .max before .value (to ensure proper order | ||
13367 | // in corner cases such as min or max deriving from value, e.g. Issue #7170) | ||
13368 | min: undefined, | ||
13369 | max: undefined | ||
13370 | }, props, { | ||
13371 | defaultChecked: undefined, | ||
13372 | defaultValue: undefined, | ||
13373 | value: value != null ? value : inst._wrapperState.initialValue, | ||
13374 | checked: checked != null ? checked : inst._wrapperState.initialChecked, | ||
13375 | onChange: inst._wrapperState.onChange | ||
13376 | }); | ||
13377 | |||
13378 | return hostProps; | ||
13379 | }, | ||
13380 | |||
13381 | mountWrapper: function (inst, props) { | ||
13382 | if (process.env.NODE_ENV !== 'production') { | ||
13383 | LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner); | ||
13384 | |||
13385 | var owner = inst._currentElement._owner; | ||
13386 | |||
13387 | if (props.valueLink !== undefined && !didWarnValueLink) { | ||
13388 | process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0; | ||
13389 | didWarnValueLink = true; | ||
13390 | } | ||
13391 | if (props.checkedLink !== undefined && !didWarnCheckedLink) { | ||
13392 | process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0; | ||
13393 | didWarnCheckedLink = true; | ||
13394 | } | ||
13395 | if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) { | ||
13396 | process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0; | ||
13397 | didWarnCheckedDefaultChecked = true; | ||
13398 | } | ||
13399 | if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) { | ||
13400 | process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0; | ||
13401 | didWarnValueDefaultValue = true; | ||
13402 | } | ||
13403 | } | ||
13404 | |||
13405 | var defaultValue = props.defaultValue; | ||
13406 | inst._wrapperState = { | ||
13407 | initialChecked: props.checked != null ? props.checked : props.defaultChecked, | ||
13408 | initialValue: props.value != null ? props.value : defaultValue, | ||
13409 | listeners: null, | ||
13410 | onChange: _handleChange.bind(inst), | ||
13411 | controlled: isControlled(props) | ||
13412 | }; | ||
13413 | }, | ||
13414 | |||
13415 | updateWrapper: function (inst) { | ||
13416 | var props = inst._currentElement.props; | ||
13417 | |||
13418 | if (process.env.NODE_ENV !== 'production') { | ||
13419 | var controlled = isControlled(props); | ||
13420 | var owner = inst._currentElement._owner; | ||
13421 | |||
13422 | if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) { | ||
13423 | process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0; | ||
13424 | didWarnUncontrolledToControlled = true; | ||
13425 | } | ||
13426 | if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) { | ||
13427 | process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0; | ||
13428 | didWarnControlledToUncontrolled = true; | ||
13429 | } | ||
13430 | } | ||
13431 | |||
13432 | // TODO: Shouldn't this be getChecked(props)? | ||
13433 | var checked = props.checked; | ||
13434 | if (checked != null) { | ||
13435 | DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false); | ||
13436 | } | ||
13437 | |||
13438 | var node = ReactDOMComponentTree.getNodeFromInstance(inst); | ||
13439 | var value = LinkedValueUtils.getValue(props); | ||
13440 | if (value != null) { | ||
13441 | if (value === 0 && node.value === '') { | ||
13442 | node.value = '0'; | ||
13443 | // Note: IE9 reports a number inputs as 'text', so check props instead. | ||
13444 | } else if (props.type === 'number') { | ||
13445 | // Simulate `input.valueAsNumber`. IE9 does not support it | ||
13446 | var valueAsNumber = parseFloat(node.value, 10) || 0; | ||
13447 | |||
13448 | // eslint-disable-next-line | ||
13449 | if (value != valueAsNumber) { | ||
13450 | // Cast `value` to a string to ensure the value is set correctly. While | ||
13451 | // browsers typically do this as necessary, jsdom doesn't. | ||
13452 | node.value = '' + value; | ||
13453 | } | ||
13454 | // eslint-disable-next-line | ||
13455 | } else if (value != node.value) { | ||
13456 | // Cast `value` to a string to ensure the value is set correctly. While | ||
13457 | // browsers typically do this as necessary, jsdom doesn't. | ||
13458 | node.value = '' + value; | ||
13459 | } | ||
13460 | } else { | ||
13461 | if (props.value == null && props.defaultValue != null) { | ||
13462 | // In Chrome, assigning defaultValue to certain input types triggers input validation. | ||
13463 | // For number inputs, the display value loses trailing decimal points. For email inputs, | ||
13464 | // Chrome raises "The specified value <x> is not a valid email address". | ||
13465 | // | ||
13466 | // Here we check to see if the defaultValue has actually changed, avoiding these problems | ||
13467 | // when the user is inputting text | ||
13468 | // | ||
13469 | // https://github.com/facebook/react/issues/7253 | ||
13470 | if (node.defaultValue !== '' + props.defaultValue) { | ||
13471 | node.defaultValue = '' + props.defaultValue; | ||
13472 | } | ||
13473 | } | ||
13474 | if (props.checked == null && props.defaultChecked != null) { | ||
13475 | node.defaultChecked = !!props.defaultChecked; | ||
13476 | } | ||
13477 | } | ||
13478 | }, | ||
13479 | |||
13480 | postMountWrapper: function (inst) { | ||
13481 | var props = inst._currentElement.props; | ||
13482 | |||
13483 | // This is in postMount because we need access to the DOM node, which is not | ||
13484 | // available until after the component has mounted. | ||
13485 | var node = ReactDOMComponentTree.getNodeFromInstance(inst); | ||
13486 | |||
13487 | // Detach value from defaultValue. We won't do anything if we're working on | ||
13488 | // submit or reset inputs as those values & defaultValues are linked. They | ||
13489 | // are not resetable nodes so this operation doesn't matter and actually | ||
13490 | // removes browser-default values (eg "Submit Query") when no value is | ||
13491 | // provided. | ||
13492 | |||
13493 | switch (props.type) { | ||
13494 | case 'submit': | ||
13495 | case 'reset': | ||
13496 | break; | ||
13497 | case 'color': | ||
13498 | case 'date': | ||
13499 | case 'datetime': | ||
13500 | case 'datetime-local': | ||
13501 | case 'month': | ||
13502 | case 'time': | ||
13503 | case 'week': | ||
13504 | // This fixes the no-show issue on iOS Safari and Android Chrome: | ||
13505 | // https://github.com/facebook/react/issues/7233 | ||
13506 | node.value = ''; | ||
13507 | node.value = node.defaultValue; | ||
13508 | break; | ||
13509 | default: | ||
13510 | node.value = node.value; | ||
13511 | break; | ||
13512 | } | ||
13513 | |||
13514 | // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug | ||
13515 | // this is needed to work around a chrome bug where setting defaultChecked | ||
13516 | // will sometimes influence the value of checked (even after detachment). | ||
13517 | // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416 | ||
13518 | // We need to temporarily unset name to avoid disrupting radio button groups. | ||
13519 | var name = node.name; | ||
13520 | if (name !== '') { | ||
13521 | node.name = ''; | ||
13522 | } | ||
13523 | node.defaultChecked = !node.defaultChecked; | ||
13524 | node.defaultChecked = !node.defaultChecked; | ||
13525 | if (name !== '') { | ||
13526 | node.name = name; | ||
13527 | } | ||
13528 | } | ||
13529 | }; | ||
13530 | |||
13531 | function _handleChange(event) { | ||
13532 | var props = this._currentElement.props; | ||
13533 | |||
13534 | var returnValue = LinkedValueUtils.executeOnChange(props, event); | ||
13535 | |||
13536 | // Here we use asap to wait until all updates have propagated, which | ||
13537 | // is important when using controlled components within layers: | ||
13538 | // https://github.com/facebook/react/issues/1698 | ||
13539 | ReactUpdates.asap(forceUpdateIfMounted, this); | ||
13540 | |||
13541 | var name = props.name; | ||
13542 | if (props.type === 'radio' && name != null) { | ||
13543 | var rootNode = ReactDOMComponentTree.getNodeFromInstance(this); | ||
13544 | var queryRoot = rootNode; | ||
13545 | |||
13546 | while (queryRoot.parentNode) { | ||
13547 | queryRoot = queryRoot.parentNode; | ||
13548 | } | ||
13549 | |||
13550 | // If `rootNode.form` was non-null, then we could try `form.elements`, | ||
13551 | // but that sometimes behaves strangely in IE8. We could also try using | ||
13552 | // `form.getElementsByName`, but that will only return direct children | ||
13553 | // and won't include inputs that use the HTML5 `form=` attribute. Since | ||
13554 | // the input might not even be in a form, let's just use the global | ||
13555 | // `querySelectorAll` to ensure we don't miss anything. | ||
13556 | var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type="radio"]'); | ||
13557 | |||
13558 | for (var i = 0; i < group.length; i++) { | ||
13559 | var otherNode = group[i]; | ||
13560 | if (otherNode === rootNode || otherNode.form !== rootNode.form) { | ||
13561 | continue; | ||
13562 | } | ||
13563 | // This will throw if radio buttons rendered by different copies of React | ||
13564 | // and the same name are rendered into the same form (same as #1939). | ||
13565 | // That's probably okay; we don't support it just as we don't support | ||
13566 | // mixing React radio buttons with non-React ones. | ||
13567 | var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode); | ||
13568 | !otherInstance ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0; | ||
13569 | // If this is a controlled radio button group, forcing the input that | ||
13570 | // was previously checked to update will cause it to be come re-checked | ||
13571 | // as appropriate. | ||
13572 | ReactUpdates.asap(forceUpdateIfMounted, otherInstance); | ||
13573 | } | ||
13574 | } | ||
13575 | |||
13576 | return returnValue; | ||
13577 | } | ||
13578 | |||
13579 | module.exports = ReactDOMInput; | ||
13580 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
13581 | |||
13582 | /***/ }), | ||
13583 | /* 115 */ | ||
13584 | /***/ (function(module, exports, __webpack_require__) { | ||
13585 | |||
13586 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
13587 | * Copyright 2013-present, Facebook, Inc. | ||
13588 | * All rights reserved. | ||
13589 | * | ||
13590 | * This source code is licensed under the BSD-style license found in the | ||
13591 | * LICENSE file in the root directory of this source tree. An additional grant | ||
13592 | * of patent rights can be found in the PATENTS file in the same directory. | ||
13593 | * | ||
13594 | */ | ||
13595 | |||
13596 | 'use strict'; | ||
13597 | |||
13598 | var _prodInvariant = __webpack_require__(41); | ||
13599 | |||
13600 | var ReactPropTypesSecret = __webpack_require__(116); | ||
13601 | var propTypesFactory = __webpack_require__(32); | ||
13602 | |||
13603 | var React = __webpack_require__(4); | ||
13604 | var PropTypes = propTypesFactory(React.isValidElement); | ||
13605 | |||
13606 | var invariant = __webpack_require__(10); | ||
13607 | var warning = __webpack_require__(13); | ||
13608 | |||
13609 | var hasReadOnlyValue = { | ||
13610 | 'button': true, | ||
13611 | 'checkbox': true, | ||
13612 | 'image': true, | ||
13613 | 'hidden': true, | ||
13614 | 'radio': true, | ||
13615 | 'reset': true, | ||
13616 | 'submit': true | ||
13617 | }; | ||
13618 | |||
13619 | function _assertSingleLink(inputProps) { | ||
13620 | !(inputProps.checkedLink == null || inputProps.valueLink == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0; | ||
13621 | } | ||
13622 | function _assertValueLink(inputProps) { | ||
13623 | _assertSingleLink(inputProps); | ||
13624 | !(inputProps.value == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '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.') : _prodInvariant('88') : void 0; | ||
13625 | } | ||
13626 | |||
13627 | function _assertCheckedLink(inputProps) { | ||
13628 | _assertSingleLink(inputProps); | ||
13629 | !(inputProps.checked == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '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') : _prodInvariant('89') : void 0; | ||
13630 | } | ||
13631 | |||
13632 | var propTypes = { | ||
13633 | value: function (props, propName, componentName) { | ||
13634 | if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) { | ||
13635 | return null; | ||
13636 | } | ||
13637 | return 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`.'); | ||
13638 | }, | ||
13639 | checked: function (props, propName, componentName) { | ||
13640 | if (!props[propName] || props.onChange || props.readOnly || props.disabled) { | ||
13641 | return null; | ||
13642 | } | ||
13643 | return 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`.'); | ||
13644 | }, | ||
13645 | onChange: PropTypes.func | ||
13646 | }; | ||
13647 | |||
13648 | var loggedTypeFailures = {}; | ||
13649 | function getDeclarationErrorAddendum(owner) { | ||
13650 | if (owner) { | ||
13651 | var name = owner.getName(); | ||
13652 | if (name) { | ||
13653 | return ' Check the render method of `' + name + '`.'; | ||
13654 | } | ||
13655 | } | ||
13656 | return ''; | ||
13657 | } | ||
13658 | |||
13659 | /** | ||
13660 | * Provide a linked `value` attribute for controlled forms. You should not use | ||
13661 | * this outside of the ReactDOM controlled form components. | ||
13662 | */ | ||
13663 | var LinkedValueUtils = { | ||
13664 | checkPropTypes: function (tagName, props, owner) { | ||
13665 | for (var propName in propTypes) { | ||
13666 | if (propTypes.hasOwnProperty(propName)) { | ||
13667 | var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret); | ||
13668 | } | ||
13669 | if (error instanceof Error && !(error.message in loggedTypeFailures)) { | ||
13670 | // Only monitor this failure once because there tends to be a lot of the | ||
13671 | // same error. | ||
13672 | loggedTypeFailures[error.message] = true; | ||
13673 | |||
13674 | var addendum = getDeclarationErrorAddendum(owner); | ||
13675 | process.env.NODE_ENV !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0; | ||
13676 | } | ||
13677 | } | ||
13678 | }, | ||
13679 | |||
13680 | /** | ||
13681 | * @param {object} inputProps Props for form component | ||
13682 | * @return {*} current value of the input either from value prop or link. | ||
13683 | */ | ||
13684 | getValue: function (inputProps) { | ||
13685 | if (inputProps.valueLink) { | ||
13686 | _assertValueLink(inputProps); | ||
13687 | return inputProps.valueLink.value; | ||
13688 | } | ||
13689 | return inputProps.value; | ||
13690 | }, | ||
13691 | |||
13692 | /** | ||
13693 | * @param {object} inputProps Props for form component | ||
13694 | * @return {*} current checked status of the input either from checked prop | ||
13695 | * or link. | ||
13696 | */ | ||
13697 | getChecked: function (inputProps) { | ||
13698 | if (inputProps.checkedLink) { | ||
13699 | _assertCheckedLink(inputProps); | ||
13700 | return inputProps.checkedLink.value; | ||
13701 | } | ||
13702 | return inputProps.checked; | ||
13703 | }, | ||
13704 | |||
13705 | /** | ||
13706 | * @param {object} inputProps Props for form component | ||
13707 | * @param {SyntheticEvent} event change event to handle | ||
13708 | */ | ||
13709 | executeOnChange: function (inputProps, event) { | ||
13710 | if (inputProps.valueLink) { | ||
13711 | _assertValueLink(inputProps); | ||
13712 | return inputProps.valueLink.requestChange(event.target.value); | ||
13713 | } else if (inputProps.checkedLink) { | ||
13714 | _assertCheckedLink(inputProps); | ||
13715 | return inputProps.checkedLink.requestChange(event.target.checked); | ||
13716 | } else if (inputProps.onChange) { | ||
13717 | return inputProps.onChange.call(undefined, event); | ||
13718 | } | ||
13719 | } | ||
13720 | }; | ||
13721 | |||
13722 | module.exports = LinkedValueUtils; | ||
13723 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
13724 | |||
13725 | /***/ }), | ||
13726 | /* 116 */ | ||
13727 | 30, | ||
13728 | /* 117 */ | ||
13729 | /***/ (function(module, exports, __webpack_require__) { | ||
13730 | |||
13731 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
13732 | * Copyright 2013-present, Facebook, Inc. | ||
13733 | * All rights reserved. | ||
13734 | * | ||
13735 | * This source code is licensed under the BSD-style license found in the | ||
13736 | * LICENSE file in the root directory of this source tree. An additional grant | ||
13737 | * of patent rights can be found in the PATENTS file in the same directory. | ||
13738 | * | ||
13739 | */ | ||
13740 | |||
13741 | 'use strict'; | ||
13742 | |||
13743 | var _assign = __webpack_require__(6); | ||
13744 | |||
13745 | var React = __webpack_require__(4); | ||
13746 | var ReactDOMComponentTree = __webpack_require__(40); | ||
13747 | var ReactDOMSelect = __webpack_require__(118); | ||
13748 | |||
13749 | var warning = __webpack_require__(13); | ||
13750 | var didWarnInvalidOptionChildren = false; | ||
13751 | |||
13752 | function flattenChildren(children) { | ||
13753 | var content = ''; | ||
13754 | |||
13755 | // Flatten children and warn if they aren't strings or numbers; | ||
13756 | // invalid types are ignored. | ||
13757 | React.Children.forEach(children, function (child) { | ||
13758 | if (child == null) { | ||
13759 | return; | ||
13760 | } | ||
13761 | if (typeof child === 'string' || typeof child === 'number') { | ||
13762 | content += child; | ||
13763 | } else if (!didWarnInvalidOptionChildren) { | ||
13764 | didWarnInvalidOptionChildren = true; | ||
13765 | process.env.NODE_ENV !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0; | ||
13766 | } | ||
13767 | }); | ||
13768 | |||
13769 | return content; | ||
13770 | } | ||
13771 | |||
13772 | /** | ||
13773 | * Implements an <option> host component that warns when `selected` is set. | ||
13774 | */ | ||
13775 | var ReactDOMOption = { | ||
13776 | mountWrapper: function (inst, props, hostParent) { | ||
13777 | // TODO (yungsters): Remove support for `selected` in <option>. | ||
13778 | if (process.env.NODE_ENV !== 'production') { | ||
13779 | process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0; | ||
13780 | } | ||
13781 | |||
13782 | // Look up whether this option is 'selected' | ||
13783 | var selectValue = null; | ||
13784 | if (hostParent != null) { | ||
13785 | var selectParent = hostParent; | ||
13786 | |||
13787 | if (selectParent._tag === 'optgroup') { | ||
13788 | selectParent = selectParent._hostParent; | ||
13789 | } | ||
13790 | |||
13791 | if (selectParent != null && selectParent._tag === 'select') { | ||
13792 | selectValue = ReactDOMSelect.getSelectValueContext(selectParent); | ||
13793 | } | ||
13794 | } | ||
13795 | |||
13796 | // If the value is null (e.g., no specified value or after initial mount) | ||
13797 | // or missing (e.g., for <datalist>), we don't change props.selected | ||
13798 | var selected = null; | ||
13799 | if (selectValue != null) { | ||
13800 | var value; | ||
13801 | if (props.value != null) { | ||
13802 | value = props.value + ''; | ||
13803 | } else { | ||
13804 | value = flattenChildren(props.children); | ||
13805 | } | ||
13806 | selected = false; | ||
13807 | if (Array.isArray(selectValue)) { | ||
13808 | // multiple | ||
13809 | for (var i = 0; i < selectValue.length; i++) { | ||
13810 | if ('' + selectValue[i] === value) { | ||
13811 | selected = true; | ||
13812 | break; | ||
13813 | } | ||
13814 | } | ||
13815 | } else { | ||
13816 | selected = '' + selectValue === value; | ||
13817 | } | ||
13818 | } | ||
13819 | |||
13820 | inst._wrapperState = { selected: selected }; | ||
13821 | }, | ||
13822 | |||
13823 | postMountWrapper: function (inst) { | ||
13824 | // value="" should make a value attribute (#6219) | ||
13825 | var props = inst._currentElement.props; | ||
13826 | if (props.value != null) { | ||
13827 | var node = ReactDOMComponentTree.getNodeFromInstance(inst); | ||
13828 | node.setAttribute('value', props.value); | ||
13829 | } | ||
13830 | }, | ||
13831 | |||
13832 | getHostProps: function (inst, props) { | ||
13833 | var hostProps = _assign({ selected: undefined, children: undefined }, props); | ||
13834 | |||
13835 | // Read state only from initial mount because <select> updates value | ||
13836 | // manually; we need the initial state only for server rendering | ||
13837 | if (inst._wrapperState.selected != null) { | ||
13838 | hostProps.selected = inst._wrapperState.selected; | ||
13839 | } | ||
13840 | |||
13841 | var content = flattenChildren(props.children); | ||
13842 | |||
13843 | if (content) { | ||
13844 | hostProps.children = content; | ||
13845 | } | ||
13846 | |||
13847 | return hostProps; | ||
13848 | } | ||
13849 | |||
13850 | }; | ||
13851 | |||
13852 | module.exports = ReactDOMOption; | ||
13853 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
13854 | |||
13855 | /***/ }), | ||
13856 | /* 118 */ | ||
13857 | /***/ (function(module, exports, __webpack_require__) { | ||
13858 | |||
13859 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
13860 | * Copyright 2013-present, Facebook, Inc. | ||
13861 | * All rights reserved. | ||
13862 | * | ||
13863 | * This source code is licensed under the BSD-style license found in the | ||
13864 | * LICENSE file in the root directory of this source tree. An additional grant | ||
13865 | * of patent rights can be found in the PATENTS file in the same directory. | ||
13866 | * | ||
13867 | */ | ||
13868 | |||
13869 | 'use strict'; | ||
13870 | |||
13871 | var _assign = __webpack_require__(6); | ||
13872 | |||
13873 | var LinkedValueUtils = __webpack_require__(115); | ||
13874 | var ReactDOMComponentTree = __webpack_require__(40); | ||
13875 | var ReactUpdates = __webpack_require__(62); | ||
13876 | |||
13877 | var warning = __webpack_require__(13); | ||
13878 | |||
13879 | var didWarnValueLink = false; | ||
13880 | var didWarnValueDefaultValue = false; | ||
13881 | |||
13882 | function updateOptionsIfPendingUpdateAndMounted() { | ||
13883 | if (this._rootNodeID && this._wrapperState.pendingUpdate) { | ||
13884 | this._wrapperState.pendingUpdate = false; | ||
13885 | |||
13886 | var props = this._currentElement.props; | ||
13887 | var value = LinkedValueUtils.getValue(props); | ||
13888 | |||
13889 | if (value != null) { | ||
13890 | updateOptions(this, Boolean(props.multiple), value); | ||
13891 | } | ||
13892 | } | ||
13893 | } | ||
13894 | |||
13895 | function getDeclarationErrorAddendum(owner) { | ||
13896 | if (owner) { | ||
13897 | var name = owner.getName(); | ||
13898 | if (name) { | ||
13899 | return ' Check the render method of `' + name + '`.'; | ||
13900 | } | ||
13901 | } | ||
13902 | return ''; | ||
13903 | } | ||
13904 | |||
13905 | var valuePropNames = ['value', 'defaultValue']; | ||
13906 | |||
13907 | /** | ||
13908 | * Validation function for `value` and `defaultValue`. | ||
13909 | * @private | ||
13910 | */ | ||
13911 | function checkSelectPropTypes(inst, props) { | ||
13912 | var owner = inst._currentElement._owner; | ||
13913 | LinkedValueUtils.checkPropTypes('select', props, owner); | ||
13914 | |||
13915 | if (props.valueLink !== undefined && !didWarnValueLink) { | ||
13916 | process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0; | ||
13917 | didWarnValueLink = true; | ||
13918 | } | ||
13919 | |||
13920 | for (var i = 0; i < valuePropNames.length; i++) { | ||
13921 | var propName = valuePropNames[i]; | ||
13922 | if (props[propName] == null) { | ||
13923 | continue; | ||
13924 | } | ||
13925 | var isArray = Array.isArray(props[propName]); | ||
13926 | if (props.multiple && !isArray) { | ||
13927 | process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0; | ||
13928 | } else if (!props.multiple && isArray) { | ||
13929 | process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0; | ||
13930 | } | ||
13931 | } | ||
13932 | } | ||
13933 | |||
13934 | /** | ||
13935 | * @param {ReactDOMComponent} inst | ||
13936 | * @param {boolean} multiple | ||
13937 | * @param {*} propValue A stringable (with `multiple`, a list of stringables). | ||
13938 | * @private | ||
13939 | */ | ||
13940 | function updateOptions(inst, multiple, propValue) { | ||
13941 | var selectedValue, i; | ||
13942 | var options = ReactDOMComponentTree.getNodeFromInstance(inst).options; | ||
13943 | |||
13944 | if (multiple) { | ||
13945 | selectedValue = {}; | ||
13946 | for (i = 0; i < propValue.length; i++) { | ||
13947 | selectedValue['' + propValue[i]] = true; | ||
13948 | } | ||
13949 | for (i = 0; i < options.length; i++) { | ||
13950 | var selected = selectedValue.hasOwnProperty(options[i].value); | ||
13951 | if (options[i].selected !== selected) { | ||
13952 | options[i].selected = selected; | ||
13953 | } | ||
13954 | } | ||
13955 | } else { | ||
13956 | // Do not set `select.value` as exact behavior isn't consistent across all | ||
13957 | // browsers for all cases. | ||
13958 | selectedValue = '' + propValue; | ||
13959 | for (i = 0; i < options.length; i++) { | ||
13960 | if (options[i].value === selectedValue) { | ||
13961 | options[i].selected = true; | ||
13962 | return; | ||
13963 | } | ||
13964 | } | ||
13965 | if (options.length) { | ||
13966 | options[0].selected = true; | ||
13967 | } | ||
13968 | } | ||
13969 | } | ||
13970 | |||
13971 | /** | ||
13972 | * Implements a <select> host component that allows optionally setting the | ||
13973 | * props `value` and `defaultValue`. If `multiple` is false, the prop must be a | ||
13974 | * stringable. If `multiple` is true, the prop must be an array of stringables. | ||
13975 | * | ||
13976 | * If `value` is not supplied (or null/undefined), user actions that change the | ||
13977 | * selected option will trigger updates to the rendered options. | ||
13978 | * | ||
13979 | * If it is supplied (and not null/undefined), the rendered options will not | ||
13980 | * update in response to user actions. Instead, the `value` prop must change in | ||
13981 | * order for the rendered options to update. | ||
13982 | * | ||
13983 | * If `defaultValue` is provided, any options with the supplied values will be | ||
13984 | * selected. | ||
13985 | */ | ||
13986 | var ReactDOMSelect = { | ||
13987 | getHostProps: function (inst, props) { | ||
13988 | return _assign({}, props, { | ||
13989 | onChange: inst._wrapperState.onChange, | ||
13990 | value: undefined | ||
13991 | }); | ||
13992 | }, | ||
13993 | |||
13994 | mountWrapper: function (inst, props) { | ||
13995 | if (process.env.NODE_ENV !== 'production') { | ||
13996 | checkSelectPropTypes(inst, props); | ||
13997 | } | ||
13998 | |||
13999 | var value = LinkedValueUtils.getValue(props); | ||
14000 | inst._wrapperState = { | ||
14001 | pendingUpdate: false, | ||
14002 | initialValue: value != null ? value : props.defaultValue, | ||
14003 | listeners: null, | ||
14004 | onChange: _handleChange.bind(inst), | ||
14005 | wasMultiple: Boolean(props.multiple) | ||
14006 | }; | ||
14007 | |||
14008 | if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) { | ||
14009 | process.env.NODE_ENV !== 'production' ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0; | ||
14010 | didWarnValueDefaultValue = true; | ||
14011 | } | ||
14012 | }, | ||
14013 | |||
14014 | getSelectValueContext: function (inst) { | ||
14015 | // ReactDOMOption looks at this initial value so the initial generated | ||
14016 | // markup has correct `selected` attributes | ||
14017 | return inst._wrapperState.initialValue; | ||
14018 | }, | ||
14019 | |||
14020 | postUpdateWrapper: function (inst) { | ||
14021 | var props = inst._currentElement.props; | ||
14022 | |||
14023 | // After the initial mount, we control selected-ness manually so don't pass | ||
14024 | // this value down | ||
14025 | inst._wrapperState.initialValue = undefined; | ||
14026 | |||
14027 | var wasMultiple = inst._wrapperState.wasMultiple; | ||
14028 | inst._wrapperState.wasMultiple = Boolean(props.multiple); | ||
14029 | |||
14030 | var value = LinkedValueUtils.getValue(props); | ||
14031 | if (value != null) { | ||
14032 | inst._wrapperState.pendingUpdate = false; | ||
14033 | updateOptions(inst, Boolean(props.multiple), value); | ||
14034 | } else if (wasMultiple !== Boolean(props.multiple)) { | ||
14035 | // For simplicity, reapply `defaultValue` if `multiple` is toggled. | ||
14036 | if (props.defaultValue != null) { | ||
14037 | updateOptions(inst, Boolean(props.multiple), props.defaultValue); | ||
14038 | } else { | ||
14039 | // Revert the select back to its default unselected state. | ||
14040 | updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : ''); | ||
14041 | } | ||
14042 | } | ||
14043 | } | ||
14044 | }; | ||
14045 | |||
14046 | function _handleChange(event) { | ||
14047 | var props = this._currentElement.props; | ||
14048 | var returnValue = LinkedValueUtils.executeOnChange(props, event); | ||
14049 | |||
14050 | if (this._rootNodeID) { | ||
14051 | this._wrapperState.pendingUpdate = true; | ||
14052 | } | ||
14053 | ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this); | ||
14054 | return returnValue; | ||
14055 | } | ||
14056 | |||
14057 | module.exports = ReactDOMSelect; | ||
14058 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
14059 | |||
14060 | /***/ }), | ||
14061 | /* 119 */ | ||
14062 | /***/ (function(module, exports, __webpack_require__) { | ||
14063 | |||
14064 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
14065 | * Copyright 2013-present, Facebook, Inc. | ||
14066 | * All rights reserved. | ||
14067 | * | ||
14068 | * This source code is licensed under the BSD-style license found in the | ||
14069 | * LICENSE file in the root directory of this source tree. An additional grant | ||
14070 | * of patent rights can be found in the PATENTS file in the same directory. | ||
14071 | * | ||
14072 | */ | ||
14073 | |||
14074 | 'use strict'; | ||
14075 | |||
14076 | var _prodInvariant = __webpack_require__(41), | ||
14077 | _assign = __webpack_require__(6); | ||
14078 | |||
14079 | var LinkedValueUtils = __webpack_require__(115); | ||
14080 | var ReactDOMComponentTree = __webpack_require__(40); | ||
14081 | var ReactUpdates = __webpack_require__(62); | ||
14082 | |||
14083 | var invariant = __webpack_require__(10); | ||
14084 | var warning = __webpack_require__(13); | ||
14085 | |||
14086 | var didWarnValueLink = false; | ||
14087 | var didWarnValDefaultVal = false; | ||
14088 | |||
14089 | function forceUpdateIfMounted() { | ||
14090 | if (this._rootNodeID) { | ||
14091 | // DOM component is still mounted; update | ||
14092 | ReactDOMTextarea.updateWrapper(this); | ||
14093 | } | ||
14094 | } | ||
14095 | |||
14096 | /** | ||
14097 | * Implements a <textarea> host component that allows setting `value`, and | ||
14098 | * `defaultValue`. This differs from the traditional DOM API because value is | ||
14099 | * usually set as PCDATA children. | ||
14100 | * | ||
14101 | * If `value` is not supplied (or null/undefined), user actions that affect the | ||
14102 | * value will trigger updates to the element. | ||
14103 | * | ||
14104 | * If `value` is supplied (and not null/undefined), the rendered element will | ||
14105 | * not trigger updates to the element. Instead, the `value` prop must change in | ||
14106 | * order for the rendered element to be updated. | ||
14107 | * | ||
14108 | * The rendered element will be initialized with an empty value, the prop | ||
14109 | * `defaultValue` if specified, or the children content (deprecated). | ||
14110 | */ | ||
14111 | var ReactDOMTextarea = { | ||
14112 | getHostProps: function (inst, props) { | ||
14113 | !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0; | ||
14114 | |||
14115 | // Always set children to the same thing. In IE9, the selection range will | ||
14116 | // get reset if `textContent` is mutated. We could add a check in setTextContent | ||
14117 | // to only set the value if/when the value differs from the node value (which would | ||
14118 | // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution. | ||
14119 | // The value can be a boolean or object so that's why it's forced to be a string. | ||
14120 | var hostProps = _assign({}, props, { | ||
14121 | value: undefined, | ||
14122 | defaultValue: undefined, | ||
14123 | children: '' + inst._wrapperState.initialValue, | ||
14124 | onChange: inst._wrapperState.onChange | ||
14125 | }); | ||
14126 | |||
14127 | return hostProps; | ||
14128 | }, | ||
14129 | |||
14130 | mountWrapper: function (inst, props) { | ||
14131 | if (process.env.NODE_ENV !== 'production') { | ||
14132 | LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner); | ||
14133 | if (props.valueLink !== undefined && !didWarnValueLink) { | ||
14134 | process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0; | ||
14135 | didWarnValueLink = true; | ||
14136 | } | ||
14137 | if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) { | ||
14138 | process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0; | ||
14139 | didWarnValDefaultVal = true; | ||
14140 | } | ||
14141 | } | ||
14142 | |||
14143 | var value = LinkedValueUtils.getValue(props); | ||
14144 | var initialValue = value; | ||
14145 | |||
14146 | // Only bother fetching default value if we're going to use it | ||
14147 | if (value == null) { | ||
14148 | var defaultValue = props.defaultValue; | ||
14149 | // TODO (yungsters): Remove support for children content in <textarea>. | ||
14150 | var children = props.children; | ||
14151 | if (children != null) { | ||
14152 | if (process.env.NODE_ENV !== 'production') { | ||
14153 | process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0; | ||
14154 | } | ||
14155 | !(defaultValue == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0; | ||
14156 | if (Array.isArray(children)) { | ||
14157 | !(children.length <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0; | ||
14158 | children = children[0]; | ||
14159 | } | ||
14160 | |||
14161 | defaultValue = '' + children; | ||
14162 | } | ||
14163 | if (defaultValue == null) { | ||
14164 | defaultValue = ''; | ||
14165 | } | ||
14166 | initialValue = defaultValue; | ||
14167 | } | ||
14168 | |||
14169 | inst._wrapperState = { | ||
14170 | initialValue: '' + initialValue, | ||
14171 | listeners: null, | ||
14172 | onChange: _handleChange.bind(inst) | ||
14173 | }; | ||
14174 | }, | ||
14175 | |||
14176 | updateWrapper: function (inst) { | ||
14177 | var props = inst._currentElement.props; | ||
14178 | |||
14179 | var node = ReactDOMComponentTree.getNodeFromInstance(inst); | ||
14180 | var value = LinkedValueUtils.getValue(props); | ||
14181 | if (value != null) { | ||
14182 | // Cast `value` to a string to ensure the value is set correctly. While | ||
14183 | // browsers typically do this as necessary, jsdom doesn't. | ||
14184 | var newValue = '' + value; | ||
14185 | |||
14186 | // To avoid side effects (such as losing text selection), only set value if changed | ||
14187 | if (newValue !== node.value) { | ||
14188 | node.value = newValue; | ||
14189 | } | ||
14190 | if (props.defaultValue == null) { | ||
14191 | node.defaultValue = newValue; | ||
14192 | } | ||
14193 | } | ||
14194 | if (props.defaultValue != null) { | ||
14195 | node.defaultValue = props.defaultValue; | ||
14196 | } | ||
14197 | }, | ||
14198 | |||
14199 | postMountWrapper: function (inst) { | ||
14200 | // This is in postMount because we need access to the DOM node, which is not | ||
14201 | // available until after the component has mounted. | ||
14202 | var node = ReactDOMComponentTree.getNodeFromInstance(inst); | ||
14203 | var textContent = node.textContent; | ||
14204 | |||
14205 | // Only set node.value if textContent is equal to the expected | ||
14206 | // initial value. In IE10/IE11 there is a bug where the placeholder attribute | ||
14207 | // will populate textContent as well. | ||
14208 | // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/ | ||
14209 | if (textContent === inst._wrapperState.initialValue) { | ||
14210 | node.value = textContent; | ||
14211 | } | ||
14212 | } | ||
14213 | }; | ||
14214 | |||
14215 | function _handleChange(event) { | ||
14216 | var props = this._currentElement.props; | ||
14217 | var returnValue = LinkedValueUtils.executeOnChange(props, event); | ||
14218 | ReactUpdates.asap(forceUpdateIfMounted, this); | ||
14219 | return returnValue; | ||
14220 | } | ||
14221 | |||
14222 | module.exports = ReactDOMTextarea; | ||
14223 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
14224 | |||
14225 | /***/ }), | ||
14226 | /* 120 */ | ||
14227 | /***/ (function(module, exports, __webpack_require__) { | ||
14228 | |||
14229 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
14230 | * Copyright 2013-present, Facebook, Inc. | ||
14231 | * All rights reserved. | ||
14232 | * | ||
14233 | * This source code is licensed under the BSD-style license found in the | ||
14234 | * LICENSE file in the root directory of this source tree. An additional grant | ||
14235 | * of patent rights can be found in the PATENTS file in the same directory. | ||
14236 | * | ||
14237 | */ | ||
14238 | |||
14239 | 'use strict'; | ||
14240 | |||
14241 | var _prodInvariant = __webpack_require__(41); | ||
14242 | |||
14243 | var ReactComponentEnvironment = __webpack_require__(121); | ||
14244 | var ReactInstanceMap = __webpack_require__(122); | ||
14245 | var ReactInstrumentation = __webpack_require__(68); | ||
14246 | |||
14247 | var ReactCurrentOwner = __webpack_require__(12); | ||
14248 | var ReactReconciler = __webpack_require__(65); | ||
14249 | var ReactChildReconciler = __webpack_require__(123); | ||
14250 | |||
14251 | var emptyFunction = __webpack_require__(14); | ||
14252 | var flattenChildren = __webpack_require__(138); | ||
14253 | var invariant = __webpack_require__(10); | ||
14254 | |||
14255 | /** | ||
14256 | * Make an update for markup to be rendered and inserted at a supplied index. | ||
14257 | * | ||
14258 | * @param {string} markup Markup that renders into an element. | ||
14259 | * @param {number} toIndex Destination index. | ||
14260 | * @private | ||
14261 | */ | ||
14262 | function makeInsertMarkup(markup, afterNode, toIndex) { | ||
14263 | // NOTE: Null values reduce hidden classes. | ||
14264 | return { | ||
14265 | type: 'INSERT_MARKUP', | ||
14266 | content: markup, | ||
14267 | fromIndex: null, | ||
14268 | fromNode: null, | ||
14269 | toIndex: toIndex, | ||
14270 | afterNode: afterNode | ||
14271 | }; | ||
14272 | } | ||
14273 | |||
14274 | /** | ||
14275 | * Make an update for moving an existing element to another index. | ||
14276 | * | ||
14277 | * @param {number} fromIndex Source index of the existing element. | ||
14278 | * @param {number} toIndex Destination index of the element. | ||
14279 | * @private | ||
14280 | */ | ||
14281 | function makeMove(child, afterNode, toIndex) { | ||
14282 | // NOTE: Null values reduce hidden classes. | ||
14283 | return { | ||
14284 | type: 'MOVE_EXISTING', | ||
14285 | content: null, | ||
14286 | fromIndex: child._mountIndex, | ||
14287 | fromNode: ReactReconciler.getHostNode(child), | ||
14288 | toIndex: toIndex, | ||
14289 | afterNode: afterNode | ||
14290 | }; | ||
14291 | } | ||
14292 | |||
14293 | /** | ||
14294 | * Make an update for removing an element at an index. | ||
14295 | * | ||
14296 | * @param {number} fromIndex Index of the element to remove. | ||
14297 | * @private | ||
14298 | */ | ||
14299 | function makeRemove(child, node) { | ||
14300 | // NOTE: Null values reduce hidden classes. | ||
14301 | return { | ||
14302 | type: 'REMOVE_NODE', | ||
14303 | content: null, | ||
14304 | fromIndex: child._mountIndex, | ||
14305 | fromNode: node, | ||
14306 | toIndex: null, | ||
14307 | afterNode: null | ||
14308 | }; | ||
14309 | } | ||
14310 | |||
14311 | /** | ||
14312 | * Make an update for setting the markup of a node. | ||
14313 | * | ||
14314 | * @param {string} markup Markup that renders into an element. | ||
14315 | * @private | ||
14316 | */ | ||
14317 | function makeSetMarkup(markup) { | ||
14318 | // NOTE: Null values reduce hidden classes. | ||
14319 | return { | ||
14320 | type: 'SET_MARKUP', | ||
14321 | content: markup, | ||
14322 | fromIndex: null, | ||
14323 | fromNode: null, | ||
14324 | toIndex: null, | ||
14325 | afterNode: null | ||
14326 | }; | ||
14327 | } | ||
14328 | |||
14329 | /** | ||
14330 | * Make an update for setting the text content. | ||
14331 | * | ||
14332 | * @param {string} textContent Text content to set. | ||
14333 | * @private | ||
14334 | */ | ||
14335 | function makeTextContent(textContent) { | ||
14336 | // NOTE: Null values reduce hidden classes. | ||
14337 | return { | ||
14338 | type: 'TEXT_CONTENT', | ||
14339 | content: textContent, | ||
14340 | fromIndex: null, | ||
14341 | fromNode: null, | ||
14342 | toIndex: null, | ||
14343 | afterNode: null | ||
14344 | }; | ||
14345 | } | ||
14346 | |||
14347 | /** | ||
14348 | * Push an update, if any, onto the queue. Creates a new queue if none is | ||
14349 | * passed and always returns the queue. Mutative. | ||
14350 | */ | ||
14351 | function enqueue(queue, update) { | ||
14352 | if (update) { | ||
14353 | queue = queue || []; | ||
14354 | queue.push(update); | ||
14355 | } | ||
14356 | return queue; | ||
14357 | } | ||
14358 | |||
14359 | /** | ||
14360 | * Processes any enqueued updates. | ||
14361 | * | ||
14362 | * @private | ||
14363 | */ | ||
14364 | function processQueue(inst, updateQueue) { | ||
14365 | ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue); | ||
14366 | } | ||
14367 | |||
14368 | var setChildrenForInstrumentation = emptyFunction; | ||
14369 | if (process.env.NODE_ENV !== 'production') { | ||
14370 | var getDebugID = function (inst) { | ||
14371 | if (!inst._debugID) { | ||
14372 | // Check for ART-like instances. TODO: This is silly/gross. | ||
14373 | var internal; | ||
14374 | if (internal = ReactInstanceMap.get(inst)) { | ||
14375 | inst = internal; | ||
14376 | } | ||
14377 | } | ||
14378 | return inst._debugID; | ||
14379 | }; | ||
14380 | setChildrenForInstrumentation = function (children) { | ||
14381 | var debugID = getDebugID(this); | ||
14382 | // TODO: React Native empty components are also multichild. | ||
14383 | // This means they still get into this method but don't have _debugID. | ||
14384 | if (debugID !== 0) { | ||
14385 | ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) { | ||
14386 | return children[key]._debugID; | ||
14387 | }) : []); | ||
14388 | } | ||
14389 | }; | ||
14390 | } | ||
14391 | |||
14392 | /** | ||
14393 | * ReactMultiChild are capable of reconciling multiple children. | ||
14394 | * | ||
14395 | * @class ReactMultiChild | ||
14396 | * @internal | ||
14397 | */ | ||
14398 | var ReactMultiChild = { | ||
14399 | |||
14400 | /** | ||
14401 | * Provides common functionality for components that must reconcile multiple | ||
14402 | * children. This is used by `ReactDOMComponent` to mount, update, and | ||
14403 | * unmount child components. | ||
14404 | * | ||
14405 | * @lends {ReactMultiChild.prototype} | ||
14406 | */ | ||
14407 | Mixin: { | ||
14408 | |||
14409 | _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) { | ||
14410 | if (process.env.NODE_ENV !== 'production') { | ||
14411 | var selfDebugID = getDebugID(this); | ||
14412 | if (this._currentElement) { | ||
14413 | try { | ||
14414 | ReactCurrentOwner.current = this._currentElement._owner; | ||
14415 | return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID); | ||
14416 | } finally { | ||
14417 | ReactCurrentOwner.current = null; | ||
14418 | } | ||
14419 | } | ||
14420 | } | ||
14421 | return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context); | ||
14422 | }, | ||
14423 | |||
14424 | _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) { | ||
14425 | var nextChildren; | ||
14426 | var selfDebugID = 0; | ||
14427 | if (process.env.NODE_ENV !== 'production') { | ||
14428 | selfDebugID = getDebugID(this); | ||
14429 | if (this._currentElement) { | ||
14430 | try { | ||
14431 | ReactCurrentOwner.current = this._currentElement._owner; | ||
14432 | nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID); | ||
14433 | } finally { | ||
14434 | ReactCurrentOwner.current = null; | ||
14435 | } | ||
14436 | ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID); | ||
14437 | return nextChildren; | ||
14438 | } | ||
14439 | } | ||
14440 | nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID); | ||
14441 | ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID); | ||
14442 | return nextChildren; | ||
14443 | }, | ||
14444 | |||
14445 | /** | ||
14446 | * Generates a "mount image" for each of the supplied children. In the case | ||
14447 | * of `ReactDOMComponent`, a mount image is a string of markup. | ||
14448 | * | ||
14449 | * @param {?object} nestedChildren Nested child maps. | ||
14450 | * @return {array} An array of mounted representations. | ||
14451 | * @internal | ||
14452 | */ | ||
14453 | mountChildren: function (nestedChildren, transaction, context) { | ||
14454 | var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context); | ||
14455 | this._renderedChildren = children; | ||
14456 | |||
14457 | var mountImages = []; | ||
14458 | var index = 0; | ||
14459 | for (var name in children) { | ||
14460 | if (children.hasOwnProperty(name)) { | ||
14461 | var child = children[name]; | ||
14462 | var selfDebugID = 0; | ||
14463 | if (process.env.NODE_ENV !== 'production') { | ||
14464 | selfDebugID = getDebugID(this); | ||
14465 | } | ||
14466 | var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID); | ||
14467 | child._mountIndex = index++; | ||
14468 | mountImages.push(mountImage); | ||
14469 | } | ||
14470 | } | ||
14471 | |||
14472 | if (process.env.NODE_ENV !== 'production') { | ||
14473 | setChildrenForInstrumentation.call(this, children); | ||
14474 | } | ||
14475 | |||
14476 | return mountImages; | ||
14477 | }, | ||
14478 | |||
14479 | /** | ||
14480 | * Replaces any rendered children with a text content string. | ||
14481 | * | ||
14482 | * @param {string} nextContent String of content. | ||
14483 | * @internal | ||
14484 | */ | ||
14485 | updateTextContent: function (nextContent) { | ||
14486 | var prevChildren = this._renderedChildren; | ||
14487 | // Remove any rendered children. | ||
14488 | ReactChildReconciler.unmountChildren(prevChildren, false); | ||
14489 | for (var name in prevChildren) { | ||
14490 | if (prevChildren.hasOwnProperty(name)) { | ||
14491 | true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0; | ||
14492 | } | ||
14493 | } | ||
14494 | // Set new text content. | ||
14495 | var updates = [makeTextContent(nextContent)]; | ||
14496 | processQueue(this, updates); | ||
14497 | }, | ||
14498 | |||
14499 | /** | ||
14500 | * Replaces any rendered children with a markup string. | ||
14501 | * | ||
14502 | * @param {string} nextMarkup String of markup. | ||
14503 | * @internal | ||
14504 | */ | ||
14505 | updateMarkup: function (nextMarkup) { | ||
14506 | var prevChildren = this._renderedChildren; | ||
14507 | // Remove any rendered children. | ||
14508 | ReactChildReconciler.unmountChildren(prevChildren, false); | ||
14509 | for (var name in prevChildren) { | ||
14510 | if (prevChildren.hasOwnProperty(name)) { | ||
14511 | true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0; | ||
14512 | } | ||
14513 | } | ||
14514 | var updates = [makeSetMarkup(nextMarkup)]; | ||
14515 | processQueue(this, updates); | ||
14516 | }, | ||
14517 | |||
14518 | /** | ||
14519 | * Updates the rendered children with new children. | ||
14520 | * | ||
14521 | * @param {?object} nextNestedChildrenElements Nested child element maps. | ||
14522 | * @param {ReactReconcileTransaction} transaction | ||
14523 | * @internal | ||
14524 | */ | ||
14525 | updateChildren: function (nextNestedChildrenElements, transaction, context) { | ||
14526 | // Hook used by React ART | ||
14527 | this._updateChildren(nextNestedChildrenElements, transaction, context); | ||
14528 | }, | ||
14529 | |||
14530 | /** | ||
14531 | * @param {?object} nextNestedChildrenElements Nested child element maps. | ||
14532 | * @param {ReactReconcileTransaction} transaction | ||
14533 | * @final | ||
14534 | * @protected | ||
14535 | */ | ||
14536 | _updateChildren: function (nextNestedChildrenElements, transaction, context) { | ||
14537 | var prevChildren = this._renderedChildren; | ||
14538 | var removedNodes = {}; | ||
14539 | var mountImages = []; | ||
14540 | var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context); | ||
14541 | if (!nextChildren && !prevChildren) { | ||
14542 | return; | ||
14543 | } | ||
14544 | var updates = null; | ||
14545 | var name; | ||
14546 | // `nextIndex` will increment for each child in `nextChildren`, but | ||
14547 | // `lastIndex` will be the last index visited in `prevChildren`. | ||
14548 | var nextIndex = 0; | ||
14549 | var lastIndex = 0; | ||
14550 | // `nextMountIndex` will increment for each newly mounted child. | ||
14551 | var nextMountIndex = 0; | ||
14552 | var lastPlacedNode = null; | ||
14553 | for (name in nextChildren) { | ||
14554 | if (!nextChildren.hasOwnProperty(name)) { | ||
14555 | continue; | ||
14556 | } | ||
14557 | var prevChild = prevChildren && prevChildren[name]; | ||
14558 | var nextChild = nextChildren[name]; | ||
14559 | if (prevChild === nextChild) { | ||
14560 | updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex)); | ||
14561 | lastIndex = Math.max(prevChild._mountIndex, lastIndex); | ||
14562 | prevChild._mountIndex = nextIndex; | ||
14563 | } else { | ||
14564 | if (prevChild) { | ||
14565 | // Update `lastIndex` before `_mountIndex` gets unset by unmounting. | ||
14566 | lastIndex = Math.max(prevChild._mountIndex, lastIndex); | ||
14567 | // The `removedNodes` loop below will actually remove the child. | ||
14568 | } | ||
14569 | // The child must be instantiated before it's mounted. | ||
14570 | updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context)); | ||
14571 | nextMountIndex++; | ||
14572 | } | ||
14573 | nextIndex++; | ||
14574 | lastPlacedNode = ReactReconciler.getHostNode(nextChild); | ||
14575 | } | ||
14576 | // Remove children that are no longer present. | ||
14577 | for (name in removedNodes) { | ||
14578 | if (removedNodes.hasOwnProperty(name)) { | ||
14579 | updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name])); | ||
14580 | } | ||
14581 | } | ||
14582 | if (updates) { | ||
14583 | processQueue(this, updates); | ||
14584 | } | ||
14585 | this._renderedChildren = nextChildren; | ||
14586 | |||
14587 | if (process.env.NODE_ENV !== 'production') { | ||
14588 | setChildrenForInstrumentation.call(this, nextChildren); | ||
14589 | } | ||
14590 | }, | ||
14591 | |||
14592 | /** | ||
14593 | * Unmounts all rendered children. This should be used to clean up children | ||
14594 | * when this component is unmounted. It does not actually perform any | ||
14595 | * backend operations. | ||
14596 | * | ||
14597 | * @internal | ||
14598 | */ | ||
14599 | unmountChildren: function (safely) { | ||
14600 | var renderedChildren = this._renderedChildren; | ||
14601 | ReactChildReconciler.unmountChildren(renderedChildren, safely); | ||
14602 | this._renderedChildren = null; | ||
14603 | }, | ||
14604 | |||
14605 | /** | ||
14606 | * Moves a child component to the supplied index. | ||
14607 | * | ||
14608 | * @param {ReactComponent} child Component to move. | ||
14609 | * @param {number} toIndex Destination index of the element. | ||
14610 | * @param {number} lastIndex Last index visited of the siblings of `child`. | ||
14611 | * @protected | ||
14612 | */ | ||
14613 | moveChild: function (child, afterNode, toIndex, lastIndex) { | ||
14614 | // If the index of `child` is less than `lastIndex`, then it needs to | ||
14615 | // be moved. Otherwise, we do not need to move it because a child will be | ||
14616 | // inserted or moved before `child`. | ||
14617 | if (child._mountIndex < lastIndex) { | ||
14618 | return makeMove(child, afterNode, toIndex); | ||
14619 | } | ||
14620 | }, | ||
14621 | |||
14622 | /** | ||
14623 | * Creates a child component. | ||
14624 | * | ||
14625 | * @param {ReactComponent} child Component to create. | ||
14626 | * @param {string} mountImage Markup to insert. | ||
14627 | * @protected | ||
14628 | */ | ||
14629 | createChild: function (child, afterNode, mountImage) { | ||
14630 | return makeInsertMarkup(mountImage, afterNode, child._mountIndex); | ||
14631 | }, | ||
14632 | |||
14633 | /** | ||
14634 | * Removes a child component. | ||
14635 | * | ||
14636 | * @param {ReactComponent} child Child to remove. | ||
14637 | * @protected | ||
14638 | */ | ||
14639 | removeChild: function (child, node) { | ||
14640 | return makeRemove(child, node); | ||
14641 | }, | ||
14642 | |||
14643 | /** | ||
14644 | * Mounts a child with the supplied name. | ||
14645 | * | ||
14646 | * NOTE: This is part of `updateChildren` and is here for readability. | ||
14647 | * | ||
14648 | * @param {ReactComponent} child Component to mount. | ||
14649 | * @param {string} name Name of the child. | ||
14650 | * @param {number} index Index at which to insert the child. | ||
14651 | * @param {ReactReconcileTransaction} transaction | ||
14652 | * @private | ||
14653 | */ | ||
14654 | _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) { | ||
14655 | child._mountIndex = index; | ||
14656 | return this.createChild(child, afterNode, mountImage); | ||
14657 | }, | ||
14658 | |||
14659 | /** | ||
14660 | * Unmounts a rendered child. | ||
14661 | * | ||
14662 | * NOTE: This is part of `updateChildren` and is here for readability. | ||
14663 | * | ||
14664 | * @param {ReactComponent} child Component to unmount. | ||
14665 | * @private | ||
14666 | */ | ||
14667 | _unmountChild: function (child, node) { | ||
14668 | var update = this.removeChild(child, node); | ||
14669 | child._mountIndex = null; | ||
14670 | return update; | ||
14671 | } | ||
14672 | |||
14673 | } | ||
14674 | |||
14675 | }; | ||
14676 | |||
14677 | module.exports = ReactMultiChild; | ||
14678 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
14679 | |||
14680 | /***/ }), | ||
14681 | /* 121 */ | ||
14682 | /***/ (function(module, exports, __webpack_require__) { | ||
14683 | |||
14684 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
14685 | * Copyright 2014-present, Facebook, Inc. | ||
14686 | * All rights reserved. | ||
14687 | * | ||
14688 | * This source code is licensed under the BSD-style license found in the | ||
14689 | * LICENSE file in the root directory of this source tree. An additional grant | ||
14690 | * of patent rights can be found in the PATENTS file in the same directory. | ||
14691 | * | ||
14692 | * | ||
14693 | */ | ||
14694 | |||
14695 | 'use strict'; | ||
14696 | |||
14697 | var _prodInvariant = __webpack_require__(41); | ||
14698 | |||
14699 | var invariant = __webpack_require__(10); | ||
14700 | |||
14701 | var injected = false; | ||
14702 | |||
14703 | var ReactComponentEnvironment = { | ||
14704 | |||
14705 | /** | ||
14706 | * Optionally injectable hook for swapping out mount images in the middle of | ||
14707 | * the tree. | ||
14708 | */ | ||
14709 | replaceNodeWithMarkup: null, | ||
14710 | |||
14711 | /** | ||
14712 | * Optionally injectable hook for processing a queue of child updates. Will | ||
14713 | * later move into MultiChildComponents. | ||
14714 | */ | ||
14715 | processChildrenUpdates: null, | ||
14716 | |||
14717 | injection: { | ||
14718 | injectEnvironment: function (environment) { | ||
14719 | !!injected ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0; | ||
14720 | ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup; | ||
14721 | ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates; | ||
14722 | injected = true; | ||
14723 | } | ||
14724 | } | ||
14725 | |||
14726 | }; | ||
14727 | |||
14728 | module.exports = ReactComponentEnvironment; | ||
14729 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
14730 | |||
14731 | /***/ }), | ||
14732 | /* 122 */ | ||
14733 | /***/ (function(module, exports) { | ||
14734 | |||
14735 | /** | ||
14736 | * Copyright 2013-present, Facebook, Inc. | ||
14737 | * All rights reserved. | ||
14738 | * | ||
14739 | * This source code is licensed under the BSD-style license found in the | ||
14740 | * LICENSE file in the root directory of this source tree. An additional grant | ||
14741 | * of patent rights can be found in the PATENTS file in the same directory. | ||
14742 | * | ||
14743 | */ | ||
14744 | |||
14745 | 'use strict'; | ||
14746 | |||
14747 | /** | ||
14748 | * `ReactInstanceMap` maintains a mapping from a public facing stateful | ||
14749 | * instance (key) and the internal representation (value). This allows public | ||
14750 | * methods to accept the user facing instance as an argument and map them back | ||
14751 | * to internal methods. | ||
14752 | */ | ||
14753 | |||
14754 | // TODO: Replace this with ES6: var ReactInstanceMap = new Map(); | ||
14755 | |||
14756 | var ReactInstanceMap = { | ||
14757 | |||
14758 | /** | ||
14759 | * This API should be called `delete` but we'd have to make sure to always | ||
14760 | * transform these to strings for IE support. When this transform is fully | ||
14761 | * supported we can rename it. | ||
14762 | */ | ||
14763 | remove: function (key) { | ||
14764 | key._reactInternalInstance = undefined; | ||
14765 | }, | ||
14766 | |||
14767 | get: function (key) { | ||
14768 | return key._reactInternalInstance; | ||
14769 | }, | ||
14770 | |||
14771 | has: function (key) { | ||
14772 | return key._reactInternalInstance !== undefined; | ||
14773 | }, | ||
14774 | |||
14775 | set: function (key, value) { | ||
14776 | key._reactInternalInstance = value; | ||
14777 | } | ||
14778 | |||
14779 | }; | ||
14780 | |||
14781 | module.exports = ReactInstanceMap; | ||
14782 | |||
14783 | /***/ }), | ||
14784 | /* 123 */ | ||
14785 | /***/ (function(module, exports, __webpack_require__) { | ||
14786 | |||
14787 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
14788 | * Copyright 2014-present, Facebook, Inc. | ||
14789 | * All rights reserved. | ||
14790 | * | ||
14791 | * This source code is licensed under the BSD-style license found in the | ||
14792 | * LICENSE file in the root directory of this source tree. An additional grant | ||
14793 | * of patent rights can be found in the PATENTS file in the same directory. | ||
14794 | * | ||
14795 | */ | ||
14796 | |||
14797 | 'use strict'; | ||
14798 | |||
14799 | var ReactReconciler = __webpack_require__(65); | ||
14800 | |||
14801 | var instantiateReactComponent = __webpack_require__(124); | ||
14802 | var KeyEscapeUtils = __webpack_require__(134); | ||
14803 | var shouldUpdateReactComponent = __webpack_require__(130); | ||
14804 | var traverseAllChildren = __webpack_require__(135); | ||
14805 | var warning = __webpack_require__(13); | ||
14806 | |||
14807 | var ReactComponentTreeHook; | ||
14808 | |||
14809 | if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') { | ||
14810 | // Temporary hack. | ||
14811 | // Inline requires don't work well with Jest: | ||
14812 | // https://github.com/facebook/react/issues/7240 | ||
14813 | // Remove the inline requires when we don't need them anymore: | ||
14814 | // https://github.com/facebook/react/pull/7178 | ||
14815 | ReactComponentTreeHook = __webpack_require__(28); | ||
14816 | } | ||
14817 | |||
14818 | function instantiateChild(childInstances, child, name, selfDebugID) { | ||
14819 | // We found a component instance. | ||
14820 | var keyUnique = childInstances[name] === undefined; | ||
14821 | if (process.env.NODE_ENV !== 'production') { | ||
14822 | if (!ReactComponentTreeHook) { | ||
14823 | ReactComponentTreeHook = __webpack_require__(28); | ||
14824 | } | ||
14825 | if (!keyUnique) { | ||
14826 | process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): 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.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0; | ||
14827 | } | ||
14828 | } | ||
14829 | if (child != null && keyUnique) { | ||
14830 | childInstances[name] = instantiateReactComponent(child, true); | ||
14831 | } | ||
14832 | } | ||
14833 | |||
14834 | /** | ||
14835 | * ReactChildReconciler provides helpers for initializing or updating a set of | ||
14836 | * children. Its output is suitable for passing it onto ReactMultiChild which | ||
14837 | * does diffed reordering and insertion. | ||
14838 | */ | ||
14839 | var ReactChildReconciler = { | ||
14840 | /** | ||
14841 | * Generates a "mount image" for each of the supplied children. In the case | ||
14842 | * of `ReactDOMComponent`, a mount image is a string of markup. | ||
14843 | * | ||
14844 | * @param {?object} nestedChildNodes Nested child maps. | ||
14845 | * @return {?object} A set of child instances. | ||
14846 | * @internal | ||
14847 | */ | ||
14848 | instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots | ||
14849 | ) { | ||
14850 | if (nestedChildNodes == null) { | ||
14851 | return null; | ||
14852 | } | ||
14853 | var childInstances = {}; | ||
14854 | |||
14855 | if (process.env.NODE_ENV !== 'production') { | ||
14856 | traverseAllChildren(nestedChildNodes, function (childInsts, child, name) { | ||
14857 | return instantiateChild(childInsts, child, name, selfDebugID); | ||
14858 | }, childInstances); | ||
14859 | } else { | ||
14860 | traverseAllChildren(nestedChildNodes, instantiateChild, childInstances); | ||
14861 | } | ||
14862 | return childInstances; | ||
14863 | }, | ||
14864 | |||
14865 | /** | ||
14866 | * Updates the rendered children and returns a new set of children. | ||
14867 | * | ||
14868 | * @param {?object} prevChildren Previously initialized set of children. | ||
14869 | * @param {?object} nextChildren Flat child element maps. | ||
14870 | * @param {ReactReconcileTransaction} transaction | ||
14871 | * @param {object} context | ||
14872 | * @return {?object} A new set of child instances. | ||
14873 | * @internal | ||
14874 | */ | ||
14875 | updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots | ||
14876 | ) { | ||
14877 | // We currently don't have a way to track moves here but if we use iterators | ||
14878 | // instead of for..in we can zip the iterators and check if an item has | ||
14879 | // moved. | ||
14880 | // TODO: If nothing has changed, return the prevChildren object so that we | ||
14881 | // can quickly bailout if nothing has changed. | ||
14882 | if (!nextChildren && !prevChildren) { | ||
14883 | return; | ||
14884 | } | ||
14885 | var name; | ||
14886 | var prevChild; | ||
14887 | for (name in nextChildren) { | ||
14888 | if (!nextChildren.hasOwnProperty(name)) { | ||
14889 | continue; | ||
14890 | } | ||
14891 | prevChild = prevChildren && prevChildren[name]; | ||
14892 | var prevElement = prevChild && prevChild._currentElement; | ||
14893 | var nextElement = nextChildren[name]; | ||
14894 | if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) { | ||
14895 | ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context); | ||
14896 | nextChildren[name] = prevChild; | ||
14897 | } else { | ||
14898 | if (prevChild) { | ||
14899 | removedNodes[name] = ReactReconciler.getHostNode(prevChild); | ||
14900 | ReactReconciler.unmountComponent(prevChild, false); | ||
14901 | } | ||
14902 | // The child must be instantiated before it's mounted. | ||
14903 | var nextChildInstance = instantiateReactComponent(nextElement, true); | ||
14904 | nextChildren[name] = nextChildInstance; | ||
14905 | // Creating mount image now ensures refs are resolved in right order | ||
14906 | // (see https://github.com/facebook/react/pull/7101 for explanation). | ||
14907 | var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID); | ||
14908 | mountImages.push(nextChildMountImage); | ||
14909 | } | ||
14910 | } | ||
14911 | // Unmount children that are no longer present. | ||
14912 | for (name in prevChildren) { | ||
14913 | if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) { | ||
14914 | prevChild = prevChildren[name]; | ||
14915 | removedNodes[name] = ReactReconciler.getHostNode(prevChild); | ||
14916 | ReactReconciler.unmountComponent(prevChild, false); | ||
14917 | } | ||
14918 | } | ||
14919 | }, | ||
14920 | |||
14921 | /** | ||
14922 | * Unmounts all rendered children. This should be used to clean up children | ||
14923 | * when this component is unmounted. | ||
14924 | * | ||
14925 | * @param {?object} renderedChildren Previously initialized set of children. | ||
14926 | * @internal | ||
14927 | */ | ||
14928 | unmountChildren: function (renderedChildren, safely) { | ||
14929 | for (var name in renderedChildren) { | ||
14930 | if (renderedChildren.hasOwnProperty(name)) { | ||
14931 | var renderedChild = renderedChildren[name]; | ||
14932 | ReactReconciler.unmountComponent(renderedChild, safely); | ||
14933 | } | ||
14934 | } | ||
14935 | } | ||
14936 | |||
14937 | }; | ||
14938 | |||
14939 | module.exports = ReactChildReconciler; | ||
14940 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
14941 | |||
14942 | /***/ }), | ||
14943 | /* 124 */ | ||
14944 | /***/ (function(module, exports, __webpack_require__) { | ||
14945 | |||
14946 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
14947 | * Copyright 2013-present, Facebook, Inc. | ||
14948 | * All rights reserved. | ||
14949 | * | ||
14950 | * This source code is licensed under the BSD-style license found in the | ||
14951 | * LICENSE file in the root directory of this source tree. An additional grant | ||
14952 | * of patent rights can be found in the PATENTS file in the same directory. | ||
14953 | * | ||
14954 | */ | ||
14955 | |||
14956 | 'use strict'; | ||
14957 | |||
14958 | var _prodInvariant = __webpack_require__(41), | ||
14959 | _assign = __webpack_require__(6); | ||
14960 | |||
14961 | var ReactCompositeComponent = __webpack_require__(125); | ||
14962 | var ReactEmptyComponent = __webpack_require__(131); | ||
14963 | var ReactHostComponent = __webpack_require__(132); | ||
14964 | |||
14965 | var getNextDebugID = __webpack_require__(133); | ||
14966 | var invariant = __webpack_require__(10); | ||
14967 | var warning = __webpack_require__(13); | ||
14968 | |||
14969 | // To avoid a cyclic dependency, we create the final class in this module | ||
14970 | var ReactCompositeComponentWrapper = function (element) { | ||
14971 | this.construct(element); | ||
14972 | }; | ||
14973 | |||
14974 | function getDeclarationErrorAddendum(owner) { | ||
14975 | if (owner) { | ||
14976 | var name = owner.getName(); | ||
14977 | if (name) { | ||
14978 | return ' Check the render method of `' + name + '`.'; | ||
14979 | } | ||
14980 | } | ||
14981 | return ''; | ||
14982 | } | ||
14983 | |||
14984 | /** | ||
14985 | * Check if the type reference is a known internal type. I.e. not a user | ||
14986 | * provided composite type. | ||
14987 | * | ||
14988 | * @param {function} type | ||
14989 | * @return {boolean} Returns true if this is a valid internal type. | ||
14990 | */ | ||
14991 | function isInternalComponentType(type) { | ||
14992 | return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function'; | ||
14993 | } | ||
14994 | |||
14995 | /** | ||
14996 | * Given a ReactNode, create an instance that will actually be mounted. | ||
14997 | * | ||
14998 | * @param {ReactNode} node | ||
14999 | * @param {boolean} shouldHaveDebugID | ||
15000 | * @return {object} A new instance of the element's constructor. | ||
15001 | * @protected | ||
15002 | */ | ||
15003 | function instantiateReactComponent(node, shouldHaveDebugID) { | ||
15004 | var instance; | ||
15005 | |||
15006 | if (node === null || node === false) { | ||
15007 | instance = ReactEmptyComponent.create(instantiateReactComponent); | ||
15008 | } else if (typeof node === 'object') { | ||
15009 | var element = node; | ||
15010 | var type = element.type; | ||
15011 | if (typeof type !== 'function' && typeof type !== 'string') { | ||
15012 | var info = ''; | ||
15013 | if (process.env.NODE_ENV !== 'production') { | ||
15014 | if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { | ||
15015 | info += ' You likely forgot to export your component from the file ' + 'it\'s defined in.'; | ||
15016 | } | ||
15017 | } | ||
15018 | info += getDeclarationErrorAddendum(element._owner); | ||
15019 | true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info) : _prodInvariant('130', type == null ? type : typeof type, info) : void 0; | ||
15020 | } | ||
15021 | |||
15022 | // Special case string values | ||
15023 | if (typeof element.type === 'string') { | ||
15024 | instance = ReactHostComponent.createInternalComponent(element); | ||
15025 | } else if (isInternalComponentType(element.type)) { | ||
15026 | // This is temporarily available for custom components that are not string | ||
15027 | // representations. I.e. ART. Once those are updated to use the string | ||
15028 | // representation, we can drop this code path. | ||
15029 | instance = new element.type(element); | ||
15030 | |||
15031 | // We renamed this. Allow the old name for compat. :( | ||
15032 | if (!instance.getHostNode) { | ||
15033 | instance.getHostNode = instance.getNativeNode; | ||
15034 | } | ||
15035 | } else { | ||
15036 | instance = new ReactCompositeComponentWrapper(element); | ||
15037 | } | ||
15038 | } else if (typeof node === 'string' || typeof node === 'number') { | ||
15039 | instance = ReactHostComponent.createInstanceForText(node); | ||
15040 | } else { | ||
15041 | true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0; | ||
15042 | } | ||
15043 | |||
15044 | if (process.env.NODE_ENV !== 'production') { | ||
15045 | process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0; | ||
15046 | } | ||
15047 | |||
15048 | // These two fields are used by the DOM and ART diffing algorithms | ||
15049 | // respectively. Instead of using expandos on components, we should be | ||
15050 | // storing the state needed by the diffing algorithms elsewhere. | ||
15051 | instance._mountIndex = 0; | ||
15052 | instance._mountImage = null; | ||
15053 | |||
15054 | if (process.env.NODE_ENV !== 'production') { | ||
15055 | instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0; | ||
15056 | } | ||
15057 | |||
15058 | // Internal instances should fully constructed at this point, so they should | ||
15059 | // not get any new fields added to them at this point. | ||
15060 | if (process.env.NODE_ENV !== 'production') { | ||
15061 | if (Object.preventExtensions) { | ||
15062 | Object.preventExtensions(instance); | ||
15063 | } | ||
15064 | } | ||
15065 | |||
15066 | return instance; | ||
15067 | } | ||
15068 | |||
15069 | _assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, { | ||
15070 | _instantiateReactComponent: instantiateReactComponent | ||
15071 | }); | ||
15072 | |||
15073 | module.exports = instantiateReactComponent; | ||
15074 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
15075 | |||
15076 | /***/ }), | ||
15077 | /* 125 */ | ||
15078 | /***/ (function(module, exports, __webpack_require__) { | ||
15079 | |||
15080 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
15081 | * Copyright 2013-present, Facebook, Inc. | ||
15082 | * All rights reserved. | ||
15083 | * | ||
15084 | * This source code is licensed under the BSD-style license found in the | ||
15085 | * LICENSE file in the root directory of this source tree. An additional grant | ||
15086 | * of patent rights can be found in the PATENTS file in the same directory. | ||
15087 | * | ||
15088 | */ | ||
15089 | |||
15090 | 'use strict'; | ||
15091 | |||
15092 | var _prodInvariant = __webpack_require__(41), | ||
15093 | _assign = __webpack_require__(6); | ||
15094 | |||
15095 | var React = __webpack_require__(4); | ||
15096 | var ReactComponentEnvironment = __webpack_require__(121); | ||
15097 | var ReactCurrentOwner = __webpack_require__(12); | ||
15098 | var ReactErrorUtils = __webpack_require__(51); | ||
15099 | var ReactInstanceMap = __webpack_require__(122); | ||
15100 | var ReactInstrumentation = __webpack_require__(68); | ||
15101 | var ReactNodeTypes = __webpack_require__(126); | ||
15102 | var ReactReconciler = __webpack_require__(65); | ||
15103 | |||
15104 | if (process.env.NODE_ENV !== 'production') { | ||
15105 | var checkReactTypeSpec = __webpack_require__(127); | ||
15106 | } | ||
15107 | |||
15108 | var emptyObject = __webpack_require__(22); | ||
15109 | var invariant = __webpack_require__(10); | ||
15110 | var shallowEqual = __webpack_require__(129); | ||
15111 | var shouldUpdateReactComponent = __webpack_require__(130); | ||
15112 | var warning = __webpack_require__(13); | ||
15113 | |||
15114 | var CompositeTypes = { | ||
15115 | ImpureClass: 0, | ||
15116 | PureClass: 1, | ||
15117 | StatelessFunctional: 2 | ||
15118 | }; | ||
15119 | |||
15120 | function StatelessComponent(Component) {} | ||
15121 | StatelessComponent.prototype.render = function () { | ||
15122 | var Component = ReactInstanceMap.get(this)._currentElement.type; | ||
15123 | var element = Component(this.props, this.context, this.updater); | ||
15124 | warnIfInvalidElement(Component, element); | ||
15125 | return element; | ||
15126 | }; | ||
15127 | |||
15128 | function warnIfInvalidElement(Component, element) { | ||
15129 | if (process.env.NODE_ENV !== 'production') { | ||
15130 | process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0; | ||
15131 | process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0; | ||
15132 | } | ||
15133 | } | ||
15134 | |||
15135 | function shouldConstruct(Component) { | ||
15136 | return !!(Component.prototype && Component.prototype.isReactComponent); | ||
15137 | } | ||
15138 | |||
15139 | function isPureComponent(Component) { | ||
15140 | return !!(Component.prototype && Component.prototype.isPureReactComponent); | ||
15141 | } | ||
15142 | |||
15143 | // Separated into a function to contain deoptimizations caused by try/finally. | ||
15144 | function measureLifeCyclePerf(fn, debugID, timerType) { | ||
15145 | if (debugID === 0) { | ||
15146 | // Top-level wrappers (see ReactMount) and empty components (see | ||
15147 | // ReactDOMEmptyComponent) are invisible to hooks and devtools. | ||
15148 | // Both are implementation details that should go away in the future. | ||
15149 | return fn(); | ||
15150 | } | ||
15151 | |||
15152 | ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType); | ||
15153 | try { | ||
15154 | return fn(); | ||
15155 | } finally { | ||
15156 | ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType); | ||
15157 | } | ||
15158 | } | ||
15159 | |||
15160 | /** | ||
15161 | * ------------------ The Life-Cycle of a Composite Component ------------------ | ||
15162 | * | ||
15163 | * - constructor: Initialization of state. The instance is now retained. | ||
15164 | * - componentWillMount | ||
15165 | * - render | ||
15166 | * - [children's constructors] | ||
15167 | * - [children's componentWillMount and render] | ||
15168 | * - [children's componentDidMount] | ||
15169 | * - componentDidMount | ||
15170 | * | ||
15171 | * Update Phases: | ||
15172 | * - componentWillReceiveProps (only called if parent updated) | ||
15173 | * - shouldComponentUpdate | ||
15174 | * - componentWillUpdate | ||
15175 | * - render | ||
15176 | * - [children's constructors or receive props phases] | ||
15177 | * - componentDidUpdate | ||
15178 | * | ||
15179 | * - componentWillUnmount | ||
15180 | * - [children's componentWillUnmount] | ||
15181 | * - [children destroyed] | ||
15182 | * - (destroyed): The instance is now blank, released by React and ready for GC. | ||
15183 | * | ||
15184 | * ----------------------------------------------------------------------------- | ||
15185 | */ | ||
15186 | |||
15187 | /** | ||
15188 | * An incrementing ID assigned to each component when it is mounted. This is | ||
15189 | * used to enforce the order in which `ReactUpdates` updates dirty components. | ||
15190 | * | ||
15191 | * @private | ||
15192 | */ | ||
15193 | var nextMountID = 1; | ||
15194 | |||
15195 | /** | ||
15196 | * @lends {ReactCompositeComponent.prototype} | ||
15197 | */ | ||
15198 | var ReactCompositeComponent = { | ||
15199 | |||
15200 | /** | ||
15201 | * Base constructor for all composite component. | ||
15202 | * | ||
15203 | * @param {ReactElement} element | ||
15204 | * @final | ||
15205 | * @internal | ||
15206 | */ | ||
15207 | construct: function (element) { | ||
15208 | this._currentElement = element; | ||
15209 | this._rootNodeID = 0; | ||
15210 | this._compositeType = null; | ||
15211 | this._instance = null; | ||
15212 | this._hostParent = null; | ||
15213 | this._hostContainerInfo = null; | ||
15214 | |||
15215 | // See ReactUpdateQueue | ||
15216 | this._updateBatchNumber = null; | ||
15217 | this._pendingElement = null; | ||
15218 | this._pendingStateQueue = null; | ||
15219 | this._pendingReplaceState = false; | ||
15220 | this._pendingForceUpdate = false; | ||
15221 | |||
15222 | this._renderedNodeType = null; | ||
15223 | this._renderedComponent = null; | ||
15224 | this._context = null; | ||
15225 | this._mountOrder = 0; | ||
15226 | this._topLevelWrapper = null; | ||
15227 | |||
15228 | // See ReactUpdates and ReactUpdateQueue. | ||
15229 | this._pendingCallbacks = null; | ||
15230 | |||
15231 | // ComponentWillUnmount shall only be called once | ||
15232 | this._calledComponentWillUnmount = false; | ||
15233 | |||
15234 | if (process.env.NODE_ENV !== 'production') { | ||
15235 | this._warnedAboutRefsInRender = false; | ||
15236 | } | ||
15237 | }, | ||
15238 | |||
15239 | /** | ||
15240 | * Initializes the component, renders markup, and registers event listeners. | ||
15241 | * | ||
15242 | * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction | ||
15243 | * @param {?object} hostParent | ||
15244 | * @param {?object} hostContainerInfo | ||
15245 | * @param {?object} context | ||
15246 | * @return {?string} Rendered markup to be inserted into the DOM. | ||
15247 | * @final | ||
15248 | * @internal | ||
15249 | */ | ||
15250 | mountComponent: function (transaction, hostParent, hostContainerInfo, context) { | ||
15251 | var _this = this; | ||
15252 | |||
15253 | this._context = context; | ||
15254 | this._mountOrder = nextMountID++; | ||
15255 | this._hostParent = hostParent; | ||
15256 | this._hostContainerInfo = hostContainerInfo; | ||
15257 | |||
15258 | var publicProps = this._currentElement.props; | ||
15259 | var publicContext = this._processContext(context); | ||
15260 | |||
15261 | var Component = this._currentElement.type; | ||
15262 | |||
15263 | var updateQueue = transaction.getUpdateQueue(); | ||
15264 | |||
15265 | // Initialize the public class | ||
15266 | var doConstruct = shouldConstruct(Component); | ||
15267 | var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue); | ||
15268 | var renderedElement; | ||
15269 | |||
15270 | // Support functional components | ||
15271 | if (!doConstruct && (inst == null || inst.render == null)) { | ||
15272 | renderedElement = inst; | ||
15273 | warnIfInvalidElement(Component, renderedElement); | ||
15274 | !(inst === null || inst === false || React.isValidElement(inst)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0; | ||
15275 | inst = new StatelessComponent(Component); | ||
15276 | this._compositeType = CompositeTypes.StatelessFunctional; | ||
15277 | } else { | ||
15278 | if (isPureComponent(Component)) { | ||
15279 | this._compositeType = CompositeTypes.PureClass; | ||
15280 | } else { | ||
15281 | this._compositeType = CompositeTypes.ImpureClass; | ||
15282 | } | ||
15283 | } | ||
15284 | |||
15285 | if (process.env.NODE_ENV !== 'production') { | ||
15286 | // This will throw later in _renderValidatedComponent, but add an early | ||
15287 | // warning now to help debugging | ||
15288 | if (inst.render == null) { | ||
15289 | process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0; | ||
15290 | } | ||
15291 | |||
15292 | var propsMutated = inst.props !== publicProps; | ||
15293 | var componentName = Component.displayName || Component.name || 'Component'; | ||
15294 | |||
15295 | process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\'s constructor was passed.', componentName, componentName) : void 0; | ||
15296 | } | ||
15297 | |||
15298 | // These should be set up in the constructor, but as a convenience for | ||
15299 | // simpler class abstractions, we set them up after the fact. | ||
15300 | inst.props = publicProps; | ||
15301 | inst.context = publicContext; | ||
15302 | inst.refs = emptyObject; | ||
15303 | inst.updater = updateQueue; | ||
15304 | |||
15305 | this._instance = inst; | ||
15306 | |||
15307 | // Store a reference from the instance back to the internal representation | ||
15308 | ReactInstanceMap.set(inst, this); | ||
15309 | |||
15310 | if (process.env.NODE_ENV !== 'production') { | ||
15311 | // Since plain JS classes are defined without any special initialization | ||
15312 | // logic, we can not catch common errors early. Therefore, we have to | ||
15313 | // catch them here, at initialization time, instead. | ||
15314 | process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0; | ||
15315 | process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0; | ||
15316 | process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0; | ||
15317 | process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0; | ||
15318 | process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0; | ||
15319 | process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0; | ||
15320 | process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0; | ||
15321 | } | ||
15322 | |||
15323 | var initialState = inst.state; | ||
15324 | if (initialState === undefined) { | ||
15325 | inst.state = initialState = null; | ||
15326 | } | ||
15327 | !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0; | ||
15328 | |||
15329 | this._pendingStateQueue = null; | ||
15330 | this._pendingReplaceState = false; | ||
15331 | this._pendingForceUpdate = false; | ||
15332 | |||
15333 | var markup; | ||
15334 | if (inst.unstable_handleError) { | ||
15335 | markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context); | ||
15336 | } else { | ||
15337 | markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context); | ||
15338 | } | ||
15339 | |||
15340 | if (inst.componentDidMount) { | ||
15341 | if (process.env.NODE_ENV !== 'production') { | ||
15342 | transaction.getReactMountReady().enqueue(function () { | ||
15343 | measureLifeCyclePerf(function () { | ||
15344 | return inst.componentDidMount(); | ||
15345 | }, _this._debugID, 'componentDidMount'); | ||
15346 | }); | ||
15347 | } else { | ||
15348 | transaction.getReactMountReady().enqueue(inst.componentDidMount, inst); | ||
15349 | } | ||
15350 | } | ||
15351 | |||
15352 | return markup; | ||
15353 | }, | ||
15354 | |||
15355 | _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) { | ||
15356 | if (process.env.NODE_ENV !== 'production') { | ||
15357 | ReactCurrentOwner.current = this; | ||
15358 | try { | ||
15359 | return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue); | ||
15360 | } finally { | ||
15361 | ReactCurrentOwner.current = null; | ||
15362 | } | ||
15363 | } else { | ||
15364 | return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue); | ||
15365 | } | ||
15366 | }, | ||
15367 | |||
15368 | _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) { | ||
15369 | var Component = this._currentElement.type; | ||
15370 | |||
15371 | if (doConstruct) { | ||
15372 | if (process.env.NODE_ENV !== 'production') { | ||
15373 | return measureLifeCyclePerf(function () { | ||
15374 | return new Component(publicProps, publicContext, updateQueue); | ||
15375 | }, this._debugID, 'ctor'); | ||
15376 | } else { | ||
15377 | return new Component(publicProps, publicContext, updateQueue); | ||
15378 | } | ||
15379 | } | ||
15380 | |||
15381 | // This can still be an instance in case of factory components | ||
15382 | // but we'll count this as time spent rendering as the more common case. | ||
15383 | if (process.env.NODE_ENV !== 'production') { | ||
15384 | return measureLifeCyclePerf(function () { | ||
15385 | return Component(publicProps, publicContext, updateQueue); | ||
15386 | }, this._debugID, 'render'); | ||
15387 | } else { | ||
15388 | return Component(publicProps, publicContext, updateQueue); | ||
15389 | } | ||
15390 | }, | ||
15391 | |||
15392 | performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) { | ||
15393 | var markup; | ||
15394 | var checkpoint = transaction.checkpoint(); | ||
15395 | try { | ||
15396 | markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context); | ||
15397 | } catch (e) { | ||
15398 | // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint | ||
15399 | transaction.rollback(checkpoint); | ||
15400 | this._instance.unstable_handleError(e); | ||
15401 | if (this._pendingStateQueue) { | ||
15402 | this._instance.state = this._processPendingState(this._instance.props, this._instance.context); | ||
15403 | } | ||
15404 | checkpoint = transaction.checkpoint(); | ||
15405 | |||
15406 | this._renderedComponent.unmountComponent(true); | ||
15407 | transaction.rollback(checkpoint); | ||
15408 | |||
15409 | // Try again - we've informed the component about the error, so they can render an error message this time. | ||
15410 | // If this throws again, the error will bubble up (and can be caught by a higher error boundary). | ||
15411 | markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context); | ||
15412 | } | ||
15413 | return markup; | ||
15414 | }, | ||
15415 | |||
15416 | performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) { | ||
15417 | var inst = this._instance; | ||
15418 | |||
15419 | var debugID = 0; | ||
15420 | if (process.env.NODE_ENV !== 'production') { | ||
15421 | debugID = this._debugID; | ||
15422 | } | ||
15423 | |||
15424 | if (inst.componentWillMount) { | ||
15425 | if (process.env.NODE_ENV !== 'production') { | ||
15426 | measureLifeCyclePerf(function () { | ||
15427 | return inst.componentWillMount(); | ||
15428 | }, debugID, 'componentWillMount'); | ||
15429 | } else { | ||
15430 | inst.componentWillMount(); | ||
15431 | } | ||
15432 | // When mounting, calls to `setState` by `componentWillMount` will set | ||
15433 | // `this._pendingStateQueue` without triggering a re-render. | ||
15434 | if (this._pendingStateQueue) { | ||
15435 | inst.state = this._processPendingState(inst.props, inst.context); | ||
15436 | } | ||
15437 | } | ||
15438 | |||
15439 | // If not a stateless component, we now render | ||
15440 | if (renderedElement === undefined) { | ||
15441 | renderedElement = this._renderValidatedComponent(); | ||
15442 | } | ||
15443 | |||
15444 | var nodeType = ReactNodeTypes.getType(renderedElement); | ||
15445 | this._renderedNodeType = nodeType; | ||
15446 | var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */ | ||
15447 | ); | ||
15448 | this._renderedComponent = child; | ||
15449 | |||
15450 | var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID); | ||
15451 | |||
15452 | if (process.env.NODE_ENV !== 'production') { | ||
15453 | if (debugID !== 0) { | ||
15454 | var childDebugIDs = child._debugID !== 0 ? [child._debugID] : []; | ||
15455 | ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs); | ||
15456 | } | ||
15457 | } | ||
15458 | |||
15459 | return markup; | ||
15460 | }, | ||
15461 | |||
15462 | getHostNode: function () { | ||
15463 | return ReactReconciler.getHostNode(this._renderedComponent); | ||
15464 | }, | ||
15465 | |||
15466 | /** | ||
15467 | * Releases any resources allocated by `mountComponent`. | ||
15468 | * | ||
15469 | * @final | ||
15470 | * @internal | ||
15471 | */ | ||
15472 | unmountComponent: function (safely) { | ||
15473 | if (!this._renderedComponent) { | ||
15474 | return; | ||
15475 | } | ||
15476 | |||
15477 | var inst = this._instance; | ||
15478 | |||
15479 | if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) { | ||
15480 | inst._calledComponentWillUnmount = true; | ||
15481 | |||
15482 | if (safely) { | ||
15483 | var name = this.getName() + '.componentWillUnmount()'; | ||
15484 | ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst)); | ||
15485 | } else { | ||
15486 | if (process.env.NODE_ENV !== 'production') { | ||
15487 | measureLifeCyclePerf(function () { | ||
15488 | return inst.componentWillUnmount(); | ||
15489 | }, this._debugID, 'componentWillUnmount'); | ||
15490 | } else { | ||
15491 | inst.componentWillUnmount(); | ||
15492 | } | ||
15493 | } | ||
15494 | } | ||
15495 | |||
15496 | if (this._renderedComponent) { | ||
15497 | ReactReconciler.unmountComponent(this._renderedComponent, safely); | ||
15498 | this._renderedNodeType = null; | ||
15499 | this._renderedComponent = null; | ||
15500 | this._instance = null; | ||
15501 | } | ||
15502 | |||
15503 | // Reset pending fields | ||
15504 | // Even if this component is scheduled for another update in ReactUpdates, | ||
15505 | // it would still be ignored because these fields are reset. | ||
15506 | this._pendingStateQueue = null; | ||
15507 | this._pendingReplaceState = false; | ||
15508 | this._pendingForceUpdate = false; | ||
15509 | this._pendingCallbacks = null; | ||
15510 | this._pendingElement = null; | ||
15511 | |||
15512 | // These fields do not really need to be reset since this object is no | ||
15513 | // longer accessible. | ||
15514 | this._context = null; | ||
15515 | this._rootNodeID = 0; | ||
15516 | this._topLevelWrapper = null; | ||
15517 | |||
15518 | // Delete the reference from the instance to this internal representation | ||
15519 | // which allow the internals to be properly cleaned up even if the user | ||
15520 | // leaks a reference to the public instance. | ||
15521 | ReactInstanceMap.remove(inst); | ||
15522 | |||
15523 | // Some existing components rely on inst.props even after they've been | ||
15524 | // destroyed (in event handlers). | ||
15525 | // TODO: inst.props = null; | ||
15526 | // TODO: inst.state = null; | ||
15527 | // TODO: inst.context = null; | ||
15528 | }, | ||
15529 | |||
15530 | /** | ||
15531 | * Filters the context object to only contain keys specified in | ||
15532 | * `contextTypes` | ||
15533 | * | ||
15534 | * @param {object} context | ||
15535 | * @return {?object} | ||
15536 | * @private | ||
15537 | */ | ||
15538 | _maskContext: function (context) { | ||
15539 | var Component = this._currentElement.type; | ||
15540 | var contextTypes = Component.contextTypes; | ||
15541 | if (!contextTypes) { | ||
15542 | return emptyObject; | ||
15543 | } | ||
15544 | var maskedContext = {}; | ||
15545 | for (var contextName in contextTypes) { | ||
15546 | maskedContext[contextName] = context[contextName]; | ||
15547 | } | ||
15548 | return maskedContext; | ||
15549 | }, | ||
15550 | |||
15551 | /** | ||
15552 | * Filters the context object to only contain keys specified in | ||
15553 | * `contextTypes`, and asserts that they are valid. | ||
15554 | * | ||
15555 | * @param {object} context | ||
15556 | * @return {?object} | ||
15557 | * @private | ||
15558 | */ | ||
15559 | _processContext: function (context) { | ||
15560 | var maskedContext = this._maskContext(context); | ||
15561 | if (process.env.NODE_ENV !== 'production') { | ||
15562 | var Component = this._currentElement.type; | ||
15563 | if (Component.contextTypes) { | ||
15564 | this._checkContextTypes(Component.contextTypes, maskedContext, 'context'); | ||
15565 | } | ||
15566 | } | ||
15567 | return maskedContext; | ||
15568 | }, | ||
15569 | |||
15570 | /** | ||
15571 | * @param {object} currentContext | ||
15572 | * @return {object} | ||
15573 | * @private | ||
15574 | */ | ||
15575 | _processChildContext: function (currentContext) { | ||
15576 | var Component = this._currentElement.type; | ||
15577 | var inst = this._instance; | ||
15578 | var childContext; | ||
15579 | |||
15580 | if (inst.getChildContext) { | ||
15581 | if (process.env.NODE_ENV !== 'production') { | ||
15582 | ReactInstrumentation.debugTool.onBeginProcessingChildContext(); | ||
15583 | try { | ||
15584 | childContext = inst.getChildContext(); | ||
15585 | } finally { | ||
15586 | ReactInstrumentation.debugTool.onEndProcessingChildContext(); | ||
15587 | } | ||
15588 | } else { | ||
15589 | childContext = inst.getChildContext(); | ||
15590 | } | ||
15591 | } | ||
15592 | |||
15593 | if (childContext) { | ||
15594 | !(typeof Component.childContextTypes === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0; | ||
15595 | if (process.env.NODE_ENV !== 'production') { | ||
15596 | this._checkContextTypes(Component.childContextTypes, childContext, 'child context'); | ||
15597 | } | ||
15598 | for (var name in childContext) { | ||
15599 | !(name in Component.childContextTypes) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): key "%s" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0; | ||
15600 | } | ||
15601 | return _assign({}, currentContext, childContext); | ||
15602 | } | ||
15603 | return currentContext; | ||
15604 | }, | ||
15605 | |||
15606 | /** | ||
15607 | * Assert that the context types are valid | ||
15608 | * | ||
15609 | * @param {object} typeSpecs Map of context field to a ReactPropType | ||
15610 | * @param {object} values Runtime values that need to be type-checked | ||
15611 | * @param {string} location e.g. "prop", "context", "child context" | ||
15612 | * @private | ||
15613 | */ | ||
15614 | _checkContextTypes: function (typeSpecs, values, location) { | ||
15615 | if (process.env.NODE_ENV !== 'production') { | ||
15616 | checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID); | ||
15617 | } | ||
15618 | }, | ||
15619 | |||
15620 | receiveComponent: function (nextElement, transaction, nextContext) { | ||
15621 | var prevElement = this._currentElement; | ||
15622 | var prevContext = this._context; | ||
15623 | |||
15624 | this._pendingElement = null; | ||
15625 | |||
15626 | this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext); | ||
15627 | }, | ||
15628 | |||
15629 | /** | ||
15630 | * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate` | ||
15631 | * is set, update the component. | ||
15632 | * | ||
15633 | * @param {ReactReconcileTransaction} transaction | ||
15634 | * @internal | ||
15635 | */ | ||
15636 | performUpdateIfNecessary: function (transaction) { | ||
15637 | if (this._pendingElement != null) { | ||
15638 | ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context); | ||
15639 | } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) { | ||
15640 | this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context); | ||
15641 | } else { | ||
15642 | this._updateBatchNumber = null; | ||
15643 | } | ||
15644 | }, | ||
15645 | |||
15646 | /** | ||
15647 | * Perform an update to a mounted component. The componentWillReceiveProps and | ||
15648 | * shouldComponentUpdate methods are called, then (assuming the update isn't | ||
15649 | * skipped) the remaining update lifecycle methods are called and the DOM | ||
15650 | * representation is updated. | ||
15651 | * | ||
15652 | * By default, this implements React's rendering and reconciliation algorithm. | ||
15653 | * Sophisticated clients may wish to override this. | ||
15654 | * | ||
15655 | * @param {ReactReconcileTransaction} transaction | ||
15656 | * @param {ReactElement} prevParentElement | ||
15657 | * @param {ReactElement} nextParentElement | ||
15658 | * @internal | ||
15659 | * @overridable | ||
15660 | */ | ||
15661 | updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) { | ||
15662 | var inst = this._instance; | ||
15663 | !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0; | ||
15664 | |||
15665 | var willReceive = false; | ||
15666 | var nextContext; | ||
15667 | |||
15668 | // Determine if the context has changed or not | ||
15669 | if (this._context === nextUnmaskedContext) { | ||
15670 | nextContext = inst.context; | ||
15671 | } else { | ||
15672 | nextContext = this._processContext(nextUnmaskedContext); | ||
15673 | willReceive = true; | ||
15674 | } | ||
15675 | |||
15676 | var prevProps = prevParentElement.props; | ||
15677 | var nextProps = nextParentElement.props; | ||
15678 | |||
15679 | // Not a simple state update but a props update | ||
15680 | if (prevParentElement !== nextParentElement) { | ||
15681 | willReceive = true; | ||
15682 | } | ||
15683 | |||
15684 | // An update here will schedule an update but immediately set | ||
15685 | // _pendingStateQueue which will ensure that any state updates gets | ||
15686 | // immediately reconciled instead of waiting for the next batch. | ||
15687 | if (willReceive && inst.componentWillReceiveProps) { | ||
15688 | if (process.env.NODE_ENV !== 'production') { | ||
15689 | measureLifeCyclePerf(function () { | ||
15690 | return inst.componentWillReceiveProps(nextProps, nextContext); | ||
15691 | }, this._debugID, 'componentWillReceiveProps'); | ||
15692 | } else { | ||
15693 | inst.componentWillReceiveProps(nextProps, nextContext); | ||
15694 | } | ||
15695 | } | ||
15696 | |||
15697 | var nextState = this._processPendingState(nextProps, nextContext); | ||
15698 | var shouldUpdate = true; | ||
15699 | |||
15700 | if (!this._pendingForceUpdate) { | ||
15701 | if (inst.shouldComponentUpdate) { | ||
15702 | if (process.env.NODE_ENV !== 'production') { | ||
15703 | shouldUpdate = measureLifeCyclePerf(function () { | ||
15704 | return inst.shouldComponentUpdate(nextProps, nextState, nextContext); | ||
15705 | }, this._debugID, 'shouldComponentUpdate'); | ||
15706 | } else { | ||
15707 | shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext); | ||
15708 | } | ||
15709 | } else { | ||
15710 | if (this._compositeType === CompositeTypes.PureClass) { | ||
15711 | shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState); | ||
15712 | } | ||
15713 | } | ||
15714 | } | ||
15715 | |||
15716 | if (process.env.NODE_ENV !== 'production') { | ||
15717 | process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0; | ||
15718 | } | ||
15719 | |||
15720 | this._updateBatchNumber = null; | ||
15721 | if (shouldUpdate) { | ||
15722 | this._pendingForceUpdate = false; | ||
15723 | // Will set `this.props`, `this.state` and `this.context`. | ||
15724 | this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext); | ||
15725 | } else { | ||
15726 | // If it's determined that a component should not update, we still want | ||
15727 | // to set props and state but we shortcut the rest of the update. | ||
15728 | this._currentElement = nextParentElement; | ||
15729 | this._context = nextUnmaskedContext; | ||
15730 | inst.props = nextProps; | ||
15731 | inst.state = nextState; | ||
15732 | inst.context = nextContext; | ||
15733 | } | ||
15734 | }, | ||
15735 | |||
15736 | _processPendingState: function (props, context) { | ||
15737 | var inst = this._instance; | ||
15738 | var queue = this._pendingStateQueue; | ||
15739 | var replace = this._pendingReplaceState; | ||
15740 | this._pendingReplaceState = false; | ||
15741 | this._pendingStateQueue = null; | ||
15742 | |||
15743 | if (!queue) { | ||
15744 | return inst.state; | ||
15745 | } | ||
15746 | |||
15747 | if (replace && queue.length === 1) { | ||
15748 | return queue[0]; | ||
15749 | } | ||
15750 | |||
15751 | var nextState = _assign({}, replace ? queue[0] : inst.state); | ||
15752 | for (var i = replace ? 1 : 0; i < queue.length; i++) { | ||
15753 | var partial = queue[i]; | ||
15754 | _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial); | ||
15755 | } | ||
15756 | |||
15757 | return nextState; | ||
15758 | }, | ||
15759 | |||
15760 | /** | ||
15761 | * Merges new props and state, notifies delegate methods of update and | ||
15762 | * performs update. | ||
15763 | * | ||
15764 | * @param {ReactElement} nextElement Next element | ||
15765 | * @param {object} nextProps Next public object to set as properties. | ||
15766 | * @param {?object} nextState Next object to set as state. | ||
15767 | * @param {?object} nextContext Next public object to set as context. | ||
15768 | * @param {ReactReconcileTransaction} transaction | ||
15769 | * @param {?object} unmaskedContext | ||
15770 | * @private | ||
15771 | */ | ||
15772 | _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) { | ||
15773 | var _this2 = this; | ||
15774 | |||
15775 | var inst = this._instance; | ||
15776 | |||
15777 | var hasComponentDidUpdate = Boolean(inst.componentDidUpdate); | ||
15778 | var prevProps; | ||
15779 | var prevState; | ||
15780 | var prevContext; | ||
15781 | if (hasComponentDidUpdate) { | ||
15782 | prevProps = inst.props; | ||
15783 | prevState = inst.state; | ||
15784 | prevContext = inst.context; | ||
15785 | } | ||
15786 | |||
15787 | if (inst.componentWillUpdate) { | ||
15788 | if (process.env.NODE_ENV !== 'production') { | ||
15789 | measureLifeCyclePerf(function () { | ||
15790 | return inst.componentWillUpdate(nextProps, nextState, nextContext); | ||
15791 | }, this._debugID, 'componentWillUpdate'); | ||
15792 | } else { | ||
15793 | inst.componentWillUpdate(nextProps, nextState, nextContext); | ||
15794 | } | ||
15795 | } | ||
15796 | |||
15797 | this._currentElement = nextElement; | ||
15798 | this._context = unmaskedContext; | ||
15799 | inst.props = nextProps; | ||
15800 | inst.state = nextState; | ||
15801 | inst.context = nextContext; | ||
15802 | |||
15803 | this._updateRenderedComponent(transaction, unmaskedContext); | ||
15804 | |||
15805 | if (hasComponentDidUpdate) { | ||
15806 | if (process.env.NODE_ENV !== 'production') { | ||
15807 | transaction.getReactMountReady().enqueue(function () { | ||
15808 | measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate'); | ||
15809 | }); | ||
15810 | } else { | ||
15811 | transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst); | ||
15812 | } | ||
15813 | } | ||
15814 | }, | ||
15815 | |||
15816 | /** | ||
15817 | * Call the component's `render` method and update the DOM accordingly. | ||
15818 | * | ||
15819 | * @param {ReactReconcileTransaction} transaction | ||
15820 | * @internal | ||
15821 | */ | ||
15822 | _updateRenderedComponent: function (transaction, context) { | ||
15823 | var prevComponentInstance = this._renderedComponent; | ||
15824 | var prevRenderedElement = prevComponentInstance._currentElement; | ||
15825 | var nextRenderedElement = this._renderValidatedComponent(); | ||
15826 | |||
15827 | var debugID = 0; | ||
15828 | if (process.env.NODE_ENV !== 'production') { | ||
15829 | debugID = this._debugID; | ||
15830 | } | ||
15831 | |||
15832 | if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) { | ||
15833 | ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context)); | ||
15834 | } else { | ||
15835 | var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance); | ||
15836 | ReactReconciler.unmountComponent(prevComponentInstance, false); | ||
15837 | |||
15838 | var nodeType = ReactNodeTypes.getType(nextRenderedElement); | ||
15839 | this._renderedNodeType = nodeType; | ||
15840 | var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */ | ||
15841 | ); | ||
15842 | this._renderedComponent = child; | ||
15843 | |||
15844 | var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID); | ||
15845 | |||
15846 | if (process.env.NODE_ENV !== 'production') { | ||
15847 | if (debugID !== 0) { | ||
15848 | var childDebugIDs = child._debugID !== 0 ? [child._debugID] : []; | ||
15849 | ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs); | ||
15850 | } | ||
15851 | } | ||
15852 | |||
15853 | this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance); | ||
15854 | } | ||
15855 | }, | ||
15856 | |||
15857 | /** | ||
15858 | * Overridden in shallow rendering. | ||
15859 | * | ||
15860 | * @protected | ||
15861 | */ | ||
15862 | _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) { | ||
15863 | ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance); | ||
15864 | }, | ||
15865 | |||
15866 | /** | ||
15867 | * @protected | ||
15868 | */ | ||
15869 | _renderValidatedComponentWithoutOwnerOrContext: function () { | ||
15870 | var inst = this._instance; | ||
15871 | var renderedElement; | ||
15872 | |||
15873 | if (process.env.NODE_ENV !== 'production') { | ||
15874 | renderedElement = measureLifeCyclePerf(function () { | ||
15875 | return inst.render(); | ||
15876 | }, this._debugID, 'render'); | ||
15877 | } else { | ||
15878 | renderedElement = inst.render(); | ||
15879 | } | ||
15880 | |||
15881 | if (process.env.NODE_ENV !== 'production') { | ||
15882 | // We allow auto-mocks to proceed as if they're returning null. | ||
15883 | if (renderedElement === undefined && inst.render._isMockFunction) { | ||
15884 | // This is probably bad practice. Consider warning here and | ||
15885 | // deprecating this convenience. | ||
15886 | renderedElement = null; | ||
15887 | } | ||
15888 | } | ||
15889 | |||
15890 | return renderedElement; | ||
15891 | }, | ||
15892 | |||
15893 | /** | ||
15894 | * @private | ||
15895 | */ | ||
15896 | _renderValidatedComponent: function () { | ||
15897 | var renderedElement; | ||
15898 | if (process.env.NODE_ENV !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) { | ||
15899 | ReactCurrentOwner.current = this; | ||
15900 | try { | ||
15901 | renderedElement = this._renderValidatedComponentWithoutOwnerOrContext(); | ||
15902 | } finally { | ||
15903 | ReactCurrentOwner.current = null; | ||
15904 | } | ||
15905 | } else { | ||
15906 | renderedElement = this._renderValidatedComponentWithoutOwnerOrContext(); | ||
15907 | } | ||
15908 | !( | ||
15909 | // TODO: An `isValidNode` function would probably be more appropriate | ||
15910 | renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0; | ||
15911 | |||
15912 | return renderedElement; | ||
15913 | }, | ||
15914 | |||
15915 | /** | ||
15916 | * Lazily allocates the refs object and stores `component` as `ref`. | ||
15917 | * | ||
15918 | * @param {string} ref Reference name. | ||
15919 | * @param {component} component Component to store as `ref`. | ||
15920 | * @final | ||
15921 | * @private | ||
15922 | */ | ||
15923 | attachRef: function (ref, component) { | ||
15924 | var inst = this.getPublicInstance(); | ||
15925 | !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0; | ||
15926 | var publicComponentInstance = component.getPublicInstance(); | ||
15927 | if (process.env.NODE_ENV !== 'production') { | ||
15928 | var componentName = component && component.getName ? component.getName() : 'a component'; | ||
15929 | process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref "%s" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0; | ||
15930 | } | ||
15931 | var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs; | ||
15932 | refs[ref] = publicComponentInstance; | ||
15933 | }, | ||
15934 | |||
15935 | /** | ||
15936 | * Detaches a reference name. | ||
15937 | * | ||
15938 | * @param {string} ref Name to dereference. | ||
15939 | * @final | ||
15940 | * @private | ||
15941 | */ | ||
15942 | detachRef: function (ref) { | ||
15943 | var refs = this.getPublicInstance().refs; | ||
15944 | delete refs[ref]; | ||
15945 | }, | ||
15946 | |||
15947 | /** | ||
15948 | * Get a text description of the component that can be used to identify it | ||
15949 | * in error messages. | ||
15950 | * @return {string} The name or null. | ||
15951 | * @internal | ||
15952 | */ | ||
15953 | getName: function () { | ||
15954 | var type = this._currentElement.type; | ||
15955 | var constructor = this._instance && this._instance.constructor; | ||
15956 | return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null; | ||
15957 | }, | ||
15958 | |||
15959 | /** | ||
15960 | * Get the publicly accessible representation of this component - i.e. what | ||
15961 | * is exposed by refs and returned by render. Can be null for stateless | ||
15962 | * components. | ||
15963 | * | ||
15964 | * @return {ReactComponent} the public component instance. | ||
15965 | * @internal | ||
15966 | */ | ||
15967 | getPublicInstance: function () { | ||
15968 | var inst = this._instance; | ||
15969 | if (this._compositeType === CompositeTypes.StatelessFunctional) { | ||
15970 | return null; | ||
15971 | } | ||
15972 | return inst; | ||
15973 | }, | ||
15974 | |||
15975 | // Stub | ||
15976 | _instantiateReactComponent: null | ||
15977 | |||
15978 | }; | ||
15979 | |||
15980 | module.exports = ReactCompositeComponent; | ||
15981 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
15982 | |||
15983 | /***/ }), | ||
15984 | /* 126 */ | ||
15985 | /***/ (function(module, exports, __webpack_require__) { | ||
15986 | |||
15987 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
15988 | * Copyright 2013-present, Facebook, Inc. | ||
15989 | * All rights reserved. | ||
15990 | * | ||
15991 | * This source code is licensed under the BSD-style license found in the | ||
15992 | * LICENSE file in the root directory of this source tree. An additional grant | ||
15993 | * of patent rights can be found in the PATENTS file in the same directory. | ||
15994 | * | ||
15995 | * | ||
15996 | */ | ||
15997 | |||
15998 | 'use strict'; | ||
15999 | |||
16000 | var _prodInvariant = __webpack_require__(41); | ||
16001 | |||
16002 | var React = __webpack_require__(4); | ||
16003 | |||
16004 | var invariant = __webpack_require__(10); | ||
16005 | |||
16006 | var ReactNodeTypes = { | ||
16007 | HOST: 0, | ||
16008 | COMPOSITE: 1, | ||
16009 | EMPTY: 2, | ||
16010 | |||
16011 | getType: function (node) { | ||
16012 | if (node === null || node === false) { | ||
16013 | return ReactNodeTypes.EMPTY; | ||
16014 | } else if (React.isValidElement(node)) { | ||
16015 | if (typeof node.type === 'function') { | ||
16016 | return ReactNodeTypes.COMPOSITE; | ||
16017 | } else { | ||
16018 | return ReactNodeTypes.HOST; | ||
16019 | } | ||
16020 | } | ||
16021 | true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0; | ||
16022 | } | ||
16023 | }; | ||
16024 | |||
16025 | module.exports = ReactNodeTypes; | ||
16026 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
16027 | |||
16028 | /***/ }), | ||
16029 | /* 127 */ | ||
16030 | /***/ (function(module, exports, __webpack_require__) { | ||
16031 | |||
16032 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
16033 | * Copyright 2013-present, Facebook, Inc. | ||
16034 | * All rights reserved. | ||
16035 | * | ||
16036 | * This source code is licensed under the BSD-style license found in the | ||
16037 | * LICENSE file in the root directory of this source tree. An additional grant | ||
16038 | * of patent rights can be found in the PATENTS file in the same directory. | ||
16039 | * | ||
16040 | */ | ||
16041 | |||
16042 | 'use strict'; | ||
16043 | |||
16044 | var _prodInvariant = __webpack_require__(41); | ||
16045 | |||
16046 | var ReactPropTypeLocationNames = __webpack_require__(128); | ||
16047 | var ReactPropTypesSecret = __webpack_require__(116); | ||
16048 | |||
16049 | var invariant = __webpack_require__(10); | ||
16050 | var warning = __webpack_require__(13); | ||
16051 | |||
16052 | var ReactComponentTreeHook; | ||
16053 | |||
16054 | if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') { | ||
16055 | // Temporary hack. | ||
16056 | // Inline requires don't work well with Jest: | ||
16057 | // https://github.com/facebook/react/issues/7240 | ||
16058 | // Remove the inline requires when we don't need them anymore: | ||
16059 | // https://github.com/facebook/react/pull/7178 | ||
16060 | ReactComponentTreeHook = __webpack_require__(28); | ||
16061 | } | ||
16062 | |||
16063 | var loggedTypeFailures = {}; | ||
16064 | |||
16065 | /** | ||
16066 | * Assert that the values match with the type specs. | ||
16067 | * Error messages are memorized and will only be shown once. | ||
16068 | * | ||
16069 | * @param {object} typeSpecs Map of name to a ReactPropType | ||
16070 | * @param {object} values Runtime values that need to be type-checked | ||
16071 | * @param {string} location e.g. "prop", "context", "child context" | ||
16072 | * @param {string} componentName Name of the component for error messages. | ||
16073 | * @param {?object} element The React element that is being type-checked | ||
16074 | * @param {?number} debugID The React component instance that is being type-checked | ||
16075 | * @private | ||
16076 | */ | ||
16077 | function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) { | ||
16078 | for (var typeSpecName in typeSpecs) { | ||
16079 | if (typeSpecs.hasOwnProperty(typeSpecName)) { | ||
16080 | var error; | ||
16081 | // Prop type validation may throw. In case they do, we don't want to | ||
16082 | // fail the render phase where it didn't fail before. So we log it. | ||
16083 | // After these have been cleaned up, we'll let them throw. | ||
16084 | try { | ||
16085 | // This is intentionally an invariant that gets caught. It's the same | ||
16086 | // behavior as without this statement except with a better message. | ||
16087 | !(typeof typeSpecs[typeSpecName] === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant('84', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : void 0; | ||
16088 | error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); | ||
16089 | } catch (ex) { | ||
16090 | error = ex; | ||
16091 | } | ||
16092 | process.env.NODE_ENV !== 'production' ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0; | ||
16093 | if (error instanceof Error && !(error.message in loggedTypeFailures)) { | ||
16094 | // Only monitor this failure once because there tends to be a lot of the | ||
16095 | // same error. | ||
16096 | loggedTypeFailures[error.message] = true; | ||
16097 | |||
16098 | var componentStackInfo = ''; | ||
16099 | |||
16100 | if (process.env.NODE_ENV !== 'production') { | ||
16101 | if (!ReactComponentTreeHook) { | ||
16102 | ReactComponentTreeHook = __webpack_require__(28); | ||
16103 | } | ||
16104 | if (debugID !== null) { | ||
16105 | componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID); | ||
16106 | } else if (element !== null) { | ||
16107 | componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element); | ||
16108 | } | ||
16109 | } | ||
16110 | |||
16111 | process.env.NODE_ENV !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0; | ||
16112 | } | ||
16113 | } | ||
16114 | } | ||
16115 | } | ||
16116 | |||
16117 | module.exports = checkReactTypeSpec; | ||
16118 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
16119 | |||
16120 | /***/ }), | ||
16121 | /* 128 */ | ||
16122 | 25, | ||
16123 | /* 129 */ | ||
16124 | /***/ (function(module, exports) { | ||
16125 | |||
16126 | /** | ||
16127 | * Copyright (c) 2013-present, Facebook, Inc. | ||
16128 | * All rights reserved. | ||
16129 | * | ||
16130 | * This source code is licensed under the BSD-style license found in the | ||
16131 | * LICENSE file in the root directory of this source tree. An additional grant | ||
16132 | * of patent rights can be found in the PATENTS file in the same directory. | ||
16133 | * | ||
16134 | * @typechecks | ||
16135 | * | ||
16136 | */ | ||
16137 | |||
16138 | /*eslint-disable no-self-compare */ | ||
16139 | |||
16140 | 'use strict'; | ||
16141 | |||
16142 | var hasOwnProperty = Object.prototype.hasOwnProperty; | ||
16143 | |||
16144 | /** | ||
16145 | * inlined Object.is polyfill to avoid requiring consumers ship their own | ||
16146 | * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is | ||
16147 | */ | ||
16148 | function is(x, y) { | ||
16149 | // SameValue algorithm | ||
16150 | if (x === y) { | ||
16151 | // Steps 1-5, 7-10 | ||
16152 | // Steps 6.b-6.e: +0 != -0 | ||
16153 | // Added the nonzero y check to make Flow happy, but it is redundant | ||
16154 | return x !== 0 || y !== 0 || 1 / x === 1 / y; | ||
16155 | } else { | ||
16156 | // Step 6.a: NaN == NaN | ||
16157 | return x !== x && y !== y; | ||
16158 | } | ||
16159 | } | ||
16160 | |||
16161 | /** | ||
16162 | * Performs equality by iterating through keys on an object and returning false | ||
16163 | * when any key has values which are not strictly equal between the arguments. | ||
16164 | * Returns true when the values of all keys are strictly equal. | ||
16165 | */ | ||
16166 | function shallowEqual(objA, objB) { | ||
16167 | if (is(objA, objB)) { | ||
16168 | return true; | ||
16169 | } | ||
16170 | |||
16171 | if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) { | ||
16172 | return false; | ||
16173 | } | ||
16174 | |||
16175 | var keysA = Object.keys(objA); | ||
16176 | var keysB = Object.keys(objB); | ||
16177 | |||
16178 | if (keysA.length !== keysB.length) { | ||
16179 | return false; | ||
16180 | } | ||
16181 | |||
16182 | // Test for A's keys different from B. | ||
16183 | for (var i = 0; i < keysA.length; i++) { | ||
16184 | if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) { | ||
16185 | return false; | ||
16186 | } | ||
16187 | } | ||
16188 | |||
16189 | return true; | ||
16190 | } | ||
16191 | |||
16192 | module.exports = shallowEqual; | ||
16193 | |||
16194 | /***/ }), | ||
16195 | /* 130 */ | ||
16196 | /***/ (function(module, exports) { | ||
16197 | |||
16198 | /** | ||
16199 | * Copyright 2013-present, Facebook, Inc. | ||
16200 | * All rights reserved. | ||
16201 | * | ||
16202 | * This source code is licensed under the BSD-style license found in the | ||
16203 | * LICENSE file in the root directory of this source tree. An additional grant | ||
16204 | * of patent rights can be found in the PATENTS file in the same directory. | ||
16205 | * | ||
16206 | */ | ||
16207 | |||
16208 | 'use strict'; | ||
16209 | |||
16210 | /** | ||
16211 | * Given a `prevElement` and `nextElement`, determines if the existing | ||
16212 | * instance should be updated as opposed to being destroyed or replaced by a new | ||
16213 | * instance. Both arguments are elements. This ensures that this logic can | ||
16214 | * operate on stateless trees without any backing instance. | ||
16215 | * | ||
16216 | * @param {?object} prevElement | ||
16217 | * @param {?object} nextElement | ||
16218 | * @return {boolean} True if the existing instance should be updated. | ||
16219 | * @protected | ||
16220 | */ | ||
16221 | |||
16222 | function shouldUpdateReactComponent(prevElement, nextElement) { | ||
16223 | var prevEmpty = prevElement === null || prevElement === false; | ||
16224 | var nextEmpty = nextElement === null || nextElement === false; | ||
16225 | if (prevEmpty || nextEmpty) { | ||
16226 | return prevEmpty === nextEmpty; | ||
16227 | } | ||
16228 | |||
16229 | var prevType = typeof prevElement; | ||
16230 | var nextType = typeof nextElement; | ||
16231 | if (prevType === 'string' || prevType === 'number') { | ||
16232 | return nextType === 'string' || nextType === 'number'; | ||
16233 | } else { | ||
16234 | return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key; | ||
16235 | } | ||
16236 | } | ||
16237 | |||
16238 | module.exports = shouldUpdateReactComponent; | ||
16239 | |||
16240 | /***/ }), | ||
16241 | /* 131 */ | ||
16242 | /***/ (function(module, exports) { | ||
16243 | |||
16244 | /** | ||
16245 | * Copyright 2014-present, Facebook, Inc. | ||
16246 | * All rights reserved. | ||
16247 | * | ||
16248 | * This source code is licensed under the BSD-style license found in the | ||
16249 | * LICENSE file in the root directory of this source tree. An additional grant | ||
16250 | * of patent rights can be found in the PATENTS file in the same directory. | ||
16251 | * | ||
16252 | */ | ||
16253 | |||
16254 | 'use strict'; | ||
16255 | |||
16256 | var emptyComponentFactory; | ||
16257 | |||
16258 | var ReactEmptyComponentInjection = { | ||
16259 | injectEmptyComponentFactory: function (factory) { | ||
16260 | emptyComponentFactory = factory; | ||
16261 | } | ||
16262 | }; | ||
16263 | |||
16264 | var ReactEmptyComponent = { | ||
16265 | create: function (instantiate) { | ||
16266 | return emptyComponentFactory(instantiate); | ||
16267 | } | ||
16268 | }; | ||
16269 | |||
16270 | ReactEmptyComponent.injection = ReactEmptyComponentInjection; | ||
16271 | |||
16272 | module.exports = ReactEmptyComponent; | ||
16273 | |||
16274 | /***/ }), | ||
16275 | /* 132 */ | ||
16276 | /***/ (function(module, exports, __webpack_require__) { | ||
16277 | |||
16278 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
16279 | * Copyright 2014-present, Facebook, Inc. | ||
16280 | * All rights reserved. | ||
16281 | * | ||
16282 | * This source code is licensed under the BSD-style license found in the | ||
16283 | * LICENSE file in the root directory of this source tree. An additional grant | ||
16284 | * of patent rights can be found in the PATENTS file in the same directory. | ||
16285 | * | ||
16286 | */ | ||
16287 | |||
16288 | 'use strict'; | ||
16289 | |||
16290 | var _prodInvariant = __webpack_require__(41); | ||
16291 | |||
16292 | var invariant = __webpack_require__(10); | ||
16293 | |||
16294 | var genericComponentClass = null; | ||
16295 | var textComponentClass = null; | ||
16296 | |||
16297 | var ReactHostComponentInjection = { | ||
16298 | // This accepts a class that receives the tag string. This is a catch all | ||
16299 | // that can render any kind of tag. | ||
16300 | injectGenericComponentClass: function (componentClass) { | ||
16301 | genericComponentClass = componentClass; | ||
16302 | }, | ||
16303 | // This accepts a text component class that takes the text string to be | ||
16304 | // rendered as props. | ||
16305 | injectTextComponentClass: function (componentClass) { | ||
16306 | textComponentClass = componentClass; | ||
16307 | } | ||
16308 | }; | ||
16309 | |||
16310 | /** | ||
16311 | * Get a host internal component class for a specific tag. | ||
16312 | * | ||
16313 | * @param {ReactElement} element The element to create. | ||
16314 | * @return {function} The internal class constructor function. | ||
16315 | */ | ||
16316 | function createInternalComponent(element) { | ||
16317 | !genericComponentClass ? process.env.NODE_ENV !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0; | ||
16318 | return new genericComponentClass(element); | ||
16319 | } | ||
16320 | |||
16321 | /** | ||
16322 | * @param {ReactText} text | ||
16323 | * @return {ReactComponent} | ||
16324 | */ | ||
16325 | function createInstanceForText(text) { | ||
16326 | return new textComponentClass(text); | ||
16327 | } | ||
16328 | |||
16329 | /** | ||
16330 | * @param {ReactComponent} component | ||
16331 | * @return {boolean} | ||
16332 | */ | ||
16333 | function isTextComponent(component) { | ||
16334 | return component instanceof textComponentClass; | ||
16335 | } | ||
16336 | |||
16337 | var ReactHostComponent = { | ||
16338 | createInternalComponent: createInternalComponent, | ||
16339 | createInstanceForText: createInstanceForText, | ||
16340 | isTextComponent: isTextComponent, | ||
16341 | injection: ReactHostComponentInjection | ||
16342 | }; | ||
16343 | |||
16344 | module.exports = ReactHostComponent; | ||
16345 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
16346 | |||
16347 | /***/ }), | ||
16348 | /* 133 */ | ||
16349 | /***/ (function(module, exports) { | ||
16350 | |||
16351 | /** | ||
16352 | * Copyright 2013-present, Facebook, Inc. | ||
16353 | * All rights reserved. | ||
16354 | * | ||
16355 | * This source code is licensed under the BSD-style license found in the | ||
16356 | * LICENSE file in the root directory of this source tree. An additional grant | ||
16357 | * of patent rights can be found in the PATENTS file in the same directory. | ||
16358 | * | ||
16359 | * | ||
16360 | */ | ||
16361 | |||
16362 | 'use strict'; | ||
16363 | |||
16364 | var nextDebugID = 1; | ||
16365 | |||
16366 | function getNextDebugID() { | ||
16367 | return nextDebugID++; | ||
16368 | } | ||
16369 | |||
16370 | module.exports = getNextDebugID; | ||
16371 | |||
16372 | /***/ }), | ||
16373 | /* 134 */ | ||
16374 | 19, | ||
16375 | /* 135 */ | ||
16376 | /***/ (function(module, exports, __webpack_require__) { | ||
16377 | |||
16378 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
16379 | * Copyright 2013-present, Facebook, Inc. | ||
16380 | * All rights reserved. | ||
16381 | * | ||
16382 | * This source code is licensed under the BSD-style license found in the | ||
16383 | * LICENSE file in the root directory of this source tree. An additional grant | ||
16384 | * of patent rights can be found in the PATENTS file in the same directory. | ||
16385 | * | ||
16386 | */ | ||
16387 | |||
16388 | 'use strict'; | ||
16389 | |||
16390 | var _prodInvariant = __webpack_require__(41); | ||
16391 | |||
16392 | var ReactCurrentOwner = __webpack_require__(12); | ||
16393 | var REACT_ELEMENT_TYPE = __webpack_require__(136); | ||
16394 | |||
16395 | var getIteratorFn = __webpack_require__(137); | ||
16396 | var invariant = __webpack_require__(10); | ||
16397 | var KeyEscapeUtils = __webpack_require__(134); | ||
16398 | var warning = __webpack_require__(13); | ||
16399 | |||
16400 | var SEPARATOR = '.'; | ||
16401 | var SUBSEPARATOR = ':'; | ||
16402 | |||
16403 | /** | ||
16404 | * This is inlined from ReactElement since this file is shared between | ||
16405 | * isomorphic and renderers. We could extract this to a | ||
16406 | * | ||
16407 | */ | ||
16408 | |||
16409 | /** | ||
16410 | * TODO: Test that a single child and an array with one item have the same key | ||
16411 | * pattern. | ||
16412 | */ | ||
16413 | |||
16414 | var didWarnAboutMaps = false; | ||
16415 | |||
16416 | /** | ||
16417 | * Generate a key string that identifies a component within a set. | ||
16418 | * | ||
16419 | * @param {*} component A component that could contain a manual key. | ||
16420 | * @param {number} index Index that is used if a manual key is not provided. | ||
16421 | * @return {string} | ||
16422 | */ | ||
16423 | function getComponentKey(component, index) { | ||
16424 | // Do some typechecking here since we call this blindly. We want to ensure | ||
16425 | // that we don't block potential future ES APIs. | ||
16426 | if (component && typeof component === 'object' && component.key != null) { | ||
16427 | // Explicit key | ||
16428 | return KeyEscapeUtils.escape(component.key); | ||
16429 | } | ||
16430 | // Implicit key determined by the index in the set | ||
16431 | return index.toString(36); | ||
16432 | } | ||
16433 | |||
16434 | /** | ||
16435 | * @param {?*} children Children tree container. | ||
16436 | * @param {!string} nameSoFar Name of the key path so far. | ||
16437 | * @param {!function} callback Callback to invoke with each child found. | ||
16438 | * @param {?*} traverseContext Used to pass information throughout the traversal | ||
16439 | * process. | ||
16440 | * @return {!number} The number of children in this subtree. | ||
16441 | */ | ||
16442 | function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { | ||
16443 | var type = typeof children; | ||
16444 | |||
16445 | if (type === 'undefined' || type === 'boolean') { | ||
16446 | // All of the above are perceived as null. | ||
16447 | children = null; | ||
16448 | } | ||
16449 | |||
16450 | if (children === null || type === 'string' || type === 'number' || | ||
16451 | // The following is inlined from ReactElement. This means we can optimize | ||
16452 | // some checks. React Fiber also inlines this logic for similar purposes. | ||
16453 | type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) { | ||
16454 | callback(traverseContext, children, | ||
16455 | // If it's the only child, treat the name as if it was wrapped in an array | ||
16456 | // so that it's consistent if the number of children grows. | ||
16457 | nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar); | ||
16458 | return 1; | ||
16459 | } | ||
16460 | |||
16461 | var child; | ||
16462 | var nextName; | ||
16463 | var subtreeCount = 0; // Count of children found in the current subtree. | ||
16464 | var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; | ||
16465 | |||
16466 | if (Array.isArray(children)) { | ||
16467 | for (var i = 0; i < children.length; i++) { | ||
16468 | child = children[i]; | ||
16469 | nextName = nextNamePrefix + getComponentKey(child, i); | ||
16470 | subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); | ||
16471 | } | ||
16472 | } else { | ||
16473 | var iteratorFn = getIteratorFn(children); | ||
16474 | if (iteratorFn) { | ||
16475 | var iterator = iteratorFn.call(children); | ||
16476 | var step; | ||
16477 | if (iteratorFn !== children.entries) { | ||
16478 | var ii = 0; | ||
16479 | while (!(step = iterator.next()).done) { | ||
16480 | child = step.value; | ||
16481 | nextName = nextNamePrefix + getComponentKey(child, ii++); | ||
16482 | subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); | ||
16483 | } | ||
16484 | } else { | ||
16485 | if (process.env.NODE_ENV !== 'production') { | ||
16486 | var mapsAsChildrenAddendum = ''; | ||
16487 | if (ReactCurrentOwner.current) { | ||
16488 | var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName(); | ||
16489 | if (mapsAsChildrenOwnerName) { | ||
16490 | mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.'; | ||
16491 | } | ||
16492 | } | ||
16493 | process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0; | ||
16494 | didWarnAboutMaps = true; | ||
16495 | } | ||
16496 | // Iterator will provide entry [k,v] tuples rather than values. | ||
16497 | while (!(step = iterator.next()).done) { | ||
16498 | var entry = step.value; | ||
16499 | if (entry) { | ||
16500 | child = entry[1]; | ||
16501 | nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0); | ||
16502 | subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); | ||
16503 | } | ||
16504 | } | ||
16505 | } | ||
16506 | } else if (type === 'object') { | ||
16507 | var addendum = ''; | ||
16508 | if (process.env.NODE_ENV !== 'production') { | ||
16509 | addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.'; | ||
16510 | if (children._isReactElement) { | ||
16511 | addendum = ' It looks like you\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.'; | ||
16512 | } | ||
16513 | if (ReactCurrentOwner.current) { | ||
16514 | var name = ReactCurrentOwner.current.getName(); | ||
16515 | if (name) { | ||
16516 | addendum += ' Check the render method of `' + name + '`.'; | ||
16517 | } | ||
16518 | } | ||
16519 | } | ||
16520 | var childrenString = String(children); | ||
16521 | true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0; | ||
16522 | } | ||
16523 | } | ||
16524 | |||
16525 | return subtreeCount; | ||
16526 | } | ||
16527 | |||
16528 | /** | ||
16529 | * Traverses children that are typically specified as `props.children`, but | ||
16530 | * might also be specified through attributes: | ||
16531 | * | ||
16532 | * - `traverseAllChildren(this.props.children, ...)` | ||
16533 | * - `traverseAllChildren(this.props.leftPanelChildren, ...)` | ||
16534 | * | ||
16535 | * The `traverseContext` is an optional argument that is passed through the | ||
16536 | * entire traversal. It can be used to store accumulations or anything else that | ||
16537 | * the callback might find relevant. | ||
16538 | * | ||
16539 | * @param {?*} children Children tree object. | ||
16540 | * @param {!function} callback To invoke upon traversing each child. | ||
16541 | * @param {?*} traverseContext Context for traversal. | ||
16542 | * @return {!number} The number of children in this subtree. | ||
16543 | */ | ||
16544 | function traverseAllChildren(children, callback, traverseContext) { | ||
16545 | if (children == null) { | ||
16546 | return 0; | ||
16547 | } | ||
16548 | |||
16549 | return traverseAllChildrenImpl(children, '', callback, traverseContext); | ||
16550 | } | ||
16551 | |||
16552 | module.exports = traverseAllChildren; | ||
16553 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
16554 | |||
16555 | /***/ }), | ||
16556 | /* 136 */ | ||
16557 | 16, | ||
16558 | /* 137 */ | ||
16559 | 18, | ||
16560 | /* 138 */ | ||
16561 | /***/ (function(module, exports, __webpack_require__) { | ||
16562 | |||
16563 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
16564 | * Copyright 2013-present, Facebook, Inc. | ||
16565 | * All rights reserved. | ||
16566 | * | ||
16567 | * This source code is licensed under the BSD-style license found in the | ||
16568 | * LICENSE file in the root directory of this source tree. An additional grant | ||
16569 | * of patent rights can be found in the PATENTS file in the same directory. | ||
16570 | * | ||
16571 | * | ||
16572 | */ | ||
16573 | |||
16574 | 'use strict'; | ||
16575 | |||
16576 | var KeyEscapeUtils = __webpack_require__(134); | ||
16577 | var traverseAllChildren = __webpack_require__(135); | ||
16578 | var warning = __webpack_require__(13); | ||
16579 | |||
16580 | var ReactComponentTreeHook; | ||
16581 | |||
16582 | if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') { | ||
16583 | // Temporary hack. | ||
16584 | // Inline requires don't work well with Jest: | ||
16585 | // https://github.com/facebook/react/issues/7240 | ||
16586 | // Remove the inline requires when we don't need them anymore: | ||
16587 | // https://github.com/facebook/react/pull/7178 | ||
16588 | ReactComponentTreeHook = __webpack_require__(28); | ||
16589 | } | ||
16590 | |||
16591 | /** | ||
16592 | * @param {function} traverseContext Context passed through traversal. | ||
16593 | * @param {?ReactComponent} child React child component. | ||
16594 | * @param {!string} name String name of key path to child. | ||
16595 | * @param {number=} selfDebugID Optional debugID of the current internal instance. | ||
16596 | */ | ||
16597 | function flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) { | ||
16598 | // We found a component instance. | ||
16599 | if (traverseContext && typeof traverseContext === 'object') { | ||
16600 | var result = traverseContext; | ||
16601 | var keyUnique = result[name] === undefined; | ||
16602 | if (process.env.NODE_ENV !== 'production') { | ||
16603 | if (!ReactComponentTreeHook) { | ||
16604 | ReactComponentTreeHook = __webpack_require__(28); | ||
16605 | } | ||
16606 | if (!keyUnique) { | ||
16607 | process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): 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.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0; | ||
16608 | } | ||
16609 | } | ||
16610 | if (keyUnique && child != null) { | ||
16611 | result[name] = child; | ||
16612 | } | ||
16613 | } | ||
16614 | } | ||
16615 | |||
16616 | /** | ||
16617 | * Flattens children that are typically specified as `props.children`. Any null | ||
16618 | * children will not be included in the resulting object. | ||
16619 | * @return {!object} flattened children keyed by name. | ||
16620 | */ | ||
16621 | function flattenChildren(children, selfDebugID) { | ||
16622 | if (children == null) { | ||
16623 | return children; | ||
16624 | } | ||
16625 | var result = {}; | ||
16626 | |||
16627 | if (process.env.NODE_ENV !== 'production') { | ||
16628 | traverseAllChildren(children, function (traverseContext, child, name) { | ||
16629 | return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID); | ||
16630 | }, result); | ||
16631 | } else { | ||
16632 | traverseAllChildren(children, flattenSingleChildIntoContext, result); | ||
16633 | } | ||
16634 | return result; | ||
16635 | } | ||
16636 | |||
16637 | module.exports = flattenChildren; | ||
16638 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
16639 | |||
16640 | /***/ }), | ||
16641 | /* 139 */ | ||
16642 | /***/ (function(module, exports, __webpack_require__) { | ||
16643 | |||
16644 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
16645 | * Copyright 2014-present, Facebook, Inc. | ||
16646 | * All rights reserved. | ||
16647 | * | ||
16648 | * This source code is licensed under the BSD-style license found in the | ||
16649 | * LICENSE file in the root directory of this source tree. An additional grant | ||
16650 | * of patent rights can be found in the PATENTS file in the same directory. | ||
16651 | * | ||
16652 | */ | ||
16653 | |||
16654 | 'use strict'; | ||
16655 | |||
16656 | var _assign = __webpack_require__(6); | ||
16657 | |||
16658 | var PooledClass = __webpack_require__(56); | ||
16659 | var Transaction = __webpack_require__(74); | ||
16660 | var ReactInstrumentation = __webpack_require__(68); | ||
16661 | var ReactServerUpdateQueue = __webpack_require__(140); | ||
16662 | |||
16663 | /** | ||
16664 | * Executed within the scope of the `Transaction` instance. Consider these as | ||
16665 | * being member methods, but with an implied ordering while being isolated from | ||
16666 | * each other. | ||
16667 | */ | ||
16668 | var TRANSACTION_WRAPPERS = []; | ||
16669 | |||
16670 | if (process.env.NODE_ENV !== 'production') { | ||
16671 | TRANSACTION_WRAPPERS.push({ | ||
16672 | initialize: ReactInstrumentation.debugTool.onBeginFlush, | ||
16673 | close: ReactInstrumentation.debugTool.onEndFlush | ||
16674 | }); | ||
16675 | } | ||
16676 | |||
16677 | var noopCallbackQueue = { | ||
16678 | enqueue: function () {} | ||
16679 | }; | ||
16680 | |||
16681 | /** | ||
16682 | * @class ReactServerRenderingTransaction | ||
16683 | * @param {boolean} renderToStaticMarkup | ||
16684 | */ | ||
16685 | function ReactServerRenderingTransaction(renderToStaticMarkup) { | ||
16686 | this.reinitializeTransaction(); | ||
16687 | this.renderToStaticMarkup = renderToStaticMarkup; | ||
16688 | this.useCreateElement = false; | ||
16689 | this.updateQueue = new ReactServerUpdateQueue(this); | ||
16690 | } | ||
16691 | |||
16692 | var Mixin = { | ||
16693 | /** | ||
16694 | * @see Transaction | ||
16695 | * @abstract | ||
16696 | * @final | ||
16697 | * @return {array} Empty list of operation wrap procedures. | ||
16698 | */ | ||
16699 | getTransactionWrappers: function () { | ||
16700 | return TRANSACTION_WRAPPERS; | ||
16701 | }, | ||
16702 | |||
16703 | /** | ||
16704 | * @return {object} The queue to collect `onDOMReady` callbacks with. | ||
16705 | */ | ||
16706 | getReactMountReady: function () { | ||
16707 | return noopCallbackQueue; | ||
16708 | }, | ||
16709 | |||
16710 | /** | ||
16711 | * @return {object} The queue to collect React async events. | ||
16712 | */ | ||
16713 | getUpdateQueue: function () { | ||
16714 | return this.updateQueue; | ||
16715 | }, | ||
16716 | |||
16717 | /** | ||
16718 | * `PooledClass` looks for this, and will invoke this before allowing this | ||
16719 | * instance to be reused. | ||
16720 | */ | ||
16721 | destructor: function () {}, | ||
16722 | |||
16723 | checkpoint: function () {}, | ||
16724 | |||
16725 | rollback: function () {} | ||
16726 | }; | ||
16727 | |||
16728 | _assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin); | ||
16729 | |||
16730 | PooledClass.addPoolingTo(ReactServerRenderingTransaction); | ||
16731 | |||
16732 | module.exports = ReactServerRenderingTransaction; | ||
16733 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
16734 | |||
16735 | /***/ }), | ||
16736 | /* 140 */ | ||
16737 | /***/ (function(module, exports, __webpack_require__) { | ||
16738 | |||
16739 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
16740 | * Copyright 2015-present, Facebook, Inc. | ||
16741 | * All rights reserved. | ||
16742 | * | ||
16743 | * This source code is licensed under the BSD-style license found in the | ||
16744 | * LICENSE file in the root directory of this source tree. An additional grant | ||
16745 | * of patent rights can be found in the PATENTS file in the same directory. | ||
16746 | * | ||
16747 | * | ||
16748 | */ | ||
16749 | |||
16750 | 'use strict'; | ||
16751 | |||
16752 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
16753 | |||
16754 | var ReactUpdateQueue = __webpack_require__(141); | ||
16755 | |||
16756 | var warning = __webpack_require__(13); | ||
16757 | |||
16758 | function warnNoop(publicInstance, callerName) { | ||
16759 | if (process.env.NODE_ENV !== 'production') { | ||
16760 | var constructor = publicInstance.constructor; | ||
16761 | process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0; | ||
16762 | } | ||
16763 | } | ||
16764 | |||
16765 | /** | ||
16766 | * This is the update queue used for server rendering. | ||
16767 | * It delegates to ReactUpdateQueue while server rendering is in progress and | ||
16768 | * switches to ReactNoopUpdateQueue after the transaction has completed. | ||
16769 | * @class ReactServerUpdateQueue | ||
16770 | * @param {Transaction} transaction | ||
16771 | */ | ||
16772 | |||
16773 | var ReactServerUpdateQueue = function () { | ||
16774 | function ReactServerUpdateQueue(transaction) { | ||
16775 | _classCallCheck(this, ReactServerUpdateQueue); | ||
16776 | |||
16777 | this.transaction = transaction; | ||
16778 | } | ||
16779 | |||
16780 | /** | ||
16781 | * Checks whether or not this composite component is mounted. | ||
16782 | * @param {ReactClass} publicInstance The instance we want to test. | ||
16783 | * @return {boolean} True if mounted, false otherwise. | ||
16784 | * @protected | ||
16785 | * @final | ||
16786 | */ | ||
16787 | |||
16788 | |||
16789 | ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) { | ||
16790 | return false; | ||
16791 | }; | ||
16792 | |||
16793 | /** | ||
16794 | * Enqueue a callback that will be executed after all the pending updates | ||
16795 | * have processed. | ||
16796 | * | ||
16797 | * @param {ReactClass} publicInstance The instance to use as `this` context. | ||
16798 | * @param {?function} callback Called after state is updated. | ||
16799 | * @internal | ||
16800 | */ | ||
16801 | |||
16802 | |||
16803 | ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) { | ||
16804 | if (this.transaction.isInTransaction()) { | ||
16805 | ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName); | ||
16806 | } | ||
16807 | }; | ||
16808 | |||
16809 | /** | ||
16810 | * Forces an update. This should only be invoked when it is known with | ||
16811 | * certainty that we are **not** in a DOM transaction. | ||
16812 | * | ||
16813 | * You may want to call this when you know that some deeper aspect of the | ||
16814 | * component's state has changed but `setState` was not called. | ||
16815 | * | ||
16816 | * This will not invoke `shouldComponentUpdate`, but it will invoke | ||
16817 | * `componentWillUpdate` and `componentDidUpdate`. | ||
16818 | * | ||
16819 | * @param {ReactClass} publicInstance The instance that should rerender. | ||
16820 | * @internal | ||
16821 | */ | ||
16822 | |||
16823 | |||
16824 | ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) { | ||
16825 | if (this.transaction.isInTransaction()) { | ||
16826 | ReactUpdateQueue.enqueueForceUpdate(publicInstance); | ||
16827 | } else { | ||
16828 | warnNoop(publicInstance, 'forceUpdate'); | ||
16829 | } | ||
16830 | }; | ||
16831 | |||
16832 | /** | ||
16833 | * Replaces all of the state. Always use this or `setState` to mutate state. | ||
16834 | * You should treat `this.state` as immutable. | ||
16835 | * | ||
16836 | * There is no guarantee that `this.state` will be immediately updated, so | ||
16837 | * accessing `this.state` after calling this method may return the old value. | ||
16838 | * | ||
16839 | * @param {ReactClass} publicInstance The instance that should rerender. | ||
16840 | * @param {object|function} completeState Next state. | ||
16841 | * @internal | ||
16842 | */ | ||
16843 | |||
16844 | |||
16845 | ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) { | ||
16846 | if (this.transaction.isInTransaction()) { | ||
16847 | ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState); | ||
16848 | } else { | ||
16849 | warnNoop(publicInstance, 'replaceState'); | ||
16850 | } | ||
16851 | }; | ||
16852 | |||
16853 | /** | ||
16854 | * Sets a subset of the state. This only exists because _pendingState is | ||
16855 | * internal. This provides a merging strategy that is not available to deep | ||
16856 | * properties which is confusing. TODO: Expose pendingState or don't use it | ||
16857 | * during the merge. | ||
16858 | * | ||
16859 | * @param {ReactClass} publicInstance The instance that should rerender. | ||
16860 | * @param {object|function} partialState Next partial state to be merged with state. | ||
16861 | * @internal | ||
16862 | */ | ||
16863 | |||
16864 | |||
16865 | ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) { | ||
16866 | if (this.transaction.isInTransaction()) { | ||
16867 | ReactUpdateQueue.enqueueSetState(publicInstance, partialState); | ||
16868 | } else { | ||
16869 | warnNoop(publicInstance, 'setState'); | ||
16870 | } | ||
16871 | }; | ||
16872 | |||
16873 | return ReactServerUpdateQueue; | ||
16874 | }(); | ||
16875 | |||
16876 | module.exports = ReactServerUpdateQueue; | ||
16877 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
16878 | |||
16879 | /***/ }), | ||
16880 | /* 141 */ | ||
16881 | /***/ (function(module, exports, __webpack_require__) { | ||
16882 | |||
16883 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
16884 | * Copyright 2015-present, Facebook, Inc. | ||
16885 | * All rights reserved. | ||
16886 | * | ||
16887 | * This source code is licensed under the BSD-style license found in the | ||
16888 | * LICENSE file in the root directory of this source tree. An additional grant | ||
16889 | * of patent rights can be found in the PATENTS file in the same directory. | ||
16890 | * | ||
16891 | */ | ||
16892 | |||
16893 | 'use strict'; | ||
16894 | |||
16895 | var _prodInvariant = __webpack_require__(41); | ||
16896 | |||
16897 | var ReactCurrentOwner = __webpack_require__(12); | ||
16898 | var ReactInstanceMap = __webpack_require__(122); | ||
16899 | var ReactInstrumentation = __webpack_require__(68); | ||
16900 | var ReactUpdates = __webpack_require__(62); | ||
16901 | |||
16902 | var invariant = __webpack_require__(10); | ||
16903 | var warning = __webpack_require__(13); | ||
16904 | |||
16905 | function enqueueUpdate(internalInstance) { | ||
16906 | ReactUpdates.enqueueUpdate(internalInstance); | ||
16907 | } | ||
16908 | |||
16909 | function formatUnexpectedArgument(arg) { | ||
16910 | var type = typeof arg; | ||
16911 | if (type !== 'object') { | ||
16912 | return type; | ||
16913 | } | ||
16914 | var displayName = arg.constructor && arg.constructor.name || type; | ||
16915 | var keys = Object.keys(arg); | ||
16916 | if (keys.length > 0 && keys.length < 20) { | ||
16917 | return displayName + ' (keys: ' + keys.join(', ') + ')'; | ||
16918 | } | ||
16919 | return displayName; | ||
16920 | } | ||
16921 | |||
16922 | function getInternalInstanceReadyForUpdate(publicInstance, callerName) { | ||
16923 | var internalInstance = ReactInstanceMap.get(publicInstance); | ||
16924 | if (!internalInstance) { | ||
16925 | if (process.env.NODE_ENV !== 'production') { | ||
16926 | var ctor = publicInstance.constructor; | ||
16927 | // Only warn when we have a callerName. Otherwise we should be silent. | ||
16928 | // We're probably calling from enqueueCallback. We don't want to warn | ||
16929 | // there because we already warned for the corresponding lifecycle method. | ||
16930 | process.env.NODE_ENV !== 'production' ? warning(!callerName, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0; | ||
16931 | } | ||
16932 | return null; | ||
16933 | } | ||
16934 | |||
16935 | if (process.env.NODE_ENV !== 'production') { | ||
16936 | process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + 'within `render` or another component\'s constructor). Render methods ' + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0; | ||
16937 | } | ||
16938 | |||
16939 | return internalInstance; | ||
16940 | } | ||
16941 | |||
16942 | /** | ||
16943 | * ReactUpdateQueue allows for state updates to be scheduled into a later | ||
16944 | * reconciliation step. | ||
16945 | */ | ||
16946 | var ReactUpdateQueue = { | ||
16947 | |||
16948 | /** | ||
16949 | * Checks whether or not this composite component is mounted. | ||
16950 | * @param {ReactClass} publicInstance The instance we want to test. | ||
16951 | * @return {boolean} True if mounted, false otherwise. | ||
16952 | * @protected | ||
16953 | * @final | ||
16954 | */ | ||
16955 | isMounted: function (publicInstance) { | ||
16956 | if (process.env.NODE_ENV !== 'production') { | ||
16957 | var owner = ReactCurrentOwner.current; | ||
16958 | if (owner !== null) { | ||
16959 | process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0; | ||
16960 | owner._warnedAboutRefsInRender = true; | ||
16961 | } | ||
16962 | } | ||
16963 | var internalInstance = ReactInstanceMap.get(publicInstance); | ||
16964 | if (internalInstance) { | ||
16965 | // During componentWillMount and render this will still be null but after | ||
16966 | // that will always render to something. At least for now. So we can use | ||
16967 | // this hack. | ||
16968 | return !!internalInstance._renderedComponent; | ||
16969 | } else { | ||
16970 | return false; | ||
16971 | } | ||
16972 | }, | ||
16973 | |||
16974 | /** | ||
16975 | * Enqueue a callback that will be executed after all the pending updates | ||
16976 | * have processed. | ||
16977 | * | ||
16978 | * @param {ReactClass} publicInstance The instance to use as `this` context. | ||
16979 | * @param {?function} callback Called after state is updated. | ||
16980 | * @param {string} callerName Name of the calling function in the public API. | ||
16981 | * @internal | ||
16982 | */ | ||
16983 | enqueueCallback: function (publicInstance, callback, callerName) { | ||
16984 | ReactUpdateQueue.validateCallback(callback, callerName); | ||
16985 | var internalInstance = getInternalInstanceReadyForUpdate(publicInstance); | ||
16986 | |||
16987 | // Previously we would throw an error if we didn't have an internal | ||
16988 | // instance. Since we want to make it a no-op instead, we mirror the same | ||
16989 | // behavior we have in other enqueue* methods. | ||
16990 | // We also need to ignore callbacks in componentWillMount. See | ||
16991 | // enqueueUpdates. | ||
16992 | if (!internalInstance) { | ||
16993 | return null; | ||
16994 | } | ||
16995 | |||
16996 | if (internalInstance._pendingCallbacks) { | ||
16997 | internalInstance._pendingCallbacks.push(callback); | ||
16998 | } else { | ||
16999 | internalInstance._pendingCallbacks = [callback]; | ||
17000 | } | ||
17001 | // TODO: The callback here is ignored when setState is called from | ||
17002 | // componentWillMount. Either fix it or disallow doing so completely in | ||
17003 | // favor of getInitialState. Alternatively, we can disallow | ||
17004 | // componentWillMount during server-side rendering. | ||
17005 | enqueueUpdate(internalInstance); | ||
17006 | }, | ||
17007 | |||
17008 | enqueueCallbackInternal: function (internalInstance, callback) { | ||
17009 | if (internalInstance._pendingCallbacks) { | ||
17010 | internalInstance._pendingCallbacks.push(callback); | ||
17011 | } else { | ||
17012 | internalInstance._pendingCallbacks = [callback]; | ||
17013 | } | ||
17014 | enqueueUpdate(internalInstance); | ||
17015 | }, | ||
17016 | |||
17017 | /** | ||
17018 | * Forces an update. This should only be invoked when it is known with | ||
17019 | * certainty that we are **not** in a DOM transaction. | ||
17020 | * | ||
17021 | * You may want to call this when you know that some deeper aspect of the | ||
17022 | * component's state has changed but `setState` was not called. | ||
17023 | * | ||
17024 | * This will not invoke `shouldComponentUpdate`, but it will invoke | ||
17025 | * `componentWillUpdate` and `componentDidUpdate`. | ||
17026 | * | ||
17027 | * @param {ReactClass} publicInstance The instance that should rerender. | ||
17028 | * @internal | ||
17029 | */ | ||
17030 | enqueueForceUpdate: function (publicInstance) { | ||
17031 | var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate'); | ||
17032 | |||
17033 | if (!internalInstance) { | ||
17034 | return; | ||
17035 | } | ||
17036 | |||
17037 | internalInstance._pendingForceUpdate = true; | ||
17038 | |||
17039 | enqueueUpdate(internalInstance); | ||
17040 | }, | ||
17041 | |||
17042 | /** | ||
17043 | * Replaces all of the state. Always use this or `setState` to mutate state. | ||
17044 | * You should treat `this.state` as immutable. | ||
17045 | * | ||
17046 | * There is no guarantee that `this.state` will be immediately updated, so | ||
17047 | * accessing `this.state` after calling this method may return the old value. | ||
17048 | * | ||
17049 | * @param {ReactClass} publicInstance The instance that should rerender. | ||
17050 | * @param {object} completeState Next state. | ||
17051 | * @internal | ||
17052 | */ | ||
17053 | enqueueReplaceState: function (publicInstance, completeState, callback) { | ||
17054 | var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState'); | ||
17055 | |||
17056 | if (!internalInstance) { | ||
17057 | return; | ||
17058 | } | ||
17059 | |||
17060 | internalInstance._pendingStateQueue = [completeState]; | ||
17061 | internalInstance._pendingReplaceState = true; | ||
17062 | |||
17063 | // Future-proof 15.5 | ||
17064 | if (callback !== undefined && callback !== null) { | ||
17065 | ReactUpdateQueue.validateCallback(callback, 'replaceState'); | ||
17066 | if (internalInstance._pendingCallbacks) { | ||
17067 | internalInstance._pendingCallbacks.push(callback); | ||
17068 | } else { | ||
17069 | internalInstance._pendingCallbacks = [callback]; | ||
17070 | } | ||
17071 | } | ||
17072 | |||
17073 | enqueueUpdate(internalInstance); | ||
17074 | }, | ||
17075 | |||
17076 | /** | ||
17077 | * Sets a subset of the state. This only exists because _pendingState is | ||
17078 | * internal. This provides a merging strategy that is not available to deep | ||
17079 | * properties which is confusing. TODO: Expose pendingState or don't use it | ||
17080 | * during the merge. | ||
17081 | * | ||
17082 | * @param {ReactClass} publicInstance The instance that should rerender. | ||
17083 | * @param {object} partialState Next partial state to be merged with state. | ||
17084 | * @internal | ||
17085 | */ | ||
17086 | enqueueSetState: function (publicInstance, partialState) { | ||
17087 | if (process.env.NODE_ENV !== 'production') { | ||
17088 | ReactInstrumentation.debugTool.onSetState(); | ||
17089 | process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0; | ||
17090 | } | ||
17091 | |||
17092 | var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState'); | ||
17093 | |||
17094 | if (!internalInstance) { | ||
17095 | return; | ||
17096 | } | ||
17097 | |||
17098 | var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []); | ||
17099 | queue.push(partialState); | ||
17100 | |||
17101 | enqueueUpdate(internalInstance); | ||
17102 | }, | ||
17103 | |||
17104 | enqueueElementInternal: function (internalInstance, nextElement, nextContext) { | ||
17105 | internalInstance._pendingElement = nextElement; | ||
17106 | // TODO: introduce _pendingContext instead of setting it directly. | ||
17107 | internalInstance._context = nextContext; | ||
17108 | enqueueUpdate(internalInstance); | ||
17109 | }, | ||
17110 | |||
17111 | validateCallback: function (callback, callerName) { | ||
17112 | !(!callback || typeof callback === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0; | ||
17113 | } | ||
17114 | |||
17115 | }; | ||
17116 | |||
17117 | module.exports = ReactUpdateQueue; | ||
17118 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
17119 | |||
17120 | /***/ }), | ||
17121 | /* 142 */ | ||
17122 | /***/ (function(module, exports, __webpack_require__) { | ||
17123 | |||
17124 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
17125 | * Copyright 2015-present, Facebook, Inc. | ||
17126 | * All rights reserved. | ||
17127 | * | ||
17128 | * This source code is licensed under the BSD-style license found in the | ||
17129 | * LICENSE file in the root directory of this source tree. An additional grant | ||
17130 | * of patent rights can be found in the PATENTS file in the same directory. | ||
17131 | * | ||
17132 | */ | ||
17133 | |||
17134 | 'use strict'; | ||
17135 | |||
17136 | var _assign = __webpack_require__(6); | ||
17137 | |||
17138 | var emptyFunction = __webpack_require__(14); | ||
17139 | var warning = __webpack_require__(13); | ||
17140 | |||
17141 | var validateDOMNesting = emptyFunction; | ||
17142 | |||
17143 | if (process.env.NODE_ENV !== 'production') { | ||
17144 | // This validation code was written based on the HTML5 parsing spec: | ||
17145 | // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope | ||
17146 | // | ||
17147 | // Note: this does not catch all invalid nesting, nor does it try to (as it's | ||
17148 | // not clear what practical benefit doing so provides); instead, we warn only | ||
17149 | // for cases where the parser will give a parse tree differing from what React | ||
17150 | // intended. For example, <b><div></div></b> is invalid but we don't warn | ||
17151 | // because it still parses correctly; we do warn for other cases like nested | ||
17152 | // <p> tags where the beginning of the second element implicitly closes the | ||
17153 | // first, causing a confusing mess. | ||
17154 | |||
17155 | // https://html.spec.whatwg.org/multipage/syntax.html#special | ||
17156 | var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp']; | ||
17157 | |||
17158 | // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope | ||
17159 | var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template', | ||
17160 | |||
17161 | // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point | ||
17162 | // TODO: Distinguish by namespace here -- for <title>, including it here | ||
17163 | // errs on the side of fewer warnings | ||
17164 | 'foreignObject', 'desc', 'title']; | ||
17165 | |||
17166 | // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope | ||
17167 | var buttonScopeTags = inScopeTags.concat(['button']); | ||
17168 | |||
17169 | // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags | ||
17170 | var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt']; | ||
17171 | |||
17172 | var emptyAncestorInfo = { | ||
17173 | current: null, | ||
17174 | |||
17175 | formTag: null, | ||
17176 | aTagInScope: null, | ||
17177 | buttonTagInScope: null, | ||
17178 | nobrTagInScope: null, | ||
17179 | pTagInButtonScope: null, | ||
17180 | |||
17181 | listItemTagAutoclosing: null, | ||
17182 | dlItemTagAutoclosing: null | ||
17183 | }; | ||
17184 | |||
17185 | var updatedAncestorInfo = function (oldInfo, tag, instance) { | ||
17186 | var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo); | ||
17187 | var info = { tag: tag, instance: instance }; | ||
17188 | |||
17189 | if (inScopeTags.indexOf(tag) !== -1) { | ||
17190 | ancestorInfo.aTagInScope = null; | ||
17191 | ancestorInfo.buttonTagInScope = null; | ||
17192 | ancestorInfo.nobrTagInScope = null; | ||
17193 | } | ||
17194 | if (buttonScopeTags.indexOf(tag) !== -1) { | ||
17195 | ancestorInfo.pTagInButtonScope = null; | ||
17196 | } | ||
17197 | |||
17198 | // See rules for 'li', 'dd', 'dt' start tags in | ||
17199 | // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody | ||
17200 | if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') { | ||
17201 | ancestorInfo.listItemTagAutoclosing = null; | ||
17202 | ancestorInfo.dlItemTagAutoclosing = null; | ||
17203 | } | ||
17204 | |||
17205 | ancestorInfo.current = info; | ||
17206 | |||
17207 | if (tag === 'form') { | ||
17208 | ancestorInfo.formTag = info; | ||
17209 | } | ||
17210 | if (tag === 'a') { | ||
17211 | ancestorInfo.aTagInScope = info; | ||
17212 | } | ||
17213 | if (tag === 'button') { | ||
17214 | ancestorInfo.buttonTagInScope = info; | ||
17215 | } | ||
17216 | if (tag === 'nobr') { | ||
17217 | ancestorInfo.nobrTagInScope = info; | ||
17218 | } | ||
17219 | if (tag === 'p') { | ||
17220 | ancestorInfo.pTagInButtonScope = info; | ||
17221 | } | ||
17222 | if (tag === 'li') { | ||
17223 | ancestorInfo.listItemTagAutoclosing = info; | ||
17224 | } | ||
17225 | if (tag === 'dd' || tag === 'dt') { | ||
17226 | ancestorInfo.dlItemTagAutoclosing = info; | ||
17227 | } | ||
17228 | |||
17229 | return ancestorInfo; | ||
17230 | }; | ||
17231 | |||
17232 | /** | ||
17233 | * Returns whether | ||
17234 | */ | ||
17235 | var isTagValidWithParent = function (tag, parentTag) { | ||
17236 | // First, let's check if we're in an unusual parsing mode... | ||
17237 | switch (parentTag) { | ||
17238 | // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect | ||
17239 | case 'select': | ||
17240 | return tag === 'option' || tag === 'optgroup' || tag === '#text'; | ||
17241 | case 'optgroup': | ||
17242 | return tag === 'option' || tag === '#text'; | ||
17243 | // Strictly speaking, seeing an <option> doesn't mean we're in a <select> | ||
17244 | // but | ||
17245 | case 'option': | ||
17246 | return tag === '#text'; | ||
17247 | |||
17248 | // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd | ||
17249 | // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption | ||
17250 | // No special behavior since these rules fall back to "in body" mode for | ||
17251 | // all except special table nodes which cause bad parsing behavior anyway. | ||
17252 | |||
17253 | // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr | ||
17254 | case 'tr': | ||
17255 | return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template'; | ||
17256 | |||
17257 | // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody | ||
17258 | case 'tbody': | ||
17259 | case 'thead': | ||
17260 | case 'tfoot': | ||
17261 | return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template'; | ||
17262 | |||
17263 | // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup | ||
17264 | case 'colgroup': | ||
17265 | return tag === 'col' || tag === 'template'; | ||
17266 | |||
17267 | // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable | ||
17268 | case 'table': | ||
17269 | return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template'; | ||
17270 | |||
17271 | // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead | ||
17272 | case 'head': | ||
17273 | return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template'; | ||
17274 | |||
17275 | // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element | ||
17276 | case 'html': | ||
17277 | return tag === 'head' || tag === 'body'; | ||
17278 | case '#document': | ||
17279 | return tag === 'html'; | ||
17280 | } | ||
17281 | |||
17282 | // Probably in the "in body" parsing mode, so we outlaw only tag combos | ||
17283 | // where the parsing rules cause implicit opens or closes to be added. | ||
17284 | // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody | ||
17285 | switch (tag) { | ||
17286 | case 'h1': | ||
17287 | case 'h2': | ||
17288 | case 'h3': | ||
17289 | case 'h4': | ||
17290 | case 'h5': | ||
17291 | case 'h6': | ||
17292 | return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6'; | ||
17293 | |||
17294 | case 'rp': | ||
17295 | case 'rt': | ||
17296 | return impliedEndTags.indexOf(parentTag) === -1; | ||
17297 | |||
17298 | case 'body': | ||
17299 | case 'caption': | ||
17300 | case 'col': | ||
17301 | case 'colgroup': | ||
17302 | case 'frame': | ||
17303 | case 'head': | ||
17304 | case 'html': | ||
17305 | case 'tbody': | ||
17306 | case 'td': | ||
17307 | case 'tfoot': | ||
17308 | case 'th': | ||
17309 | case 'thead': | ||
17310 | case 'tr': | ||
17311 | // These tags are only valid with a few parents that have special child | ||
17312 | // parsing rules -- if we're down here, then none of those matched and | ||
17313 | // so we allow it only if we don't know what the parent is, as all other | ||
17314 | // cases are invalid. | ||
17315 | return parentTag == null; | ||
17316 | } | ||
17317 | |||
17318 | return true; | ||
17319 | }; | ||
17320 | |||
17321 | /** | ||
17322 | * Returns whether | ||
17323 | */ | ||
17324 | var findInvalidAncestorForTag = function (tag, ancestorInfo) { | ||
17325 | switch (tag) { | ||
17326 | case 'address': | ||
17327 | case 'article': | ||
17328 | case 'aside': | ||
17329 | case 'blockquote': | ||
17330 | case 'center': | ||
17331 | case 'details': | ||
17332 | case 'dialog': | ||
17333 | case 'dir': | ||
17334 | case 'div': | ||
17335 | case 'dl': | ||
17336 | case 'fieldset': | ||
17337 | case 'figcaption': | ||
17338 | case 'figure': | ||
17339 | case 'footer': | ||
17340 | case 'header': | ||
17341 | case 'hgroup': | ||
17342 | case 'main': | ||
17343 | case 'menu': | ||
17344 | case 'nav': | ||
17345 | case 'ol': | ||
17346 | case 'p': | ||
17347 | case 'section': | ||
17348 | case 'summary': | ||
17349 | case 'ul': | ||
17350 | case 'pre': | ||
17351 | case 'listing': | ||
17352 | case 'table': | ||
17353 | case 'hr': | ||
17354 | case 'xmp': | ||
17355 | case 'h1': | ||
17356 | case 'h2': | ||
17357 | case 'h3': | ||
17358 | case 'h4': | ||
17359 | case 'h5': | ||
17360 | case 'h6': | ||
17361 | return ancestorInfo.pTagInButtonScope; | ||
17362 | |||
17363 | case 'form': | ||
17364 | return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope; | ||
17365 | |||
17366 | case 'li': | ||
17367 | return ancestorInfo.listItemTagAutoclosing; | ||
17368 | |||
17369 | case 'dd': | ||
17370 | case 'dt': | ||
17371 | return ancestorInfo.dlItemTagAutoclosing; | ||
17372 | |||
17373 | case 'button': | ||
17374 | return ancestorInfo.buttonTagInScope; | ||
17375 | |||
17376 | case 'a': | ||
17377 | // Spec says something about storing a list of markers, but it sounds | ||
17378 | // equivalent to this check. | ||
17379 | return ancestorInfo.aTagInScope; | ||
17380 | |||
17381 | case 'nobr': | ||
17382 | return ancestorInfo.nobrTagInScope; | ||
17383 | } | ||
17384 | |||
17385 | return null; | ||
17386 | }; | ||
17387 | |||
17388 | /** | ||
17389 | * Given a ReactCompositeComponent instance, return a list of its recursive | ||
17390 | * owners, starting at the root and ending with the instance itself. | ||
17391 | */ | ||
17392 | var findOwnerStack = function (instance) { | ||
17393 | if (!instance) { | ||
17394 | return []; | ||
17395 | } | ||
17396 | |||
17397 | var stack = []; | ||
17398 | do { | ||
17399 | stack.push(instance); | ||
17400 | } while (instance = instance._currentElement._owner); | ||
17401 | stack.reverse(); | ||
17402 | return stack; | ||
17403 | }; | ||
17404 | |||
17405 | var didWarn = {}; | ||
17406 | |||
17407 | validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) { | ||
17408 | ancestorInfo = ancestorInfo || emptyAncestorInfo; | ||
17409 | var parentInfo = ancestorInfo.current; | ||
17410 | var parentTag = parentInfo && parentInfo.tag; | ||
17411 | |||
17412 | if (childText != null) { | ||
17413 | process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0; | ||
17414 | childTag = '#text'; | ||
17415 | } | ||
17416 | |||
17417 | var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo; | ||
17418 | var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo); | ||
17419 | var problematic = invalidParent || invalidAncestor; | ||
17420 | |||
17421 | if (problematic) { | ||
17422 | var ancestorTag = problematic.tag; | ||
17423 | var ancestorInstance = problematic.instance; | ||
17424 | |||
17425 | var childOwner = childInstance && childInstance._currentElement._owner; | ||
17426 | var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner; | ||
17427 | |||
17428 | var childOwners = findOwnerStack(childOwner); | ||
17429 | var ancestorOwners = findOwnerStack(ancestorOwner); | ||
17430 | |||
17431 | var minStackLen = Math.min(childOwners.length, ancestorOwners.length); | ||
17432 | var i; | ||
17433 | |||
17434 | var deepestCommon = -1; | ||
17435 | for (i = 0; i < minStackLen; i++) { | ||
17436 | if (childOwners[i] === ancestorOwners[i]) { | ||
17437 | deepestCommon = i; | ||
17438 | } else { | ||
17439 | break; | ||
17440 | } | ||
17441 | } | ||
17442 | |||
17443 | var UNKNOWN = '(unknown)'; | ||
17444 | var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) { | ||
17445 | return inst.getName() || UNKNOWN; | ||
17446 | }); | ||
17447 | var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) { | ||
17448 | return inst.getName() || UNKNOWN; | ||
17449 | }); | ||
17450 | var ownerInfo = [].concat( | ||
17451 | // If the parent and child instances have a common owner ancestor, start | ||
17452 | // with that -- otherwise we just start with the parent's owners. | ||
17453 | deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag, | ||
17454 | // If we're warning about an invalid (non-parent) ancestry, add '...' | ||
17455 | invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > '); | ||
17456 | |||
17457 | var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo; | ||
17458 | if (didWarn[warnKey]) { | ||
17459 | return; | ||
17460 | } | ||
17461 | didWarn[warnKey] = true; | ||
17462 | |||
17463 | var tagDisplayName = childTag; | ||
17464 | var whitespaceInfo = ''; | ||
17465 | if (childTag === '#text') { | ||
17466 | if (/\S/.test(childText)) { | ||
17467 | tagDisplayName = 'Text nodes'; | ||
17468 | } else { | ||
17469 | tagDisplayName = 'Whitespace text nodes'; | ||
17470 | whitespaceInfo = ' Make sure you don\'t have any extra whitespace between tags on ' + 'each line of your source code.'; | ||
17471 | } | ||
17472 | } else { | ||
17473 | tagDisplayName = '<' + childTag + '>'; | ||
17474 | } | ||
17475 | |||
17476 | if (invalidParent) { | ||
17477 | var info = ''; | ||
17478 | if (ancestorTag === 'table' && childTag === 'tr') { | ||
17479 | info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.'; | ||
17480 | } | ||
17481 | process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0; | ||
17482 | } else { | ||
17483 | process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0; | ||
17484 | } | ||
17485 | } | ||
17486 | }; | ||
17487 | |||
17488 | validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo; | ||
17489 | |||
17490 | // For testing | ||
17491 | validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) { | ||
17492 | ancestorInfo = ancestorInfo || emptyAncestorInfo; | ||
17493 | var parentInfo = ancestorInfo.current; | ||
17494 | var parentTag = parentInfo && parentInfo.tag; | ||
17495 | return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo); | ||
17496 | }; | ||
17497 | } | ||
17498 | |||
17499 | module.exports = validateDOMNesting; | ||
17500 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
17501 | |||
17502 | /***/ }), | ||
17503 | /* 143 */ | ||
17504 | /***/ (function(module, exports, __webpack_require__) { | ||
17505 | |||
17506 | /** | ||
17507 | * Copyright 2014-present, Facebook, Inc. | ||
17508 | * All rights reserved. | ||
17509 | * | ||
17510 | * This source code is licensed under the BSD-style license found in the | ||
17511 | * LICENSE file in the root directory of this source tree. An additional grant | ||
17512 | * of patent rights can be found in the PATENTS file in the same directory. | ||
17513 | * | ||
17514 | */ | ||
17515 | |||
17516 | 'use strict'; | ||
17517 | |||
17518 | var _assign = __webpack_require__(6); | ||
17519 | |||
17520 | var DOMLazyTree = __webpack_require__(87); | ||
17521 | var ReactDOMComponentTree = __webpack_require__(40); | ||
17522 | |||
17523 | var ReactDOMEmptyComponent = function (instantiate) { | ||
17524 | // ReactCompositeComponent uses this: | ||
17525 | this._currentElement = null; | ||
17526 | // ReactDOMComponentTree uses these: | ||
17527 | this._hostNode = null; | ||
17528 | this._hostParent = null; | ||
17529 | this._hostContainerInfo = null; | ||
17530 | this._domID = 0; | ||
17531 | }; | ||
17532 | _assign(ReactDOMEmptyComponent.prototype, { | ||
17533 | mountComponent: function (transaction, hostParent, hostContainerInfo, context) { | ||
17534 | var domID = hostContainerInfo._idCounter++; | ||
17535 | this._domID = domID; | ||
17536 | this._hostParent = hostParent; | ||
17537 | this._hostContainerInfo = hostContainerInfo; | ||
17538 | |||
17539 | var nodeValue = ' react-empty: ' + this._domID + ' '; | ||
17540 | if (transaction.useCreateElement) { | ||
17541 | var ownerDocument = hostContainerInfo._ownerDocument; | ||
17542 | var node = ownerDocument.createComment(nodeValue); | ||
17543 | ReactDOMComponentTree.precacheNode(this, node); | ||
17544 | return DOMLazyTree(node); | ||
17545 | } else { | ||
17546 | if (transaction.renderToStaticMarkup) { | ||
17547 | // Normally we'd insert a comment node, but since this is a situation | ||
17548 | // where React won't take over (static pages), we can simply return | ||
17549 | // nothing. | ||
17550 | return ''; | ||
17551 | } | ||
17552 | return '<!--' + nodeValue + '-->'; | ||
17553 | } | ||
17554 | }, | ||
17555 | receiveComponent: function () {}, | ||
17556 | getHostNode: function () { | ||
17557 | return ReactDOMComponentTree.getNodeFromInstance(this); | ||
17558 | }, | ||
17559 | unmountComponent: function () { | ||
17560 | ReactDOMComponentTree.uncacheNode(this); | ||
17561 | } | ||
17562 | }); | ||
17563 | |||
17564 | module.exports = ReactDOMEmptyComponent; | ||
17565 | |||
17566 | /***/ }), | ||
17567 | /* 144 */ | ||
17568 | /***/ (function(module, exports, __webpack_require__) { | ||
17569 | |||
17570 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
17571 | * Copyright 2015-present, Facebook, Inc. | ||
17572 | * All rights reserved. | ||
17573 | * | ||
17574 | * This source code is licensed under the BSD-style license found in the | ||
17575 | * LICENSE file in the root directory of this source tree. An additional grant | ||
17576 | * of patent rights can be found in the PATENTS file in the same directory. | ||
17577 | * | ||
17578 | */ | ||
17579 | |||
17580 | 'use strict'; | ||
17581 | |||
17582 | var _prodInvariant = __webpack_require__(41); | ||
17583 | |||
17584 | var invariant = __webpack_require__(10); | ||
17585 | |||
17586 | /** | ||
17587 | * Return the lowest common ancestor of A and B, or null if they are in | ||
17588 | * different trees. | ||
17589 | */ | ||
17590 | function getLowestCommonAncestor(instA, instB) { | ||
17591 | !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0; | ||
17592 | !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0; | ||
17593 | |||
17594 | var depthA = 0; | ||
17595 | for (var tempA = instA; tempA; tempA = tempA._hostParent) { | ||
17596 | depthA++; | ||
17597 | } | ||
17598 | var depthB = 0; | ||
17599 | for (var tempB = instB; tempB; tempB = tempB._hostParent) { | ||
17600 | depthB++; | ||
17601 | } | ||
17602 | |||
17603 | // If A is deeper, crawl up. | ||
17604 | while (depthA - depthB > 0) { | ||
17605 | instA = instA._hostParent; | ||
17606 | depthA--; | ||
17607 | } | ||
17608 | |||
17609 | // If B is deeper, crawl up. | ||
17610 | while (depthB - depthA > 0) { | ||
17611 | instB = instB._hostParent; | ||
17612 | depthB--; | ||
17613 | } | ||
17614 | |||
17615 | // Walk in lockstep until we find a match. | ||
17616 | var depth = depthA; | ||
17617 | while (depth--) { | ||
17618 | if (instA === instB) { | ||
17619 | return instA; | ||
17620 | } | ||
17621 | instA = instA._hostParent; | ||
17622 | instB = instB._hostParent; | ||
17623 | } | ||
17624 | return null; | ||
17625 | } | ||
17626 | |||
17627 | /** | ||
17628 | * Return if A is an ancestor of B. | ||
17629 | */ | ||
17630 | function isAncestor(instA, instB) { | ||
17631 | !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0; | ||
17632 | !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0; | ||
17633 | |||
17634 | while (instB) { | ||
17635 | if (instB === instA) { | ||
17636 | return true; | ||
17637 | } | ||
17638 | instB = instB._hostParent; | ||
17639 | } | ||
17640 | return false; | ||
17641 | } | ||
17642 | |||
17643 | /** | ||
17644 | * Return the parent instance of the passed-in instance. | ||
17645 | */ | ||
17646 | function getParentInstance(inst) { | ||
17647 | !('_hostNode' in inst) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0; | ||
17648 | |||
17649 | return inst._hostParent; | ||
17650 | } | ||
17651 | |||
17652 | /** | ||
17653 | * Simulates the traversal of a two-phase, capture/bubble event dispatch. | ||
17654 | */ | ||
17655 | function traverseTwoPhase(inst, fn, arg) { | ||
17656 | var path = []; | ||
17657 | while (inst) { | ||
17658 | path.push(inst); | ||
17659 | inst = inst._hostParent; | ||
17660 | } | ||
17661 | var i; | ||
17662 | for (i = path.length; i-- > 0;) { | ||
17663 | fn(path[i], 'captured', arg); | ||
17664 | } | ||
17665 | for (i = 0; i < path.length; i++) { | ||
17666 | fn(path[i], 'bubbled', arg); | ||
17667 | } | ||
17668 | } | ||
17669 | |||
17670 | /** | ||
17671 | * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that | ||
17672 | * should would receive a `mouseEnter` or `mouseLeave` event. | ||
17673 | * | ||
17674 | * Does not invoke the callback on the nearest common ancestor because nothing | ||
17675 | * "entered" or "left" that element. | ||
17676 | */ | ||
17677 | function traverseEnterLeave(from, to, fn, argFrom, argTo) { | ||
17678 | var common = from && to ? getLowestCommonAncestor(from, to) : null; | ||
17679 | var pathFrom = []; | ||
17680 | while (from && from !== common) { | ||
17681 | pathFrom.push(from); | ||
17682 | from = from._hostParent; | ||
17683 | } | ||
17684 | var pathTo = []; | ||
17685 | while (to && to !== common) { | ||
17686 | pathTo.push(to); | ||
17687 | to = to._hostParent; | ||
17688 | } | ||
17689 | var i; | ||
17690 | for (i = 0; i < pathFrom.length; i++) { | ||
17691 | fn(pathFrom[i], 'bubbled', argFrom); | ||
17692 | } | ||
17693 | for (i = pathTo.length; i-- > 0;) { | ||
17694 | fn(pathTo[i], 'captured', argTo); | ||
17695 | } | ||
17696 | } | ||
17697 | |||
17698 | module.exports = { | ||
17699 | isAncestor: isAncestor, | ||
17700 | getLowestCommonAncestor: getLowestCommonAncestor, | ||
17701 | getParentInstance: getParentInstance, | ||
17702 | traverseTwoPhase: traverseTwoPhase, | ||
17703 | traverseEnterLeave: traverseEnterLeave | ||
17704 | }; | ||
17705 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
17706 | |||
17707 | /***/ }), | ||
17708 | /* 145 */ | ||
17709 | /***/ (function(module, exports, __webpack_require__) { | ||
17710 | |||
17711 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
17712 | * Copyright 2013-present, Facebook, Inc. | ||
17713 | * All rights reserved. | ||
17714 | * | ||
17715 | * This source code is licensed under the BSD-style license found in the | ||
17716 | * LICENSE file in the root directory of this source tree. An additional grant | ||
17717 | * of patent rights can be found in the PATENTS file in the same directory. | ||
17718 | * | ||
17719 | */ | ||
17720 | |||
17721 | 'use strict'; | ||
17722 | |||
17723 | var _prodInvariant = __webpack_require__(41), | ||
17724 | _assign = __webpack_require__(6); | ||
17725 | |||
17726 | var DOMChildrenOperations = __webpack_require__(86); | ||
17727 | var DOMLazyTree = __webpack_require__(87); | ||
17728 | var ReactDOMComponentTree = __webpack_require__(40); | ||
17729 | |||
17730 | var escapeTextContentForBrowser = __webpack_require__(92); | ||
17731 | var invariant = __webpack_require__(10); | ||
17732 | var validateDOMNesting = __webpack_require__(142); | ||
17733 | |||
17734 | /** | ||
17735 | * Text nodes violate a couple assumptions that React makes about components: | ||
17736 | * | ||
17737 | * - When mounting text into the DOM, adjacent text nodes are merged. | ||
17738 | * - Text nodes cannot be assigned a React root ID. | ||
17739 | * | ||
17740 | * This component is used to wrap strings between comment nodes so that they | ||
17741 | * can undergo the same reconciliation that is applied to elements. | ||
17742 | * | ||
17743 | * TODO: Investigate representing React components in the DOM with text nodes. | ||
17744 | * | ||
17745 | * @class ReactDOMTextComponent | ||
17746 | * @extends ReactComponent | ||
17747 | * @internal | ||
17748 | */ | ||
17749 | var ReactDOMTextComponent = function (text) { | ||
17750 | // TODO: This is really a ReactText (ReactNode), not a ReactElement | ||
17751 | this._currentElement = text; | ||
17752 | this._stringText = '' + text; | ||
17753 | // ReactDOMComponentTree uses these: | ||
17754 | this._hostNode = null; | ||
17755 | this._hostParent = null; | ||
17756 | |||
17757 | // Properties | ||
17758 | this._domID = 0; | ||
17759 | this._mountIndex = 0; | ||
17760 | this._closingComment = null; | ||
17761 | this._commentNodes = null; | ||
17762 | }; | ||
17763 | |||
17764 | _assign(ReactDOMTextComponent.prototype, { | ||
17765 | |||
17766 | /** | ||
17767 | * Creates the markup for this text node. This node is not intended to have | ||
17768 | * any features besides containing text content. | ||
17769 | * | ||
17770 | * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction | ||
17771 | * @return {string} Markup for this text node. | ||
17772 | * @internal | ||
17773 | */ | ||
17774 | mountComponent: function (transaction, hostParent, hostContainerInfo, context) { | ||
17775 | if (process.env.NODE_ENV !== 'production') { | ||
17776 | var parentInfo; | ||
17777 | if (hostParent != null) { | ||
17778 | parentInfo = hostParent._ancestorInfo; | ||
17779 | } else if (hostContainerInfo != null) { | ||
17780 | parentInfo = hostContainerInfo._ancestorInfo; | ||
17781 | } | ||
17782 | if (parentInfo) { | ||
17783 | // parentInfo should always be present except for the top-level | ||
17784 | // component when server rendering | ||
17785 | validateDOMNesting(null, this._stringText, this, parentInfo); | ||
17786 | } | ||
17787 | } | ||
17788 | |||
17789 | var domID = hostContainerInfo._idCounter++; | ||
17790 | var openingValue = ' react-text: ' + domID + ' '; | ||
17791 | var closingValue = ' /react-text '; | ||
17792 | this._domID = domID; | ||
17793 | this._hostParent = hostParent; | ||
17794 | if (transaction.useCreateElement) { | ||
17795 | var ownerDocument = hostContainerInfo._ownerDocument; | ||
17796 | var openingComment = ownerDocument.createComment(openingValue); | ||
17797 | var closingComment = ownerDocument.createComment(closingValue); | ||
17798 | var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment()); | ||
17799 | DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment)); | ||
17800 | if (this._stringText) { | ||
17801 | DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText))); | ||
17802 | } | ||
17803 | DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment)); | ||
17804 | ReactDOMComponentTree.precacheNode(this, openingComment); | ||
17805 | this._closingComment = closingComment; | ||
17806 | return lazyTree; | ||
17807 | } else { | ||
17808 | var escapedText = escapeTextContentForBrowser(this._stringText); | ||
17809 | |||
17810 | if (transaction.renderToStaticMarkup) { | ||
17811 | // Normally we'd wrap this between comment nodes for the reasons stated | ||
17812 | // above, but since this is a situation where React won't take over | ||
17813 | // (static pages), we can simply return the text as it is. | ||
17814 | return escapedText; | ||
17815 | } | ||
17816 | |||
17817 | return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->'; | ||
17818 | } | ||
17819 | }, | ||
17820 | |||
17821 | /** | ||
17822 | * Updates this component by updating the text content. | ||
17823 | * | ||
17824 | * @param {ReactText} nextText The next text content | ||
17825 | * @param {ReactReconcileTransaction} transaction | ||
17826 | * @internal | ||
17827 | */ | ||
17828 | receiveComponent: function (nextText, transaction) { | ||
17829 | if (nextText !== this._currentElement) { | ||
17830 | this._currentElement = nextText; | ||
17831 | var nextStringText = '' + nextText; | ||
17832 | if (nextStringText !== this._stringText) { | ||
17833 | // TODO: Save this as pending props and use performUpdateIfNecessary | ||
17834 | // and/or updateComponent to do the actual update for consistency with | ||
17835 | // other component types? | ||
17836 | this._stringText = nextStringText; | ||
17837 | var commentNodes = this.getHostNode(); | ||
17838 | DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText); | ||
17839 | } | ||
17840 | } | ||
17841 | }, | ||
17842 | |||
17843 | getHostNode: function () { | ||
17844 | var hostNode = this._commentNodes; | ||
17845 | if (hostNode) { | ||
17846 | return hostNode; | ||
17847 | } | ||
17848 | if (!this._closingComment) { | ||
17849 | var openingComment = ReactDOMComponentTree.getNodeFromInstance(this); | ||
17850 | var node = openingComment.nextSibling; | ||
17851 | while (true) { | ||
17852 | !(node != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0; | ||
17853 | if (node.nodeType === 8 && node.nodeValue === ' /react-text ') { | ||
17854 | this._closingComment = node; | ||
17855 | break; | ||
17856 | } | ||
17857 | node = node.nextSibling; | ||
17858 | } | ||
17859 | } | ||
17860 | hostNode = [this._hostNode, this._closingComment]; | ||
17861 | this._commentNodes = hostNode; | ||
17862 | return hostNode; | ||
17863 | }, | ||
17864 | |||
17865 | unmountComponent: function () { | ||
17866 | this._closingComment = null; | ||
17867 | this._commentNodes = null; | ||
17868 | ReactDOMComponentTree.uncacheNode(this); | ||
17869 | } | ||
17870 | |||
17871 | }); | ||
17872 | |||
17873 | module.exports = ReactDOMTextComponent; | ||
17874 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
17875 | |||
17876 | /***/ }), | ||
17877 | /* 146 */ | ||
17878 | /***/ (function(module, exports, __webpack_require__) { | ||
17879 | |||
17880 | /** | ||
17881 | * Copyright 2013-present, Facebook, Inc. | ||
17882 | * All rights reserved. | ||
17883 | * | ||
17884 | * This source code is licensed under the BSD-style license found in the | ||
17885 | * LICENSE file in the root directory of this source tree. An additional grant | ||
17886 | * of patent rights can be found in the PATENTS file in the same directory. | ||
17887 | * | ||
17888 | */ | ||
17889 | |||
17890 | 'use strict'; | ||
17891 | |||
17892 | var _assign = __webpack_require__(6); | ||
17893 | |||
17894 | var ReactUpdates = __webpack_require__(62); | ||
17895 | var Transaction = __webpack_require__(74); | ||
17896 | |||
17897 | var emptyFunction = __webpack_require__(14); | ||
17898 | |||
17899 | var RESET_BATCHED_UPDATES = { | ||
17900 | initialize: emptyFunction, | ||
17901 | close: function () { | ||
17902 | ReactDefaultBatchingStrategy.isBatchingUpdates = false; | ||
17903 | } | ||
17904 | }; | ||
17905 | |||
17906 | var FLUSH_BATCHED_UPDATES = { | ||
17907 | initialize: emptyFunction, | ||
17908 | close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates) | ||
17909 | }; | ||
17910 | |||
17911 | var TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES]; | ||
17912 | |||
17913 | function ReactDefaultBatchingStrategyTransaction() { | ||
17914 | this.reinitializeTransaction(); | ||
17915 | } | ||
17916 | |||
17917 | _assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, { | ||
17918 | getTransactionWrappers: function () { | ||
17919 | return TRANSACTION_WRAPPERS; | ||
17920 | } | ||
17921 | }); | ||
17922 | |||
17923 | var transaction = new ReactDefaultBatchingStrategyTransaction(); | ||
17924 | |||
17925 | var ReactDefaultBatchingStrategy = { | ||
17926 | isBatchingUpdates: false, | ||
17927 | |||
17928 | /** | ||
17929 | * Call the provided function in a context within which calls to `setState` | ||
17930 | * and friends are batched such that components aren't updated unnecessarily. | ||
17931 | */ | ||
17932 | batchedUpdates: function (callback, a, b, c, d, e) { | ||
17933 | var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates; | ||
17934 | |||
17935 | ReactDefaultBatchingStrategy.isBatchingUpdates = true; | ||
17936 | |||
17937 | // The code is written this way to avoid extra allocations | ||
17938 | if (alreadyBatchingUpdates) { | ||
17939 | return callback(a, b, c, d, e); | ||
17940 | } else { | ||
17941 | return transaction.perform(callback, null, a, b, c, d, e); | ||
17942 | } | ||
17943 | } | ||
17944 | }; | ||
17945 | |||
17946 | module.exports = ReactDefaultBatchingStrategy; | ||
17947 | |||
17948 | /***/ }), | ||
17949 | /* 147 */ | ||
17950 | /***/ (function(module, exports, __webpack_require__) { | ||
17951 | |||
17952 | /** | ||
17953 | * Copyright 2013-present, Facebook, Inc. | ||
17954 | * All rights reserved. | ||
17955 | * | ||
17956 | * This source code is licensed under the BSD-style license found in the | ||
17957 | * LICENSE file in the root directory of this source tree. An additional grant | ||
17958 | * of patent rights can be found in the PATENTS file in the same directory. | ||
17959 | * | ||
17960 | */ | ||
17961 | |||
17962 | 'use strict'; | ||
17963 | |||
17964 | var _assign = __webpack_require__(6); | ||
17965 | |||
17966 | var EventListener = __webpack_require__(148); | ||
17967 | var ExecutionEnvironment = __webpack_require__(54); | ||
17968 | var PooledClass = __webpack_require__(56); | ||
17969 | var ReactDOMComponentTree = __webpack_require__(40); | ||
17970 | var ReactUpdates = __webpack_require__(62); | ||
17971 | |||
17972 | var getEventTarget = __webpack_require__(75); | ||
17973 | var getUnboundedScrollPosition = __webpack_require__(149); | ||
17974 | |||
17975 | /** | ||
17976 | * Find the deepest React component completely containing the root of the | ||
17977 | * passed-in instance (for use when entire React trees are nested within each | ||
17978 | * other). If React trees are not nested, returns null. | ||
17979 | */ | ||
17980 | function findParent(inst) { | ||
17981 | // TODO: It may be a good idea to cache this to prevent unnecessary DOM | ||
17982 | // traversal, but caching is difficult to do correctly without using a | ||
17983 | // mutation observer to listen for all DOM changes. | ||
17984 | while (inst._hostParent) { | ||
17985 | inst = inst._hostParent; | ||
17986 | } | ||
17987 | var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst); | ||
17988 | var container = rootNode.parentNode; | ||
17989 | return ReactDOMComponentTree.getClosestInstanceFromNode(container); | ||
17990 | } | ||
17991 | |||
17992 | // Used to store ancestor hierarchy in top level callback | ||
17993 | function TopLevelCallbackBookKeeping(topLevelType, nativeEvent) { | ||
17994 | this.topLevelType = topLevelType; | ||
17995 | this.nativeEvent = nativeEvent; | ||
17996 | this.ancestors = []; | ||
17997 | } | ||
17998 | _assign(TopLevelCallbackBookKeeping.prototype, { | ||
17999 | destructor: function () { | ||
18000 | this.topLevelType = null; | ||
18001 | this.nativeEvent = null; | ||
18002 | this.ancestors.length = 0; | ||
18003 | } | ||
18004 | }); | ||
18005 | PooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler); | ||
18006 | |||
18007 | function handleTopLevelImpl(bookKeeping) { | ||
18008 | var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent); | ||
18009 | var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget); | ||
18010 | |||
18011 | // Loop through the hierarchy, in case there's any nested components. | ||
18012 | // It's important that we build the array of ancestors before calling any | ||
18013 | // event handlers, because event handlers can modify the DOM, leading to | ||
18014 | // inconsistencies with ReactMount's node cache. See #1105. | ||
18015 | var ancestor = targetInst; | ||
18016 | do { | ||
18017 | bookKeeping.ancestors.push(ancestor); | ||
18018 | ancestor = ancestor && findParent(ancestor); | ||
18019 | } while (ancestor); | ||
18020 | |||
18021 | for (var i = 0; i < bookKeeping.ancestors.length; i++) { | ||
18022 | targetInst = bookKeeping.ancestors[i]; | ||
18023 | ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent)); | ||
18024 | } | ||
18025 | } | ||
18026 | |||
18027 | function scrollValueMonitor(cb) { | ||
18028 | var scrollPosition = getUnboundedScrollPosition(window); | ||
18029 | cb(scrollPosition); | ||
18030 | } | ||
18031 | |||
18032 | var ReactEventListener = { | ||
18033 | _enabled: true, | ||
18034 | _handleTopLevel: null, | ||
18035 | |||
18036 | WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null, | ||
18037 | |||
18038 | setHandleTopLevel: function (handleTopLevel) { | ||
18039 | ReactEventListener._handleTopLevel = handleTopLevel; | ||
18040 | }, | ||
18041 | |||
18042 | setEnabled: function (enabled) { | ||
18043 | ReactEventListener._enabled = !!enabled; | ||
18044 | }, | ||
18045 | |||
18046 | isEnabled: function () { | ||
18047 | return ReactEventListener._enabled; | ||
18048 | }, | ||
18049 | |||
18050 | /** | ||
18051 | * Traps top-level events by using event bubbling. | ||
18052 | * | ||
18053 | * @param {string} topLevelType Record from `EventConstants`. | ||
18054 | * @param {string} handlerBaseName Event name (e.g. "click"). | ||
18055 | * @param {object} element Element on which to attach listener. | ||
18056 | * @return {?object} An object with a remove function which will forcefully | ||
18057 | * remove the listener. | ||
18058 | * @internal | ||
18059 | */ | ||
18060 | trapBubbledEvent: function (topLevelType, handlerBaseName, element) { | ||
18061 | if (!element) { | ||
18062 | return null; | ||
18063 | } | ||
18064 | return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType)); | ||
18065 | }, | ||
18066 | |||
18067 | /** | ||
18068 | * Traps a top-level event by using event capturing. | ||
18069 | * | ||
18070 | * @param {string} topLevelType Record from `EventConstants`. | ||
18071 | * @param {string} handlerBaseName Event name (e.g. "click"). | ||
18072 | * @param {object} element Element on which to attach listener. | ||
18073 | * @return {?object} An object with a remove function which will forcefully | ||
18074 | * remove the listener. | ||
18075 | * @internal | ||
18076 | */ | ||
18077 | trapCapturedEvent: function (topLevelType, handlerBaseName, element) { | ||
18078 | if (!element) { | ||
18079 | return null; | ||
18080 | } | ||
18081 | return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType)); | ||
18082 | }, | ||
18083 | |||
18084 | monitorScrollValue: function (refresh) { | ||
18085 | var callback = scrollValueMonitor.bind(null, refresh); | ||
18086 | EventListener.listen(window, 'scroll', callback); | ||
18087 | }, | ||
18088 | |||
18089 | dispatchEvent: function (topLevelType, nativeEvent) { | ||
18090 | if (!ReactEventListener._enabled) { | ||
18091 | return; | ||
18092 | } | ||
18093 | |||
18094 | var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent); | ||
18095 | try { | ||
18096 | // Event queue being processed in the same cycle allows | ||
18097 | // `preventDefault`. | ||
18098 | ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping); | ||
18099 | } finally { | ||
18100 | TopLevelCallbackBookKeeping.release(bookKeeping); | ||
18101 | } | ||
18102 | } | ||
18103 | }; | ||
18104 | |||
18105 | module.exports = ReactEventListener; | ||
18106 | |||
18107 | /***/ }), | ||
18108 | /* 148 */ | ||
18109 | /***/ (function(module, exports, __webpack_require__) { | ||
18110 | |||
18111 | /* WEBPACK VAR INJECTION */(function(process) {'use strict'; | ||
18112 | |||
18113 | /** | ||
18114 | * Copyright (c) 2013-present, Facebook, Inc. | ||
18115 | * | ||
18116 | * Licensed under the Apache License, Version 2.0 (the "License"); | ||
18117 | * you may not use this file except in compliance with the License. | ||
18118 | * You may obtain a copy of the License at | ||
18119 | * | ||
18120 | * http://www.apache.org/licenses/LICENSE-2.0 | ||
18121 | * | ||
18122 | * Unless required by applicable law or agreed to in writing, software | ||
18123 | * distributed under the License is distributed on an "AS IS" BASIS, | ||
18124 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
18125 | * See the License for the specific language governing permissions and | ||
18126 | * limitations under the License. | ||
18127 | * | ||
18128 | * @typechecks | ||
18129 | */ | ||
18130 | |||
18131 | var emptyFunction = __webpack_require__(14); | ||
18132 | |||
18133 | /** | ||
18134 | * Upstream version of event listener. Does not take into account specific | ||
18135 | * nature of platform. | ||
18136 | */ | ||
18137 | var EventListener = { | ||
18138 | /** | ||
18139 | * Listen to DOM events during the bubble phase. | ||
18140 | * | ||
18141 | * @param {DOMEventTarget} target DOM element to register listener on. | ||
18142 | * @param {string} eventType Event type, e.g. 'click' or 'mouseover'. | ||
18143 | * @param {function} callback Callback function. | ||
18144 | * @return {object} Object with a `remove` method. | ||
18145 | */ | ||
18146 | listen: function listen(target, eventType, callback) { | ||
18147 | if (target.addEventListener) { | ||
18148 | target.addEventListener(eventType, callback, false); | ||
18149 | return { | ||
18150 | remove: function remove() { | ||
18151 | target.removeEventListener(eventType, callback, false); | ||
18152 | } | ||
18153 | }; | ||
18154 | } else if (target.attachEvent) { | ||
18155 | target.attachEvent('on' + eventType, callback); | ||
18156 | return { | ||
18157 | remove: function remove() { | ||
18158 | target.detachEvent('on' + eventType, callback); | ||
18159 | } | ||
18160 | }; | ||
18161 | } | ||
18162 | }, | ||
18163 | |||
18164 | /** | ||
18165 | * Listen to DOM events during the capture phase. | ||
18166 | * | ||
18167 | * @param {DOMEventTarget} target DOM element to register listener on. | ||
18168 | * @param {string} eventType Event type, e.g. 'click' or 'mouseover'. | ||
18169 | * @param {function} callback Callback function. | ||
18170 | * @return {object} Object with a `remove` method. | ||
18171 | */ | ||
18172 | capture: function capture(target, eventType, callback) { | ||
18173 | if (target.addEventListener) { | ||
18174 | target.addEventListener(eventType, callback, true); | ||
18175 | return { | ||
18176 | remove: function remove() { | ||
18177 | target.removeEventListener(eventType, callback, true); | ||
18178 | } | ||
18179 | }; | ||
18180 | } else { | ||
18181 | if (process.env.NODE_ENV !== 'production') { | ||
18182 | 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.'); | ||
18183 | } | ||
18184 | return { | ||
18185 | remove: emptyFunction | ||
18186 | }; | ||
18187 | } | ||
18188 | }, | ||
18189 | |||
18190 | registerDefault: function registerDefault() {} | ||
18191 | }; | ||
18192 | |||
18193 | module.exports = EventListener; | ||
18194 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
18195 | |||
18196 | /***/ }), | ||
18197 | /* 149 */ | ||
18198 | /***/ (function(module, exports) { | ||
18199 | |||
18200 | /** | ||
18201 | * Copyright (c) 2013-present, Facebook, Inc. | ||
18202 | * All rights reserved. | ||
18203 | * | ||
18204 | * This source code is licensed under the BSD-style license found in the | ||
18205 | * LICENSE file in the root directory of this source tree. An additional grant | ||
18206 | * of patent rights can be found in the PATENTS file in the same directory. | ||
18207 | * | ||
18208 | * @typechecks | ||
18209 | */ | ||
18210 | |||
18211 | 'use strict'; | ||
18212 | |||
18213 | /** | ||
18214 | * Gets the scroll position of the supplied element or window. | ||
18215 | * | ||
18216 | * The return values are unbounded, unlike `getScrollPosition`. This means they | ||
18217 | * may be negative or exceed the element boundaries (which is possible using | ||
18218 | * inertial scrolling). | ||
18219 | * | ||
18220 | * @param {DOMWindow|DOMElement} scrollable | ||
18221 | * @return {object} Map with `x` and `y` keys. | ||
18222 | */ | ||
18223 | |||
18224 | function getUnboundedScrollPosition(scrollable) { | ||
18225 | if (scrollable.Window && scrollable instanceof scrollable.Window) { | ||
18226 | return { | ||
18227 | x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft, | ||
18228 | y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop | ||
18229 | }; | ||
18230 | } | ||
18231 | return { | ||
18232 | x: scrollable.scrollLeft, | ||
18233 | y: scrollable.scrollTop | ||
18234 | }; | ||
18235 | } | ||
18236 | |||
18237 | module.exports = getUnboundedScrollPosition; | ||
18238 | |||
18239 | /***/ }), | ||
18240 | /* 150 */ | ||
18241 | /***/ (function(module, exports, __webpack_require__) { | ||
18242 | |||
18243 | /** | ||
18244 | * Copyright 2013-present, Facebook, Inc. | ||
18245 | * All rights reserved. | ||
18246 | * | ||
18247 | * This source code is licensed under the BSD-style license found in the | ||
18248 | * LICENSE file in the root directory of this source tree. An additional grant | ||
18249 | * of patent rights can be found in the PATENTS file in the same directory. | ||
18250 | * | ||
18251 | */ | ||
18252 | |||
18253 | 'use strict'; | ||
18254 | |||
18255 | var DOMProperty = __webpack_require__(42); | ||
18256 | var EventPluginHub = __webpack_require__(48); | ||
18257 | var EventPluginUtils = __webpack_require__(50); | ||
18258 | var ReactComponentEnvironment = __webpack_require__(121); | ||
18259 | var ReactEmptyComponent = __webpack_require__(131); | ||
18260 | var ReactBrowserEventEmitter = __webpack_require__(111); | ||
18261 | var ReactHostComponent = __webpack_require__(132); | ||
18262 | var ReactUpdates = __webpack_require__(62); | ||
18263 | |||
18264 | var ReactInjection = { | ||
18265 | Component: ReactComponentEnvironment.injection, | ||
18266 | DOMProperty: DOMProperty.injection, | ||
18267 | EmptyComponent: ReactEmptyComponent.injection, | ||
18268 | EventPluginHub: EventPluginHub.injection, | ||
18269 | EventPluginUtils: EventPluginUtils.injection, | ||
18270 | EventEmitter: ReactBrowserEventEmitter.injection, | ||
18271 | HostComponent: ReactHostComponent.injection, | ||
18272 | Updates: ReactUpdates.injection | ||
18273 | }; | ||
18274 | |||
18275 | module.exports = ReactInjection; | ||
18276 | |||
18277 | /***/ }), | ||
18278 | /* 151 */ | ||
18279 | /***/ (function(module, exports, __webpack_require__) { | ||
18280 | |||
18281 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
18282 | * Copyright 2013-present, Facebook, Inc. | ||
18283 | * All rights reserved. | ||
18284 | * | ||
18285 | * This source code is licensed under the BSD-style license found in the | ||
18286 | * LICENSE file in the root directory of this source tree. An additional grant | ||
18287 | * of patent rights can be found in the PATENTS file in the same directory. | ||
18288 | * | ||
18289 | */ | ||
18290 | |||
18291 | 'use strict'; | ||
18292 | |||
18293 | var _assign = __webpack_require__(6); | ||
18294 | |||
18295 | var CallbackQueue = __webpack_require__(63); | ||
18296 | var PooledClass = __webpack_require__(56); | ||
18297 | var ReactBrowserEventEmitter = __webpack_require__(111); | ||
18298 | var ReactInputSelection = __webpack_require__(152); | ||
18299 | var ReactInstrumentation = __webpack_require__(68); | ||
18300 | var Transaction = __webpack_require__(74); | ||
18301 | var ReactUpdateQueue = __webpack_require__(141); | ||
18302 | |||
18303 | /** | ||
18304 | * Ensures that, when possible, the selection range (currently selected text | ||
18305 | * input) is not disturbed by performing the transaction. | ||
18306 | */ | ||
18307 | var SELECTION_RESTORATION = { | ||
18308 | /** | ||
18309 | * @return {Selection} Selection information. | ||
18310 | */ | ||
18311 | initialize: ReactInputSelection.getSelectionInformation, | ||
18312 | /** | ||
18313 | * @param {Selection} sel Selection information returned from `initialize`. | ||
18314 | */ | ||
18315 | close: ReactInputSelection.restoreSelection | ||
18316 | }; | ||
18317 | |||
18318 | /** | ||
18319 | * Suppresses events (blur/focus) that could be inadvertently dispatched due to | ||
18320 | * high level DOM manipulations (like temporarily removing a text input from the | ||
18321 | * DOM). | ||
18322 | */ | ||
18323 | var EVENT_SUPPRESSION = { | ||
18324 | /** | ||
18325 | * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before | ||
18326 | * the reconciliation. | ||
18327 | */ | ||
18328 | initialize: function () { | ||
18329 | var currentlyEnabled = ReactBrowserEventEmitter.isEnabled(); | ||
18330 | ReactBrowserEventEmitter.setEnabled(false); | ||
18331 | return currentlyEnabled; | ||
18332 | }, | ||
18333 | |||
18334 | /** | ||
18335 | * @param {boolean} previouslyEnabled Enabled status of | ||
18336 | * `ReactBrowserEventEmitter` before the reconciliation occurred. `close` | ||
18337 | * restores the previous value. | ||
18338 | */ | ||
18339 | close: function (previouslyEnabled) { | ||
18340 | ReactBrowserEventEmitter.setEnabled(previouslyEnabled); | ||
18341 | } | ||
18342 | }; | ||
18343 | |||
18344 | /** | ||
18345 | * Provides a queue for collecting `componentDidMount` and | ||
18346 | * `componentDidUpdate` callbacks during the transaction. | ||
18347 | */ | ||
18348 | var ON_DOM_READY_QUEUEING = { | ||
18349 | /** | ||
18350 | * Initializes the internal `onDOMReady` queue. | ||
18351 | */ | ||
18352 | initialize: function () { | ||
18353 | this.reactMountReady.reset(); | ||
18354 | }, | ||
18355 | |||
18356 | /** | ||
18357 | * After DOM is flushed, invoke all registered `onDOMReady` callbacks. | ||
18358 | */ | ||
18359 | close: function () { | ||
18360 | this.reactMountReady.notifyAll(); | ||
18361 | } | ||
18362 | }; | ||
18363 | |||
18364 | /** | ||
18365 | * Executed within the scope of the `Transaction` instance. Consider these as | ||
18366 | * being member methods, but with an implied ordering while being isolated from | ||
18367 | * each other. | ||
18368 | */ | ||
18369 | var TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING]; | ||
18370 | |||
18371 | if (process.env.NODE_ENV !== 'production') { | ||
18372 | TRANSACTION_WRAPPERS.push({ | ||
18373 | initialize: ReactInstrumentation.debugTool.onBeginFlush, | ||
18374 | close: ReactInstrumentation.debugTool.onEndFlush | ||
18375 | }); | ||
18376 | } | ||
18377 | |||
18378 | /** | ||
18379 | * Currently: | ||
18380 | * - The order that these are listed in the transaction is critical: | ||
18381 | * - Suppresses events. | ||
18382 | * - Restores selection range. | ||
18383 | * | ||
18384 | * Future: | ||
18385 | * - Restore document/overflow scroll positions that were unintentionally | ||
18386 | * modified via DOM insertions above the top viewport boundary. | ||
18387 | * - Implement/integrate with customized constraint based layout system and keep | ||
18388 | * track of which dimensions must be remeasured. | ||
18389 | * | ||
18390 | * @class ReactReconcileTransaction | ||
18391 | */ | ||
18392 | function ReactReconcileTransaction(useCreateElement) { | ||
18393 | this.reinitializeTransaction(); | ||
18394 | // Only server-side rendering really needs this option (see | ||
18395 | // `ReactServerRendering`), but server-side uses | ||
18396 | // `ReactServerRenderingTransaction` instead. This option is here so that it's | ||
18397 | // accessible and defaults to false when `ReactDOMComponent` and | ||
18398 | // `ReactDOMTextComponent` checks it in `mountComponent`.` | ||
18399 | this.renderToStaticMarkup = false; | ||
18400 | this.reactMountReady = CallbackQueue.getPooled(null); | ||
18401 | this.useCreateElement = useCreateElement; | ||
18402 | } | ||
18403 | |||
18404 | var Mixin = { | ||
18405 | /** | ||
18406 | * @see Transaction | ||
18407 | * @abstract | ||
18408 | * @final | ||
18409 | * @return {array<object>} List of operation wrap procedures. | ||
18410 | * TODO: convert to array<TransactionWrapper> | ||
18411 | */ | ||
18412 | getTransactionWrappers: function () { | ||
18413 | return TRANSACTION_WRAPPERS; | ||
18414 | }, | ||
18415 | |||
18416 | /** | ||
18417 | * @return {object} The queue to collect `onDOMReady` callbacks with. | ||
18418 | */ | ||
18419 | getReactMountReady: function () { | ||
18420 | return this.reactMountReady; | ||
18421 | }, | ||
18422 | |||
18423 | /** | ||
18424 | * @return {object} The queue to collect React async events. | ||
18425 | */ | ||
18426 | getUpdateQueue: function () { | ||
18427 | return ReactUpdateQueue; | ||
18428 | }, | ||
18429 | |||
18430 | /** | ||
18431 | * Save current transaction state -- if the return value from this method is | ||
18432 | * passed to `rollback`, the transaction will be reset to that state. | ||
18433 | */ | ||
18434 | checkpoint: function () { | ||
18435 | // reactMountReady is the our only stateful wrapper | ||
18436 | return this.reactMountReady.checkpoint(); | ||
18437 | }, | ||
18438 | |||
18439 | rollback: function (checkpoint) { | ||
18440 | this.reactMountReady.rollback(checkpoint); | ||
18441 | }, | ||
18442 | |||
18443 | /** | ||
18444 | * `PooledClass` looks for this, and will invoke this before allowing this | ||
18445 | * instance to be reused. | ||
18446 | */ | ||
18447 | destructor: function () { | ||
18448 | CallbackQueue.release(this.reactMountReady); | ||
18449 | this.reactMountReady = null; | ||
18450 | } | ||
18451 | }; | ||
18452 | |||
18453 | _assign(ReactReconcileTransaction.prototype, Transaction, Mixin); | ||
18454 | |||
18455 | PooledClass.addPoolingTo(ReactReconcileTransaction); | ||
18456 | |||
18457 | module.exports = ReactReconcileTransaction; | ||
18458 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
18459 | |||
18460 | /***/ }), | ||
18461 | /* 152 */ | ||
18462 | /***/ (function(module, exports, __webpack_require__) { | ||
18463 | |||
18464 | /** | ||
18465 | * Copyright 2013-present, Facebook, Inc. | ||
18466 | * All rights reserved. | ||
18467 | * | ||
18468 | * This source code is licensed under the BSD-style license found in the | ||
18469 | * LICENSE file in the root directory of this source tree. An additional grant | ||
18470 | * of patent rights can be found in the PATENTS file in the same directory. | ||
18471 | * | ||
18472 | */ | ||
18473 | |||
18474 | 'use strict'; | ||
18475 | |||
18476 | var ReactDOMSelection = __webpack_require__(153); | ||
18477 | |||
18478 | var containsNode = __webpack_require__(155); | ||
18479 | var focusNode = __webpack_require__(100); | ||
18480 | var getActiveElement = __webpack_require__(158); | ||
18481 | |||
18482 | function isInDocument(node) { | ||
18483 | return containsNode(document.documentElement, node); | ||
18484 | } | ||
18485 | |||
18486 | /** | ||
18487 | * @ReactInputSelection: React input selection module. Based on Selection.js, | ||
18488 | * but modified to be suitable for react and has a couple of bug fixes (doesn't | ||
18489 | * assume buttons have range selections allowed). | ||
18490 | * Input selection module for React. | ||
18491 | */ | ||
18492 | var ReactInputSelection = { | ||
18493 | |||
18494 | hasSelectionCapabilities: function (elem) { | ||
18495 | var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase(); | ||
18496 | return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true'); | ||
18497 | }, | ||
18498 | |||
18499 | getSelectionInformation: function () { | ||
18500 | var focusedElem = getActiveElement(); | ||
18501 | return { | ||
18502 | focusedElem: focusedElem, | ||
18503 | selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null | ||
18504 | }; | ||
18505 | }, | ||
18506 | |||
18507 | /** | ||
18508 | * @restoreSelection: If any selection information was potentially lost, | ||
18509 | * restore it. This is useful when performing operations that could remove dom | ||
18510 | * nodes and place them back in, resulting in focus being lost. | ||
18511 | */ | ||
18512 | restoreSelection: function (priorSelectionInformation) { | ||
18513 | var curFocusedElem = getActiveElement(); | ||
18514 | var priorFocusedElem = priorSelectionInformation.focusedElem; | ||
18515 | var priorSelectionRange = priorSelectionInformation.selectionRange; | ||
18516 | if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) { | ||
18517 | if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) { | ||
18518 | ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange); | ||
18519 | } | ||
18520 | focusNode(priorFocusedElem); | ||
18521 | } | ||
18522 | }, | ||
18523 | |||
18524 | /** | ||
18525 | * @getSelection: Gets the selection bounds of a focused textarea, input or | ||
18526 | * contentEditable node. | ||
18527 | * -@input: Look up selection bounds of this input | ||
18528 | * -@return {start: selectionStart, end: selectionEnd} | ||
18529 | */ | ||
18530 | getSelection: function (input) { | ||
18531 | var selection; | ||
18532 | |||
18533 | if ('selectionStart' in input) { | ||
18534 | // Modern browser with input or textarea. | ||
18535 | selection = { | ||
18536 | start: input.selectionStart, | ||
18537 | end: input.selectionEnd | ||
18538 | }; | ||
18539 | } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') { | ||
18540 | // IE8 input. | ||
18541 | var range = document.selection.createRange(); | ||
18542 | // There can only be one selection per document in IE, so it must | ||
18543 | // be in our element. | ||
18544 | if (range.parentElement() === input) { | ||
18545 | selection = { | ||
18546 | start: -range.moveStart('character', -input.value.length), | ||
18547 | end: -range.moveEnd('character', -input.value.length) | ||
18548 | }; | ||
18549 | } | ||
18550 | } else { | ||
18551 | // Content editable or old IE textarea. | ||
18552 | selection = ReactDOMSelection.getOffsets(input); | ||
18553 | } | ||
18554 | |||
18555 | return selection || { start: 0, end: 0 }; | ||
18556 | }, | ||
18557 | |||
18558 | /** | ||
18559 | * @setSelection: Sets the selection bounds of a textarea or input and focuses | ||
18560 | * the input. | ||
18561 | * -@input Set selection bounds of this input or textarea | ||
18562 | * -@offsets Object of same form that is returned from get* | ||
18563 | */ | ||
18564 | setSelection: function (input, offsets) { | ||
18565 | var start = offsets.start; | ||
18566 | var end = offsets.end; | ||
18567 | if (end === undefined) { | ||
18568 | end = start; | ||
18569 | } | ||
18570 | |||
18571 | if ('selectionStart' in input) { | ||
18572 | input.selectionStart = start; | ||
18573 | input.selectionEnd = Math.min(end, input.value.length); | ||
18574 | } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') { | ||
18575 | var range = input.createTextRange(); | ||
18576 | range.collapse(true); | ||
18577 | range.moveStart('character', start); | ||
18578 | range.moveEnd('character', end - start); | ||
18579 | range.select(); | ||
18580 | } else { | ||
18581 | ReactDOMSelection.setOffsets(input, offsets); | ||
18582 | } | ||
18583 | } | ||
18584 | }; | ||
18585 | |||
18586 | module.exports = ReactInputSelection; | ||
18587 | |||
18588 | /***/ }), | ||
18589 | /* 153 */ | ||
18590 | /***/ (function(module, exports, __webpack_require__) { | ||
18591 | |||
18592 | /** | ||
18593 | * Copyright 2013-present, Facebook, Inc. | ||
18594 | * All rights reserved. | ||
18595 | * | ||
18596 | * This source code is licensed under the BSD-style license found in the | ||
18597 | * LICENSE file in the root directory of this source tree. An additional grant | ||
18598 | * of patent rights can be found in the PATENTS file in the same directory. | ||
18599 | * | ||
18600 | */ | ||
18601 | |||
18602 | 'use strict'; | ||
18603 | |||
18604 | var ExecutionEnvironment = __webpack_require__(54); | ||
18605 | |||
18606 | var getNodeForCharacterOffset = __webpack_require__(154); | ||
18607 | var getTextContentAccessor = __webpack_require__(57); | ||
18608 | |||
18609 | /** | ||
18610 | * While `isCollapsed` is available on the Selection object and `collapsed` | ||
18611 | * is available on the Range object, IE11 sometimes gets them wrong. | ||
18612 | * If the anchor/focus nodes and offsets are the same, the range is collapsed. | ||
18613 | */ | ||
18614 | function isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) { | ||
18615 | return anchorNode === focusNode && anchorOffset === focusOffset; | ||
18616 | } | ||
18617 | |||
18618 | /** | ||
18619 | * Get the appropriate anchor and focus node/offset pairs for IE. | ||
18620 | * | ||
18621 | * The catch here is that IE's selection API doesn't provide information | ||
18622 | * about whether the selection is forward or backward, so we have to | ||
18623 | * behave as though it's always forward. | ||
18624 | * | ||
18625 | * IE text differs from modern selection in that it behaves as though | ||
18626 | * block elements end with a new line. This means character offsets will | ||
18627 | * differ between the two APIs. | ||
18628 | * | ||
18629 | * @param {DOMElement} node | ||
18630 | * @return {object} | ||
18631 | */ | ||
18632 | function getIEOffsets(node) { | ||
18633 | var selection = document.selection; | ||
18634 | var selectedRange = selection.createRange(); | ||
18635 | var selectedLength = selectedRange.text.length; | ||
18636 | |||
18637 | // Duplicate selection so we can move range without breaking user selection. | ||
18638 | var fromStart = selectedRange.duplicate(); | ||
18639 | fromStart.moveToElementText(node); | ||
18640 | fromStart.setEndPoint('EndToStart', selectedRange); | ||
18641 | |||
18642 | var startOffset = fromStart.text.length; | ||
18643 | var endOffset = startOffset + selectedLength; | ||
18644 | |||
18645 | return { | ||
18646 | start: startOffset, | ||
18647 | end: endOffset | ||
18648 | }; | ||
18649 | } | ||
18650 | |||
18651 | /** | ||
18652 | * @param {DOMElement} node | ||
18653 | * @return {?object} | ||
18654 | */ | ||
18655 | function getModernOffsets(node) { | ||
18656 | var selection = window.getSelection && window.getSelection(); | ||
18657 | |||
18658 | if (!selection || selection.rangeCount === 0) { | ||
18659 | return null; | ||
18660 | } | ||
18661 | |||
18662 | var anchorNode = selection.anchorNode; | ||
18663 | var anchorOffset = selection.anchorOffset; | ||
18664 | var focusNode = selection.focusNode; | ||
18665 | var focusOffset = selection.focusOffset; | ||
18666 | |||
18667 | var currentRange = selection.getRangeAt(0); | ||
18668 | |||
18669 | // In Firefox, range.startContainer and range.endContainer can be "anonymous | ||
18670 | // divs", e.g. the up/down buttons on an <input type="number">. Anonymous | ||
18671 | // divs do not seem to expose properties, triggering a "Permission denied | ||
18672 | // error" if any of its properties are accessed. The only seemingly possible | ||
18673 | // way to avoid erroring is to access a property that typically works for | ||
18674 | // non-anonymous divs and catch any error that may otherwise arise. See | ||
18675 | // https://bugzilla.mozilla.org/show_bug.cgi?id=208427 | ||
18676 | try { | ||
18677 | /* eslint-disable no-unused-expressions */ | ||
18678 | currentRange.startContainer.nodeType; | ||
18679 | currentRange.endContainer.nodeType; | ||
18680 | /* eslint-enable no-unused-expressions */ | ||
18681 | } catch (e) { | ||
18682 | return null; | ||
18683 | } | ||
18684 | |||
18685 | // If the node and offset values are the same, the selection is collapsed. | ||
18686 | // `Selection.isCollapsed` is available natively, but IE sometimes gets | ||
18687 | // this value wrong. | ||
18688 | var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset); | ||
18689 | |||
18690 | var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length; | ||
18691 | |||
18692 | var tempRange = currentRange.cloneRange(); | ||
18693 | tempRange.selectNodeContents(node); | ||
18694 | tempRange.setEnd(currentRange.startContainer, currentRange.startOffset); | ||
18695 | |||
18696 | var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset); | ||
18697 | |||
18698 | var start = isTempRangeCollapsed ? 0 : tempRange.toString().length; | ||
18699 | var end = start + rangeLength; | ||
18700 | |||
18701 | // Detect whether the selection is backward. | ||
18702 | var detectionRange = document.createRange(); | ||
18703 | detectionRange.setStart(anchorNode, anchorOffset); | ||
18704 | detectionRange.setEnd(focusNode, focusOffset); | ||
18705 | var isBackward = detectionRange.collapsed; | ||
18706 | |||
18707 | return { | ||
18708 | start: isBackward ? end : start, | ||
18709 | end: isBackward ? start : end | ||
18710 | }; | ||
18711 | } | ||
18712 | |||
18713 | /** | ||
18714 | * @param {DOMElement|DOMTextNode} node | ||
18715 | * @param {object} offsets | ||
18716 | */ | ||
18717 | function setIEOffsets(node, offsets) { | ||
18718 | var range = document.selection.createRange().duplicate(); | ||
18719 | var start, end; | ||
18720 | |||
18721 | if (offsets.end === undefined) { | ||
18722 | start = offsets.start; | ||
18723 | end = start; | ||
18724 | } else if (offsets.start > offsets.end) { | ||
18725 | start = offsets.end; | ||
18726 | end = offsets.start; | ||
18727 | } else { | ||
18728 | start = offsets.start; | ||
18729 | end = offsets.end; | ||
18730 | } | ||
18731 | |||
18732 | range.moveToElementText(node); | ||
18733 | range.moveStart('character', start); | ||
18734 | range.setEndPoint('EndToStart', range); | ||
18735 | range.moveEnd('character', end - start); | ||
18736 | range.select(); | ||
18737 | } | ||
18738 | |||
18739 | /** | ||
18740 | * In modern non-IE browsers, we can support both forward and backward | ||
18741 | * selections. | ||
18742 | * | ||
18743 | * Note: IE10+ supports the Selection object, but it does not support | ||
18744 | * the `extend` method, which means that even in modern IE, it's not possible | ||
18745 | * to programmatically create a backward selection. Thus, for all IE | ||
18746 | * versions, we use the old IE API to create our selections. | ||
18747 | * | ||
18748 | * @param {DOMElement|DOMTextNode} node | ||
18749 | * @param {object} offsets | ||
18750 | */ | ||
18751 | function setModernOffsets(node, offsets) { | ||
18752 | if (!window.getSelection) { | ||
18753 | return; | ||
18754 | } | ||
18755 | |||
18756 | var selection = window.getSelection(); | ||
18757 | var length = node[getTextContentAccessor()].length; | ||
18758 | var start = Math.min(offsets.start, length); | ||
18759 | var end = offsets.end === undefined ? start : Math.min(offsets.end, length); | ||
18760 | |||
18761 | // IE 11 uses modern selection, but doesn't support the extend method. | ||
18762 | // Flip backward selections, so we can set with a single range. | ||
18763 | if (!selection.extend && start > end) { | ||
18764 | var temp = end; | ||
18765 | end = start; | ||
18766 | start = temp; | ||
18767 | } | ||
18768 | |||
18769 | var startMarker = getNodeForCharacterOffset(node, start); | ||
18770 | var endMarker = getNodeForCharacterOffset(node, end); | ||
18771 | |||
18772 | if (startMarker && endMarker) { | ||
18773 | var range = document.createRange(); | ||
18774 | range.setStart(startMarker.node, startMarker.offset); | ||
18775 | selection.removeAllRanges(); | ||
18776 | |||
18777 | if (start > end) { | ||
18778 | selection.addRange(range); | ||
18779 | selection.extend(endMarker.node, endMarker.offset); | ||
18780 | } else { | ||
18781 | range.setEnd(endMarker.node, endMarker.offset); | ||
18782 | selection.addRange(range); | ||
18783 | } | ||
18784 | } | ||
18785 | } | ||
18786 | |||
18787 | var useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window); | ||
18788 | |||
18789 | var ReactDOMSelection = { | ||
18790 | /** | ||
18791 | * @param {DOMElement} node | ||
18792 | */ | ||
18793 | getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets, | ||
18794 | |||
18795 | /** | ||
18796 | * @param {DOMElement|DOMTextNode} node | ||
18797 | * @param {object} offsets | ||
18798 | */ | ||
18799 | setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets | ||
18800 | }; | ||
18801 | |||
18802 | module.exports = ReactDOMSelection; | ||
18803 | |||
18804 | /***/ }), | ||
18805 | /* 154 */ | ||
18806 | /***/ (function(module, exports) { | ||
18807 | |||
18808 | /** | ||
18809 | * Copyright 2013-present, Facebook, Inc. | ||
18810 | * All rights reserved. | ||
18811 | * | ||
18812 | * This source code is licensed under the BSD-style license found in the | ||
18813 | * LICENSE file in the root directory of this source tree. An additional grant | ||
18814 | * of patent rights can be found in the PATENTS file in the same directory. | ||
18815 | * | ||
18816 | */ | ||
18817 | |||
18818 | 'use strict'; | ||
18819 | |||
18820 | /** | ||
18821 | * Given any node return the first leaf node without children. | ||
18822 | * | ||
18823 | * @param {DOMElement|DOMTextNode} node | ||
18824 | * @return {DOMElement|DOMTextNode} | ||
18825 | */ | ||
18826 | |||
18827 | function getLeafNode(node) { | ||
18828 | while (node && node.firstChild) { | ||
18829 | node = node.firstChild; | ||
18830 | } | ||
18831 | return node; | ||
18832 | } | ||
18833 | |||
18834 | /** | ||
18835 | * Get the next sibling within a container. This will walk up the | ||
18836 | * DOM if a node's siblings have been exhausted. | ||
18837 | * | ||
18838 | * @param {DOMElement|DOMTextNode} node | ||
18839 | * @return {?DOMElement|DOMTextNode} | ||
18840 | */ | ||
18841 | function getSiblingNode(node) { | ||
18842 | while (node) { | ||
18843 | if (node.nextSibling) { | ||
18844 | return node.nextSibling; | ||
18845 | } | ||
18846 | node = node.parentNode; | ||
18847 | } | ||
18848 | } | ||
18849 | |||
18850 | /** | ||
18851 | * Get object describing the nodes which contain characters at offset. | ||
18852 | * | ||
18853 | * @param {DOMElement|DOMTextNode} root | ||
18854 | * @param {number} offset | ||
18855 | * @return {?object} | ||
18856 | */ | ||
18857 | function getNodeForCharacterOffset(root, offset) { | ||
18858 | var node = getLeafNode(root); | ||
18859 | var nodeStart = 0; | ||
18860 | var nodeEnd = 0; | ||
18861 | |||
18862 | while (node) { | ||
18863 | if (node.nodeType === 3) { | ||
18864 | nodeEnd = nodeStart + node.textContent.length; | ||
18865 | |||
18866 | if (nodeStart <= offset && nodeEnd >= offset) { | ||
18867 | return { | ||
18868 | node: node, | ||
18869 | offset: offset - nodeStart | ||
18870 | }; | ||
18871 | } | ||
18872 | |||
18873 | nodeStart = nodeEnd; | ||
18874 | } | ||
18875 | |||
18876 | node = getLeafNode(getSiblingNode(node)); | ||
18877 | } | ||
18878 | } | ||
18879 | |||
18880 | module.exports = getNodeForCharacterOffset; | ||
18881 | |||
18882 | /***/ }), | ||
18883 | /* 155 */ | ||
18884 | /***/ (function(module, exports, __webpack_require__) { | ||
18885 | |||
18886 | 'use strict'; | ||
18887 | |||
18888 | /** | ||
18889 | * Copyright (c) 2013-present, Facebook, Inc. | ||
18890 | * All rights reserved. | ||
18891 | * | ||
18892 | * This source code is licensed under the BSD-style license found in the | ||
18893 | * LICENSE file in the root directory of this source tree. An additional grant | ||
18894 | * of patent rights can be found in the PATENTS file in the same directory. | ||
18895 | * | ||
18896 | * | ||
18897 | */ | ||
18898 | |||
18899 | var isTextNode = __webpack_require__(156); | ||
18900 | |||
18901 | /*eslint-disable no-bitwise */ | ||
18902 | |||
18903 | /** | ||
18904 | * Checks if a given DOM node contains or is another DOM node. | ||
18905 | */ | ||
18906 | function containsNode(outerNode, innerNode) { | ||
18907 | if (!outerNode || !innerNode) { | ||
18908 | return false; | ||
18909 | } else if (outerNode === innerNode) { | ||
18910 | return true; | ||
18911 | } else if (isTextNode(outerNode)) { | ||
18912 | return false; | ||
18913 | } else if (isTextNode(innerNode)) { | ||
18914 | return containsNode(outerNode, innerNode.parentNode); | ||
18915 | } else if ('contains' in outerNode) { | ||
18916 | return outerNode.contains(innerNode); | ||
18917 | } else if (outerNode.compareDocumentPosition) { | ||
18918 | return !!(outerNode.compareDocumentPosition(innerNode) & 16); | ||
18919 | } else { | ||
18920 | return false; | ||
18921 | } | ||
18922 | } | ||
18923 | |||
18924 | module.exports = containsNode; | ||
18925 | |||
18926 | /***/ }), | ||
18927 | /* 156 */ | ||
18928 | /***/ (function(module, exports, __webpack_require__) { | ||
18929 | |||
18930 | 'use strict'; | ||
18931 | |||
18932 | /** | ||
18933 | * Copyright (c) 2013-present, Facebook, Inc. | ||
18934 | * All rights reserved. | ||
18935 | * | ||
18936 | * This source code is licensed under the BSD-style license found in the | ||
18937 | * LICENSE file in the root directory of this source tree. An additional grant | ||
18938 | * of patent rights can be found in the PATENTS file in the same directory. | ||
18939 | * | ||
18940 | * @typechecks | ||
18941 | */ | ||
18942 | |||
18943 | var isNode = __webpack_require__(157); | ||
18944 | |||
18945 | /** | ||
18946 | * @param {*} object The object to check. | ||
18947 | * @return {boolean} Whether or not the object is a DOM text node. | ||
18948 | */ | ||
18949 | function isTextNode(object) { | ||
18950 | return isNode(object) && object.nodeType == 3; | ||
18951 | } | ||
18952 | |||
18953 | module.exports = isTextNode; | ||
18954 | |||
18955 | /***/ }), | ||
18956 | /* 157 */ | ||
18957 | /***/ (function(module, exports) { | ||
18958 | |||
18959 | 'use strict'; | ||
18960 | |||
18961 | /** | ||
18962 | * Copyright (c) 2013-present, Facebook, Inc. | ||
18963 | * All rights reserved. | ||
18964 | * | ||
18965 | * This source code is licensed under the BSD-style license found in the | ||
18966 | * LICENSE file in the root directory of this source tree. An additional grant | ||
18967 | * of patent rights can be found in the PATENTS file in the same directory. | ||
18968 | * | ||
18969 | * @typechecks | ||
18970 | */ | ||
18971 | |||
18972 | /** | ||
18973 | * @param {*} object The object to check. | ||
18974 | * @return {boolean} Whether or not the object is a DOM node. | ||
18975 | */ | ||
18976 | function isNode(object) { | ||
18977 | var doc = object ? object.ownerDocument || object : document; | ||
18978 | var defaultView = doc.defaultView || window; | ||
18979 | return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string')); | ||
18980 | } | ||
18981 | |||
18982 | module.exports = isNode; | ||
18983 | |||
18984 | /***/ }), | ||
18985 | /* 158 */ | ||
18986 | /***/ (function(module, exports) { | ||
18987 | |||
18988 | 'use strict'; | ||
18989 | |||
18990 | /** | ||
18991 | * Copyright (c) 2013-present, Facebook, Inc. | ||
18992 | * All rights reserved. | ||
18993 | * | ||
18994 | * This source code is licensed under the BSD-style license found in the | ||
18995 | * LICENSE file in the root directory of this source tree. An additional grant | ||
18996 | * of patent rights can be found in the PATENTS file in the same directory. | ||
18997 | * | ||
18998 | * @typechecks | ||
18999 | */ | ||
19000 | |||
19001 | /* eslint-disable fb-www/typeof-undefined */ | ||
19002 | |||
19003 | /** | ||
19004 | * Same as document.activeElement but wraps in a try-catch block. In IE it is | ||
19005 | * not safe to call document.activeElement if there is nothing focused. | ||
19006 | * | ||
19007 | * The activeElement will be null only if the document or document body is not | ||
19008 | * yet defined. | ||
19009 | * | ||
19010 | * @param {?DOMDocument} doc Defaults to current document. | ||
19011 | * @return {?DOMElement} | ||
19012 | */ | ||
19013 | function getActiveElement(doc) /*?DOMElement*/{ | ||
19014 | doc = doc || (typeof document !== 'undefined' ? document : undefined); | ||
19015 | if (typeof doc === 'undefined') { | ||
19016 | return null; | ||
19017 | } | ||
19018 | try { | ||
19019 | return doc.activeElement || doc.body; | ||
19020 | } catch (e) { | ||
19021 | return doc.body; | ||
19022 | } | ||
19023 | } | ||
19024 | |||
19025 | module.exports = getActiveElement; | ||
19026 | |||
19027 | /***/ }), | ||
19028 | /* 159 */ | ||
19029 | /***/ (function(module, exports) { | ||
19030 | |||
19031 | /** | ||
19032 | * Copyright 2013-present, Facebook, Inc. | ||
19033 | * All rights reserved. | ||
19034 | * | ||
19035 | * This source code is licensed under the BSD-style license found in the | ||
19036 | * LICENSE file in the root directory of this source tree. An additional grant | ||
19037 | * of patent rights can be found in the PATENTS file in the same directory. | ||
19038 | * | ||
19039 | */ | ||
19040 | |||
19041 | 'use strict'; | ||
19042 | |||
19043 | var NS = { | ||
19044 | xlink: 'http://www.w3.org/1999/xlink', | ||
19045 | xml: 'http://www.w3.org/XML/1998/namespace' | ||
19046 | }; | ||
19047 | |||
19048 | // We use attributes for everything SVG so let's avoid some duplication and run | ||
19049 | // code instead. | ||
19050 | // The following are all specified in the HTML config already so we exclude here. | ||
19051 | // - class (as className) | ||
19052 | // - color | ||
19053 | // - height | ||
19054 | // - id | ||
19055 | // - lang | ||
19056 | // - max | ||
19057 | // - media | ||
19058 | // - method | ||
19059 | // - min | ||
19060 | // - name | ||
19061 | // - style | ||
19062 | // - target | ||
19063 | // - type | ||
19064 | // - width | ||
19065 | var ATTRS = { | ||
19066 | accentHeight: 'accent-height', | ||
19067 | accumulate: 0, | ||
19068 | additive: 0, | ||
19069 | alignmentBaseline: 'alignment-baseline', | ||
19070 | allowReorder: 'allowReorder', | ||
19071 | alphabetic: 0, | ||
19072 | amplitude: 0, | ||
19073 | arabicForm: 'arabic-form', | ||
19074 | ascent: 0, | ||
19075 | attributeName: 'attributeName', | ||
19076 | attributeType: 'attributeType', | ||
19077 | autoReverse: 'autoReverse', | ||
19078 | azimuth: 0, | ||
19079 | baseFrequency: 'baseFrequency', | ||
19080 | baseProfile: 'baseProfile', | ||
19081 | baselineShift: 'baseline-shift', | ||
19082 | bbox: 0, | ||
19083 | begin: 0, | ||
19084 | bias: 0, | ||
19085 | by: 0, | ||
19086 | calcMode: 'calcMode', | ||
19087 | capHeight: 'cap-height', | ||
19088 | clip: 0, | ||
19089 | clipPath: 'clip-path', | ||
19090 | clipRule: 'clip-rule', | ||
19091 | clipPathUnits: 'clipPathUnits', | ||
19092 | colorInterpolation: 'color-interpolation', | ||
19093 | colorInterpolationFilters: 'color-interpolation-filters', | ||
19094 | colorProfile: 'color-profile', | ||
19095 | colorRendering: 'color-rendering', | ||
19096 | contentScriptType: 'contentScriptType', | ||
19097 | contentStyleType: 'contentStyleType', | ||
19098 | cursor: 0, | ||
19099 | cx: 0, | ||
19100 | cy: 0, | ||
19101 | d: 0, | ||
19102 | decelerate: 0, | ||
19103 | descent: 0, | ||
19104 | diffuseConstant: 'diffuseConstant', | ||
19105 | direction: 0, | ||
19106 | display: 0, | ||
19107 | divisor: 0, | ||
19108 | dominantBaseline: 'dominant-baseline', | ||
19109 | dur: 0, | ||
19110 | dx: 0, | ||
19111 | dy: 0, | ||
19112 | edgeMode: 'edgeMode', | ||
19113 | elevation: 0, | ||
19114 | enableBackground: 'enable-background', | ||
19115 | end: 0, | ||
19116 | exponent: 0, | ||
19117 | externalResourcesRequired: 'externalResourcesRequired', | ||
19118 | fill: 0, | ||
19119 | fillOpacity: 'fill-opacity', | ||
19120 | fillRule: 'fill-rule', | ||
19121 | filter: 0, | ||
19122 | filterRes: 'filterRes', | ||
19123 | filterUnits: 'filterUnits', | ||
19124 | floodColor: 'flood-color', | ||
19125 | floodOpacity: 'flood-opacity', | ||
19126 | focusable: 0, | ||
19127 | fontFamily: 'font-family', | ||
19128 | fontSize: 'font-size', | ||
19129 | fontSizeAdjust: 'font-size-adjust', | ||
19130 | fontStretch: 'font-stretch', | ||
19131 | fontStyle: 'font-style', | ||
19132 | fontVariant: 'font-variant', | ||
19133 | fontWeight: 'font-weight', | ||
19134 | format: 0, | ||
19135 | from: 0, | ||
19136 | fx: 0, | ||
19137 | fy: 0, | ||
19138 | g1: 0, | ||
19139 | g2: 0, | ||
19140 | glyphName: 'glyph-name', | ||
19141 | glyphOrientationHorizontal: 'glyph-orientation-horizontal', | ||
19142 | glyphOrientationVertical: 'glyph-orientation-vertical', | ||
19143 | glyphRef: 'glyphRef', | ||
19144 | gradientTransform: 'gradientTransform', | ||
19145 | gradientUnits: 'gradientUnits', | ||
19146 | hanging: 0, | ||
19147 | horizAdvX: 'horiz-adv-x', | ||
19148 | horizOriginX: 'horiz-origin-x', | ||
19149 | ideographic: 0, | ||
19150 | imageRendering: 'image-rendering', | ||
19151 | 'in': 0, | ||
19152 | in2: 0, | ||
19153 | intercept: 0, | ||
19154 | k: 0, | ||
19155 | k1: 0, | ||
19156 | k2: 0, | ||
19157 | k3: 0, | ||
19158 | k4: 0, | ||
19159 | kernelMatrix: 'kernelMatrix', | ||
19160 | kernelUnitLength: 'kernelUnitLength', | ||
19161 | kerning: 0, | ||
19162 | keyPoints: 'keyPoints', | ||
19163 | keySplines: 'keySplines', | ||
19164 | keyTimes: 'keyTimes', | ||
19165 | lengthAdjust: 'lengthAdjust', | ||
19166 | letterSpacing: 'letter-spacing', | ||
19167 | lightingColor: 'lighting-color', | ||
19168 | limitingConeAngle: 'limitingConeAngle', | ||
19169 | local: 0, | ||
19170 | markerEnd: 'marker-end', | ||
19171 | markerMid: 'marker-mid', | ||
19172 | markerStart: 'marker-start', | ||
19173 | markerHeight: 'markerHeight', | ||
19174 | markerUnits: 'markerUnits', | ||
19175 | markerWidth: 'markerWidth', | ||
19176 | mask: 0, | ||
19177 | maskContentUnits: 'maskContentUnits', | ||
19178 | maskUnits: 'maskUnits', | ||
19179 | mathematical: 0, | ||
19180 | mode: 0, | ||
19181 | numOctaves: 'numOctaves', | ||
19182 | offset: 0, | ||
19183 | opacity: 0, | ||
19184 | operator: 0, | ||
19185 | order: 0, | ||
19186 | orient: 0, | ||
19187 | orientation: 0, | ||
19188 | origin: 0, | ||
19189 | overflow: 0, | ||
19190 | overlinePosition: 'overline-position', | ||
19191 | overlineThickness: 'overline-thickness', | ||
19192 | paintOrder: 'paint-order', | ||
19193 | panose1: 'panose-1', | ||
19194 | pathLength: 'pathLength', | ||
19195 | patternContentUnits: 'patternContentUnits', | ||
19196 | patternTransform: 'patternTransform', | ||
19197 | patternUnits: 'patternUnits', | ||
19198 | pointerEvents: 'pointer-events', | ||
19199 | points: 0, | ||
19200 | pointsAtX: 'pointsAtX', | ||
19201 | pointsAtY: 'pointsAtY', | ||
19202 | pointsAtZ: 'pointsAtZ', | ||
19203 | preserveAlpha: 'preserveAlpha', | ||
19204 | preserveAspectRatio: 'preserveAspectRatio', | ||
19205 | primitiveUnits: 'primitiveUnits', | ||
19206 | r: 0, | ||
19207 | radius: 0, | ||
19208 | refX: 'refX', | ||
19209 | refY: 'refY', | ||
19210 | renderingIntent: 'rendering-intent', | ||
19211 | repeatCount: 'repeatCount', | ||
19212 | repeatDur: 'repeatDur', | ||
19213 | requiredExtensions: 'requiredExtensions', | ||
19214 | requiredFeatures: 'requiredFeatures', | ||
19215 | restart: 0, | ||
19216 | result: 0, | ||
19217 | rotate: 0, | ||
19218 | rx: 0, | ||
19219 | ry: 0, | ||
19220 | scale: 0, | ||
19221 | seed: 0, | ||
19222 | shapeRendering: 'shape-rendering', | ||
19223 | slope: 0, | ||
19224 | spacing: 0, | ||
19225 | specularConstant: 'specularConstant', | ||
19226 | specularExponent: 'specularExponent', | ||
19227 | speed: 0, | ||
19228 | spreadMethod: 'spreadMethod', | ||
19229 | startOffset: 'startOffset', | ||
19230 | stdDeviation: 'stdDeviation', | ||
19231 | stemh: 0, | ||
19232 | stemv: 0, | ||
19233 | stitchTiles: 'stitchTiles', | ||
19234 | stopColor: 'stop-color', | ||
19235 | stopOpacity: 'stop-opacity', | ||
19236 | strikethroughPosition: 'strikethrough-position', | ||
19237 | strikethroughThickness: 'strikethrough-thickness', | ||
19238 | string: 0, | ||
19239 | stroke: 0, | ||
19240 | strokeDasharray: 'stroke-dasharray', | ||
19241 | strokeDashoffset: 'stroke-dashoffset', | ||
19242 | strokeLinecap: 'stroke-linecap', | ||
19243 | strokeLinejoin: 'stroke-linejoin', | ||
19244 | strokeMiterlimit: 'stroke-miterlimit', | ||
19245 | strokeOpacity: 'stroke-opacity', | ||
19246 | strokeWidth: 'stroke-width', | ||
19247 | surfaceScale: 'surfaceScale', | ||
19248 | systemLanguage: 'systemLanguage', | ||
19249 | tableValues: 'tableValues', | ||
19250 | targetX: 'targetX', | ||
19251 | targetY: 'targetY', | ||
19252 | textAnchor: 'text-anchor', | ||
19253 | textDecoration: 'text-decoration', | ||
19254 | textRendering: 'text-rendering', | ||
19255 | textLength: 'textLength', | ||
19256 | to: 0, | ||
19257 | transform: 0, | ||
19258 | u1: 0, | ||
19259 | u2: 0, | ||
19260 | underlinePosition: 'underline-position', | ||
19261 | underlineThickness: 'underline-thickness', | ||
19262 | unicode: 0, | ||
19263 | unicodeBidi: 'unicode-bidi', | ||
19264 | unicodeRange: 'unicode-range', | ||
19265 | unitsPerEm: 'units-per-em', | ||
19266 | vAlphabetic: 'v-alphabetic', | ||
19267 | vHanging: 'v-hanging', | ||
19268 | vIdeographic: 'v-ideographic', | ||
19269 | vMathematical: 'v-mathematical', | ||
19270 | values: 0, | ||
19271 | vectorEffect: 'vector-effect', | ||
19272 | version: 0, | ||
19273 | vertAdvY: 'vert-adv-y', | ||
19274 | vertOriginX: 'vert-origin-x', | ||
19275 | vertOriginY: 'vert-origin-y', | ||
19276 | viewBox: 'viewBox', | ||
19277 | viewTarget: 'viewTarget', | ||
19278 | visibility: 0, | ||
19279 | widths: 0, | ||
19280 | wordSpacing: 'word-spacing', | ||
19281 | writingMode: 'writing-mode', | ||
19282 | x: 0, | ||
19283 | xHeight: 'x-height', | ||
19284 | x1: 0, | ||
19285 | x2: 0, | ||
19286 | xChannelSelector: 'xChannelSelector', | ||
19287 | xlinkActuate: 'xlink:actuate', | ||
19288 | xlinkArcrole: 'xlink:arcrole', | ||
19289 | xlinkHref: 'xlink:href', | ||
19290 | xlinkRole: 'xlink:role', | ||
19291 | xlinkShow: 'xlink:show', | ||
19292 | xlinkTitle: 'xlink:title', | ||
19293 | xlinkType: 'xlink:type', | ||
19294 | xmlBase: 'xml:base', | ||
19295 | xmlns: 0, | ||
19296 | xmlnsXlink: 'xmlns:xlink', | ||
19297 | xmlLang: 'xml:lang', | ||
19298 | xmlSpace: 'xml:space', | ||
19299 | y: 0, | ||
19300 | y1: 0, | ||
19301 | y2: 0, | ||
19302 | yChannelSelector: 'yChannelSelector', | ||
19303 | z: 0, | ||
19304 | zoomAndPan: 'zoomAndPan' | ||
19305 | }; | ||
19306 | |||
19307 | var SVGDOMPropertyConfig = { | ||
19308 | Properties: {}, | ||
19309 | DOMAttributeNamespaces: { | ||
19310 | xlinkActuate: NS.xlink, | ||
19311 | xlinkArcrole: NS.xlink, | ||
19312 | xlinkHref: NS.xlink, | ||
19313 | xlinkRole: NS.xlink, | ||
19314 | xlinkShow: NS.xlink, | ||
19315 | xlinkTitle: NS.xlink, | ||
19316 | xlinkType: NS.xlink, | ||
19317 | xmlBase: NS.xml, | ||
19318 | xmlLang: NS.xml, | ||
19319 | xmlSpace: NS.xml | ||
19320 | }, | ||
19321 | DOMAttributeNames: {} | ||
19322 | }; | ||
19323 | |||
19324 | Object.keys(ATTRS).forEach(function (key) { | ||
19325 | SVGDOMPropertyConfig.Properties[key] = 0; | ||
19326 | if (ATTRS[key]) { | ||
19327 | SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key]; | ||
19328 | } | ||
19329 | }); | ||
19330 | |||
19331 | module.exports = SVGDOMPropertyConfig; | ||
19332 | |||
19333 | /***/ }), | ||
19334 | /* 160 */ | ||
19335 | /***/ (function(module, exports, __webpack_require__) { | ||
19336 | |||
19337 | /** | ||
19338 | * Copyright 2013-present, Facebook, Inc. | ||
19339 | * All rights reserved. | ||
19340 | * | ||
19341 | * This source code is licensed under the BSD-style license found in the | ||
19342 | * LICENSE file in the root directory of this source tree. An additional grant | ||
19343 | * of patent rights can be found in the PATENTS file in the same directory. | ||
19344 | * | ||
19345 | */ | ||
19346 | |||
19347 | 'use strict'; | ||
19348 | |||
19349 | var EventPropagators = __webpack_require__(47); | ||
19350 | var ExecutionEnvironment = __webpack_require__(54); | ||
19351 | var ReactDOMComponentTree = __webpack_require__(40); | ||
19352 | var ReactInputSelection = __webpack_require__(152); | ||
19353 | var SyntheticEvent = __webpack_require__(59); | ||
19354 | |||
19355 | var getActiveElement = __webpack_require__(158); | ||
19356 | var isTextInputElement = __webpack_require__(77); | ||
19357 | var shallowEqual = __webpack_require__(129); | ||
19358 | |||
19359 | var skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11; | ||
19360 | |||
19361 | var eventTypes = { | ||
19362 | select: { | ||
19363 | phasedRegistrationNames: { | ||
19364 | bubbled: 'onSelect', | ||
19365 | captured: 'onSelectCapture' | ||
19366 | }, | ||
19367 | dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange'] | ||
19368 | } | ||
19369 | }; | ||
19370 | |||
19371 | var activeElement = null; | ||
19372 | var activeElementInst = null; | ||
19373 | var lastSelection = null; | ||
19374 | var mouseDown = false; | ||
19375 | |||
19376 | // Track whether a listener exists for this plugin. If none exist, we do | ||
19377 | // not extract events. See #3639. | ||
19378 | var hasListener = false; | ||
19379 | |||
19380 | /** | ||
19381 | * Get an object which is a unique representation of the current selection. | ||
19382 | * | ||
19383 | * The return value will not be consistent across nodes or browsers, but | ||
19384 | * two identical selections on the same node will return identical objects. | ||
19385 | * | ||
19386 | * @param {DOMElement} node | ||
19387 | * @return {object} | ||
19388 | */ | ||
19389 | function getSelection(node) { | ||
19390 | if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) { | ||
19391 | return { | ||
19392 | start: node.selectionStart, | ||
19393 | end: node.selectionEnd | ||
19394 | }; | ||
19395 | } else if (window.getSelection) { | ||
19396 | var selection = window.getSelection(); | ||
19397 | return { | ||
19398 | anchorNode: selection.anchorNode, | ||
19399 | anchorOffset: selection.anchorOffset, | ||
19400 | focusNode: selection.focusNode, | ||
19401 | focusOffset: selection.focusOffset | ||
19402 | }; | ||
19403 | } else if (document.selection) { | ||
19404 | var range = document.selection.createRange(); | ||
19405 | return { | ||
19406 | parentElement: range.parentElement(), | ||
19407 | text: range.text, | ||
19408 | top: range.boundingTop, | ||
19409 | left: range.boundingLeft | ||
19410 | }; | ||
19411 | } | ||
19412 | } | ||
19413 | |||
19414 | /** | ||
19415 | * Poll selection to see whether it's changed. | ||
19416 | * | ||
19417 | * @param {object} nativeEvent | ||
19418 | * @return {?SyntheticEvent} | ||
19419 | */ | ||
19420 | function constructSelectEvent(nativeEvent, nativeEventTarget) { | ||
19421 | // Ensure we have the right element, and that the user is not dragging a | ||
19422 | // selection (this matches native `select` event behavior). In HTML5, select | ||
19423 | // fires only on input and textarea thus if there's no focused element we | ||
19424 | // won't dispatch. | ||
19425 | if (mouseDown || activeElement == null || activeElement !== getActiveElement()) { | ||
19426 | return null; | ||
19427 | } | ||
19428 | |||
19429 | // Only fire when selection has actually changed. | ||
19430 | var currentSelection = getSelection(activeElement); | ||
19431 | if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) { | ||
19432 | lastSelection = currentSelection; | ||
19433 | |||
19434 | var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget); | ||
19435 | |||
19436 | syntheticEvent.type = 'select'; | ||
19437 | syntheticEvent.target = activeElement; | ||
19438 | |||
19439 | EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent); | ||
19440 | |||
19441 | return syntheticEvent; | ||
19442 | } | ||
19443 | |||
19444 | return null; | ||
19445 | } | ||
19446 | |||
19447 | /** | ||
19448 | * This plugin creates an `onSelect` event that normalizes select events | ||
19449 | * across form elements. | ||
19450 | * | ||
19451 | * Supported elements are: | ||
19452 | * - input (see `isTextInputElement`) | ||
19453 | * - textarea | ||
19454 | * - contentEditable | ||
19455 | * | ||
19456 | * This differs from native browser implementations in the following ways: | ||
19457 | * - Fires on contentEditable fields as well as inputs. | ||
19458 | * - Fires for collapsed selection. | ||
19459 | * - Fires after user input. | ||
19460 | */ | ||
19461 | var SelectEventPlugin = { | ||
19462 | |||
19463 | eventTypes: eventTypes, | ||
19464 | |||
19465 | extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { | ||
19466 | if (!hasListener) { | ||
19467 | return null; | ||
19468 | } | ||
19469 | |||
19470 | var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window; | ||
19471 | |||
19472 | switch (topLevelType) { | ||
19473 | // Track the input node that has focus. | ||
19474 | case 'topFocus': | ||
19475 | if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') { | ||
19476 | activeElement = targetNode; | ||
19477 | activeElementInst = targetInst; | ||
19478 | lastSelection = null; | ||
19479 | } | ||
19480 | break; | ||
19481 | case 'topBlur': | ||
19482 | activeElement = null; | ||
19483 | activeElementInst = null; | ||
19484 | lastSelection = null; | ||
19485 | break; | ||
19486 | |||
19487 | // Don't fire the event while the user is dragging. This matches the | ||
19488 | // semantics of the native select event. | ||
19489 | case 'topMouseDown': | ||
19490 | mouseDown = true; | ||
19491 | break; | ||
19492 | case 'topContextMenu': | ||
19493 | case 'topMouseUp': | ||
19494 | mouseDown = false; | ||
19495 | return constructSelectEvent(nativeEvent, nativeEventTarget); | ||
19496 | |||
19497 | // Chrome and IE fire non-standard event when selection is changed (and | ||
19498 | // sometimes when it hasn't). IE's event fires out of order with respect | ||
19499 | // to key and input events on deletion, so we discard it. | ||
19500 | // | ||
19501 | // Firefox doesn't support selectionchange, so check selection status | ||
19502 | // after each key entry. The selection changes after keydown and before | ||
19503 | // keyup, but we check on keydown as well in the case of holding down a | ||
19504 | // key, when multiple keydown events are fired but only one keyup is. | ||
19505 | // This is also our approach for IE handling, for the reason above. | ||
19506 | case 'topSelectionChange': | ||
19507 | if (skipSelectionChangeEvent) { | ||
19508 | break; | ||
19509 | } | ||
19510 | // falls through | ||
19511 | case 'topKeyDown': | ||
19512 | case 'topKeyUp': | ||
19513 | return constructSelectEvent(nativeEvent, nativeEventTarget); | ||
19514 | } | ||
19515 | |||
19516 | return null; | ||
19517 | }, | ||
19518 | |||
19519 | didPutListener: function (inst, registrationName, listener) { | ||
19520 | if (registrationName === 'onSelect') { | ||
19521 | hasListener = true; | ||
19522 | } | ||
19523 | } | ||
19524 | }; | ||
19525 | |||
19526 | module.exports = SelectEventPlugin; | ||
19527 | |||
19528 | /***/ }), | ||
19529 | /* 161 */ | ||
19530 | /***/ (function(module, exports, __webpack_require__) { | ||
19531 | |||
19532 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
19533 | * Copyright 2013-present, Facebook, Inc. | ||
19534 | * All rights reserved. | ||
19535 | * | ||
19536 | * This source code is licensed under the BSD-style license found in the | ||
19537 | * LICENSE file in the root directory of this source tree. An additional grant | ||
19538 | * of patent rights can be found in the PATENTS file in the same directory. | ||
19539 | * | ||
19540 | * | ||
19541 | */ | ||
19542 | |||
19543 | 'use strict'; | ||
19544 | |||
19545 | var _prodInvariant = __webpack_require__(41); | ||
19546 | |||
19547 | var EventListener = __webpack_require__(148); | ||
19548 | var EventPropagators = __webpack_require__(47); | ||
19549 | var ReactDOMComponentTree = __webpack_require__(40); | ||
19550 | var SyntheticAnimationEvent = __webpack_require__(162); | ||
19551 | var SyntheticClipboardEvent = __webpack_require__(163); | ||
19552 | var SyntheticEvent = __webpack_require__(59); | ||
19553 | var SyntheticFocusEvent = __webpack_require__(164); | ||
19554 | var SyntheticKeyboardEvent = __webpack_require__(165); | ||
19555 | var SyntheticMouseEvent = __webpack_require__(80); | ||
19556 | var SyntheticDragEvent = __webpack_require__(168); | ||
19557 | var SyntheticTouchEvent = __webpack_require__(169); | ||
19558 | var SyntheticTransitionEvent = __webpack_require__(170); | ||
19559 | var SyntheticUIEvent = __webpack_require__(81); | ||
19560 | var SyntheticWheelEvent = __webpack_require__(171); | ||
19561 | |||
19562 | var emptyFunction = __webpack_require__(14); | ||
19563 | var getEventCharCode = __webpack_require__(166); | ||
19564 | var invariant = __webpack_require__(10); | ||
19565 | |||
19566 | /** | ||
19567 | * Turns | ||
19568 | * ['abort', ...] | ||
19569 | * into | ||
19570 | * eventTypes = { | ||
19571 | * 'abort': { | ||
19572 | * phasedRegistrationNames: { | ||
19573 | * bubbled: 'onAbort', | ||
19574 | * captured: 'onAbortCapture', | ||
19575 | * }, | ||
19576 | * dependencies: ['topAbort'], | ||
19577 | * }, | ||
19578 | * ... | ||
19579 | * }; | ||
19580 | * topLevelEventsToDispatchConfig = { | ||
19581 | * 'topAbort': { sameConfig } | ||
19582 | * }; | ||
19583 | */ | ||
19584 | var eventTypes = {}; | ||
19585 | var topLevelEventsToDispatchConfig = {}; | ||
19586 | ['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) { | ||
19587 | var capitalizedEvent = event[0].toUpperCase() + event.slice(1); | ||
19588 | var onEvent = 'on' + capitalizedEvent; | ||
19589 | var topEvent = 'top' + capitalizedEvent; | ||
19590 | |||
19591 | var type = { | ||
19592 | phasedRegistrationNames: { | ||
19593 | bubbled: onEvent, | ||
19594 | captured: onEvent + 'Capture' | ||
19595 | }, | ||
19596 | dependencies: [topEvent] | ||
19597 | }; | ||
19598 | eventTypes[event] = type; | ||
19599 | topLevelEventsToDispatchConfig[topEvent] = type; | ||
19600 | }); | ||
19601 | |||
19602 | var onClickListeners = {}; | ||
19603 | |||
19604 | function getDictionaryKey(inst) { | ||
19605 | // Prevents V8 performance issue: | ||
19606 | // https://github.com/facebook/react/pull/7232 | ||
19607 | return '.' + inst._rootNodeID; | ||
19608 | } | ||
19609 | |||
19610 | function isInteractive(tag) { | ||
19611 | return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea'; | ||
19612 | } | ||
19613 | |||
19614 | var SimpleEventPlugin = { | ||
19615 | |||
19616 | eventTypes: eventTypes, | ||
19617 | |||
19618 | extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { | ||
19619 | var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType]; | ||
19620 | if (!dispatchConfig) { | ||
19621 | return null; | ||
19622 | } | ||
19623 | var EventConstructor; | ||
19624 | switch (topLevelType) { | ||
19625 | case 'topAbort': | ||
19626 | case 'topCanPlay': | ||
19627 | case 'topCanPlayThrough': | ||
19628 | case 'topDurationChange': | ||
19629 | case 'topEmptied': | ||
19630 | case 'topEncrypted': | ||
19631 | case 'topEnded': | ||
19632 | case 'topError': | ||
19633 | case 'topInput': | ||
19634 | case 'topInvalid': | ||
19635 | case 'topLoad': | ||
19636 | case 'topLoadedData': | ||
19637 | case 'topLoadedMetadata': | ||
19638 | case 'topLoadStart': | ||
19639 | case 'topPause': | ||
19640 | case 'topPlay': | ||
19641 | case 'topPlaying': | ||
19642 | case 'topProgress': | ||
19643 | case 'topRateChange': | ||
19644 | case 'topReset': | ||
19645 | case 'topSeeked': | ||
19646 | case 'topSeeking': | ||
19647 | case 'topStalled': | ||
19648 | case 'topSubmit': | ||
19649 | case 'topSuspend': | ||
19650 | case 'topTimeUpdate': | ||
19651 | case 'topVolumeChange': | ||
19652 | case 'topWaiting': | ||
19653 | // HTML Events | ||
19654 | // @see http://www.w3.org/TR/html5/index.html#events-0 | ||
19655 | EventConstructor = SyntheticEvent; | ||
19656 | break; | ||
19657 | case 'topKeyPress': | ||
19658 | // Firefox creates a keypress event for function keys too. This removes | ||
19659 | // the unwanted keypress events. Enter is however both printable and | ||
19660 | // non-printable. One would expect Tab to be as well (but it isn't). | ||
19661 | if (getEventCharCode(nativeEvent) === 0) { | ||
19662 | return null; | ||
19663 | } | ||
19664 | /* falls through */ | ||
19665 | case 'topKeyDown': | ||
19666 | case 'topKeyUp': | ||
19667 | EventConstructor = SyntheticKeyboardEvent; | ||
19668 | break; | ||
19669 | case 'topBlur': | ||
19670 | case 'topFocus': | ||
19671 | EventConstructor = SyntheticFocusEvent; | ||
19672 | break; | ||
19673 | case 'topClick': | ||
19674 | // Firefox creates a click event on right mouse clicks. This removes the | ||
19675 | // unwanted click events. | ||
19676 | if (nativeEvent.button === 2) { | ||
19677 | return null; | ||
19678 | } | ||
19679 | /* falls through */ | ||
19680 | case 'topDoubleClick': | ||
19681 | case 'topMouseDown': | ||
19682 | case 'topMouseMove': | ||
19683 | case 'topMouseUp': | ||
19684 | // TODO: Disabled elements should not respond to mouse events | ||
19685 | /* falls through */ | ||
19686 | case 'topMouseOut': | ||
19687 | case 'topMouseOver': | ||
19688 | case 'topContextMenu': | ||
19689 | EventConstructor = SyntheticMouseEvent; | ||
19690 | break; | ||
19691 | case 'topDrag': | ||
19692 | case 'topDragEnd': | ||
19693 | case 'topDragEnter': | ||
19694 | case 'topDragExit': | ||
19695 | case 'topDragLeave': | ||
19696 | case 'topDragOver': | ||
19697 | case 'topDragStart': | ||
19698 | case 'topDrop': | ||
19699 | EventConstructor = SyntheticDragEvent; | ||
19700 | break; | ||
19701 | case 'topTouchCancel': | ||
19702 | case 'topTouchEnd': | ||
19703 | case 'topTouchMove': | ||
19704 | case 'topTouchStart': | ||
19705 | EventConstructor = SyntheticTouchEvent; | ||
19706 | break; | ||
19707 | case 'topAnimationEnd': | ||
19708 | case 'topAnimationIteration': | ||
19709 | case 'topAnimationStart': | ||
19710 | EventConstructor = SyntheticAnimationEvent; | ||
19711 | break; | ||
19712 | case 'topTransitionEnd': | ||
19713 | EventConstructor = SyntheticTransitionEvent; | ||
19714 | break; | ||
19715 | case 'topScroll': | ||
19716 | EventConstructor = SyntheticUIEvent; | ||
19717 | break; | ||
19718 | case 'topWheel': | ||
19719 | EventConstructor = SyntheticWheelEvent; | ||
19720 | break; | ||
19721 | case 'topCopy': | ||
19722 | case 'topCut': | ||
19723 | case 'topPaste': | ||
19724 | EventConstructor = SyntheticClipboardEvent; | ||
19725 | break; | ||
19726 | } | ||
19727 | !EventConstructor ? process.env.NODE_ENV !== 'production' ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0; | ||
19728 | var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget); | ||
19729 | EventPropagators.accumulateTwoPhaseDispatches(event); | ||
19730 | return event; | ||
19731 | }, | ||
19732 | |||
19733 | didPutListener: function (inst, registrationName, listener) { | ||
19734 | // Mobile Safari does not fire properly bubble click events on | ||
19735 | // non-interactive elements, which means delegated click listeners do not | ||
19736 | // fire. The workaround for this bug involves attaching an empty click | ||
19737 | // listener on the target node. | ||
19738 | // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html | ||
19739 | if (registrationName === 'onClick' && !isInteractive(inst._tag)) { | ||
19740 | var key = getDictionaryKey(inst); | ||
19741 | var node = ReactDOMComponentTree.getNodeFromInstance(inst); | ||
19742 | if (!onClickListeners[key]) { | ||
19743 | onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction); | ||
19744 | } | ||
19745 | } | ||
19746 | }, | ||
19747 | |||
19748 | willDeleteListener: function (inst, registrationName) { | ||
19749 | if (registrationName === 'onClick' && !isInteractive(inst._tag)) { | ||
19750 | var key = getDictionaryKey(inst); | ||
19751 | onClickListeners[key].remove(); | ||
19752 | delete onClickListeners[key]; | ||
19753 | } | ||
19754 | } | ||
19755 | |||
19756 | }; | ||
19757 | |||
19758 | module.exports = SimpleEventPlugin; | ||
19759 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
19760 | |||
19761 | /***/ }), | ||
19762 | /* 162 */ | ||
19763 | /***/ (function(module, exports, __webpack_require__) { | ||
19764 | |||
19765 | /** | ||
19766 | * Copyright 2013-present, Facebook, Inc. | ||
19767 | * All rights reserved. | ||
19768 | * | ||
19769 | * This source code is licensed under the BSD-style license found in the | ||
19770 | * LICENSE file in the root directory of this source tree. An additional grant | ||
19771 | * of patent rights can be found in the PATENTS file in the same directory. | ||
19772 | * | ||
19773 | */ | ||
19774 | |||
19775 | 'use strict'; | ||
19776 | |||
19777 | var SyntheticEvent = __webpack_require__(59); | ||
19778 | |||
19779 | /** | ||
19780 | * @interface Event | ||
19781 | * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface | ||
19782 | * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent | ||
19783 | */ | ||
19784 | var AnimationEventInterface = { | ||
19785 | animationName: null, | ||
19786 | elapsedTime: null, | ||
19787 | pseudoElement: null | ||
19788 | }; | ||
19789 | |||
19790 | /** | ||
19791 | * @param {object} dispatchConfig Configuration used to dispatch this event. | ||
19792 | * @param {string} dispatchMarker Marker identifying the event target. | ||
19793 | * @param {object} nativeEvent Native browser event. | ||
19794 | * @extends {SyntheticEvent} | ||
19795 | */ | ||
19796 | function SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { | ||
19797 | return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); | ||
19798 | } | ||
19799 | |||
19800 | SyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface); | ||
19801 | |||
19802 | module.exports = SyntheticAnimationEvent; | ||
19803 | |||
19804 | /***/ }), | ||
19805 | /* 163 */ | ||
19806 | /***/ (function(module, exports, __webpack_require__) { | ||
19807 | |||
19808 | /** | ||
19809 | * Copyright 2013-present, Facebook, Inc. | ||
19810 | * All rights reserved. | ||
19811 | * | ||
19812 | * This source code is licensed under the BSD-style license found in the | ||
19813 | * LICENSE file in the root directory of this source tree. An additional grant | ||
19814 | * of patent rights can be found in the PATENTS file in the same directory. | ||
19815 | * | ||
19816 | */ | ||
19817 | |||
19818 | 'use strict'; | ||
19819 | |||
19820 | var SyntheticEvent = __webpack_require__(59); | ||
19821 | |||
19822 | /** | ||
19823 | * @interface Event | ||
19824 | * @see http://www.w3.org/TR/clipboard-apis/ | ||
19825 | */ | ||
19826 | var ClipboardEventInterface = { | ||
19827 | clipboardData: function (event) { | ||
19828 | return 'clipboardData' in event ? event.clipboardData : window.clipboardData; | ||
19829 | } | ||
19830 | }; | ||
19831 | |||
19832 | /** | ||
19833 | * @param {object} dispatchConfig Configuration used to dispatch this event. | ||
19834 | * @param {string} dispatchMarker Marker identifying the event target. | ||
19835 | * @param {object} nativeEvent Native browser event. | ||
19836 | * @extends {SyntheticUIEvent} | ||
19837 | */ | ||
19838 | function SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { | ||
19839 | return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); | ||
19840 | } | ||
19841 | |||
19842 | SyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface); | ||
19843 | |||
19844 | module.exports = SyntheticClipboardEvent; | ||
19845 | |||
19846 | /***/ }), | ||
19847 | /* 164 */ | ||
19848 | /***/ (function(module, exports, __webpack_require__) { | ||
19849 | |||
19850 | /** | ||
19851 | * Copyright 2013-present, Facebook, Inc. | ||
19852 | * All rights reserved. | ||
19853 | * | ||
19854 | * This source code is licensed under the BSD-style license found in the | ||
19855 | * LICENSE file in the root directory of this source tree. An additional grant | ||
19856 | * of patent rights can be found in the PATENTS file in the same directory. | ||
19857 | * | ||
19858 | */ | ||
19859 | |||
19860 | 'use strict'; | ||
19861 | |||
19862 | var SyntheticUIEvent = __webpack_require__(81); | ||
19863 | |||
19864 | /** | ||
19865 | * @interface FocusEvent | ||
19866 | * @see http://www.w3.org/TR/DOM-Level-3-Events/ | ||
19867 | */ | ||
19868 | var FocusEventInterface = { | ||
19869 | relatedTarget: null | ||
19870 | }; | ||
19871 | |||
19872 | /** | ||
19873 | * @param {object} dispatchConfig Configuration used to dispatch this event. | ||
19874 | * @param {string} dispatchMarker Marker identifying the event target. | ||
19875 | * @param {object} nativeEvent Native browser event. | ||
19876 | * @extends {SyntheticUIEvent} | ||
19877 | */ | ||
19878 | function SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { | ||
19879 | return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); | ||
19880 | } | ||
19881 | |||
19882 | SyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface); | ||
19883 | |||
19884 | module.exports = SyntheticFocusEvent; | ||
19885 | |||
19886 | /***/ }), | ||
19887 | /* 165 */ | ||
19888 | /***/ (function(module, exports, __webpack_require__) { | ||
19889 | |||
19890 | /** | ||
19891 | * Copyright 2013-present, Facebook, Inc. | ||
19892 | * All rights reserved. | ||
19893 | * | ||
19894 | * This source code is licensed under the BSD-style license found in the | ||
19895 | * LICENSE file in the root directory of this source tree. An additional grant | ||
19896 | * of patent rights can be found in the PATENTS file in the same directory. | ||
19897 | * | ||
19898 | */ | ||
19899 | |||
19900 | 'use strict'; | ||
19901 | |||
19902 | var SyntheticUIEvent = __webpack_require__(81); | ||
19903 | |||
19904 | var getEventCharCode = __webpack_require__(166); | ||
19905 | var getEventKey = __webpack_require__(167); | ||
19906 | var getEventModifierState = __webpack_require__(83); | ||
19907 | |||
19908 | /** | ||
19909 | * @interface KeyboardEvent | ||
19910 | * @see http://www.w3.org/TR/DOM-Level-3-Events/ | ||
19911 | */ | ||
19912 | var KeyboardEventInterface = { | ||
19913 | key: getEventKey, | ||
19914 | location: null, | ||
19915 | ctrlKey: null, | ||
19916 | shiftKey: null, | ||
19917 | altKey: null, | ||
19918 | metaKey: null, | ||
19919 | repeat: null, | ||
19920 | locale: null, | ||
19921 | getModifierState: getEventModifierState, | ||
19922 | // Legacy Interface | ||
19923 | charCode: function (event) { | ||
19924 | // `charCode` is the result of a KeyPress event and represents the value of | ||
19925 | // the actual printable character. | ||
19926 | |||
19927 | // KeyPress is deprecated, but its replacement is not yet final and not | ||
19928 | // implemented in any major browser. Only KeyPress has charCode. | ||
19929 | if (event.type === 'keypress') { | ||
19930 | return getEventCharCode(event); | ||
19931 | } | ||
19932 | return 0; | ||
19933 | }, | ||
19934 | keyCode: function (event) { | ||
19935 | // `keyCode` is the result of a KeyDown/Up event and represents the value of | ||
19936 | // physical keyboard key. | ||
19937 | |||
19938 | // The actual meaning of the value depends on the users' keyboard layout | ||
19939 | // which cannot be detected. Assuming that it is a US keyboard layout | ||
19940 | // provides a surprisingly accurate mapping for US and European users. | ||
19941 | // Due to this, it is left to the user to implement at this time. | ||
19942 | if (event.type === 'keydown' || event.type === 'keyup') { | ||
19943 | return event.keyCode; | ||
19944 | } | ||
19945 | return 0; | ||
19946 | }, | ||
19947 | which: function (event) { | ||
19948 | // `which` is an alias for either `keyCode` or `charCode` depending on the | ||
19949 | // type of the event. | ||
19950 | if (event.type === 'keypress') { | ||
19951 | return getEventCharCode(event); | ||
19952 | } | ||
19953 | if (event.type === 'keydown' || event.type === 'keyup') { | ||
19954 | return event.keyCode; | ||
19955 | } | ||
19956 | return 0; | ||
19957 | } | ||
19958 | }; | ||
19959 | |||
19960 | /** | ||
19961 | * @param {object} dispatchConfig Configuration used to dispatch this event. | ||
19962 | * @param {string} dispatchMarker Marker identifying the event target. | ||
19963 | * @param {object} nativeEvent Native browser event. | ||
19964 | * @extends {SyntheticUIEvent} | ||
19965 | */ | ||
19966 | function SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { | ||
19967 | return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); | ||
19968 | } | ||
19969 | |||
19970 | SyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface); | ||
19971 | |||
19972 | module.exports = SyntheticKeyboardEvent; | ||
19973 | |||
19974 | /***/ }), | ||
19975 | /* 166 */ | ||
19976 | /***/ (function(module, exports) { | ||
19977 | |||
19978 | /** | ||
19979 | * Copyright 2013-present, Facebook, Inc. | ||
19980 | * All rights reserved. | ||
19981 | * | ||
19982 | * This source code is licensed under the BSD-style license found in the | ||
19983 | * LICENSE file in the root directory of this source tree. An additional grant | ||
19984 | * of patent rights can be found in the PATENTS file in the same directory. | ||
19985 | * | ||
19986 | */ | ||
19987 | |||
19988 | 'use strict'; | ||
19989 | |||
19990 | /** | ||
19991 | * `charCode` represents the actual "character code" and is safe to use with | ||
19992 | * `String.fromCharCode`. As such, only keys that correspond to printable | ||
19993 | * characters produce a valid `charCode`, the only exception to this is Enter. | ||
19994 | * The Tab-key is considered non-printable and does not have a `charCode`, | ||
19995 | * presumably because it does not produce a tab-character in browsers. | ||
19996 | * | ||
19997 | * @param {object} nativeEvent Native browser event. | ||
19998 | * @return {number} Normalized `charCode` property. | ||
19999 | */ | ||
20000 | |||
20001 | function getEventCharCode(nativeEvent) { | ||
20002 | var charCode; | ||
20003 | var keyCode = nativeEvent.keyCode; | ||
20004 | |||
20005 | if ('charCode' in nativeEvent) { | ||
20006 | charCode = nativeEvent.charCode; | ||
20007 | |||
20008 | // FF does not set `charCode` for the Enter-key, check against `keyCode`. | ||
20009 | if (charCode === 0 && keyCode === 13) { | ||
20010 | charCode = 13; | ||
20011 | } | ||
20012 | } else { | ||
20013 | // IE8 does not implement `charCode`, but `keyCode` has the correct value. | ||
20014 | charCode = keyCode; | ||
20015 | } | ||
20016 | |||
20017 | // Some non-printable keys are reported in `charCode`/`keyCode`, discard them. | ||
20018 | // Must not discard the (non-)printable Enter-key. | ||
20019 | if (charCode >= 32 || charCode === 13) { | ||
20020 | return charCode; | ||
20021 | } | ||
20022 | |||
20023 | return 0; | ||
20024 | } | ||
20025 | |||
20026 | module.exports = getEventCharCode; | ||
20027 | |||
20028 | /***/ }), | ||
20029 | /* 167 */ | ||
20030 | /***/ (function(module, exports, __webpack_require__) { | ||
20031 | |||
20032 | /** | ||
20033 | * Copyright 2013-present, Facebook, Inc. | ||
20034 | * All rights reserved. | ||
20035 | * | ||
20036 | * This source code is licensed under the BSD-style license found in the | ||
20037 | * LICENSE file in the root directory of this source tree. An additional grant | ||
20038 | * of patent rights can be found in the PATENTS file in the same directory. | ||
20039 | * | ||
20040 | */ | ||
20041 | |||
20042 | 'use strict'; | ||
20043 | |||
20044 | var getEventCharCode = __webpack_require__(166); | ||
20045 | |||
20046 | /** | ||
20047 | * Normalization of deprecated HTML5 `key` values | ||
20048 | * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names | ||
20049 | */ | ||
20050 | var normalizeKey = { | ||
20051 | 'Esc': 'Escape', | ||
20052 | 'Spacebar': ' ', | ||
20053 | 'Left': 'ArrowLeft', | ||
20054 | 'Up': 'ArrowUp', | ||
20055 | 'Right': 'ArrowRight', | ||
20056 | 'Down': 'ArrowDown', | ||
20057 | 'Del': 'Delete', | ||
20058 | 'Win': 'OS', | ||
20059 | 'Menu': 'ContextMenu', | ||
20060 | 'Apps': 'ContextMenu', | ||
20061 | 'Scroll': 'ScrollLock', | ||
20062 | 'MozPrintableKey': 'Unidentified' | ||
20063 | }; | ||
20064 | |||
20065 | /** | ||
20066 | * Translation from legacy `keyCode` to HTML5 `key` | ||
20067 | * Only special keys supported, all others depend on keyboard layout or browser | ||
20068 | * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names | ||
20069 | */ | ||
20070 | var translateToKey = { | ||
20071 | 8: 'Backspace', | ||
20072 | 9: 'Tab', | ||
20073 | 12: 'Clear', | ||
20074 | 13: 'Enter', | ||
20075 | 16: 'Shift', | ||
20076 | 17: 'Control', | ||
20077 | 18: 'Alt', | ||
20078 | 19: 'Pause', | ||
20079 | 20: 'CapsLock', | ||
20080 | 27: 'Escape', | ||
20081 | 32: ' ', | ||
20082 | 33: 'PageUp', | ||
20083 | 34: 'PageDown', | ||
20084 | 35: 'End', | ||
20085 | 36: 'Home', | ||
20086 | 37: 'ArrowLeft', | ||
20087 | 38: 'ArrowUp', | ||
20088 | 39: 'ArrowRight', | ||
20089 | 40: 'ArrowDown', | ||
20090 | 45: 'Insert', | ||
20091 | 46: 'Delete', | ||
20092 | 112: 'F1', 113: 'F2', 114: 'F3', 115: 'F4', 116: 'F5', 117: 'F6', | ||
20093 | 118: 'F7', 119: 'F8', 120: 'F9', 121: 'F10', 122: 'F11', 123: 'F12', | ||
20094 | 144: 'NumLock', | ||
20095 | 145: 'ScrollLock', | ||
20096 | 224: 'Meta' | ||
20097 | }; | ||
20098 | |||
20099 | /** | ||
20100 | * @param {object} nativeEvent Native browser event. | ||
20101 | * @return {string} Normalized `key` property. | ||
20102 | */ | ||
20103 | function getEventKey(nativeEvent) { | ||
20104 | if (nativeEvent.key) { | ||
20105 | // Normalize inconsistent values reported by browsers due to | ||
20106 | // implementations of a working draft specification. | ||
20107 | |||
20108 | // FireFox implements `key` but returns `MozPrintableKey` for all | ||
20109 | // printable characters (normalized to `Unidentified`), ignore it. | ||
20110 | var key = normalizeKey[nativeEvent.key] || nativeEvent.key; | ||
20111 | if (key !== 'Unidentified') { | ||
20112 | return key; | ||
20113 | } | ||
20114 | } | ||
20115 | |||
20116 | // Browser does not implement `key`, polyfill as much of it as we can. | ||
20117 | if (nativeEvent.type === 'keypress') { | ||
20118 | var charCode = getEventCharCode(nativeEvent); | ||
20119 | |||
20120 | // The enter-key is technically both printable and non-printable and can | ||
20121 | // thus be captured by `keypress`, no other non-printable key should. | ||
20122 | return charCode === 13 ? 'Enter' : String.fromCharCode(charCode); | ||
20123 | } | ||
20124 | if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') { | ||
20125 | // While user keyboard layout determines the actual meaning of each | ||
20126 | // `keyCode` value, almost all function keys have a universal value. | ||
20127 | return translateToKey[nativeEvent.keyCode] || 'Unidentified'; | ||
20128 | } | ||
20129 | return ''; | ||
20130 | } | ||
20131 | |||
20132 | module.exports = getEventKey; | ||
20133 | |||
20134 | /***/ }), | ||
20135 | /* 168 */ | ||
20136 | /***/ (function(module, exports, __webpack_require__) { | ||
20137 | |||
20138 | /** | ||
20139 | * Copyright 2013-present, Facebook, Inc. | ||
20140 | * All rights reserved. | ||
20141 | * | ||
20142 | * This source code is licensed under the BSD-style license found in the | ||
20143 | * LICENSE file in the root directory of this source tree. An additional grant | ||
20144 | * of patent rights can be found in the PATENTS file in the same directory. | ||
20145 | * | ||
20146 | */ | ||
20147 | |||
20148 | 'use strict'; | ||
20149 | |||
20150 | var SyntheticMouseEvent = __webpack_require__(80); | ||
20151 | |||
20152 | /** | ||
20153 | * @interface DragEvent | ||
20154 | * @see http://www.w3.org/TR/DOM-Level-3-Events/ | ||
20155 | */ | ||
20156 | var DragEventInterface = { | ||
20157 | dataTransfer: null | ||
20158 | }; | ||
20159 | |||
20160 | /** | ||
20161 | * @param {object} dispatchConfig Configuration used to dispatch this event. | ||
20162 | * @param {string} dispatchMarker Marker identifying the event target. | ||
20163 | * @param {object} nativeEvent Native browser event. | ||
20164 | * @extends {SyntheticUIEvent} | ||
20165 | */ | ||
20166 | function SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { | ||
20167 | return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); | ||
20168 | } | ||
20169 | |||
20170 | SyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface); | ||
20171 | |||
20172 | module.exports = SyntheticDragEvent; | ||
20173 | |||
20174 | /***/ }), | ||
20175 | /* 169 */ | ||
20176 | /***/ (function(module, exports, __webpack_require__) { | ||
20177 | |||
20178 | /** | ||
20179 | * Copyright 2013-present, Facebook, Inc. | ||
20180 | * All rights reserved. | ||
20181 | * | ||
20182 | * This source code is licensed under the BSD-style license found in the | ||
20183 | * LICENSE file in the root directory of this source tree. An additional grant | ||
20184 | * of patent rights can be found in the PATENTS file in the same directory. | ||
20185 | * | ||
20186 | */ | ||
20187 | |||
20188 | 'use strict'; | ||
20189 | |||
20190 | var SyntheticUIEvent = __webpack_require__(81); | ||
20191 | |||
20192 | var getEventModifierState = __webpack_require__(83); | ||
20193 | |||
20194 | /** | ||
20195 | * @interface TouchEvent | ||
20196 | * @see http://www.w3.org/TR/touch-events/ | ||
20197 | */ | ||
20198 | var TouchEventInterface = { | ||
20199 | touches: null, | ||
20200 | targetTouches: null, | ||
20201 | changedTouches: null, | ||
20202 | altKey: null, | ||
20203 | metaKey: null, | ||
20204 | ctrlKey: null, | ||
20205 | shiftKey: null, | ||
20206 | getModifierState: getEventModifierState | ||
20207 | }; | ||
20208 | |||
20209 | /** | ||
20210 | * @param {object} dispatchConfig Configuration used to dispatch this event. | ||
20211 | * @param {string} dispatchMarker Marker identifying the event target. | ||
20212 | * @param {object} nativeEvent Native browser event. | ||
20213 | * @extends {SyntheticUIEvent} | ||
20214 | */ | ||
20215 | function SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { | ||
20216 | return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); | ||
20217 | } | ||
20218 | |||
20219 | SyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface); | ||
20220 | |||
20221 | module.exports = SyntheticTouchEvent; | ||
20222 | |||
20223 | /***/ }), | ||
20224 | /* 170 */ | ||
20225 | /***/ (function(module, exports, __webpack_require__) { | ||
20226 | |||
20227 | /** | ||
20228 | * Copyright 2013-present, Facebook, Inc. | ||
20229 | * All rights reserved. | ||
20230 | * | ||
20231 | * This source code is licensed under the BSD-style license found in the | ||
20232 | * LICENSE file in the root directory of this source tree. An additional grant | ||
20233 | * of patent rights can be found in the PATENTS file in the same directory. | ||
20234 | * | ||
20235 | */ | ||
20236 | |||
20237 | 'use strict'; | ||
20238 | |||
20239 | var SyntheticEvent = __webpack_require__(59); | ||
20240 | |||
20241 | /** | ||
20242 | * @interface Event | ||
20243 | * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events- | ||
20244 | * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent | ||
20245 | */ | ||
20246 | var TransitionEventInterface = { | ||
20247 | propertyName: null, | ||
20248 | elapsedTime: null, | ||
20249 | pseudoElement: null | ||
20250 | }; | ||
20251 | |||
20252 | /** | ||
20253 | * @param {object} dispatchConfig Configuration used to dispatch this event. | ||
20254 | * @param {string} dispatchMarker Marker identifying the event target. | ||
20255 | * @param {object} nativeEvent Native browser event. | ||
20256 | * @extends {SyntheticEvent} | ||
20257 | */ | ||
20258 | function SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { | ||
20259 | return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); | ||
20260 | } | ||
20261 | |||
20262 | SyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface); | ||
20263 | |||
20264 | module.exports = SyntheticTransitionEvent; | ||
20265 | |||
20266 | /***/ }), | ||
20267 | /* 171 */ | ||
20268 | /***/ (function(module, exports, __webpack_require__) { | ||
20269 | |||
20270 | /** | ||
20271 | * Copyright 2013-present, Facebook, Inc. | ||
20272 | * All rights reserved. | ||
20273 | * | ||
20274 | * This source code is licensed under the BSD-style license found in the | ||
20275 | * LICENSE file in the root directory of this source tree. An additional grant | ||
20276 | * of patent rights can be found in the PATENTS file in the same directory. | ||
20277 | * | ||
20278 | */ | ||
20279 | |||
20280 | 'use strict'; | ||
20281 | |||
20282 | var SyntheticMouseEvent = __webpack_require__(80); | ||
20283 | |||
20284 | /** | ||
20285 | * @interface WheelEvent | ||
20286 | * @see http://www.w3.org/TR/DOM-Level-3-Events/ | ||
20287 | */ | ||
20288 | var WheelEventInterface = { | ||
20289 | deltaX: function (event) { | ||
20290 | return 'deltaX' in event ? event.deltaX : | ||
20291 | // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive). | ||
20292 | 'wheelDeltaX' in event ? -event.wheelDeltaX : 0; | ||
20293 | }, | ||
20294 | deltaY: function (event) { | ||
20295 | return 'deltaY' in event ? event.deltaY : | ||
20296 | // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive). | ||
20297 | 'wheelDeltaY' in event ? -event.wheelDeltaY : | ||
20298 | // Fallback to `wheelDelta` for IE<9 and normalize (down is positive). | ||
20299 | 'wheelDelta' in event ? -event.wheelDelta : 0; | ||
20300 | }, | ||
20301 | deltaZ: null, | ||
20302 | |||
20303 | // Browsers without "deltaMode" is reporting in raw wheel delta where one | ||
20304 | // notch on the scroll is always +/- 120, roughly equivalent to pixels. | ||
20305 | // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or | ||
20306 | // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size. | ||
20307 | deltaMode: null | ||
20308 | }; | ||
20309 | |||
20310 | /** | ||
20311 | * @param {object} dispatchConfig Configuration used to dispatch this event. | ||
20312 | * @param {string} dispatchMarker Marker identifying the event target. | ||
20313 | * @param {object} nativeEvent Native browser event. | ||
20314 | * @extends {SyntheticMouseEvent} | ||
20315 | */ | ||
20316 | function SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { | ||
20317 | return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); | ||
20318 | } | ||
20319 | |||
20320 | SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface); | ||
20321 | |||
20322 | module.exports = SyntheticWheelEvent; | ||
20323 | |||
20324 | /***/ }), | ||
20325 | /* 172 */ | ||
20326 | /***/ (function(module, exports, __webpack_require__) { | ||
20327 | |||
20328 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
20329 | * Copyright 2013-present, Facebook, Inc. | ||
20330 | * All rights reserved. | ||
20331 | * | ||
20332 | * This source code is licensed under the BSD-style license found in the | ||
20333 | * LICENSE file in the root directory of this source tree. An additional grant | ||
20334 | * of patent rights can be found in the PATENTS file in the same directory. | ||
20335 | * | ||
20336 | */ | ||
20337 | |||
20338 | 'use strict'; | ||
20339 | |||
20340 | var _prodInvariant = __webpack_require__(41); | ||
20341 | |||
20342 | var DOMLazyTree = __webpack_require__(87); | ||
20343 | var DOMProperty = __webpack_require__(42); | ||
20344 | var React = __webpack_require__(4); | ||
20345 | var ReactBrowserEventEmitter = __webpack_require__(111); | ||
20346 | var ReactCurrentOwner = __webpack_require__(12); | ||
20347 | var ReactDOMComponentTree = __webpack_require__(40); | ||
20348 | var ReactDOMContainerInfo = __webpack_require__(173); | ||
20349 | var ReactDOMFeatureFlags = __webpack_require__(174); | ||
20350 | var ReactFeatureFlags = __webpack_require__(64); | ||
20351 | var ReactInstanceMap = __webpack_require__(122); | ||
20352 | var ReactInstrumentation = __webpack_require__(68); | ||
20353 | var ReactMarkupChecksum = __webpack_require__(175); | ||
20354 | var ReactReconciler = __webpack_require__(65); | ||
20355 | var ReactUpdateQueue = __webpack_require__(141); | ||
20356 | var ReactUpdates = __webpack_require__(62); | ||
20357 | |||
20358 | var emptyObject = __webpack_require__(22); | ||
20359 | var instantiateReactComponent = __webpack_require__(124); | ||
20360 | var invariant = __webpack_require__(10); | ||
20361 | var setInnerHTML = __webpack_require__(89); | ||
20362 | var shouldUpdateReactComponent = __webpack_require__(130); | ||
20363 | var warning = __webpack_require__(13); | ||
20364 | |||
20365 | var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME; | ||
20366 | var ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME; | ||
20367 | |||
20368 | var ELEMENT_NODE_TYPE = 1; | ||
20369 | var DOC_NODE_TYPE = 9; | ||
20370 | var DOCUMENT_FRAGMENT_NODE_TYPE = 11; | ||
20371 | |||
20372 | var instancesByReactRootID = {}; | ||
20373 | |||
20374 | /** | ||
20375 | * Finds the index of the first character | ||
20376 | * that's not common between the two given strings. | ||
20377 | * | ||
20378 | * @return {number} the index of the character where the strings diverge | ||
20379 | */ | ||
20380 | function firstDifferenceIndex(string1, string2) { | ||
20381 | var minLen = Math.min(string1.length, string2.length); | ||
20382 | for (var i = 0; i < minLen; i++) { | ||
20383 | if (string1.charAt(i) !== string2.charAt(i)) { | ||
20384 | return i; | ||
20385 | } | ||
20386 | } | ||
20387 | return string1.length === string2.length ? -1 : minLen; | ||
20388 | } | ||
20389 | |||
20390 | /** | ||
20391 | * @param {DOMElement|DOMDocument} container DOM element that may contain | ||
20392 | * a React component | ||
20393 | * @return {?*} DOM element that may have the reactRoot ID, or null. | ||
20394 | */ | ||
20395 | function getReactRootElementInContainer(container) { | ||
20396 | if (!container) { | ||
20397 | return null; | ||
20398 | } | ||
20399 | |||
20400 | if (container.nodeType === DOC_NODE_TYPE) { | ||
20401 | return container.documentElement; | ||
20402 | } else { | ||
20403 | return container.firstChild; | ||
20404 | } | ||
20405 | } | ||
20406 | |||
20407 | function internalGetID(node) { | ||
20408 | // If node is something like a window, document, or text node, none of | ||
20409 | // which support attributes or a .getAttribute method, gracefully return | ||
20410 | // the empty string, as if the attribute were missing. | ||
20411 | return node.getAttribute && node.getAttribute(ATTR_NAME) || ''; | ||
20412 | } | ||
20413 | |||
20414 | /** | ||
20415 | * Mounts this component and inserts it into the DOM. | ||
20416 | * | ||
20417 | * @param {ReactComponent} componentInstance The instance to mount. | ||
20418 | * @param {DOMElement} container DOM element to mount into. | ||
20419 | * @param {ReactReconcileTransaction} transaction | ||
20420 | * @param {boolean} shouldReuseMarkup If true, do not insert markup | ||
20421 | */ | ||
20422 | function mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) { | ||
20423 | var markerName; | ||
20424 | if (ReactFeatureFlags.logTopLevelRenders) { | ||
20425 | var wrappedElement = wrapperInstance._currentElement.props.child; | ||
20426 | var type = wrappedElement.type; | ||
20427 | markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name); | ||
20428 | console.time(markerName); | ||
20429 | } | ||
20430 | |||
20431 | var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */ | ||
20432 | ); | ||
20433 | |||
20434 | if (markerName) { | ||
20435 | console.timeEnd(markerName); | ||
20436 | } | ||
20437 | |||
20438 | wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance; | ||
20439 | ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction); | ||
20440 | } | ||
20441 | |||
20442 | /** | ||
20443 | * Batched mount. | ||
20444 | * | ||
20445 | * @param {ReactComponent} componentInstance The instance to mount. | ||
20446 | * @param {DOMElement} container DOM element to mount into. | ||
20447 | * @param {boolean} shouldReuseMarkup If true, do not insert markup | ||
20448 | */ | ||
20449 | function batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) { | ||
20450 | var transaction = ReactUpdates.ReactReconcileTransaction.getPooled( | ||
20451 | /* useCreateElement */ | ||
20452 | !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement); | ||
20453 | transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context); | ||
20454 | ReactUpdates.ReactReconcileTransaction.release(transaction); | ||
20455 | } | ||
20456 | |||
20457 | /** | ||
20458 | * Unmounts a component and removes it from the DOM. | ||
20459 | * | ||
20460 | * @param {ReactComponent} instance React component instance. | ||
20461 | * @param {DOMElement} container DOM element to unmount from. | ||
20462 | * @final | ||
20463 | * @internal | ||
20464 | * @see {ReactMount.unmountComponentAtNode} | ||
20465 | */ | ||
20466 | function unmountComponentFromNode(instance, container, safely) { | ||
20467 | if (process.env.NODE_ENV !== 'production') { | ||
20468 | ReactInstrumentation.debugTool.onBeginFlush(); | ||
20469 | } | ||
20470 | ReactReconciler.unmountComponent(instance, safely); | ||
20471 | if (process.env.NODE_ENV !== 'production') { | ||
20472 | ReactInstrumentation.debugTool.onEndFlush(); | ||
20473 | } | ||
20474 | |||
20475 | if (container.nodeType === DOC_NODE_TYPE) { | ||
20476 | container = container.documentElement; | ||
20477 | } | ||
20478 | |||
20479 | // http://jsperf.com/emptying-a-node | ||
20480 | while (container.lastChild) { | ||
20481 | container.removeChild(container.lastChild); | ||
20482 | } | ||
20483 | } | ||
20484 | |||
20485 | /** | ||
20486 | * True if the supplied DOM node has a direct React-rendered child that is | ||
20487 | * not a React root element. Useful for warning in `render`, | ||
20488 | * `unmountComponentAtNode`, etc. | ||
20489 | * | ||
20490 | * @param {?DOMElement} node The candidate DOM node. | ||
20491 | * @return {boolean} True if the DOM element contains a direct child that was | ||
20492 | * rendered by React but is not a root element. | ||
20493 | * @internal | ||
20494 | */ | ||
20495 | function hasNonRootReactChild(container) { | ||
20496 | var rootEl = getReactRootElementInContainer(container); | ||
20497 | if (rootEl) { | ||
20498 | var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl); | ||
20499 | return !!(inst && inst._hostParent); | ||
20500 | } | ||
20501 | } | ||
20502 | |||
20503 | /** | ||
20504 | * True if the supplied DOM node is a React DOM element and | ||
20505 | * it has been rendered by another copy of React. | ||
20506 | * | ||
20507 | * @param {?DOMElement} node The candidate DOM node. | ||
20508 | * @return {boolean} True if the DOM has been rendered by another copy of React | ||
20509 | * @internal | ||
20510 | */ | ||
20511 | function nodeIsRenderedByOtherInstance(container) { | ||
20512 | var rootEl = getReactRootElementInContainer(container); | ||
20513 | return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl)); | ||
20514 | } | ||
20515 | |||
20516 | /** | ||
20517 | * True if the supplied DOM node is a valid node element. | ||
20518 | * | ||
20519 | * @param {?DOMElement} node The candidate DOM node. | ||
20520 | * @return {boolean} True if the DOM is a valid DOM node. | ||
20521 | * @internal | ||
20522 | */ | ||
20523 | function isValidContainer(node) { | ||
20524 | return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE)); | ||
20525 | } | ||
20526 | |||
20527 | /** | ||
20528 | * True if the supplied DOM node is a valid React node element. | ||
20529 | * | ||
20530 | * @param {?DOMElement} node The candidate DOM node. | ||
20531 | * @return {boolean} True if the DOM is a valid React DOM node. | ||
20532 | * @internal | ||
20533 | */ | ||
20534 | function isReactNode(node) { | ||
20535 | return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME)); | ||
20536 | } | ||
20537 | |||
20538 | function getHostRootInstanceInContainer(container) { | ||
20539 | var rootEl = getReactRootElementInContainer(container); | ||
20540 | var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl); | ||
20541 | return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null; | ||
20542 | } | ||
20543 | |||
20544 | function getTopLevelWrapperInContainer(container) { | ||
20545 | var root = getHostRootInstanceInContainer(container); | ||
20546 | return root ? root._hostContainerInfo._topLevelWrapper : null; | ||
20547 | } | ||
20548 | |||
20549 | /** | ||
20550 | * Temporary (?) hack so that we can store all top-level pending updates on | ||
20551 | * composites instead of having to worry about different types of components | ||
20552 | * here. | ||
20553 | */ | ||
20554 | var topLevelRootCounter = 1; | ||
20555 | var TopLevelWrapper = function () { | ||
20556 | this.rootID = topLevelRootCounter++; | ||
20557 | }; | ||
20558 | TopLevelWrapper.prototype.isReactComponent = {}; | ||
20559 | if (process.env.NODE_ENV !== 'production') { | ||
20560 | TopLevelWrapper.displayName = 'TopLevelWrapper'; | ||
20561 | } | ||
20562 | TopLevelWrapper.prototype.render = function () { | ||
20563 | return this.props.child; | ||
20564 | }; | ||
20565 | TopLevelWrapper.isReactTopLevelWrapper = true; | ||
20566 | |||
20567 | /** | ||
20568 | * Mounting is the process of initializing a React component by creating its | ||
20569 | * representative DOM elements and inserting them into a supplied `container`. | ||
20570 | * Any prior content inside `container` is destroyed in the process. | ||
20571 | * | ||
20572 | * ReactMount.render( | ||
20573 | * component, | ||
20574 | * document.getElementById('container') | ||
20575 | * ); | ||
20576 | * | ||
20577 | * <div id="container"> <-- Supplied `container`. | ||
20578 | * <div data-reactid=".3"> <-- Rendered reactRoot of React | ||
20579 | * // ... component. | ||
20580 | * </div> | ||
20581 | * </div> | ||
20582 | * | ||
20583 | * Inside of `container`, the first element rendered is the "reactRoot". | ||
20584 | */ | ||
20585 | var ReactMount = { | ||
20586 | |||
20587 | TopLevelWrapper: TopLevelWrapper, | ||
20588 | |||
20589 | /** | ||
20590 | * Used by devtools. The keys are not important. | ||
20591 | */ | ||
20592 | _instancesByReactRootID: instancesByReactRootID, | ||
20593 | |||
20594 | /** | ||
20595 | * This is a hook provided to support rendering React components while | ||
20596 | * ensuring that the apparent scroll position of its `container` does not | ||
20597 | * change. | ||
20598 | * | ||
20599 | * @param {DOMElement} container The `container` being rendered into. | ||
20600 | * @param {function} renderCallback This must be called once to do the render. | ||
20601 | */ | ||
20602 | scrollMonitor: function (container, renderCallback) { | ||
20603 | renderCallback(); | ||
20604 | }, | ||
20605 | |||
20606 | /** | ||
20607 | * Take a component that's already mounted into the DOM and replace its props | ||
20608 | * @param {ReactComponent} prevComponent component instance already in the DOM | ||
20609 | * @param {ReactElement} nextElement component instance to render | ||
20610 | * @param {DOMElement} container container to render into | ||
20611 | * @param {?function} callback function triggered on completion | ||
20612 | */ | ||
20613 | _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) { | ||
20614 | ReactMount.scrollMonitor(container, function () { | ||
20615 | ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext); | ||
20616 | if (callback) { | ||
20617 | ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback); | ||
20618 | } | ||
20619 | }); | ||
20620 | |||
20621 | return prevComponent; | ||
20622 | }, | ||
20623 | |||
20624 | /** | ||
20625 | * Render a new component into the DOM. Hooked by hooks! | ||
20626 | * | ||
20627 | * @param {ReactElement} nextElement element to render | ||
20628 | * @param {DOMElement} container container to render into | ||
20629 | * @param {boolean} shouldReuseMarkup if we should skip the markup insertion | ||
20630 | * @return {ReactComponent} nextComponent | ||
20631 | */ | ||
20632 | _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) { | ||
20633 | // Various parts of our code (such as ReactCompositeComponent's | ||
20634 | // _renderValidatedComponent) assume that calls to render aren't nested; | ||
20635 | // verify that that's the case. | ||
20636 | process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0; | ||
20637 | |||
20638 | !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0; | ||
20639 | |||
20640 | ReactBrowserEventEmitter.ensureScrollValueMonitoring(); | ||
20641 | var componentInstance = instantiateReactComponent(nextElement, false); | ||
20642 | |||
20643 | // The initial render is synchronous but any updates that happen during | ||
20644 | // rendering, in componentWillMount or componentDidMount, will be batched | ||
20645 | // according to the current batching strategy. | ||
20646 | |||
20647 | ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context); | ||
20648 | |||
20649 | var wrapperID = componentInstance._instance.rootID; | ||
20650 | instancesByReactRootID[wrapperID] = componentInstance; | ||
20651 | |||
20652 | return componentInstance; | ||
20653 | }, | ||
20654 | |||
20655 | /** | ||
20656 | * Renders a React component into the DOM in the supplied `container`. | ||
20657 | * | ||
20658 | * If the React component was previously rendered into `container`, this will | ||
20659 | * perform an update on it and only mutate the DOM as necessary to reflect the | ||
20660 | * latest React component. | ||
20661 | * | ||
20662 | * @param {ReactComponent} parentComponent The conceptual parent of this render tree. | ||
20663 | * @param {ReactElement} nextElement Component element to render. | ||
20664 | * @param {DOMElement} container DOM element to render into. | ||
20665 | * @param {?function} callback function triggered on completion | ||
20666 | * @return {ReactComponent} Component instance rendered in `container`. | ||
20667 | */ | ||
20668 | renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) { | ||
20669 | !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0; | ||
20670 | return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback); | ||
20671 | }, | ||
20672 | |||
20673 | _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) { | ||
20674 | ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render'); | ||
20675 | !React.isValidElement(nextElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? ' Instead of passing a string like \'div\', pass ' + 'React.createElement(\'div\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : | ||
20676 | // Check if it quacks like an element | ||
20677 | nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? ' Instead of passing a string like \'div\', pass ' + 'React.createElement(\'div\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0; | ||
20678 | |||
20679 | process.env.NODE_ENV !== 'production' ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0; | ||
20680 | |||
20681 | var nextWrappedElement = React.createElement(TopLevelWrapper, { child: nextElement }); | ||
20682 | |||
20683 | var nextContext; | ||
20684 | if (parentComponent) { | ||
20685 | var parentInst = ReactInstanceMap.get(parentComponent); | ||
20686 | nextContext = parentInst._processChildContext(parentInst._context); | ||
20687 | } else { | ||
20688 | nextContext = emptyObject; | ||
20689 | } | ||
20690 | |||
20691 | var prevComponent = getTopLevelWrapperInContainer(container); | ||
20692 | |||
20693 | if (prevComponent) { | ||
20694 | var prevWrappedElement = prevComponent._currentElement; | ||
20695 | var prevElement = prevWrappedElement.props.child; | ||
20696 | if (shouldUpdateReactComponent(prevElement, nextElement)) { | ||
20697 | var publicInst = prevComponent._renderedComponent.getPublicInstance(); | ||
20698 | var updatedCallback = callback && function () { | ||
20699 | callback.call(publicInst); | ||
20700 | }; | ||
20701 | ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback); | ||
20702 | return publicInst; | ||
20703 | } else { | ||
20704 | ReactMount.unmountComponentAtNode(container); | ||
20705 | } | ||
20706 | } | ||
20707 | |||
20708 | var reactRootElement = getReactRootElementInContainer(container); | ||
20709 | var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement); | ||
20710 | var containerHasNonRootReactChild = hasNonRootReactChild(container); | ||
20711 | |||
20712 | if (process.env.NODE_ENV !== 'production') { | ||
20713 | process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0; | ||
20714 | |||
20715 | if (!containerHasReactMarkup || reactRootElement.nextSibling) { | ||
20716 | var rootElementSibling = reactRootElement; | ||
20717 | while (rootElementSibling) { | ||
20718 | if (internalGetID(rootElementSibling)) { | ||
20719 | process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0; | ||
20720 | break; | ||
20721 | } | ||
20722 | rootElementSibling = rootElementSibling.nextSibling; | ||
20723 | } | ||
20724 | } | ||
20725 | } | ||
20726 | |||
20727 | var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild; | ||
20728 | var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance(); | ||
20729 | if (callback) { | ||
20730 | callback.call(component); | ||
20731 | } | ||
20732 | return component; | ||
20733 | }, | ||
20734 | |||
20735 | /** | ||
20736 | * Renders a React component into the DOM in the supplied `container`. | ||
20737 | * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render | ||
20738 | * | ||
20739 | * If the React component was previously rendered into `container`, this will | ||
20740 | * perform an update on it and only mutate the DOM as necessary to reflect the | ||
20741 | * latest React component. | ||
20742 | * | ||
20743 | * @param {ReactElement} nextElement Component element to render. | ||
20744 | * @param {DOMElement} container DOM element to render into. | ||
20745 | * @param {?function} callback function triggered on completion | ||
20746 | * @return {ReactComponent} Component instance rendered in `container`. | ||
20747 | */ | ||
20748 | render: function (nextElement, container, callback) { | ||
20749 | return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback); | ||
20750 | }, | ||
20751 | |||
20752 | /** | ||
20753 | * Unmounts and destroys the React component rendered in the `container`. | ||
20754 | * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode | ||
20755 | * | ||
20756 | * @param {DOMElement} container DOM element containing a React component. | ||
20757 | * @return {boolean} True if a component was found in and unmounted from | ||
20758 | * `container` | ||
20759 | */ | ||
20760 | unmountComponentAtNode: function (container) { | ||
20761 | // Various parts of our code (such as ReactCompositeComponent's | ||
20762 | // _renderValidatedComponent) assume that calls to render aren't nested; | ||
20763 | // verify that that's the case. (Strictly speaking, unmounting won't cause a | ||
20764 | // render but we still don't expect to be in a render call here.) | ||
20765 | process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0; | ||
20766 | |||
20767 | !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0; | ||
20768 | |||
20769 | if (process.env.NODE_ENV !== 'production') { | ||
20770 | process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), 'unmountComponentAtNode(): The node you\'re attempting to unmount ' + 'was rendered by another copy of React.') : void 0; | ||
20771 | } | ||
20772 | |||
20773 | var prevComponent = getTopLevelWrapperInContainer(container); | ||
20774 | if (!prevComponent) { | ||
20775 | // Check if the node being unmounted was rendered by React, but isn't a | ||
20776 | // root node. | ||
20777 | var containerHasNonRootReactChild = hasNonRootReactChild(container); | ||
20778 | |||
20779 | // Check if the container itself is a React root node. | ||
20780 | var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME); | ||
20781 | |||
20782 | if (process.env.NODE_ENV !== 'production') { | ||
20783 | process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'unmountComponentAtNode(): The node you\'re attempting to unmount ' + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0; | ||
20784 | } | ||
20785 | |||
20786 | return false; | ||
20787 | } | ||
20788 | delete instancesByReactRootID[prevComponent._instance.rootID]; | ||
20789 | ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false); | ||
20790 | return true; | ||
20791 | }, | ||
20792 | |||
20793 | _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) { | ||
20794 | !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0; | ||
20795 | |||
20796 | if (shouldReuseMarkup) { | ||
20797 | var rootElement = getReactRootElementInContainer(container); | ||
20798 | if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) { | ||
20799 | ReactDOMComponentTree.precacheNode(instance, rootElement); | ||
20800 | return; | ||
20801 | } else { | ||
20802 | var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME); | ||
20803 | rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME); | ||
20804 | |||
20805 | var rootMarkup = rootElement.outerHTML; | ||
20806 | rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum); | ||
20807 | |||
20808 | var normalizedMarkup = markup; | ||
20809 | if (process.env.NODE_ENV !== 'production') { | ||
20810 | // because rootMarkup is retrieved from the DOM, various normalizations | ||
20811 | // will have occurred which will not be present in `markup`. Here, | ||
20812 | // insert markup into a <div> or <iframe> depending on the container | ||
20813 | // type to perform the same normalizations before comparing. | ||
20814 | var normalizer; | ||
20815 | if (container.nodeType === ELEMENT_NODE_TYPE) { | ||
20816 | normalizer = document.createElement('div'); | ||
20817 | normalizer.innerHTML = markup; | ||
20818 | normalizedMarkup = normalizer.innerHTML; | ||
20819 | } else { | ||
20820 | normalizer = document.createElement('iframe'); | ||
20821 | document.body.appendChild(normalizer); | ||
20822 | normalizer.contentDocument.write(markup); | ||
20823 | normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML; | ||
20824 | document.body.removeChild(normalizer); | ||
20825 | } | ||
20826 | } | ||
20827 | |||
20828 | var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup); | ||
20829 | var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20); | ||
20830 | |||
20831 | !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\n%s', difference) : _prodInvariant('42', difference) : void 0; | ||
20832 | |||
20833 | if (process.env.NODE_ENV !== 'production') { | ||
20834 | process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\n%s', difference) : void 0; | ||
20835 | } | ||
20836 | } | ||
20837 | } | ||
20838 | |||
20839 | !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\'re trying to render a component to the document but you didn\'t use server rendering. We can\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0; | ||
20840 | |||
20841 | if (transaction.useCreateElement) { | ||
20842 | while (container.lastChild) { | ||
20843 | container.removeChild(container.lastChild); | ||
20844 | } | ||
20845 | DOMLazyTree.insertTreeBefore(container, markup, null); | ||
20846 | } else { | ||
20847 | setInnerHTML(container, markup); | ||
20848 | ReactDOMComponentTree.precacheNode(instance, container.firstChild); | ||
20849 | } | ||
20850 | |||
20851 | if (process.env.NODE_ENV !== 'production') { | ||
20852 | var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild); | ||
20853 | if (hostNode._debugID !== 0) { | ||
20854 | ReactInstrumentation.debugTool.onHostOperation({ | ||
20855 | instanceID: hostNode._debugID, | ||
20856 | type: 'mount', | ||
20857 | payload: markup.toString() | ||
20858 | }); | ||
20859 | } | ||
20860 | } | ||
20861 | } | ||
20862 | }; | ||
20863 | |||
20864 | module.exports = ReactMount; | ||
20865 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
20866 | |||
20867 | /***/ }), | ||
20868 | /* 173 */ | ||
20869 | /***/ (function(module, exports, __webpack_require__) { | ||
20870 | |||
20871 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
20872 | * Copyright 2013-present, Facebook, Inc. | ||
20873 | * All rights reserved. | ||
20874 | * | ||
20875 | * This source code is licensed under the BSD-style license found in the | ||
20876 | * LICENSE file in the root directory of this source tree. An additional grant | ||
20877 | * of patent rights can be found in the PATENTS file in the same directory. | ||
20878 | * | ||
20879 | */ | ||
20880 | |||
20881 | 'use strict'; | ||
20882 | |||
20883 | var validateDOMNesting = __webpack_require__(142); | ||
20884 | |||
20885 | var DOC_NODE_TYPE = 9; | ||
20886 | |||
20887 | function ReactDOMContainerInfo(topLevelWrapper, node) { | ||
20888 | var info = { | ||
20889 | _topLevelWrapper: topLevelWrapper, | ||
20890 | _idCounter: 1, | ||
20891 | _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null, | ||
20892 | _node: node, | ||
20893 | _tag: node ? node.nodeName.toLowerCase() : null, | ||
20894 | _namespaceURI: node ? node.namespaceURI : null | ||
20895 | }; | ||
20896 | if (process.env.NODE_ENV !== 'production') { | ||
20897 | info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null; | ||
20898 | } | ||
20899 | return info; | ||
20900 | } | ||
20901 | |||
20902 | module.exports = ReactDOMContainerInfo; | ||
20903 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
20904 | |||
20905 | /***/ }), | ||
20906 | /* 174 */ | ||
20907 | /***/ (function(module, exports) { | ||
20908 | |||
20909 | /** | ||
20910 | * Copyright 2013-present, Facebook, Inc. | ||
20911 | * All rights reserved. | ||
20912 | * | ||
20913 | * This source code is licensed under the BSD-style license found in the | ||
20914 | * LICENSE file in the root directory of this source tree. An additional grant | ||
20915 | * of patent rights can be found in the PATENTS file in the same directory. | ||
20916 | * | ||
20917 | */ | ||
20918 | |||
20919 | 'use strict'; | ||
20920 | |||
20921 | var ReactDOMFeatureFlags = { | ||
20922 | useCreateElement: true, | ||
20923 | useFiber: false | ||
20924 | }; | ||
20925 | |||
20926 | module.exports = ReactDOMFeatureFlags; | ||
20927 | |||
20928 | /***/ }), | ||
20929 | /* 175 */ | ||
20930 | /***/ (function(module, exports, __webpack_require__) { | ||
20931 | |||
20932 | /** | ||
20933 | * Copyright 2013-present, Facebook, Inc. | ||
20934 | * All rights reserved. | ||
20935 | * | ||
20936 | * This source code is licensed under the BSD-style license found in the | ||
20937 | * LICENSE file in the root directory of this source tree. An additional grant | ||
20938 | * of patent rights can be found in the PATENTS file in the same directory. | ||
20939 | * | ||
20940 | */ | ||
20941 | |||
20942 | 'use strict'; | ||
20943 | |||
20944 | var adler32 = __webpack_require__(176); | ||
20945 | |||
20946 | var TAG_END = /\/?>/; | ||
20947 | var COMMENT_START = /^<\!\-\-/; | ||
20948 | |||
20949 | var ReactMarkupChecksum = { | ||
20950 | CHECKSUM_ATTR_NAME: 'data-react-checksum', | ||
20951 | |||
20952 | /** | ||
20953 | * @param {string} markup Markup string | ||
20954 | * @return {string} Markup string with checksum attribute attached | ||
20955 | */ | ||
20956 | addChecksumToMarkup: function (markup) { | ||
20957 | var checksum = adler32(markup); | ||
20958 | |||
20959 | // Add checksum (handle both parent tags, comments and self-closing tags) | ||
20960 | if (COMMENT_START.test(markup)) { | ||
20961 | return markup; | ||
20962 | } else { | ||
20963 | return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '="' + checksum + '"$&'); | ||
20964 | } | ||
20965 | }, | ||
20966 | |||
20967 | /** | ||
20968 | * @param {string} markup to use | ||
20969 | * @param {DOMElement} element root React element | ||
20970 | * @returns {boolean} whether or not the markup is the same | ||
20971 | */ | ||
20972 | canReuseMarkup: function (markup, element) { | ||
20973 | var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME); | ||
20974 | existingChecksum = existingChecksum && parseInt(existingChecksum, 10); | ||
20975 | var markupChecksum = adler32(markup); | ||
20976 | return markupChecksum === existingChecksum; | ||
20977 | } | ||
20978 | }; | ||
20979 | |||
20980 | module.exports = ReactMarkupChecksum; | ||
20981 | |||
20982 | /***/ }), | ||
20983 | /* 176 */ | ||
20984 | /***/ (function(module, exports) { | ||
20985 | |||
20986 | /** | ||
20987 | * Copyright 2013-present, Facebook, Inc. | ||
20988 | * All rights reserved. | ||
20989 | * | ||
20990 | * This source code is licensed under the BSD-style license found in the | ||
20991 | * LICENSE file in the root directory of this source tree. An additional grant | ||
20992 | * of patent rights can be found in the PATENTS file in the same directory. | ||
20993 | * | ||
20994 | * | ||
20995 | */ | ||
20996 | |||
20997 | 'use strict'; | ||
20998 | |||
20999 | var MOD = 65521; | ||
21000 | |||
21001 | // adler32 is not cryptographically strong, and is only used to sanity check that | ||
21002 | // markup generated on the server matches the markup generated on the client. | ||
21003 | // This implementation (a modified version of the SheetJS version) has been optimized | ||
21004 | // for our use case, at the expense of conforming to the adler32 specification | ||
21005 | // for non-ascii inputs. | ||
21006 | function adler32(data) { | ||
21007 | var a = 1; | ||
21008 | var b = 0; | ||
21009 | var i = 0; | ||
21010 | var l = data.length; | ||
21011 | var m = l & ~0x3; | ||
21012 | while (i < m) { | ||
21013 | var n = Math.min(i + 4096, m); | ||
21014 | for (; i < n; i += 4) { | ||
21015 | b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3)); | ||
21016 | } | ||
21017 | a %= MOD; | ||
21018 | b %= MOD; | ||
21019 | } | ||
21020 | for (; i < l; i++) { | ||
21021 | b += a += data.charCodeAt(i); | ||
21022 | } | ||
21023 | a %= MOD; | ||
21024 | b %= MOD; | ||
21025 | return a | b << 16; | ||
21026 | } | ||
21027 | |||
21028 | module.exports = adler32; | ||
21029 | |||
21030 | /***/ }), | ||
21031 | /* 177 */ | ||
21032 | 36, | ||
21033 | /* 178 */ | ||
21034 | /***/ (function(module, exports, __webpack_require__) { | ||
21035 | |||
21036 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
21037 | * Copyright 2013-present, Facebook, Inc. | ||
21038 | * All rights reserved. | ||
21039 | * | ||
21040 | * This source code is licensed under the BSD-style license found in the | ||
21041 | * LICENSE file in the root directory of this source tree. An additional grant | ||
21042 | * of patent rights can be found in the PATENTS file in the same directory. | ||
21043 | * | ||
21044 | */ | ||
21045 | |||
21046 | 'use strict'; | ||
21047 | |||
21048 | var _prodInvariant = __webpack_require__(41); | ||
21049 | |||
21050 | var ReactCurrentOwner = __webpack_require__(12); | ||
21051 | var ReactDOMComponentTree = __webpack_require__(40); | ||
21052 | var ReactInstanceMap = __webpack_require__(122); | ||
21053 | |||
21054 | var getHostComponentFromComposite = __webpack_require__(179); | ||
21055 | var invariant = __webpack_require__(10); | ||
21056 | var warning = __webpack_require__(13); | ||
21057 | |||
21058 | /** | ||
21059 | * Returns the DOM node rendered by this element. | ||
21060 | * | ||
21061 | * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode | ||
21062 | * | ||
21063 | * @param {ReactComponent|DOMElement} componentOrElement | ||
21064 | * @return {?DOMElement} The root node of this element. | ||
21065 | */ | ||
21066 | function findDOMNode(componentOrElement) { | ||
21067 | if (process.env.NODE_ENV !== 'production') { | ||
21068 | var owner = ReactCurrentOwner.current; | ||
21069 | if (owner !== null) { | ||
21070 | process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0; | ||
21071 | owner._warnedAboutRefsInRender = true; | ||
21072 | } | ||
21073 | } | ||
21074 | if (componentOrElement == null) { | ||
21075 | return null; | ||
21076 | } | ||
21077 | if (componentOrElement.nodeType === 1) { | ||
21078 | return componentOrElement; | ||
21079 | } | ||
21080 | |||
21081 | var inst = ReactInstanceMap.get(componentOrElement); | ||
21082 | if (inst) { | ||
21083 | inst = getHostComponentFromComposite(inst); | ||
21084 | return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null; | ||
21085 | } | ||
21086 | |||
21087 | if (typeof componentOrElement.render === 'function') { | ||
21088 | true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0; | ||
21089 | } else { | ||
21090 | true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0; | ||
21091 | } | ||
21092 | } | ||
21093 | |||
21094 | module.exports = findDOMNode; | ||
21095 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
21096 | |||
21097 | /***/ }), | ||
21098 | /* 179 */ | ||
21099 | /***/ (function(module, exports, __webpack_require__) { | ||
21100 | |||
21101 | /** | ||
21102 | * Copyright 2013-present, Facebook, Inc. | ||
21103 | * All rights reserved. | ||
21104 | * | ||
21105 | * This source code is licensed under the BSD-style license found in the | ||
21106 | * LICENSE file in the root directory of this source tree. An additional grant | ||
21107 | * of patent rights can be found in the PATENTS file in the same directory. | ||
21108 | * | ||
21109 | */ | ||
21110 | |||
21111 | 'use strict'; | ||
21112 | |||
21113 | var ReactNodeTypes = __webpack_require__(126); | ||
21114 | |||
21115 | function getHostComponentFromComposite(inst) { | ||
21116 | var type; | ||
21117 | |||
21118 | while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) { | ||
21119 | inst = inst._renderedComponent; | ||
21120 | } | ||
21121 | |||
21122 | if (type === ReactNodeTypes.HOST) { | ||
21123 | return inst._renderedComponent; | ||
21124 | } else if (type === ReactNodeTypes.EMPTY) { | ||
21125 | return null; | ||
21126 | } | ||
21127 | } | ||
21128 | |||
21129 | module.exports = getHostComponentFromComposite; | ||
21130 | |||
21131 | /***/ }), | ||
21132 | /* 180 */ | ||
21133 | /***/ (function(module, exports, __webpack_require__) { | ||
21134 | |||
21135 | /** | ||
21136 | * Copyright 2013-present, Facebook, Inc. | ||
21137 | * All rights reserved. | ||
21138 | * | ||
21139 | * This source code is licensed under the BSD-style license found in the | ||
21140 | * LICENSE file in the root directory of this source tree. An additional grant | ||
21141 | * of patent rights can be found in the PATENTS file in the same directory. | ||
21142 | * | ||
21143 | */ | ||
21144 | |||
21145 | 'use strict'; | ||
21146 | |||
21147 | var ReactMount = __webpack_require__(172); | ||
21148 | |||
21149 | module.exports = ReactMount.renderSubtreeIntoContainer; | ||
21150 | |||
21151 | /***/ }), | ||
21152 | /* 181 */ | ||
21153 | /***/ (function(module, exports, __webpack_require__) { | ||
21154 | |||
21155 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
21156 | * Copyright 2013-present, Facebook, Inc. | ||
21157 | * All rights reserved. | ||
21158 | * | ||
21159 | * This source code is licensed under the BSD-style license found in the | ||
21160 | * LICENSE file in the root directory of this source tree. An additional grant | ||
21161 | * of patent rights can be found in the PATENTS file in the same directory. | ||
21162 | * | ||
21163 | */ | ||
21164 | |||
21165 | 'use strict'; | ||
21166 | |||
21167 | var DOMProperty = __webpack_require__(42); | ||
21168 | var EventPluginRegistry = __webpack_require__(49); | ||
21169 | var ReactComponentTreeHook = __webpack_require__(28); | ||
21170 | |||
21171 | var warning = __webpack_require__(13); | ||
21172 | |||
21173 | if (process.env.NODE_ENV !== 'production') { | ||
21174 | var reactProps = { | ||
21175 | children: true, | ||
21176 | dangerouslySetInnerHTML: true, | ||
21177 | key: true, | ||
21178 | ref: true, | ||
21179 | |||
21180 | autoFocus: true, | ||
21181 | defaultValue: true, | ||
21182 | valueLink: true, | ||
21183 | defaultChecked: true, | ||
21184 | checkedLink: true, | ||
21185 | innerHTML: true, | ||
21186 | suppressContentEditableWarning: true, | ||
21187 | onFocusIn: true, | ||
21188 | onFocusOut: true | ||
21189 | }; | ||
21190 | var warnedProperties = {}; | ||
21191 | |||
21192 | var validateProperty = function (tagName, name, debugID) { | ||
21193 | if (DOMProperty.properties.hasOwnProperty(name) || DOMProperty.isCustomAttribute(name)) { | ||
21194 | return true; | ||
21195 | } | ||
21196 | if (reactProps.hasOwnProperty(name) && reactProps[name] || warnedProperties.hasOwnProperty(name) && warnedProperties[name]) { | ||
21197 | return true; | ||
21198 | } | ||
21199 | if (EventPluginRegistry.registrationNameModules.hasOwnProperty(name)) { | ||
21200 | return true; | ||
21201 | } | ||
21202 | warnedProperties[name] = true; | ||
21203 | var lowerCasedName = name.toLowerCase(); | ||
21204 | |||
21205 | // data-* attributes should be lowercase; suggest the lowercase version | ||
21206 | var standardName = DOMProperty.isCustomAttribute(lowerCasedName) ? lowerCasedName : DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null; | ||
21207 | |||
21208 | var registrationName = EventPluginRegistry.possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? EventPluginRegistry.possibleRegistrationNames[lowerCasedName] : null; | ||
21209 | |||
21210 | if (standardName != null) { | ||
21211 | process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown DOM property %s. Did you mean %s?%s', name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; | ||
21212 | return true; | ||
21213 | } else if (registrationName != null) { | ||
21214 | process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown event handler property %s. Did you mean `%s`?%s', name, registrationName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; | ||
21215 | return true; | ||
21216 | } else { | ||
21217 | // We were unable to guess which prop the user intended. | ||
21218 | // It is likely that the user was just blindly spreading/forwarding props | ||
21219 | // Components should be careful to only render valid props/attributes. | ||
21220 | // Warning will be invoked in warnUnknownProperties to allow grouping. | ||
21221 | return false; | ||
21222 | } | ||
21223 | }; | ||
21224 | } | ||
21225 | |||
21226 | var warnUnknownProperties = function (debugID, element) { | ||
21227 | var unknownProps = []; | ||
21228 | for (var key in element.props) { | ||
21229 | var isValid = validateProperty(element.type, key, debugID); | ||
21230 | if (!isValid) { | ||
21231 | unknownProps.push(key); | ||
21232 | } | ||
21233 | } | ||
21234 | |||
21235 | var unknownPropString = unknownProps.map(function (prop) { | ||
21236 | return '`' + prop + '`'; | ||
21237 | }).join(', '); | ||
21238 | |||
21239 | if (unknownProps.length === 1) { | ||
21240 | process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown prop %s on <%s> tag. Remove this prop from the element. ' + 'For details, see https://fb.me/react-unknown-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; | ||
21241 | } else if (unknownProps.length > 1) { | ||
21242 | process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown props %s on <%s> tag. Remove these props from the element. ' + 'For details, see https://fb.me/react-unknown-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; | ||
21243 | } | ||
21244 | }; | ||
21245 | |||
21246 | function handleElement(debugID, element) { | ||
21247 | if (element == null || typeof element.type !== 'string') { | ||
21248 | return; | ||
21249 | } | ||
21250 | if (element.type.indexOf('-') >= 0 || element.props.is) { | ||
21251 | return; | ||
21252 | } | ||
21253 | warnUnknownProperties(debugID, element); | ||
21254 | } | ||
21255 | |||
21256 | var ReactDOMUnknownPropertyHook = { | ||
21257 | onBeforeMountComponent: function (debugID, element) { | ||
21258 | handleElement(debugID, element); | ||
21259 | }, | ||
21260 | onBeforeUpdateComponent: function (debugID, element) { | ||
21261 | handleElement(debugID, element); | ||
21262 | } | ||
21263 | }; | ||
21264 | |||
21265 | module.exports = ReactDOMUnknownPropertyHook; | ||
21266 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
21267 | |||
21268 | /***/ }), | ||
21269 | /* 182 */ | ||
21270 | /***/ (function(module, exports, __webpack_require__) { | ||
21271 | |||
21272 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
21273 | * Copyright 2013-present, Facebook, Inc. | ||
21274 | * All rights reserved. | ||
21275 | * | ||
21276 | * This source code is licensed under the BSD-style license found in the | ||
21277 | * LICENSE file in the root directory of this source tree. An additional grant | ||
21278 | * of patent rights can be found in the PATENTS file in the same directory. | ||
21279 | * | ||
21280 | */ | ||
21281 | |||
21282 | 'use strict'; | ||
21283 | |||
21284 | var ReactComponentTreeHook = __webpack_require__(28); | ||
21285 | |||
21286 | var warning = __webpack_require__(13); | ||
21287 | |||
21288 | var didWarnValueNull = false; | ||
21289 | |||
21290 | function handleElement(debugID, element) { | ||
21291 | if (element == null) { | ||
21292 | return; | ||
21293 | } | ||
21294 | if (element.type !== 'input' && element.type !== 'textarea' && element.type !== 'select') { | ||
21295 | return; | ||
21296 | } | ||
21297 | if (element.props != null && element.props.value === null && !didWarnValueNull) { | ||
21298 | process.env.NODE_ENV !== 'production' ? warning(false, '`value` prop on `%s` should not be null. ' + 'Consider using the empty string to clear the component or `undefined` ' + 'for uncontrolled components.%s', element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; | ||
21299 | |||
21300 | didWarnValueNull = true; | ||
21301 | } | ||
21302 | } | ||
21303 | |||
21304 | var ReactDOMNullInputValuePropHook = { | ||
21305 | onBeforeMountComponent: function (debugID, element) { | ||
21306 | handleElement(debugID, element); | ||
21307 | }, | ||
21308 | onBeforeUpdateComponent: function (debugID, element) { | ||
21309 | handleElement(debugID, element); | ||
21310 | } | ||
21311 | }; | ||
21312 | |||
21313 | module.exports = ReactDOMNullInputValuePropHook; | ||
21314 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
21315 | |||
21316 | /***/ }), | ||
21317 | /* 183 */ | ||
21318 | /***/ (function(module, exports, __webpack_require__) { | ||
21319 | |||
21320 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
21321 | * Copyright 2013-present, Facebook, Inc. | ||
21322 | * All rights reserved. | ||
21323 | * | ||
21324 | * This source code is licensed under the BSD-style license found in the | ||
21325 | * LICENSE file in the root directory of this source tree. An additional grant | ||
21326 | * of patent rights can be found in the PATENTS file in the same directory. | ||
21327 | * | ||
21328 | */ | ||
21329 | |||
21330 | 'use strict'; | ||
21331 | |||
21332 | var DOMProperty = __webpack_require__(42); | ||
21333 | var ReactComponentTreeHook = __webpack_require__(28); | ||
21334 | |||
21335 | var warning = __webpack_require__(13); | ||
21336 | |||
21337 | var warnedProperties = {}; | ||
21338 | var rARIA = new RegExp('^(aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$'); | ||
21339 | |||
21340 | function validateProperty(tagName, name, debugID) { | ||
21341 | if (warnedProperties.hasOwnProperty(name) && warnedProperties[name]) { | ||
21342 | return true; | ||
21343 | } | ||
21344 | |||
21345 | if (rARIA.test(name)) { | ||
21346 | var lowerCasedName = name.toLowerCase(); | ||
21347 | var standardName = DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null; | ||
21348 | |||
21349 | // If this is an aria-* attribute, but is not listed in the known DOM | ||
21350 | // DOM properties, then it is an invalid aria-* attribute. | ||
21351 | if (standardName == null) { | ||
21352 | warnedProperties[name] = true; | ||
21353 | return false; | ||
21354 | } | ||
21355 | // aria-* attributes should be lowercase; suggest the lowercase version. | ||
21356 | if (name !== standardName) { | ||
21357 | process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown ARIA attribute %s. Did you mean %s?%s', name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; | ||
21358 | warnedProperties[name] = true; | ||
21359 | return true; | ||
21360 | } | ||
21361 | } | ||
21362 | |||
21363 | return true; | ||
21364 | } | ||
21365 | |||
21366 | function warnInvalidARIAProps(debugID, element) { | ||
21367 | var invalidProps = []; | ||
21368 | |||
21369 | for (var key in element.props) { | ||
21370 | var isValid = validateProperty(element.type, key, debugID); | ||
21371 | if (!isValid) { | ||
21372 | invalidProps.push(key); | ||
21373 | } | ||
21374 | } | ||
21375 | |||
21376 | var unknownPropString = invalidProps.map(function (prop) { | ||
21377 | return '`' + prop + '`'; | ||
21378 | }).join(', '); | ||
21379 | |||
21380 | if (invalidProps.length === 1) { | ||
21381 | process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid aria prop %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; | ||
21382 | } else if (invalidProps.length > 1) { | ||
21383 | process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid aria props %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0; | ||
21384 | } | ||
21385 | } | ||
21386 | |||
21387 | function handleElement(debugID, element) { | ||
21388 | if (element == null || typeof element.type !== 'string') { | ||
21389 | return; | ||
21390 | } | ||
21391 | if (element.type.indexOf('-') >= 0 || element.props.is) { | ||
21392 | return; | ||
21393 | } | ||
21394 | |||
21395 | warnInvalidARIAProps(debugID, element); | ||
21396 | } | ||
21397 | |||
21398 | var ReactDOMInvalidARIAHook = { | ||
21399 | onBeforeMountComponent: function (debugID, element) { | ||
21400 | if (process.env.NODE_ENV !== 'production') { | ||
21401 | handleElement(debugID, element); | ||
21402 | } | ||
21403 | }, | ||
21404 | onBeforeUpdateComponent: function (debugID, element) { | ||
21405 | if (process.env.NODE_ENV !== 'production') { | ||
21406 | handleElement(debugID, element); | ||
21407 | } | ||
21408 | } | ||
21409 | }; | ||
21410 | |||
21411 | module.exports = ReactDOMInvalidARIAHook; | ||
21412 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
21413 | |||
21414 | /***/ }), | ||
21415 | /* 184 */ | ||
21416 | /***/ (function(module, exports) { | ||
21417 | |||
21418 | //! moment.js | ||
21419 | //! version : 2.18.1 | ||
21420 | //! authors : Tim Wood, Iskren Chernev, Moment.js contributors | ||
21421 | //! license : MIT | ||
21422 | //! momentjs.com | ||
21423 | |||
21424 | ;(function (global, factory) { | ||
21425 | typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : | ||
21426 | typeof define === 'function' && define.amd ? define(factory) : | ||
21427 | global.moment = factory() | ||
21428 | }(this, (function () { 'use strict'; | ||
21429 | |||
21430 | var hookCallback; | ||
21431 | |||
21432 | function hooks () { | ||
21433 | return hookCallback.apply(null, arguments); | ||
21434 | } | ||
21435 | |||
21436 | // This is done to register the method called with moment() | ||
21437 | // without creating circular dependencies. | ||
21438 | function setHookCallback (callback) { | ||
21439 | hookCallback = callback; | ||
21440 | } | ||
21441 | |||
21442 | function isArray(input) { | ||
21443 | return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; | ||
21444 | } | ||
21445 | |||
21446 | function isObject(input) { | ||
21447 | // IE8 will treat undefined and null as object if it wasn't for | ||
21448 | // input != null | ||
21449 | return input != null && Object.prototype.toString.call(input) === '[object Object]'; | ||
21450 | } | ||
21451 | |||
21452 | function isObjectEmpty(obj) { | ||
21453 | var k; | ||
21454 | for (k in obj) { | ||
21455 | // even if its not own property I'd still call it non-empty | ||
21456 | return false; | ||
21457 | } | ||
21458 | return true; | ||
21459 | } | ||
21460 | |||
21461 | function isUndefined(input) { | ||
21462 | return input === void 0; | ||
21463 | } | ||
21464 | |||
21465 | function isNumber(input) { | ||
21466 | return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; | ||
21467 | } | ||
21468 | |||
21469 | function isDate(input) { | ||
21470 | return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; | ||
21471 | } | ||
21472 | |||
21473 | function map(arr, fn) { | ||
21474 | var res = [], i; | ||
21475 | for (i = 0; i < arr.length; ++i) { | ||
21476 | res.push(fn(arr[i], i)); | ||
21477 | } | ||
21478 | return res; | ||
21479 | } | ||
21480 | |||
21481 | function hasOwnProp(a, b) { | ||
21482 | return Object.prototype.hasOwnProperty.call(a, b); | ||
21483 | } | ||
21484 | |||
21485 | function extend(a, b) { | ||
21486 | for (var i in b) { | ||
21487 | if (hasOwnProp(b, i)) { | ||
21488 | a[i] = b[i]; | ||
21489 | } | ||
21490 | } | ||
21491 | |||
21492 | if (hasOwnProp(b, 'toString')) { | ||
21493 | a.toString = b.toString; | ||
21494 | } | ||
21495 | |||
21496 | if (hasOwnProp(b, 'valueOf')) { | ||
21497 | a.valueOf = b.valueOf; | ||
21498 | } | ||
21499 | |||
21500 | return a; | ||
21501 | } | ||
21502 | |||
21503 | function createUTC (input, format, locale, strict) { | ||
21504 | return createLocalOrUTC(input, format, locale, strict, true).utc(); | ||
21505 | } | ||
21506 | |||
21507 | function defaultParsingFlags() { | ||
21508 | // We need to deep clone this object. | ||
21509 | return { | ||
21510 | empty : false, | ||
21511 | unusedTokens : [], | ||
21512 | unusedInput : [], | ||
21513 | overflow : -2, | ||
21514 | charsLeftOver : 0, | ||
21515 | nullInput : false, | ||
21516 | invalidMonth : null, | ||
21517 | invalidFormat : false, | ||
21518 | userInvalidated : false, | ||
21519 | iso : false, | ||
21520 | parsedDateParts : [], | ||
21521 | meridiem : null, | ||
21522 | rfc2822 : false, | ||
21523 | weekdayMismatch : false | ||
21524 | }; | ||
21525 | } | ||
21526 | |||
21527 | function getParsingFlags(m) { | ||
21528 | if (m._pf == null) { | ||
21529 | m._pf = defaultParsingFlags(); | ||
21530 | } | ||
21531 | return m._pf; | ||
21532 | } | ||
21533 | |||
21534 | var some; | ||
21535 | if (Array.prototype.some) { | ||
21536 | some = Array.prototype.some; | ||
21537 | } else { | ||
21538 | some = function (fun) { | ||
21539 | var t = Object(this); | ||
21540 | var len = t.length >>> 0; | ||
21541 | |||
21542 | for (var i = 0; i < len; i++) { | ||
21543 | if (i in t && fun.call(this, t[i], i, t)) { | ||
21544 | return true; | ||
21545 | } | ||
21546 | } | ||
21547 | |||
21548 | return false; | ||
21549 | }; | ||
21550 | } | ||
21551 | |||
21552 | var some$1 = some; | ||
21553 | |||
21554 | function isValid(m) { | ||
21555 | if (m._isValid == null) { | ||
21556 | var flags = getParsingFlags(m); | ||
21557 | var parsedParts = some$1.call(flags.parsedDateParts, function (i) { | ||
21558 | return i != null; | ||
21559 | }); | ||
21560 | var isNowValid = !isNaN(m._d.getTime()) && | ||
21561 | flags.overflow < 0 && | ||
21562 | !flags.empty && | ||
21563 | !flags.invalidMonth && | ||
21564 | !flags.invalidWeekday && | ||
21565 | !flags.nullInput && | ||
21566 | !flags.invalidFormat && | ||
21567 | !flags.userInvalidated && | ||
21568 | (!flags.meridiem || (flags.meridiem && parsedParts)); | ||
21569 | |||
21570 | if (m._strict) { | ||
21571 | isNowValid = isNowValid && | ||
21572 | flags.charsLeftOver === 0 && | ||
21573 | flags.unusedTokens.length === 0 && | ||
21574 | flags.bigHour === undefined; | ||
21575 | } | ||
21576 | |||
21577 | if (Object.isFrozen == null || !Object.isFrozen(m)) { | ||
21578 | m._isValid = isNowValid; | ||
21579 | } | ||
21580 | else { | ||
21581 | return isNowValid; | ||
21582 | } | ||
21583 | } | ||
21584 | return m._isValid; | ||
21585 | } | ||
21586 | |||
21587 | function createInvalid (flags) { | ||
21588 | var m = createUTC(NaN); | ||
21589 | if (flags != null) { | ||
21590 | extend(getParsingFlags(m), flags); | ||
21591 | } | ||
21592 | else { | ||
21593 | getParsingFlags(m).userInvalidated = true; | ||
21594 | } | ||
21595 | |||
21596 | return m; | ||
21597 | } | ||
21598 | |||
21599 | // Plugins that add properties should also add the key here (null value), | ||
21600 | // so we can properly clone ourselves. | ||
21601 | var momentProperties = hooks.momentProperties = []; | ||
21602 | |||
21603 | function copyConfig(to, from) { | ||
21604 | var i, prop, val; | ||
21605 | |||
21606 | if (!isUndefined(from._isAMomentObject)) { | ||
21607 | to._isAMomentObject = from._isAMomentObject; | ||
21608 | } | ||
21609 | if (!isUndefined(from._i)) { | ||
21610 | to._i = from._i; | ||
21611 | } | ||
21612 | if (!isUndefined(from._f)) { | ||
21613 | to._f = from._f; | ||
21614 | } | ||
21615 | if (!isUndefined(from._l)) { | ||
21616 | to._l = from._l; | ||
21617 | } | ||
21618 | if (!isUndefined(from._strict)) { | ||
21619 | to._strict = from._strict; | ||
21620 | } | ||
21621 | if (!isUndefined(from._tzm)) { | ||
21622 | to._tzm = from._tzm; | ||
21623 | } | ||
21624 | if (!isUndefined(from._isUTC)) { | ||
21625 | to._isUTC = from._isUTC; | ||
21626 | } | ||
21627 | if (!isUndefined(from._offset)) { | ||
21628 | to._offset = from._offset; | ||
21629 | } | ||
21630 | if (!isUndefined(from._pf)) { | ||
21631 | to._pf = getParsingFlags(from); | ||
21632 | } | ||
21633 | if (!isUndefined(from._locale)) { | ||
21634 | to._locale = from._locale; | ||
21635 | } | ||
21636 | |||
21637 | if (momentProperties.length > 0) { | ||
21638 | for (i = 0; i < momentProperties.length; i++) { | ||
21639 | prop = momentProperties[i]; | ||
21640 | val = from[prop]; | ||
21641 | if (!isUndefined(val)) { | ||
21642 | to[prop] = val; | ||
21643 | } | ||
21644 | } | ||
21645 | } | ||
21646 | |||
21647 | return to; | ||
21648 | } | ||
21649 | |||
21650 | var updateInProgress = false; | ||
21651 | |||
21652 | // Moment prototype object | ||
21653 | function Moment(config) { | ||
21654 | copyConfig(this, config); | ||
21655 | this._d = new Date(config._d != null ? config._d.getTime() : NaN); | ||
21656 | if (!this.isValid()) { | ||
21657 | this._d = new Date(NaN); | ||
21658 | } | ||
21659 | // Prevent infinite loop in case updateOffset creates new moment | ||
21660 | // objects. | ||
21661 | if (updateInProgress === false) { | ||
21662 | updateInProgress = true; | ||
21663 | hooks.updateOffset(this); | ||
21664 | updateInProgress = false; | ||
21665 | } | ||
21666 | } | ||
21667 | |||
21668 | function isMoment (obj) { | ||
21669 | return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); | ||
21670 | } | ||
21671 | |||
21672 | function absFloor (number) { | ||
21673 | if (number < 0) { | ||
21674 | // -0 -> 0 | ||
21675 | return Math.ceil(number) || 0; | ||
21676 | } else { | ||
21677 | return Math.floor(number); | ||
21678 | } | ||
21679 | } | ||
21680 | |||
21681 | function toInt(argumentForCoercion) { | ||
21682 | var coercedNumber = +argumentForCoercion, | ||
21683 | value = 0; | ||
21684 | |||
21685 | if (coercedNumber !== 0 && isFinite(coercedNumber)) { | ||
21686 | value = absFloor(coercedNumber); | ||
21687 | } | ||
21688 | |||
21689 | return value; | ||
21690 | } | ||
21691 | |||
21692 | // compare two arrays, return the number of differences | ||
21693 | function compareArrays(array1, array2, dontConvert) { | ||
21694 | var len = Math.min(array1.length, array2.length), | ||
21695 | lengthDiff = Math.abs(array1.length - array2.length), | ||
21696 | diffs = 0, | ||
21697 | i; | ||
21698 | for (i = 0; i < len; i++) { | ||
21699 | if ((dontConvert && array1[i] !== array2[i]) || | ||
21700 | (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { | ||
21701 | diffs++; | ||
21702 | } | ||
21703 | } | ||
21704 | return diffs + lengthDiff; | ||
21705 | } | ||
21706 | |||
21707 | function warn(msg) { | ||
21708 | if (hooks.suppressDeprecationWarnings === false && | ||
21709 | (typeof console !== 'undefined') && console.warn) { | ||
21710 | console.warn('Deprecation warning: ' + msg); | ||
21711 | } | ||
21712 | } | ||
21713 | |||
21714 | function deprecate(msg, fn) { | ||
21715 | var firstTime = true; | ||
21716 | |||
21717 | return extend(function () { | ||
21718 | if (hooks.deprecationHandler != null) { | ||
21719 | hooks.deprecationHandler(null, msg); | ||
21720 | } | ||
21721 | if (firstTime) { | ||
21722 | var args = []; | ||
21723 | var arg; | ||
21724 | for (var i = 0; i < arguments.length; i++) { | ||
21725 | arg = ''; | ||
21726 | if (typeof arguments[i] === 'object') { | ||
21727 | arg += '\n[' + i + '] '; | ||
21728 | for (var key in arguments[0]) { | ||
21729 | arg += key + ': ' + arguments[0][key] + ', '; | ||
21730 | } | ||
21731 | arg = arg.slice(0, -2); // Remove trailing comma and space | ||
21732 | } else { | ||
21733 | arg = arguments[i]; | ||
21734 | } | ||
21735 | args.push(arg); | ||
21736 | } | ||
21737 | warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); | ||
21738 | firstTime = false; | ||
21739 | } | ||
21740 | return fn.apply(this, arguments); | ||
21741 | }, fn); | ||
21742 | } | ||
21743 | |||
21744 | var deprecations = {}; | ||
21745 | |||
21746 | function deprecateSimple(name, msg) { | ||
21747 | if (hooks.deprecationHandler != null) { | ||
21748 | hooks.deprecationHandler(name, msg); | ||
21749 | } | ||
21750 | if (!deprecations[name]) { | ||
21751 | warn(msg); | ||
21752 | deprecations[name] = true; | ||
21753 | } | ||
21754 | } | ||
21755 | |||
21756 | hooks.suppressDeprecationWarnings = false; | ||
21757 | hooks.deprecationHandler = null; | ||
21758 | |||
21759 | function isFunction(input) { | ||
21760 | return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; | ||
21761 | } | ||
21762 | |||
21763 | function set (config) { | ||
21764 | var prop, i; | ||
21765 | for (i in config) { | ||
21766 | prop = config[i]; | ||
21767 | if (isFunction(prop)) { | ||
21768 | this[i] = prop; | ||
21769 | } else { | ||
21770 | this['_' + i] = prop; | ||
21771 | } | ||
21772 | } | ||
21773 | this._config = config; | ||
21774 | // Lenient ordinal parsing accepts just a number in addition to | ||
21775 | // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. | ||
21776 | // TODO: Remove "ordinalParse" fallback in next major release. | ||
21777 | this._dayOfMonthOrdinalParseLenient = new RegExp( | ||
21778 | (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + | ||
21779 | '|' + (/\d{1,2}/).source); | ||
21780 | } | ||
21781 | |||
21782 | function mergeConfigs(parentConfig, childConfig) { | ||
21783 | var res = extend({}, parentConfig), prop; | ||
21784 | for (prop in childConfig) { | ||
21785 | if (hasOwnProp(childConfig, prop)) { | ||
21786 | if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { | ||
21787 | res[prop] = {}; | ||
21788 | extend(res[prop], parentConfig[prop]); | ||
21789 | extend(res[prop], childConfig[prop]); | ||
21790 | } else if (childConfig[prop] != null) { | ||
21791 | res[prop] = childConfig[prop]; | ||
21792 | } else { | ||
21793 | delete res[prop]; | ||
21794 | } | ||
21795 | } | ||
21796 | } | ||
21797 | for (prop in parentConfig) { | ||
21798 | if (hasOwnProp(parentConfig, prop) && | ||
21799 | !hasOwnProp(childConfig, prop) && | ||
21800 | isObject(parentConfig[prop])) { | ||
21801 | // make sure changes to properties don't modify parent config | ||
21802 | res[prop] = extend({}, res[prop]); | ||
21803 | } | ||
21804 | } | ||
21805 | return res; | ||
21806 | } | ||
21807 | |||
21808 | function Locale(config) { | ||
21809 | if (config != null) { | ||
21810 | this.set(config); | ||
21811 | } | ||
21812 | } | ||
21813 | |||
21814 | var keys; | ||
21815 | |||
21816 | if (Object.keys) { | ||
21817 | keys = Object.keys; | ||
21818 | } else { | ||
21819 | keys = function (obj) { | ||
21820 | var i, res = []; | ||
21821 | for (i in obj) { | ||
21822 | if (hasOwnProp(obj, i)) { | ||
21823 | res.push(i); | ||
21824 | } | ||
21825 | } | ||
21826 | return res; | ||
21827 | }; | ||
21828 | } | ||
21829 | |||
21830 | var keys$1 = keys; | ||
21831 | |||
21832 | var defaultCalendar = { | ||
21833 | sameDay : '[Today at] LT', | ||
21834 | nextDay : '[Tomorrow at] LT', | ||
21835 | nextWeek : 'dddd [at] LT', | ||
21836 | lastDay : '[Yesterday at] LT', | ||
21837 | lastWeek : '[Last] dddd [at] LT', | ||
21838 | sameElse : 'L' | ||
21839 | }; | ||
21840 | |||
21841 | function calendar (key, mom, now) { | ||
21842 | var output = this._calendar[key] || this._calendar['sameElse']; | ||
21843 | return isFunction(output) ? output.call(mom, now) : output; | ||
21844 | } | ||
21845 | |||
21846 | var defaultLongDateFormat = { | ||
21847 | LTS : 'h:mm:ss A', | ||
21848 | LT : 'h:mm A', | ||
21849 | L : 'MM/DD/YYYY', | ||
21850 | LL : 'MMMM D, YYYY', | ||
21851 | LLL : 'MMMM D, YYYY h:mm A', | ||
21852 | LLLL : 'dddd, MMMM D, YYYY h:mm A' | ||
21853 | }; | ||
21854 | |||
21855 | function longDateFormat (key) { | ||
21856 | var format = this._longDateFormat[key], | ||
21857 | formatUpper = this._longDateFormat[key.toUpperCase()]; | ||
21858 | |||
21859 | if (format || !formatUpper) { | ||
21860 | return format; | ||
21861 | } | ||
21862 | |||
21863 | this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { | ||
21864 | return val.slice(1); | ||
21865 | }); | ||
21866 | |||
21867 | return this._longDateFormat[key]; | ||
21868 | } | ||
21869 | |||
21870 | var defaultInvalidDate = 'Invalid date'; | ||
21871 | |||
21872 | function invalidDate () { | ||
21873 | return this._invalidDate; | ||
21874 | } | ||
21875 | |||
21876 | var defaultOrdinal = '%d'; | ||
21877 | var defaultDayOfMonthOrdinalParse = /\d{1,2}/; | ||
21878 | |||
21879 | function ordinal (number) { | ||
21880 | return this._ordinal.replace('%d', number); | ||
21881 | } | ||
21882 | |||
21883 | var defaultRelativeTime = { | ||
21884 | future : 'in %s', | ||
21885 | past : '%s ago', | ||
21886 | s : 'a few seconds', | ||
21887 | ss : '%d seconds', | ||
21888 | m : 'a minute', | ||
21889 | mm : '%d minutes', | ||
21890 | h : 'an hour', | ||
21891 | hh : '%d hours', | ||
21892 | d : 'a day', | ||
21893 | dd : '%d days', | ||
21894 | M : 'a month', | ||
21895 | MM : '%d months', | ||
21896 | y : 'a year', | ||
21897 | yy : '%d years' | ||
21898 | }; | ||
21899 | |||
21900 | function relativeTime (number, withoutSuffix, string, isFuture) { | ||
21901 | var output = this._relativeTime[string]; | ||
21902 | return (isFunction(output)) ? | ||
21903 | output(number, withoutSuffix, string, isFuture) : | ||
21904 | output.replace(/%d/i, number); | ||
21905 | } | ||
21906 | |||
21907 | function pastFuture (diff, output) { | ||
21908 | var format = this._relativeTime[diff > 0 ? 'future' : 'past']; | ||
21909 | return isFunction(format) ? format(output) : format.replace(/%s/i, output); | ||
21910 | } | ||
21911 | |||
21912 | var aliases = {}; | ||
21913 | |||
21914 | function addUnitAlias (unit, shorthand) { | ||
21915 | var lowerCase = unit.toLowerCase(); | ||
21916 | aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; | ||
21917 | } | ||
21918 | |||
21919 | function normalizeUnits(units) { | ||
21920 | return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; | ||
21921 | } | ||
21922 | |||
21923 | function normalizeObjectUnits(inputObject) { | ||
21924 | var normalizedInput = {}, | ||
21925 | normalizedProp, | ||
21926 | prop; | ||
21927 | |||
21928 | for (prop in inputObject) { | ||
21929 | if (hasOwnProp(inputObject, prop)) { | ||
21930 | normalizedProp = normalizeUnits(prop); | ||
21931 | if (normalizedProp) { | ||
21932 | normalizedInput[normalizedProp] = inputObject[prop]; | ||
21933 | } | ||
21934 | } | ||
21935 | } | ||
21936 | |||
21937 | return normalizedInput; | ||
21938 | } | ||
21939 | |||
21940 | var priorities = {}; | ||
21941 | |||
21942 | function addUnitPriority(unit, priority) { | ||
21943 | priorities[unit] = priority; | ||
21944 | } | ||
21945 | |||
21946 | function getPrioritizedUnits(unitsObj) { | ||
21947 | var units = []; | ||
21948 | for (var u in unitsObj) { | ||
21949 | units.push({unit: u, priority: priorities[u]}); | ||
21950 | } | ||
21951 | units.sort(function (a, b) { | ||
21952 | return a.priority - b.priority; | ||
21953 | }); | ||
21954 | return units; | ||
21955 | } | ||
21956 | |||
21957 | function makeGetSet (unit, keepTime) { | ||
21958 | return function (value) { | ||
21959 | if (value != null) { | ||
21960 | set$1(this, unit, value); | ||
21961 | hooks.updateOffset(this, keepTime); | ||
21962 | return this; | ||
21963 | } else { | ||
21964 | return get(this, unit); | ||
21965 | } | ||
21966 | }; | ||
21967 | } | ||
21968 | |||
21969 | function get (mom, unit) { | ||
21970 | return mom.isValid() ? | ||
21971 | mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; | ||
21972 | } | ||
21973 | |||
21974 | function set$1 (mom, unit, value) { | ||
21975 | if (mom.isValid()) { | ||
21976 | mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); | ||
21977 | } | ||
21978 | } | ||
21979 | |||
21980 | // MOMENTS | ||
21981 | |||
21982 | function stringGet (units) { | ||
21983 | units = normalizeUnits(units); | ||
21984 | if (isFunction(this[units])) { | ||
21985 | return this[units](); | ||
21986 | } | ||
21987 | return this; | ||
21988 | } | ||
21989 | |||
21990 | |||
21991 | function stringSet (units, value) { | ||
21992 | if (typeof units === 'object') { | ||
21993 | units = normalizeObjectUnits(units); | ||
21994 | var prioritized = getPrioritizedUnits(units); | ||
21995 | for (var i = 0; i < prioritized.length; i++) { | ||
21996 | this[prioritized[i].unit](units[prioritized[i].unit]); | ||
21997 | } | ||
21998 | } else { | ||
21999 | units = normalizeUnits(units); | ||
22000 | if (isFunction(this[units])) { | ||
22001 | return this[units](value); | ||
22002 | } | ||
22003 | } | ||
22004 | return this; | ||
22005 | } | ||
22006 | |||
22007 | function zeroFill(number, targetLength, forceSign) { | ||
22008 | var absNumber = '' + Math.abs(number), | ||
22009 | zerosToFill = targetLength - absNumber.length, | ||
22010 | sign = number >= 0; | ||
22011 | return (sign ? (forceSign ? '+' : '') : '-') + | ||
22012 | Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; | ||
22013 | } | ||
22014 | |||
22015 | var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; | ||
22016 | |||
22017 | var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; | ||
22018 | |||
22019 | var formatFunctions = {}; | ||
22020 | |||
22021 | var formatTokenFunctions = {}; | ||
22022 | |||
22023 | // token: 'M' | ||
22024 | // padded: ['MM', 2] | ||
22025 | // ordinal: 'Mo' | ||
22026 | // callback: function () { this.month() + 1 } | ||
22027 | function addFormatToken (token, padded, ordinal, callback) { | ||
22028 | var func = callback; | ||
22029 | if (typeof callback === 'string') { | ||
22030 | func = function () { | ||
22031 | return this[callback](); | ||
22032 | }; | ||
22033 | } | ||
22034 | if (token) { | ||
22035 | formatTokenFunctions[token] = func; | ||
22036 | } | ||
22037 | if (padded) { | ||
22038 | formatTokenFunctions[padded[0]] = function () { | ||
22039 | return zeroFill(func.apply(this, arguments), padded[1], padded[2]); | ||
22040 | }; | ||
22041 | } | ||
22042 | if (ordinal) { | ||
22043 | formatTokenFunctions[ordinal] = function () { | ||
22044 | return this.localeData().ordinal(func.apply(this, arguments), token); | ||
22045 | }; | ||
22046 | } | ||
22047 | } | ||
22048 | |||
22049 | function removeFormattingTokens(input) { | ||
22050 | if (input.match(/\[[\s\S]/)) { | ||
22051 | return input.replace(/^\[|\]$/g, ''); | ||
22052 | } | ||
22053 | return input.replace(/\\/g, ''); | ||
22054 | } | ||
22055 | |||
22056 | function makeFormatFunction(format) { | ||
22057 | var array = format.match(formattingTokens), i, length; | ||
22058 | |||
22059 | for (i = 0, length = array.length; i < length; i++) { | ||
22060 | if (formatTokenFunctions[array[i]]) { | ||
22061 | array[i] = formatTokenFunctions[array[i]]; | ||
22062 | } else { | ||
22063 | array[i] = removeFormattingTokens(array[i]); | ||
22064 | } | ||
22065 | } | ||
22066 | |||
22067 | return function (mom) { | ||
22068 | var output = '', i; | ||
22069 | for (i = 0; i < length; i++) { | ||
22070 | output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; | ||
22071 | } | ||
22072 | return output; | ||
22073 | }; | ||
22074 | } | ||
22075 | |||
22076 | // format date using native date object | ||
22077 | function formatMoment(m, format) { | ||
22078 | if (!m.isValid()) { | ||
22079 | return m.localeData().invalidDate(); | ||
22080 | } | ||
22081 | |||
22082 | format = expandFormat(format, m.localeData()); | ||
22083 | formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); | ||
22084 | |||
22085 | return formatFunctions[format](m); | ||
22086 | } | ||
22087 | |||
22088 | function expandFormat(format, locale) { | ||
22089 | var i = 5; | ||
22090 | |||
22091 | function replaceLongDateFormatTokens(input) { | ||
22092 | return locale.longDateFormat(input) || input; | ||
22093 | } | ||
22094 | |||
22095 | localFormattingTokens.lastIndex = 0; | ||
22096 | while (i >= 0 && localFormattingTokens.test(format)) { | ||
22097 | format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); | ||
22098 | localFormattingTokens.lastIndex = 0; | ||
22099 | i -= 1; | ||
22100 | } | ||
22101 | |||
22102 | return format; | ||
22103 | } | ||
22104 | |||
22105 | var match1 = /\d/; // 0 - 9 | ||
22106 | var match2 = /\d\d/; // 00 - 99 | ||
22107 | var match3 = /\d{3}/; // 000 - 999 | ||
22108 | var match4 = /\d{4}/; // 0000 - 9999 | ||
22109 | var match6 = /[+-]?\d{6}/; // -999999 - 999999 | ||
22110 | var match1to2 = /\d\d?/; // 0 - 99 | ||
22111 | var match3to4 = /\d\d\d\d?/; // 999 - 9999 | ||
22112 | var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 | ||
22113 | var match1to3 = /\d{1,3}/; // 0 - 999 | ||
22114 | var match1to4 = /\d{1,4}/; // 0 - 9999 | ||
22115 | var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 | ||
22116 | |||
22117 | var matchUnsigned = /\d+/; // 0 - inf | ||
22118 | var matchSigned = /[+-]?\d+/; // -inf - inf | ||
22119 | |||
22120 | var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z | ||
22121 | var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z | ||
22122 | |||
22123 | var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 | ||
22124 | |||
22125 | // any word (or two) characters or numbers including two/three word month in arabic. | ||
22126 | // includes scottish gaelic two word and hyphenated months | ||
22127 | var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; | ||
22128 | |||
22129 | |||
22130 | var regexes = {}; | ||
22131 | |||
22132 | function addRegexToken (token, regex, strictRegex) { | ||
22133 | regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { | ||
22134 | return (isStrict && strictRegex) ? strictRegex : regex; | ||
22135 | }; | ||
22136 | } | ||
22137 | |||
22138 | function getParseRegexForToken (token, config) { | ||
22139 | if (!hasOwnProp(regexes, token)) { | ||
22140 | return new RegExp(unescapeFormat(token)); | ||
22141 | } | ||
22142 | |||
22143 | return regexes[token](config._strict, config._locale); | ||
22144 | } | ||
22145 | |||
22146 | // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript | ||
22147 | function unescapeFormat(s) { | ||
22148 | return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { | ||
22149 | return p1 || p2 || p3 || p4; | ||
22150 | })); | ||
22151 | } | ||
22152 | |||
22153 | function regexEscape(s) { | ||
22154 | return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); | ||
22155 | } | ||
22156 | |||
22157 | var tokens = {}; | ||
22158 | |||
22159 | function addParseToken (token, callback) { | ||
22160 | var i, func = callback; | ||
22161 | if (typeof token === 'string') { | ||
22162 | token = [token]; | ||
22163 | } | ||
22164 | if (isNumber(callback)) { | ||
22165 | func = function (input, array) { | ||
22166 | array[callback] = toInt(input); | ||
22167 | }; | ||
22168 | } | ||
22169 | for (i = 0; i < token.length; i++) { | ||
22170 | tokens[token[i]] = func; | ||
22171 | } | ||
22172 | } | ||
22173 | |||
22174 | function addWeekParseToken (token, callback) { | ||
22175 | addParseToken(token, function (input, array, config, token) { | ||
22176 | config._w = config._w || {}; | ||
22177 | callback(input, config._w, config, token); | ||
22178 | }); | ||
22179 | } | ||
22180 | |||
22181 | function addTimeToArrayFromToken(token, input, config) { | ||
22182 | if (input != null && hasOwnProp(tokens, token)) { | ||
22183 | tokens[token](input, config._a, config, token); | ||
22184 | } | ||
22185 | } | ||
22186 | |||
22187 | var YEAR = 0; | ||
22188 | var MONTH = 1; | ||
22189 | var DATE = 2; | ||
22190 | var HOUR = 3; | ||
22191 | var MINUTE = 4; | ||
22192 | var SECOND = 5; | ||
22193 | var MILLISECOND = 6; | ||
22194 | var WEEK = 7; | ||
22195 | var WEEKDAY = 8; | ||
22196 | |||
22197 | var indexOf; | ||
22198 | |||
22199 | if (Array.prototype.indexOf) { | ||
22200 | indexOf = Array.prototype.indexOf; | ||
22201 | } else { | ||
22202 | indexOf = function (o) { | ||
22203 | // I know | ||
22204 | var i; | ||
22205 | for (i = 0; i < this.length; ++i) { | ||
22206 | if (this[i] === o) { | ||
22207 | return i; | ||
22208 | } | ||
22209 | } | ||
22210 | return -1; | ||
22211 | }; | ||
22212 | } | ||
22213 | |||
22214 | var indexOf$1 = indexOf; | ||
22215 | |||
22216 | function daysInMonth(year, month) { | ||
22217 | return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); | ||
22218 | } | ||
22219 | |||
22220 | // FORMATTING | ||
22221 | |||
22222 | addFormatToken('M', ['MM', 2], 'Mo', function () { | ||
22223 | return this.month() + 1; | ||
22224 | }); | ||
22225 | |||
22226 | addFormatToken('MMM', 0, 0, function (format) { | ||
22227 | return this.localeData().monthsShort(this, format); | ||
22228 | }); | ||
22229 | |||
22230 | addFormatToken('MMMM', 0, 0, function (format) { | ||
22231 | return this.localeData().months(this, format); | ||
22232 | }); | ||
22233 | |||
22234 | // ALIASES | ||
22235 | |||
22236 | addUnitAlias('month', 'M'); | ||
22237 | |||
22238 | // PRIORITY | ||
22239 | |||
22240 | addUnitPriority('month', 8); | ||
22241 | |||
22242 | // PARSING | ||
22243 | |||
22244 | addRegexToken('M', match1to2); | ||
22245 | addRegexToken('MM', match1to2, match2); | ||
22246 | addRegexToken('MMM', function (isStrict, locale) { | ||
22247 | return locale.monthsShortRegex(isStrict); | ||
22248 | }); | ||
22249 | addRegexToken('MMMM', function (isStrict, locale) { | ||
22250 | return locale.monthsRegex(isStrict); | ||
22251 | }); | ||
22252 | |||
22253 | addParseToken(['M', 'MM'], function (input, array) { | ||
22254 | array[MONTH] = toInt(input) - 1; | ||
22255 | }); | ||
22256 | |||
22257 | addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { | ||
22258 | var month = config._locale.monthsParse(input, token, config._strict); | ||
22259 | // if we didn't find a month name, mark the date as invalid. | ||
22260 | if (month != null) { | ||
22261 | array[MONTH] = month; | ||
22262 | } else { | ||
22263 | getParsingFlags(config).invalidMonth = input; | ||
22264 | } | ||
22265 | }); | ||
22266 | |||
22267 | // LOCALES | ||
22268 | |||
22269 | var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; | ||
22270 | var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); | ||
22271 | function localeMonths (m, format) { | ||
22272 | if (!m) { | ||
22273 | return isArray(this._months) ? this._months : | ||
22274 | this._months['standalone']; | ||
22275 | } | ||
22276 | return isArray(this._months) ? this._months[m.month()] : | ||
22277 | this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; | ||
22278 | } | ||
22279 | |||
22280 | var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); | ||
22281 | function localeMonthsShort (m, format) { | ||
22282 | if (!m) { | ||
22283 | return isArray(this._monthsShort) ? this._monthsShort : | ||
22284 | this._monthsShort['standalone']; | ||
22285 | } | ||
22286 | return isArray(this._monthsShort) ? this._monthsShort[m.month()] : | ||
22287 | this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; | ||
22288 | } | ||
22289 | |||
22290 | function handleStrictParse(monthName, format, strict) { | ||
22291 | var i, ii, mom, llc = monthName.toLocaleLowerCase(); | ||
22292 | if (!this._monthsParse) { | ||
22293 | // this is not used | ||
22294 | this._monthsParse = []; | ||
22295 | this._longMonthsParse = []; | ||
22296 | this._shortMonthsParse = []; | ||
22297 | for (i = 0; i < 12; ++i) { | ||
22298 | mom = createUTC([2000, i]); | ||
22299 | this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); | ||
22300 | this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); | ||
22301 | } | ||
22302 | } | ||
22303 | |||
22304 | if (strict) { | ||
22305 | if (format === 'MMM') { | ||
22306 | ii = indexOf$1.call(this._shortMonthsParse, llc); | ||
22307 | return ii !== -1 ? ii : null; | ||
22308 | } else { | ||
22309 | ii = indexOf$1.call(this._longMonthsParse, llc); | ||
22310 | return ii !== -1 ? ii : null; | ||
22311 | } | ||
22312 | } else { | ||
22313 | if (format === 'MMM') { | ||
22314 | ii = indexOf$1.call(this._shortMonthsParse, llc); | ||
22315 | if (ii !== -1) { | ||
22316 | return ii; | ||
22317 | } | ||
22318 | ii = indexOf$1.call(this._longMonthsParse, llc); | ||
22319 | return ii !== -1 ? ii : null; | ||
22320 | } else { | ||
22321 | ii = indexOf$1.call(this._longMonthsParse, llc); | ||
22322 | if (ii !== -1) { | ||
22323 | return ii; | ||
22324 | } | ||
22325 | ii = indexOf$1.call(this._shortMonthsParse, llc); | ||
22326 | return ii !== -1 ? ii : null; | ||
22327 | } | ||
22328 | } | ||
22329 | } | ||
22330 | |||
22331 | function localeMonthsParse (monthName, format, strict) { | ||
22332 | var i, mom, regex; | ||
22333 | |||
22334 | if (this._monthsParseExact) { | ||
22335 | return handleStrictParse.call(this, monthName, format, strict); | ||
22336 | } | ||
22337 | |||
22338 | if (!this._monthsParse) { | ||
22339 | this._monthsParse = []; | ||
22340 | this._longMonthsParse = []; | ||
22341 | this._shortMonthsParse = []; | ||
22342 | } | ||
22343 | |||
22344 | // TODO: add sorting | ||
22345 | // Sorting makes sure if one month (or abbr) is a prefix of another | ||
22346 | // see sorting in computeMonthsParse | ||
22347 | for (i = 0; i < 12; i++) { | ||
22348 | // make the regex if we don't have it already | ||
22349 | mom = createUTC([2000, i]); | ||
22350 | if (strict && !this._longMonthsParse[i]) { | ||
22351 | this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); | ||
22352 | this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); | ||
22353 | } | ||
22354 | if (!strict && !this._monthsParse[i]) { | ||
22355 | regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); | ||
22356 | this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); | ||
22357 | } | ||
22358 | // test the regex | ||
22359 | if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { | ||
22360 | return i; | ||
22361 | } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { | ||
22362 | return i; | ||
22363 | } else if (!strict && this._monthsParse[i].test(monthName)) { | ||
22364 | return i; | ||
22365 | } | ||
22366 | } | ||
22367 | } | ||
22368 | |||
22369 | // MOMENTS | ||
22370 | |||
22371 | function setMonth (mom, value) { | ||
22372 | var dayOfMonth; | ||
22373 | |||
22374 | if (!mom.isValid()) { | ||
22375 | // No op | ||
22376 | return mom; | ||
22377 | } | ||
22378 | |||
22379 | if (typeof value === 'string') { | ||
22380 | if (/^\d+$/.test(value)) { | ||
22381 | value = toInt(value); | ||
22382 | } else { | ||
22383 | value = mom.localeData().monthsParse(value); | ||
22384 | // TODO: Another silent failure? | ||
22385 | if (!isNumber(value)) { | ||
22386 | return mom; | ||
22387 | } | ||
22388 | } | ||
22389 | } | ||
22390 | |||
22391 | dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); | ||
22392 | mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); | ||
22393 | return mom; | ||
22394 | } | ||
22395 | |||
22396 | function getSetMonth (value) { | ||
22397 | if (value != null) { | ||
22398 | setMonth(this, value); | ||
22399 | hooks.updateOffset(this, true); | ||
22400 | return this; | ||
22401 | } else { | ||
22402 | return get(this, 'Month'); | ||
22403 | } | ||
22404 | } | ||
22405 | |||
22406 | function getDaysInMonth () { | ||
22407 | return daysInMonth(this.year(), this.month()); | ||
22408 | } | ||
22409 | |||
22410 | var defaultMonthsShortRegex = matchWord; | ||
22411 | function monthsShortRegex (isStrict) { | ||
22412 | if (this._monthsParseExact) { | ||
22413 | if (!hasOwnProp(this, '_monthsRegex')) { | ||
22414 | computeMonthsParse.call(this); | ||
22415 | } | ||
22416 | if (isStrict) { | ||
22417 | return this._monthsShortStrictRegex; | ||
22418 | } else { | ||
22419 | return this._monthsShortRegex; | ||
22420 | } | ||
22421 | } else { | ||
22422 | if (!hasOwnProp(this, '_monthsShortRegex')) { | ||
22423 | this._monthsShortRegex = defaultMonthsShortRegex; | ||
22424 | } | ||
22425 | return this._monthsShortStrictRegex && isStrict ? | ||
22426 | this._monthsShortStrictRegex : this._monthsShortRegex; | ||
22427 | } | ||
22428 | } | ||
22429 | |||
22430 | var defaultMonthsRegex = matchWord; | ||
22431 | function monthsRegex (isStrict) { | ||
22432 | if (this._monthsParseExact) { | ||
22433 | if (!hasOwnProp(this, '_monthsRegex')) { | ||
22434 | computeMonthsParse.call(this); | ||
22435 | } | ||
22436 | if (isStrict) { | ||
22437 | return this._monthsStrictRegex; | ||
22438 | } else { | ||
22439 | return this._monthsRegex; | ||
22440 | } | ||
22441 | } else { | ||
22442 | if (!hasOwnProp(this, '_monthsRegex')) { | ||
22443 | this._monthsRegex = defaultMonthsRegex; | ||
22444 | } | ||
22445 | return this._monthsStrictRegex && isStrict ? | ||
22446 | this._monthsStrictRegex : this._monthsRegex; | ||
22447 | } | ||
22448 | } | ||
22449 | |||
22450 | function computeMonthsParse () { | ||
22451 | function cmpLenRev(a, b) { | ||
22452 | return b.length - a.length; | ||
22453 | } | ||
22454 | |||
22455 | var shortPieces = [], longPieces = [], mixedPieces = [], | ||
22456 | i, mom; | ||
22457 | for (i = 0; i < 12; i++) { | ||
22458 | // make the regex if we don't have it already | ||
22459 | mom = createUTC([2000, i]); | ||
22460 | shortPieces.push(this.monthsShort(mom, '')); | ||
22461 | longPieces.push(this.months(mom, '')); | ||
22462 | mixedPieces.push(this.months(mom, '')); | ||
22463 | mixedPieces.push(this.monthsShort(mom, '')); | ||
22464 | } | ||
22465 | // Sorting makes sure if one month (or abbr) is a prefix of another it | ||
22466 | // will match the longer piece. | ||
22467 | shortPieces.sort(cmpLenRev); | ||
22468 | longPieces.sort(cmpLenRev); | ||
22469 | mixedPieces.sort(cmpLenRev); | ||
22470 | for (i = 0; i < 12; i++) { | ||
22471 | shortPieces[i] = regexEscape(shortPieces[i]); | ||
22472 | longPieces[i] = regexEscape(longPieces[i]); | ||
22473 | } | ||
22474 | for (i = 0; i < 24; i++) { | ||
22475 | mixedPieces[i] = regexEscape(mixedPieces[i]); | ||
22476 | } | ||
22477 | |||
22478 | this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); | ||
22479 | this._monthsShortRegex = this._monthsRegex; | ||
22480 | this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); | ||
22481 | this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); | ||
22482 | } | ||
22483 | |||
22484 | // FORMATTING | ||
22485 | |||
22486 | addFormatToken('Y', 0, 0, function () { | ||
22487 | var y = this.year(); | ||
22488 | return y <= 9999 ? '' + y : '+' + y; | ||
22489 | }); | ||
22490 | |||
22491 | addFormatToken(0, ['YY', 2], 0, function () { | ||
22492 | return this.year() % 100; | ||
22493 | }); | ||
22494 | |||
22495 | addFormatToken(0, ['YYYY', 4], 0, 'year'); | ||
22496 | addFormatToken(0, ['YYYYY', 5], 0, 'year'); | ||
22497 | addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); | ||
22498 | |||
22499 | // ALIASES | ||
22500 | |||
22501 | addUnitAlias('year', 'y'); | ||
22502 | |||
22503 | // PRIORITIES | ||
22504 | |||
22505 | addUnitPriority('year', 1); | ||
22506 | |||
22507 | // PARSING | ||
22508 | |||
22509 | addRegexToken('Y', matchSigned); | ||
22510 | addRegexToken('YY', match1to2, match2); | ||
22511 | addRegexToken('YYYY', match1to4, match4); | ||
22512 | addRegexToken('YYYYY', match1to6, match6); | ||
22513 | addRegexToken('YYYYYY', match1to6, match6); | ||
22514 | |||
22515 | addParseToken(['YYYYY', 'YYYYYY'], YEAR); | ||
22516 | addParseToken('YYYY', function (input, array) { | ||
22517 | array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); | ||
22518 | }); | ||
22519 | addParseToken('YY', function (input, array) { | ||
22520 | array[YEAR] = hooks.parseTwoDigitYear(input); | ||
22521 | }); | ||
22522 | addParseToken('Y', function (input, array) { | ||
22523 | array[YEAR] = parseInt(input, 10); | ||
22524 | }); | ||
22525 | |||
22526 | // HELPERS | ||
22527 | |||
22528 | function daysInYear(year) { | ||
22529 | return isLeapYear(year) ? 366 : 365; | ||
22530 | } | ||
22531 | |||
22532 | function isLeapYear(year) { | ||
22533 | return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; | ||
22534 | } | ||
22535 | |||
22536 | // HOOKS | ||
22537 | |||
22538 | hooks.parseTwoDigitYear = function (input) { | ||
22539 | return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); | ||
22540 | }; | ||
22541 | |||
22542 | // MOMENTS | ||
22543 | |||
22544 | var getSetYear = makeGetSet('FullYear', true); | ||
22545 | |||
22546 | function getIsLeapYear () { | ||
22547 | return isLeapYear(this.year()); | ||
22548 | } | ||
22549 | |||
22550 | function createDate (y, m, d, h, M, s, ms) { | ||
22551 | // can't just apply() to create a date: | ||
22552 | // https://stackoverflow.com/q/181348 | ||
22553 | var date = new Date(y, m, d, h, M, s, ms); | ||
22554 | |||
22555 | // the date constructor remaps years 0-99 to 1900-1999 | ||
22556 | if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { | ||
22557 | date.setFullYear(y); | ||
22558 | } | ||
22559 | return date; | ||
22560 | } | ||
22561 | |||
22562 | function createUTCDate (y) { | ||
22563 | var date = new Date(Date.UTC.apply(null, arguments)); | ||
22564 | |||
22565 | // the Date.UTC function remaps years 0-99 to 1900-1999 | ||
22566 | if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { | ||
22567 | date.setUTCFullYear(y); | ||
22568 | } | ||
22569 | return date; | ||
22570 | } | ||
22571 | |||
22572 | // start-of-first-week - start-of-year | ||
22573 | function firstWeekOffset(year, dow, doy) { | ||
22574 | var // first-week day -- which january is always in the first week (4 for iso, 1 for other) | ||
22575 | fwd = 7 + dow - doy, | ||
22576 | // first-week day local weekday -- which local weekday is fwd | ||
22577 | fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; | ||
22578 | |||
22579 | return -fwdlw + fwd - 1; | ||
22580 | } | ||
22581 | |||
22582 | // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday | ||
22583 | function dayOfYearFromWeeks(year, week, weekday, dow, doy) { | ||
22584 | var localWeekday = (7 + weekday - dow) % 7, | ||
22585 | weekOffset = firstWeekOffset(year, dow, doy), | ||
22586 | dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, | ||
22587 | resYear, resDayOfYear; | ||
22588 | |||
22589 | if (dayOfYear <= 0) { | ||
22590 | resYear = year - 1; | ||
22591 | resDayOfYear = daysInYear(resYear) + dayOfYear; | ||
22592 | } else if (dayOfYear > daysInYear(year)) { | ||
22593 | resYear = year + 1; | ||
22594 | resDayOfYear = dayOfYear - daysInYear(year); | ||
22595 | } else { | ||
22596 | resYear = year; | ||
22597 | resDayOfYear = dayOfYear; | ||
22598 | } | ||
22599 | |||
22600 | return { | ||
22601 | year: resYear, | ||
22602 | dayOfYear: resDayOfYear | ||
22603 | }; | ||
22604 | } | ||
22605 | |||
22606 | function weekOfYear(mom, dow, doy) { | ||
22607 | var weekOffset = firstWeekOffset(mom.year(), dow, doy), | ||
22608 | week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, | ||
22609 | resWeek, resYear; | ||
22610 | |||
22611 | if (week < 1) { | ||
22612 | resYear = mom.year() - 1; | ||
22613 | resWeek = week + weeksInYear(resYear, dow, doy); | ||
22614 | } else if (week > weeksInYear(mom.year(), dow, doy)) { | ||
22615 | resWeek = week - weeksInYear(mom.year(), dow, doy); | ||
22616 | resYear = mom.year() + 1; | ||
22617 | } else { | ||
22618 | resYear = mom.year(); | ||
22619 | resWeek = week; | ||
22620 | } | ||
22621 | |||
22622 | return { | ||
22623 | week: resWeek, | ||
22624 | year: resYear | ||
22625 | }; | ||
22626 | } | ||
22627 | |||
22628 | function weeksInYear(year, dow, doy) { | ||
22629 | var weekOffset = firstWeekOffset(year, dow, doy), | ||
22630 | weekOffsetNext = firstWeekOffset(year + 1, dow, doy); | ||
22631 | return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; | ||
22632 | } | ||
22633 | |||
22634 | // FORMATTING | ||
22635 | |||
22636 | addFormatToken('w', ['ww', 2], 'wo', 'week'); | ||
22637 | addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); | ||
22638 | |||
22639 | // ALIASES | ||
22640 | |||
22641 | addUnitAlias('week', 'w'); | ||
22642 | addUnitAlias('isoWeek', 'W'); | ||
22643 | |||
22644 | // PRIORITIES | ||
22645 | |||
22646 | addUnitPriority('week', 5); | ||
22647 | addUnitPriority('isoWeek', 5); | ||
22648 | |||
22649 | // PARSING | ||
22650 | |||
22651 | addRegexToken('w', match1to2); | ||
22652 | addRegexToken('ww', match1to2, match2); | ||
22653 | addRegexToken('W', match1to2); | ||
22654 | addRegexToken('WW', match1to2, match2); | ||
22655 | |||
22656 | addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { | ||
22657 | week[token.substr(0, 1)] = toInt(input); | ||
22658 | }); | ||
22659 | |||
22660 | // HELPERS | ||
22661 | |||
22662 | // LOCALES | ||
22663 | |||
22664 | function localeWeek (mom) { | ||
22665 | return weekOfYear(mom, this._week.dow, this._week.doy).week; | ||
22666 | } | ||
22667 | |||
22668 | var defaultLocaleWeek = { | ||
22669 | dow : 0, // Sunday is the first day of the week. | ||
22670 | doy : 6 // The week that contains Jan 1st is the first week of the year. | ||
22671 | }; | ||
22672 | |||
22673 | function localeFirstDayOfWeek () { | ||
22674 | return this._week.dow; | ||
22675 | } | ||
22676 | |||
22677 | function localeFirstDayOfYear () { | ||
22678 | return this._week.doy; | ||
22679 | } | ||
22680 | |||
22681 | // MOMENTS | ||
22682 | |||
22683 | function getSetWeek (input) { | ||
22684 | var week = this.localeData().week(this); | ||
22685 | return input == null ? week : this.add((input - week) * 7, 'd'); | ||
22686 | } | ||
22687 | |||
22688 | function getSetISOWeek (input) { | ||
22689 | var week = weekOfYear(this, 1, 4).week; | ||
22690 | return input == null ? week : this.add((input - week) * 7, 'd'); | ||
22691 | } | ||
22692 | |||
22693 | // FORMATTING | ||
22694 | |||
22695 | addFormatToken('d', 0, 'do', 'day'); | ||
22696 | |||
22697 | addFormatToken('dd', 0, 0, function (format) { | ||
22698 | return this.localeData().weekdaysMin(this, format); | ||
22699 | }); | ||
22700 | |||
22701 | addFormatToken('ddd', 0, 0, function (format) { | ||
22702 | return this.localeData().weekdaysShort(this, format); | ||
22703 | }); | ||
22704 | |||
22705 | addFormatToken('dddd', 0, 0, function (format) { | ||
22706 | return this.localeData().weekdays(this, format); | ||
22707 | }); | ||
22708 | |||
22709 | addFormatToken('e', 0, 0, 'weekday'); | ||
22710 | addFormatToken('E', 0, 0, 'isoWeekday'); | ||
22711 | |||
22712 | // ALIASES | ||
22713 | |||
22714 | addUnitAlias('day', 'd'); | ||
22715 | addUnitAlias('weekday', 'e'); | ||
22716 | addUnitAlias('isoWeekday', 'E'); | ||
22717 | |||
22718 | // PRIORITY | ||
22719 | addUnitPriority('day', 11); | ||
22720 | addUnitPriority('weekday', 11); | ||
22721 | addUnitPriority('isoWeekday', 11); | ||
22722 | |||
22723 | // PARSING | ||
22724 | |||
22725 | addRegexToken('d', match1to2); | ||
22726 | addRegexToken('e', match1to2); | ||
22727 | addRegexToken('E', match1to2); | ||
22728 | addRegexToken('dd', function (isStrict, locale) { | ||
22729 | return locale.weekdaysMinRegex(isStrict); | ||
22730 | }); | ||
22731 | addRegexToken('ddd', function (isStrict, locale) { | ||
22732 | return locale.weekdaysShortRegex(isStrict); | ||
22733 | }); | ||
22734 | addRegexToken('dddd', function (isStrict, locale) { | ||
22735 | return locale.weekdaysRegex(isStrict); | ||
22736 | }); | ||
22737 | |||
22738 | addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { | ||
22739 | var weekday = config._locale.weekdaysParse(input, token, config._strict); | ||
22740 | // if we didn't get a weekday name, mark the date as invalid | ||
22741 | if (weekday != null) { | ||
22742 | week.d = weekday; | ||
22743 | } else { | ||
22744 | getParsingFlags(config).invalidWeekday = input; | ||
22745 | } | ||
22746 | }); | ||
22747 | |||
22748 | addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { | ||
22749 | week[token] = toInt(input); | ||
22750 | }); | ||
22751 | |||
22752 | // HELPERS | ||
22753 | |||
22754 | function parseWeekday(input, locale) { | ||
22755 | if (typeof input !== 'string') { | ||
22756 | return input; | ||
22757 | } | ||
22758 | |||
22759 | if (!isNaN(input)) { | ||
22760 | return parseInt(input, 10); | ||
22761 | } | ||
22762 | |||
22763 | input = locale.weekdaysParse(input); | ||
22764 | if (typeof input === 'number') { | ||
22765 | return input; | ||
22766 | } | ||
22767 | |||
22768 | return null; | ||
22769 | } | ||
22770 | |||
22771 | function parseIsoWeekday(input, locale) { | ||
22772 | if (typeof input === 'string') { | ||
22773 | return locale.weekdaysParse(input) % 7 || 7; | ||
22774 | } | ||
22775 | return isNaN(input) ? null : input; | ||
22776 | } | ||
22777 | |||
22778 | // LOCALES | ||
22779 | |||
22780 | var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); | ||
22781 | function localeWeekdays (m, format) { | ||
22782 | if (!m) { | ||
22783 | return isArray(this._weekdays) ? this._weekdays : | ||
22784 | this._weekdays['standalone']; | ||
22785 | } | ||
22786 | return isArray(this._weekdays) ? this._weekdays[m.day()] : | ||
22787 | this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; | ||
22788 | } | ||
22789 | |||
22790 | var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); | ||
22791 | function localeWeekdaysShort (m) { | ||
22792 | return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; | ||
22793 | } | ||
22794 | |||
22795 | var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); | ||
22796 | function localeWeekdaysMin (m) { | ||
22797 | return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; | ||
22798 | } | ||
22799 | |||
22800 | function handleStrictParse$1(weekdayName, format, strict) { | ||
22801 | var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); | ||
22802 | if (!this._weekdaysParse) { | ||
22803 | this._weekdaysParse = []; | ||
22804 | this._shortWeekdaysParse = []; | ||
22805 | this._minWeekdaysParse = []; | ||
22806 | |||
22807 | for (i = 0; i < 7; ++i) { | ||
22808 | mom = createUTC([2000, 1]).day(i); | ||
22809 | this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); | ||
22810 | this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); | ||
22811 | this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); | ||
22812 | } | ||
22813 | } | ||
22814 | |||
22815 | if (strict) { | ||
22816 | if (format === 'dddd') { | ||
22817 | ii = indexOf$1.call(this._weekdaysParse, llc); | ||
22818 | return ii !== -1 ? ii : null; | ||
22819 | } else if (format === 'ddd') { | ||
22820 | ii = indexOf$1.call(this._shortWeekdaysParse, llc); | ||
22821 | return ii !== -1 ? ii : null; | ||
22822 | } else { | ||
22823 | ii = indexOf$1.call(this._minWeekdaysParse, llc); | ||
22824 | return ii !== -1 ? ii : null; | ||
22825 | } | ||
22826 | } else { | ||
22827 | if (format === 'dddd') { | ||
22828 | ii = indexOf$1.call(this._weekdaysParse, llc); | ||
22829 | if (ii !== -1) { | ||
22830 | return ii; | ||
22831 | } | ||
22832 | ii = indexOf$1.call(this._shortWeekdaysParse, llc); | ||
22833 | if (ii !== -1) { | ||
22834 | return ii; | ||
22835 | } | ||
22836 | ii = indexOf$1.call(this._minWeekdaysParse, llc); | ||
22837 | return ii !== -1 ? ii : null; | ||
22838 | } else if (format === 'ddd') { | ||
22839 | ii = indexOf$1.call(this._shortWeekdaysParse, llc); | ||
22840 | if (ii !== -1) { | ||
22841 | return ii; | ||
22842 | } | ||
22843 | ii = indexOf$1.call(this._weekdaysParse, llc); | ||
22844 | if (ii !== -1) { | ||
22845 | return ii; | ||
22846 | } | ||
22847 | ii = indexOf$1.call(this._minWeekdaysParse, llc); | ||
22848 | return ii !== -1 ? ii : null; | ||
22849 | } else { | ||
22850 | ii = indexOf$1.call(this._minWeekdaysParse, llc); | ||
22851 | if (ii !== -1) { | ||
22852 | return ii; | ||
22853 | } | ||
22854 | ii = indexOf$1.call(this._weekdaysParse, llc); | ||
22855 | if (ii !== -1) { | ||
22856 | return ii; | ||
22857 | } | ||
22858 | ii = indexOf$1.call(this._shortWeekdaysParse, llc); | ||
22859 | return ii !== -1 ? ii : null; | ||
22860 | } | ||
22861 | } | ||
22862 | } | ||
22863 | |||
22864 | function localeWeekdaysParse (weekdayName, format, strict) { | ||
22865 | var i, mom, regex; | ||
22866 | |||
22867 | if (this._weekdaysParseExact) { | ||
22868 | return handleStrictParse$1.call(this, weekdayName, format, strict); | ||
22869 | } | ||
22870 | |||
22871 | if (!this._weekdaysParse) { | ||
22872 | this._weekdaysParse = []; | ||
22873 | this._minWeekdaysParse = []; | ||
22874 | this._shortWeekdaysParse = []; | ||
22875 | this._fullWeekdaysParse = []; | ||
22876 | } | ||
22877 | |||
22878 | for (i = 0; i < 7; i++) { | ||
22879 | // make the regex if we don't have it already | ||
22880 | |||
22881 | mom = createUTC([2000, 1]).day(i); | ||
22882 | if (strict && !this._fullWeekdaysParse[i]) { | ||
22883 | this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i'); | ||
22884 | this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i'); | ||
22885 | this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i'); | ||
22886 | } | ||
22887 | if (!this._weekdaysParse[i]) { | ||
22888 | regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); | ||
22889 | this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); | ||
22890 | } | ||
22891 | // test the regex | ||
22892 | if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { | ||
22893 | return i; | ||
22894 | } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { | ||
22895 | return i; | ||
22896 | } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { | ||
22897 | return i; | ||
22898 | } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { | ||
22899 | return i; | ||
22900 | } | ||
22901 | } | ||
22902 | } | ||
22903 | |||
22904 | // MOMENTS | ||
22905 | |||
22906 | function getSetDayOfWeek (input) { | ||
22907 | if (!this.isValid()) { | ||
22908 | return input != null ? this : NaN; | ||
22909 | } | ||
22910 | var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); | ||
22911 | if (input != null) { | ||
22912 | input = parseWeekday(input, this.localeData()); | ||
22913 | return this.add(input - day, 'd'); | ||
22914 | } else { | ||
22915 | return day; | ||
22916 | } | ||
22917 | } | ||
22918 | |||
22919 | function getSetLocaleDayOfWeek (input) { | ||
22920 | if (!this.isValid()) { | ||
22921 | return input != null ? this : NaN; | ||
22922 | } | ||
22923 | var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; | ||
22924 | return input == null ? weekday : this.add(input - weekday, 'd'); | ||
22925 | } | ||
22926 | |||
22927 | function getSetISODayOfWeek (input) { | ||
22928 | if (!this.isValid()) { | ||
22929 | return input != null ? this : NaN; | ||
22930 | } | ||
22931 | |||
22932 | // behaves the same as moment#day except | ||
22933 | // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) | ||
22934 | // as a setter, sunday should belong to the previous week. | ||
22935 | |||
22936 | if (input != null) { | ||
22937 | var weekday = parseIsoWeekday(input, this.localeData()); | ||
22938 | return this.day(this.day() % 7 ? weekday : weekday - 7); | ||
22939 | } else { | ||
22940 | return this.day() || 7; | ||
22941 | } | ||
22942 | } | ||
22943 | |||
22944 | var defaultWeekdaysRegex = matchWord; | ||
22945 | function weekdaysRegex (isStrict) { | ||
22946 | if (this._weekdaysParseExact) { | ||
22947 | if (!hasOwnProp(this, '_weekdaysRegex')) { | ||
22948 | computeWeekdaysParse.call(this); | ||
22949 | } | ||
22950 | if (isStrict) { | ||
22951 | return this._weekdaysStrictRegex; | ||
22952 | } else { | ||
22953 | return this._weekdaysRegex; | ||
22954 | } | ||
22955 | } else { | ||
22956 | if (!hasOwnProp(this, '_weekdaysRegex')) { | ||
22957 | this._weekdaysRegex = defaultWeekdaysRegex; | ||
22958 | } | ||
22959 | return this._weekdaysStrictRegex && isStrict ? | ||
22960 | this._weekdaysStrictRegex : this._weekdaysRegex; | ||
22961 | } | ||
22962 | } | ||
22963 | |||
22964 | var defaultWeekdaysShortRegex = matchWord; | ||
22965 | function weekdaysShortRegex (isStrict) { | ||
22966 | if (this._weekdaysParseExact) { | ||
22967 | if (!hasOwnProp(this, '_weekdaysRegex')) { | ||
22968 | computeWeekdaysParse.call(this); | ||
22969 | } | ||
22970 | if (isStrict) { | ||
22971 | return this._weekdaysShortStrictRegex; | ||
22972 | } else { | ||
22973 | return this._weekdaysShortRegex; | ||
22974 | } | ||
22975 | } else { | ||
22976 | if (!hasOwnProp(this, '_weekdaysShortRegex')) { | ||
22977 | this._weekdaysShortRegex = defaultWeekdaysShortRegex; | ||
22978 | } | ||
22979 | return this._weekdaysShortStrictRegex && isStrict ? | ||
22980 | this._weekdaysShortStrictRegex : this._weekdaysShortRegex; | ||
22981 | } | ||
22982 | } | ||
22983 | |||
22984 | var defaultWeekdaysMinRegex = matchWord; | ||
22985 | function weekdaysMinRegex (isStrict) { | ||
22986 | if (this._weekdaysParseExact) { | ||
22987 | if (!hasOwnProp(this, '_weekdaysRegex')) { | ||
22988 | computeWeekdaysParse.call(this); | ||
22989 | } | ||
22990 | if (isStrict) { | ||
22991 | return this._weekdaysMinStrictRegex; | ||
22992 | } else { | ||
22993 | return this._weekdaysMinRegex; | ||
22994 | } | ||
22995 | } else { | ||
22996 | if (!hasOwnProp(this, '_weekdaysMinRegex')) { | ||
22997 | this._weekdaysMinRegex = defaultWeekdaysMinRegex; | ||
22998 | } | ||
22999 | return this._weekdaysMinStrictRegex && isStrict ? | ||
23000 | this._weekdaysMinStrictRegex : this._weekdaysMinRegex; | ||
23001 | } | ||
23002 | } | ||
23003 | |||
23004 | |||
23005 | function computeWeekdaysParse () { | ||
23006 | function cmpLenRev(a, b) { | ||
23007 | return b.length - a.length; | ||
23008 | } | ||
23009 | |||
23010 | var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], | ||
23011 | i, mom, minp, shortp, longp; | ||
23012 | for (i = 0; i < 7; i++) { | ||
23013 | // make the regex if we don't have it already | ||
23014 | mom = createUTC([2000, 1]).day(i); | ||
23015 | minp = this.weekdaysMin(mom, ''); | ||
23016 | shortp = this.weekdaysShort(mom, ''); | ||
23017 | longp = this.weekdays(mom, ''); | ||
23018 | minPieces.push(minp); | ||
23019 | shortPieces.push(shortp); | ||
23020 | longPieces.push(longp); | ||
23021 | mixedPieces.push(minp); | ||
23022 | mixedPieces.push(shortp); | ||
23023 | mixedPieces.push(longp); | ||
23024 | } | ||
23025 | // Sorting makes sure if one weekday (or abbr) is a prefix of another it | ||
23026 | // will match the longer piece. | ||
23027 | minPieces.sort(cmpLenRev); | ||
23028 | shortPieces.sort(cmpLenRev); | ||
23029 | longPieces.sort(cmpLenRev); | ||
23030 | mixedPieces.sort(cmpLenRev); | ||
23031 | for (i = 0; i < 7; i++) { | ||
23032 | shortPieces[i] = regexEscape(shortPieces[i]); | ||
23033 | longPieces[i] = regexEscape(longPieces[i]); | ||
23034 | mixedPieces[i] = regexEscape(mixedPieces[i]); | ||
23035 | } | ||
23036 | |||
23037 | this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); | ||
23038 | this._weekdaysShortRegex = this._weekdaysRegex; | ||
23039 | this._weekdaysMinRegex = this._weekdaysRegex; | ||
23040 | |||
23041 | this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); | ||
23042 | this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); | ||
23043 | this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); | ||
23044 | } | ||
23045 | |||
23046 | // FORMATTING | ||
23047 | |||
23048 | function hFormat() { | ||
23049 | return this.hours() % 12 || 12; | ||
23050 | } | ||
23051 | |||
23052 | function kFormat() { | ||
23053 | return this.hours() || 24; | ||
23054 | } | ||
23055 | |||
23056 | addFormatToken('H', ['HH', 2], 0, 'hour'); | ||
23057 | addFormatToken('h', ['hh', 2], 0, hFormat); | ||
23058 | addFormatToken('k', ['kk', 2], 0, kFormat); | ||
23059 | |||
23060 | addFormatToken('hmm', 0, 0, function () { | ||
23061 | return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); | ||
23062 | }); | ||
23063 | |||
23064 | addFormatToken('hmmss', 0, 0, function () { | ||
23065 | return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + | ||
23066 | zeroFill(this.seconds(), 2); | ||
23067 | }); | ||
23068 | |||
23069 | addFormatToken('Hmm', 0, 0, function () { | ||
23070 | return '' + this.hours() + zeroFill(this.minutes(), 2); | ||
23071 | }); | ||
23072 | |||
23073 | addFormatToken('Hmmss', 0, 0, function () { | ||
23074 | return '' + this.hours() + zeroFill(this.minutes(), 2) + | ||
23075 | zeroFill(this.seconds(), 2); | ||
23076 | }); | ||
23077 | |||
23078 | function meridiem (token, lowercase) { | ||
23079 | addFormatToken(token, 0, 0, function () { | ||
23080 | return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); | ||
23081 | }); | ||
23082 | } | ||
23083 | |||
23084 | meridiem('a', true); | ||
23085 | meridiem('A', false); | ||
23086 | |||
23087 | // ALIASES | ||
23088 | |||
23089 | addUnitAlias('hour', 'h'); | ||
23090 | |||
23091 | // PRIORITY | ||
23092 | addUnitPriority('hour', 13); | ||
23093 | |||
23094 | // PARSING | ||
23095 | |||
23096 | function matchMeridiem (isStrict, locale) { | ||
23097 | return locale._meridiemParse; | ||
23098 | } | ||
23099 | |||
23100 | addRegexToken('a', matchMeridiem); | ||
23101 | addRegexToken('A', matchMeridiem); | ||
23102 | addRegexToken('H', match1to2); | ||
23103 | addRegexToken('h', match1to2); | ||
23104 | addRegexToken('k', match1to2); | ||
23105 | addRegexToken('HH', match1to2, match2); | ||
23106 | addRegexToken('hh', match1to2, match2); | ||
23107 | addRegexToken('kk', match1to2, match2); | ||
23108 | |||
23109 | addRegexToken('hmm', match3to4); | ||
23110 | addRegexToken('hmmss', match5to6); | ||
23111 | addRegexToken('Hmm', match3to4); | ||
23112 | addRegexToken('Hmmss', match5to6); | ||
23113 | |||
23114 | addParseToken(['H', 'HH'], HOUR); | ||
23115 | addParseToken(['k', 'kk'], function (input, array, config) { | ||
23116 | var kInput = toInt(input); | ||
23117 | array[HOUR] = kInput === 24 ? 0 : kInput; | ||
23118 | }); | ||
23119 | addParseToken(['a', 'A'], function (input, array, config) { | ||
23120 | config._isPm = config._locale.isPM(input); | ||
23121 | config._meridiem = input; | ||
23122 | }); | ||
23123 | addParseToken(['h', 'hh'], function (input, array, config) { | ||
23124 | array[HOUR] = toInt(input); | ||
23125 | getParsingFlags(config).bigHour = true; | ||
23126 | }); | ||
23127 | addParseToken('hmm', function (input, array, config) { | ||
23128 | var pos = input.length - 2; | ||
23129 | array[HOUR] = toInt(input.substr(0, pos)); | ||
23130 | array[MINUTE] = toInt(input.substr(pos)); | ||
23131 | getParsingFlags(config).bigHour = true; | ||
23132 | }); | ||
23133 | addParseToken('hmmss', function (input, array, config) { | ||
23134 | var pos1 = input.length - 4; | ||
23135 | var pos2 = input.length - 2; | ||
23136 | array[HOUR] = toInt(input.substr(0, pos1)); | ||
23137 | array[MINUTE] = toInt(input.substr(pos1, 2)); | ||
23138 | array[SECOND] = toInt(input.substr(pos2)); | ||
23139 | getParsingFlags(config).bigHour = true; | ||
23140 | }); | ||
23141 | addParseToken('Hmm', function (input, array, config) { | ||
23142 | var pos = input.length - 2; | ||
23143 | array[HOUR] = toInt(input.substr(0, pos)); | ||
23144 | array[MINUTE] = toInt(input.substr(pos)); | ||
23145 | }); | ||
23146 | addParseToken('Hmmss', function (input, array, config) { | ||
23147 | var pos1 = input.length - 4; | ||
23148 | var pos2 = input.length - 2; | ||
23149 | array[HOUR] = toInt(input.substr(0, pos1)); | ||
23150 | array[MINUTE] = toInt(input.substr(pos1, 2)); | ||
23151 | array[SECOND] = toInt(input.substr(pos2)); | ||
23152 | }); | ||
23153 | |||
23154 | // LOCALES | ||
23155 | |||
23156 | function localeIsPM (input) { | ||
23157 | // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays | ||
23158 | // Using charAt should be more compatible. | ||
23159 | return ((input + '').toLowerCase().charAt(0) === 'p'); | ||
23160 | } | ||
23161 | |||
23162 | var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; | ||
23163 | function localeMeridiem (hours, minutes, isLower) { | ||
23164 | if (hours > 11) { | ||
23165 | return isLower ? 'pm' : 'PM'; | ||
23166 | } else { | ||
23167 | return isLower ? 'am' : 'AM'; | ||
23168 | } | ||
23169 | } | ||
23170 | |||
23171 | |||
23172 | // MOMENTS | ||
23173 | |||
23174 | // Setting the hour should keep the time, because the user explicitly | ||
23175 | // specified which hour he wants. So trying to maintain the same hour (in | ||
23176 | // a new timezone) makes sense. Adding/subtracting hours does not follow | ||
23177 | // this rule. | ||
23178 | var getSetHour = makeGetSet('Hours', true); | ||
23179 | |||
23180 | // months | ||
23181 | // week | ||
23182 | // weekdays | ||
23183 | // meridiem | ||
23184 | var baseConfig = { | ||
23185 | calendar: defaultCalendar, | ||
23186 | longDateFormat: defaultLongDateFormat, | ||
23187 | invalidDate: defaultInvalidDate, | ||
23188 | ordinal: defaultOrdinal, | ||
23189 | dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, | ||
23190 | relativeTime: defaultRelativeTime, | ||
23191 | |||
23192 | months: defaultLocaleMonths, | ||
23193 | monthsShort: defaultLocaleMonthsShort, | ||
23194 | |||
23195 | week: defaultLocaleWeek, | ||
23196 | |||
23197 | weekdays: defaultLocaleWeekdays, | ||
23198 | weekdaysMin: defaultLocaleWeekdaysMin, | ||
23199 | weekdaysShort: defaultLocaleWeekdaysShort, | ||
23200 | |||
23201 | meridiemParse: defaultLocaleMeridiemParse | ||
23202 | }; | ||
23203 | |||
23204 | // internal storage for locale config files | ||
23205 | var locales = {}; | ||
23206 | var localeFamilies = {}; | ||
23207 | var globalLocale; | ||
23208 | |||
23209 | function normalizeLocale(key) { | ||
23210 | return key ? key.toLowerCase().replace('_', '-') : key; | ||
23211 | } | ||
23212 | |||
23213 | // pick the locale from the array | ||
23214 | // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each | ||
23215 | // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root | ||
23216 | function chooseLocale(names) { | ||
23217 | var i = 0, j, next, locale, split; | ||
23218 | |||
23219 | while (i < names.length) { | ||
23220 | split = normalizeLocale(names[i]).split('-'); | ||
23221 | j = split.length; | ||
23222 | next = normalizeLocale(names[i + 1]); | ||
23223 | next = next ? next.split('-') : null; | ||
23224 | while (j > 0) { | ||
23225 | locale = loadLocale(split.slice(0, j).join('-')); | ||
23226 | if (locale) { | ||
23227 | return locale; | ||
23228 | } | ||
23229 | if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { | ||
23230 | //the next array item is better than a shallower substring of this one | ||
23231 | break; | ||
23232 | } | ||
23233 | j--; | ||
23234 | } | ||
23235 | i++; | ||
23236 | } | ||
23237 | return null; | ||
23238 | } | ||
23239 | |||
23240 | function loadLocale(name) { | ||
23241 | var oldLocale = null; | ||
23242 | // TODO: Find a better way to register and load all the locales in Node | ||
23243 | if (!locales[name] && (typeof module !== 'undefined') && | ||
23244 | module && module.exports) { | ||
23245 | try { | ||
23246 | oldLocale = globalLocale._abbr; | ||
23247 | require('./locale/' + name); | ||
23248 | // because defineLocale currently also sets the global locale, we | ||
23249 | // want to undo that for lazy loaded locales | ||
23250 | getSetGlobalLocale(oldLocale); | ||
23251 | } catch (e) { } | ||
23252 | } | ||
23253 | return locales[name]; | ||
23254 | } | ||
23255 | |||
23256 | // This function will load locale and then set the global locale. If | ||
23257 | // no arguments are passed in, it will simply return the current global | ||
23258 | // locale key. | ||
23259 | function getSetGlobalLocale (key, values) { | ||
23260 | var data; | ||
23261 | if (key) { | ||
23262 | if (isUndefined(values)) { | ||
23263 | data = getLocale(key); | ||
23264 | } | ||
23265 | else { | ||
23266 | data = defineLocale(key, values); | ||
23267 | } | ||
23268 | |||
23269 | if (data) { | ||
23270 | // moment.duration._locale = moment._locale = data; | ||
23271 | globalLocale = data; | ||
23272 | } | ||
23273 | } | ||
23274 | |||
23275 | return globalLocale._abbr; | ||
23276 | } | ||
23277 | |||
23278 | function defineLocale (name, config) { | ||
23279 | if (config !== null) { | ||
23280 | var parentConfig = baseConfig; | ||
23281 | config.abbr = name; | ||
23282 | if (locales[name] != null) { | ||
23283 | deprecateSimple('defineLocaleOverride', | ||
23284 | 'use moment.updateLocale(localeName, config) to change ' + | ||
23285 | 'an existing locale. moment.defineLocale(localeName, ' + | ||
23286 | 'config) should only be used for creating a new locale ' + | ||
23287 | 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); | ||
23288 | parentConfig = locales[name]._config; | ||
23289 | } else if (config.parentLocale != null) { | ||
23290 | if (locales[config.parentLocale] != null) { | ||
23291 | parentConfig = locales[config.parentLocale]._config; | ||
23292 | } else { | ||
23293 | if (!localeFamilies[config.parentLocale]) { | ||
23294 | localeFamilies[config.parentLocale] = []; | ||
23295 | } | ||
23296 | localeFamilies[config.parentLocale].push({ | ||
23297 | name: name, | ||
23298 | config: config | ||
23299 | }); | ||
23300 | return null; | ||
23301 | } | ||
23302 | } | ||
23303 | locales[name] = new Locale(mergeConfigs(parentConfig, config)); | ||
23304 | |||
23305 | if (localeFamilies[name]) { | ||
23306 | localeFamilies[name].forEach(function (x) { | ||
23307 | defineLocale(x.name, x.config); | ||
23308 | }); | ||
23309 | } | ||
23310 | |||
23311 | // backwards compat for now: also set the locale | ||
23312 | // make sure we set the locale AFTER all child locales have been | ||
23313 | // created, so we won't end up with the child locale set. | ||
23314 | getSetGlobalLocale(name); | ||
23315 | |||
23316 | |||
23317 | return locales[name]; | ||
23318 | } else { | ||
23319 | // useful for testing | ||
23320 | delete locales[name]; | ||
23321 | return null; | ||
23322 | } | ||
23323 | } | ||
23324 | |||
23325 | function updateLocale(name, config) { | ||
23326 | if (config != null) { | ||
23327 | var locale, parentConfig = baseConfig; | ||
23328 | // MERGE | ||
23329 | if (locales[name] != null) { | ||
23330 | parentConfig = locales[name]._config; | ||
23331 | } | ||
23332 | config = mergeConfigs(parentConfig, config); | ||
23333 | locale = new Locale(config); | ||
23334 | locale.parentLocale = locales[name]; | ||
23335 | locales[name] = locale; | ||
23336 | |||
23337 | // backwards compat for now: also set the locale | ||
23338 | getSetGlobalLocale(name); | ||
23339 | } else { | ||
23340 | // pass null for config to unupdate, useful for tests | ||
23341 | if (locales[name] != null) { | ||
23342 | if (locales[name].parentLocale != null) { | ||
23343 | locales[name] = locales[name].parentLocale; | ||
23344 | } else if (locales[name] != null) { | ||
23345 | delete locales[name]; | ||
23346 | } | ||
23347 | } | ||
23348 | } | ||
23349 | return locales[name]; | ||
23350 | } | ||
23351 | |||
23352 | // returns locale data | ||
23353 | function getLocale (key) { | ||
23354 | var locale; | ||
23355 | |||
23356 | if (key && key._locale && key._locale._abbr) { | ||
23357 | key = key._locale._abbr; | ||
23358 | } | ||
23359 | |||
23360 | if (!key) { | ||
23361 | return globalLocale; | ||
23362 | } | ||
23363 | |||
23364 | if (!isArray(key)) { | ||
23365 | //short-circuit everything else | ||
23366 | locale = loadLocale(key); | ||
23367 | if (locale) { | ||
23368 | return locale; | ||
23369 | } | ||
23370 | key = [key]; | ||
23371 | } | ||
23372 | |||
23373 | return chooseLocale(key); | ||
23374 | } | ||
23375 | |||
23376 | function listLocales() { | ||
23377 | return keys$1(locales); | ||
23378 | } | ||
23379 | |||
23380 | function checkOverflow (m) { | ||
23381 | var overflow; | ||
23382 | var a = m._a; | ||
23383 | |||
23384 | if (a && getParsingFlags(m).overflow === -2) { | ||
23385 | overflow = | ||
23386 | a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : | ||
23387 | a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : | ||
23388 | a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : | ||
23389 | a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : | ||
23390 | a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : | ||
23391 | a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : | ||
23392 | -1; | ||
23393 | |||
23394 | if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { | ||
23395 | overflow = DATE; | ||
23396 | } | ||
23397 | if (getParsingFlags(m)._overflowWeeks && overflow === -1) { | ||
23398 | overflow = WEEK; | ||
23399 | } | ||
23400 | if (getParsingFlags(m)._overflowWeekday && overflow === -1) { | ||
23401 | overflow = WEEKDAY; | ||
23402 | } | ||
23403 | |||
23404 | getParsingFlags(m).overflow = overflow; | ||
23405 | } | ||
23406 | |||
23407 | return m; | ||
23408 | } | ||
23409 | |||
23410 | // iso 8601 regex | ||
23411 | // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) | ||
23412 | var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; | ||
23413 | var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; | ||
23414 | |||
23415 | var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; | ||
23416 | |||
23417 | var isoDates = [ | ||
23418 | ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], | ||
23419 | ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], | ||
23420 | ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], | ||
23421 | ['GGGG-[W]WW', /\d{4}-W\d\d/, false], | ||
23422 | ['YYYY-DDD', /\d{4}-\d{3}/], | ||
23423 | ['YYYY-MM', /\d{4}-\d\d/, false], | ||
23424 | ['YYYYYYMMDD', /[+-]\d{10}/], | ||
23425 | ['YYYYMMDD', /\d{8}/], | ||
23426 | // YYYYMM is NOT allowed by the standard | ||
23427 | ['GGGG[W]WWE', /\d{4}W\d{3}/], | ||
23428 | ['GGGG[W]WW', /\d{4}W\d{2}/, false], | ||
23429 | ['YYYYDDD', /\d{7}/] | ||
23430 | ]; | ||
23431 | |||
23432 | // iso time formats and regexes | ||
23433 | var isoTimes = [ | ||
23434 | ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], | ||
23435 | ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], | ||
23436 | ['HH:mm:ss', /\d\d:\d\d:\d\d/], | ||
23437 | ['HH:mm', /\d\d:\d\d/], | ||
23438 | ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], | ||
23439 | ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], | ||
23440 | ['HHmmss', /\d\d\d\d\d\d/], | ||
23441 | ['HHmm', /\d\d\d\d/], | ||
23442 | ['HH', /\d\d/] | ||
23443 | ]; | ||
23444 | |||
23445 | var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; | ||
23446 | |||
23447 | // date from iso format | ||
23448 | function configFromISO(config) { | ||
23449 | var i, l, | ||
23450 | string = config._i, | ||
23451 | match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), | ||
23452 | allowTime, dateFormat, timeFormat, tzFormat; | ||
23453 | |||
23454 | if (match) { | ||
23455 | getParsingFlags(config).iso = true; | ||
23456 | |||
23457 | for (i = 0, l = isoDates.length; i < l; i++) { | ||
23458 | if (isoDates[i][1].exec(match[1])) { | ||
23459 | dateFormat = isoDates[i][0]; | ||
23460 | allowTime = isoDates[i][2] !== false; | ||
23461 | break; | ||
23462 | } | ||
23463 | } | ||
23464 | if (dateFormat == null) { | ||
23465 | config._isValid = false; | ||
23466 | return; | ||
23467 | } | ||
23468 | if (match[3]) { | ||
23469 | for (i = 0, l = isoTimes.length; i < l; i++) { | ||
23470 | if (isoTimes[i][1].exec(match[3])) { | ||
23471 | // match[2] should be 'T' or space | ||
23472 | timeFormat = (match[2] || ' ') + isoTimes[i][0]; | ||
23473 | break; | ||
23474 | } | ||
23475 | } | ||
23476 | if (timeFormat == null) { | ||
23477 | config._isValid = false; | ||
23478 | return; | ||
23479 | } | ||
23480 | } | ||
23481 | if (!allowTime && timeFormat != null) { | ||
23482 | config._isValid = false; | ||
23483 | return; | ||
23484 | } | ||
23485 | if (match[4]) { | ||
23486 | if (tzRegex.exec(match[4])) { | ||
23487 | tzFormat = 'Z'; | ||
23488 | } else { | ||
23489 | config._isValid = false; | ||
23490 | return; | ||
23491 | } | ||
23492 | } | ||
23493 | config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); | ||
23494 | configFromStringAndFormat(config); | ||
23495 | } else { | ||
23496 | config._isValid = false; | ||
23497 | } | ||
23498 | } | ||
23499 | |||
23500 | // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 | ||
23501 | var basicRfcRegex = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/; | ||
23502 | |||
23503 | // date and time from ref 2822 format | ||
23504 | function configFromRFC2822(config) { | ||
23505 | var string, match, dayFormat, | ||
23506 | dateFormat, timeFormat, tzFormat; | ||
23507 | var timezones = { | ||
23508 | ' GMT': ' +0000', | ||
23509 | ' EDT': ' -0400', | ||
23510 | ' EST': ' -0500', | ||
23511 | ' CDT': ' -0500', | ||
23512 | ' CST': ' -0600', | ||
23513 | ' MDT': ' -0600', | ||
23514 | ' MST': ' -0700', | ||
23515 | ' PDT': ' -0700', | ||
23516 | ' PST': ' -0800' | ||
23517 | }; | ||
23518 | var military = 'YXWVUTSRQPONZABCDEFGHIKLM'; | ||
23519 | var timezone, timezoneIndex; | ||
23520 | |||
23521 | string = config._i | ||
23522 | .replace(/\([^\)]*\)|[\n\t]/g, ' ') // Remove comments and folding whitespace | ||
23523 | .replace(/(\s\s+)/g, ' ') // Replace multiple-spaces with a single space | ||
23524 | .replace(/^\s|\s$/g, ''); // Remove leading and trailing spaces | ||
23525 | match = basicRfcRegex.exec(string); | ||
23526 | |||
23527 | if (match) { | ||
23528 | dayFormat = match[1] ? 'ddd' + ((match[1].length === 5) ? ', ' : ' ') : ''; | ||
23529 | dateFormat = 'D MMM ' + ((match[2].length > 10) ? 'YYYY ' : 'YY '); | ||
23530 | timeFormat = 'HH:mm' + (match[4] ? ':ss' : ''); | ||
23531 | |||
23532 | // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. | ||
23533 | if (match[1]) { // day of week given | ||
23534 | var momentDate = new Date(match[2]); | ||
23535 | var momentDay = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][momentDate.getDay()]; | ||
23536 | |||
23537 | if (match[1].substr(0,3) !== momentDay) { | ||
23538 | getParsingFlags(config).weekdayMismatch = true; | ||
23539 | config._isValid = false; | ||
23540 | return; | ||
23541 | } | ||
23542 | } | ||
23543 | |||
23544 | switch (match[5].length) { | ||
23545 | case 2: // military | ||
23546 | if (timezoneIndex === 0) { | ||
23547 | timezone = ' +0000'; | ||
23548 | } else { | ||
23549 | timezoneIndex = military.indexOf(match[5][1].toUpperCase()) - 12; | ||
23550 | timezone = ((timezoneIndex < 0) ? ' -' : ' +') + | ||
23551 | (('' + timezoneIndex).replace(/^-?/, '0')).match(/..$/)[0] + '00'; | ||
23552 | } | ||
23553 | break; | ||
23554 | case 4: // Zone | ||
23555 | timezone = timezones[match[5]]; | ||
23556 | break; | ||
23557 | default: // UT or +/-9999 | ||
23558 | timezone = timezones[' GMT']; | ||
23559 | } | ||
23560 | match[5] = timezone; | ||
23561 | config._i = match.splice(1).join(''); | ||
23562 | tzFormat = ' ZZ'; | ||
23563 | config._f = dayFormat + dateFormat + timeFormat + tzFormat; | ||
23564 | configFromStringAndFormat(config); | ||
23565 | getParsingFlags(config).rfc2822 = true; | ||
23566 | } else { | ||
23567 | config._isValid = false; | ||
23568 | } | ||
23569 | } | ||
23570 | |||
23571 | // date from iso format or fallback | ||
23572 | function configFromString(config) { | ||
23573 | var matched = aspNetJsonRegex.exec(config._i); | ||
23574 | |||
23575 | if (matched !== null) { | ||
23576 | config._d = new Date(+matched[1]); | ||
23577 | return; | ||
23578 | } | ||
23579 | |||
23580 | configFromISO(config); | ||
23581 | if (config._isValid === false) { | ||
23582 | delete config._isValid; | ||
23583 | } else { | ||
23584 | return; | ||
23585 | } | ||
23586 | |||
23587 | configFromRFC2822(config); | ||
23588 | if (config._isValid === false) { | ||
23589 | delete config._isValid; | ||
23590 | } else { | ||
23591 | return; | ||
23592 | } | ||
23593 | |||
23594 | // Final attempt, use Input Fallback | ||
23595 | hooks.createFromInputFallback(config); | ||
23596 | } | ||
23597 | |||
23598 | hooks.createFromInputFallback = deprecate( | ||
23599 | 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + | ||
23600 | 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + | ||
23601 | 'discouraged and will be removed in an upcoming major release. Please refer to ' + | ||
23602 | 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', | ||
23603 | function (config) { | ||
23604 | config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); | ||
23605 | } | ||
23606 | ); | ||
23607 | |||
23608 | // Pick the first defined of two or three arguments. | ||
23609 | function defaults(a, b, c) { | ||
23610 | if (a != null) { | ||
23611 | return a; | ||
23612 | } | ||
23613 | if (b != null) { | ||
23614 | return b; | ||
23615 | } | ||
23616 | return c; | ||
23617 | } | ||
23618 | |||
23619 | function currentDateArray(config) { | ||
23620 | // hooks is actually the exported moment object | ||
23621 | var nowValue = new Date(hooks.now()); | ||
23622 | if (config._useUTC) { | ||
23623 | return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; | ||
23624 | } | ||
23625 | return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; | ||
23626 | } | ||
23627 | |||
23628 | // convert an array to a date. | ||
23629 | // the array should mirror the parameters below | ||
23630 | // note: all values past the year are optional and will default to the lowest possible value. | ||
23631 | // [year, month, day , hour, minute, second, millisecond] | ||
23632 | function configFromArray (config) { | ||
23633 | var i, date, input = [], currentDate, yearToUse; | ||
23634 | |||
23635 | if (config._d) { | ||
23636 | return; | ||
23637 | } | ||
23638 | |||
23639 | currentDate = currentDateArray(config); | ||
23640 | |||
23641 | //compute day of the year from weeks and weekdays | ||
23642 | if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { | ||
23643 | dayOfYearFromWeekInfo(config); | ||
23644 | } | ||
23645 | |||
23646 | //if the day of the year is set, figure out what it is | ||
23647 | if (config._dayOfYear != null) { | ||
23648 | yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); | ||
23649 | |||
23650 | if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { | ||
23651 | getParsingFlags(config)._overflowDayOfYear = true; | ||
23652 | } | ||
23653 | |||
23654 | date = createUTCDate(yearToUse, 0, config._dayOfYear); | ||
23655 | config._a[MONTH] = date.getUTCMonth(); | ||
23656 | config._a[DATE] = date.getUTCDate(); | ||
23657 | } | ||
23658 | |||
23659 | // Default to current date. | ||
23660 | // * if no year, month, day of month are given, default to today | ||
23661 | // * if day of month is given, default month and year | ||
23662 | // * if month is given, default only year | ||
23663 | // * if year is given, don't default anything | ||
23664 | for (i = 0; i < 3 && config._a[i] == null; ++i) { | ||
23665 | config._a[i] = input[i] = currentDate[i]; | ||
23666 | } | ||
23667 | |||
23668 | // Zero out whatever was not defaulted, including time | ||
23669 | for (; i < 7; i++) { | ||
23670 | config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; | ||
23671 | } | ||
23672 | |||
23673 | // Check for 24:00:00.000 | ||
23674 | if (config._a[HOUR] === 24 && | ||
23675 | config._a[MINUTE] === 0 && | ||
23676 | config._a[SECOND] === 0 && | ||
23677 | config._a[MILLISECOND] === 0) { | ||
23678 | config._nextDay = true; | ||
23679 | config._a[HOUR] = 0; | ||
23680 | } | ||
23681 | |||
23682 | config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); | ||
23683 | // Apply timezone offset from input. The actual utcOffset can be changed | ||
23684 | // with parseZone. | ||
23685 | if (config._tzm != null) { | ||
23686 | config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); | ||
23687 | } | ||
23688 | |||
23689 | if (config._nextDay) { | ||
23690 | config._a[HOUR] = 24; | ||
23691 | } | ||
23692 | } | ||
23693 | |||
23694 | function dayOfYearFromWeekInfo(config) { | ||
23695 | var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; | ||
23696 | |||
23697 | w = config._w; | ||
23698 | if (w.GG != null || w.W != null || w.E != null) { | ||
23699 | dow = 1; | ||
23700 | doy = 4; | ||
23701 | |||
23702 | // TODO: We need to take the current isoWeekYear, but that depends on | ||
23703 | // how we interpret now (local, utc, fixed offset). So create | ||
23704 | // a now version of current config (take local/utc/offset flags, and | ||
23705 | // create now). | ||
23706 | weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); | ||
23707 | week = defaults(w.W, 1); | ||
23708 | weekday = defaults(w.E, 1); | ||
23709 | if (weekday < 1 || weekday > 7) { | ||
23710 | weekdayOverflow = true; | ||
23711 | } | ||
23712 | } else { | ||
23713 | dow = config._locale._week.dow; | ||
23714 | doy = config._locale._week.doy; | ||
23715 | |||
23716 | var curWeek = weekOfYear(createLocal(), dow, doy); | ||
23717 | |||
23718 | weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); | ||
23719 | |||
23720 | // Default to current week. | ||
23721 | week = defaults(w.w, curWeek.week); | ||
23722 | |||
23723 | if (w.d != null) { | ||
23724 | // weekday -- low day numbers are considered next week | ||
23725 | weekday = w.d; | ||
23726 | if (weekday < 0 || weekday > 6) { | ||
23727 | weekdayOverflow = true; | ||
23728 | } | ||
23729 | } else if (w.e != null) { | ||
23730 | // local weekday -- counting starts from begining of week | ||
23731 | weekday = w.e + dow; | ||
23732 | if (w.e < 0 || w.e > 6) { | ||
23733 | weekdayOverflow = true; | ||
23734 | } | ||
23735 | } else { | ||
23736 | // default to begining of week | ||
23737 | weekday = dow; | ||
23738 | } | ||
23739 | } | ||
23740 | if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { | ||
23741 | getParsingFlags(config)._overflowWeeks = true; | ||
23742 | } else if (weekdayOverflow != null) { | ||
23743 | getParsingFlags(config)._overflowWeekday = true; | ||
23744 | } else { | ||
23745 | temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); | ||
23746 | config._a[YEAR] = temp.year; | ||
23747 | config._dayOfYear = temp.dayOfYear; | ||
23748 | } | ||
23749 | } | ||
23750 | |||
23751 | // constant that refers to the ISO standard | ||
23752 | hooks.ISO_8601 = function () {}; | ||
23753 | |||
23754 | // constant that refers to the RFC 2822 form | ||
23755 | hooks.RFC_2822 = function () {}; | ||
23756 | |||
23757 | // date from string and format string | ||
23758 | function configFromStringAndFormat(config) { | ||
23759 | // TODO: Move this to another part of the creation flow to prevent circular deps | ||
23760 | if (config._f === hooks.ISO_8601) { | ||
23761 | configFromISO(config); | ||
23762 | return; | ||
23763 | } | ||
23764 | if (config._f === hooks.RFC_2822) { | ||
23765 | configFromRFC2822(config); | ||
23766 | return; | ||
23767 | } | ||
23768 | config._a = []; | ||
23769 | getParsingFlags(config).empty = true; | ||
23770 | |||
23771 | // This array is used to make a Date, either with `new Date` or `Date.UTC` | ||
23772 | var string = '' + config._i, | ||
23773 | i, parsedInput, tokens, token, skipped, | ||
23774 | stringLength = string.length, | ||
23775 | totalParsedInputLength = 0; | ||
23776 | |||
23777 | tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; | ||
23778 | |||
23779 | for (i = 0; i < tokens.length; i++) { | ||
23780 | token = tokens[i]; | ||
23781 | parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; | ||
23782 | // console.log('token', token, 'parsedInput', parsedInput, | ||
23783 | // 'regex', getParseRegexForToken(token, config)); | ||
23784 | if (parsedInput) { | ||
23785 | skipped = string.substr(0, string.indexOf(parsedInput)); | ||
23786 | if (skipped.length > 0) { | ||
23787 | getParsingFlags(config).unusedInput.push(skipped); | ||
23788 | } | ||
23789 | string = string.slice(string.indexOf(parsedInput) + parsedInput.length); | ||
23790 | totalParsedInputLength += parsedInput.length; | ||
23791 | } | ||
23792 | // don't parse if it's not a known token | ||
23793 | if (formatTokenFunctions[token]) { | ||
23794 | if (parsedInput) { | ||
23795 | getParsingFlags(config).empty = false; | ||
23796 | } | ||
23797 | else { | ||
23798 | getParsingFlags(config).unusedTokens.push(token); | ||
23799 | } | ||
23800 | addTimeToArrayFromToken(token, parsedInput, config); | ||
23801 | } | ||
23802 | else if (config._strict && !parsedInput) { | ||
23803 | getParsingFlags(config).unusedTokens.push(token); | ||
23804 | } | ||
23805 | } | ||
23806 | |||
23807 | // add remaining unparsed input length to the string | ||
23808 | getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; | ||
23809 | if (string.length > 0) { | ||
23810 | getParsingFlags(config).unusedInput.push(string); | ||
23811 | } | ||
23812 | |||
23813 | // clear _12h flag if hour is <= 12 | ||
23814 | if (config._a[HOUR] <= 12 && | ||
23815 | getParsingFlags(config).bigHour === true && | ||
23816 | config._a[HOUR] > 0) { | ||
23817 | getParsingFlags(config).bigHour = undefined; | ||
23818 | } | ||
23819 | |||
23820 | getParsingFlags(config).parsedDateParts = config._a.slice(0); | ||
23821 | getParsingFlags(config).meridiem = config._meridiem; | ||
23822 | // handle meridiem | ||
23823 | config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); | ||
23824 | |||
23825 | configFromArray(config); | ||
23826 | checkOverflow(config); | ||
23827 | } | ||
23828 | |||
23829 | |||
23830 | function meridiemFixWrap (locale, hour, meridiem) { | ||
23831 | var isPm; | ||
23832 | |||
23833 | if (meridiem == null) { | ||
23834 | // nothing to do | ||
23835 | return hour; | ||
23836 | } | ||
23837 | if (locale.meridiemHour != null) { | ||
23838 | return locale.meridiemHour(hour, meridiem); | ||
23839 | } else if (locale.isPM != null) { | ||
23840 | // Fallback | ||
23841 | isPm = locale.isPM(meridiem); | ||
23842 | if (isPm && hour < 12) { | ||
23843 | hour += 12; | ||
23844 | } | ||
23845 | if (!isPm && hour === 12) { | ||
23846 | hour = 0; | ||
23847 | } | ||
23848 | return hour; | ||
23849 | } else { | ||
23850 | // this is not supposed to happen | ||
23851 | return hour; | ||
23852 | } | ||
23853 | } | ||
23854 | |||
23855 | // date from string and array of format strings | ||
23856 | function configFromStringAndArray(config) { | ||
23857 | var tempConfig, | ||
23858 | bestMoment, | ||
23859 | |||
23860 | scoreToBeat, | ||
23861 | i, | ||
23862 | currentScore; | ||
23863 | |||
23864 | if (config._f.length === 0) { | ||
23865 | getParsingFlags(config).invalidFormat = true; | ||
23866 | config._d = new Date(NaN); | ||
23867 | return; | ||
23868 | } | ||
23869 | |||
23870 | for (i = 0; i < config._f.length; i++) { | ||
23871 | currentScore = 0; | ||
23872 | tempConfig = copyConfig({}, config); | ||
23873 | if (config._useUTC != null) { | ||
23874 | tempConfig._useUTC = config._useUTC; | ||
23875 | } | ||
23876 | tempConfig._f = config._f[i]; | ||
23877 | configFromStringAndFormat(tempConfig); | ||
23878 | |||
23879 | if (!isValid(tempConfig)) { | ||
23880 | continue; | ||
23881 | } | ||
23882 | |||
23883 | // if there is any input that was not parsed add a penalty for that format | ||
23884 | currentScore += getParsingFlags(tempConfig).charsLeftOver; | ||
23885 | |||
23886 | //or tokens | ||
23887 | currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; | ||
23888 | |||
23889 | getParsingFlags(tempConfig).score = currentScore; | ||
23890 | |||
23891 | if (scoreToBeat == null || currentScore < scoreToBeat) { | ||
23892 | scoreToBeat = currentScore; | ||
23893 | bestMoment = tempConfig; | ||
23894 | } | ||
23895 | } | ||
23896 | |||
23897 | extend(config, bestMoment || tempConfig); | ||
23898 | } | ||
23899 | |||
23900 | function configFromObject(config) { | ||
23901 | if (config._d) { | ||
23902 | return; | ||
23903 | } | ||
23904 | |||
23905 | var i = normalizeObjectUnits(config._i); | ||
23906 | config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { | ||
23907 | return obj && parseInt(obj, 10); | ||
23908 | }); | ||
23909 | |||
23910 | configFromArray(config); | ||
23911 | } | ||
23912 | |||
23913 | function createFromConfig (config) { | ||
23914 | var res = new Moment(checkOverflow(prepareConfig(config))); | ||
23915 | if (res._nextDay) { | ||
23916 | // Adding is smart enough around DST | ||
23917 | res.add(1, 'd'); | ||
23918 | res._nextDay = undefined; | ||
23919 | } | ||
23920 | |||
23921 | return res; | ||
23922 | } | ||
23923 | |||
23924 | function prepareConfig (config) { | ||
23925 | var input = config._i, | ||
23926 | format = config._f; | ||
23927 | |||
23928 | config._locale = config._locale || getLocale(config._l); | ||
23929 | |||
23930 | if (input === null || (format === undefined && input === '')) { | ||
23931 | return createInvalid({nullInput: true}); | ||
23932 | } | ||
23933 | |||
23934 | if (typeof input === 'string') { | ||
23935 | config._i = input = config._locale.preparse(input); | ||
23936 | } | ||
23937 | |||
23938 | if (isMoment(input)) { | ||
23939 | return new Moment(checkOverflow(input)); | ||
23940 | } else if (isDate(input)) { | ||
23941 | config._d = input; | ||
23942 | } else if (isArray(format)) { | ||
23943 | configFromStringAndArray(config); | ||
23944 | } else if (format) { | ||
23945 | configFromStringAndFormat(config); | ||
23946 | } else { | ||
23947 | configFromInput(config); | ||
23948 | } | ||
23949 | |||
23950 | if (!isValid(config)) { | ||
23951 | config._d = null; | ||
23952 | } | ||
23953 | |||
23954 | return config; | ||
23955 | } | ||
23956 | |||
23957 | function configFromInput(config) { | ||
23958 | var input = config._i; | ||
23959 | if (isUndefined(input)) { | ||
23960 | config._d = new Date(hooks.now()); | ||
23961 | } else if (isDate(input)) { | ||
23962 | config._d = new Date(input.valueOf()); | ||
23963 | } else if (typeof input === 'string') { | ||
23964 | configFromString(config); | ||
23965 | } else if (isArray(input)) { | ||
23966 | config._a = map(input.slice(0), function (obj) { | ||
23967 | return parseInt(obj, 10); | ||
23968 | }); | ||
23969 | configFromArray(config); | ||
23970 | } else if (isObject(input)) { | ||
23971 | configFromObject(config); | ||
23972 | } else if (isNumber(input)) { | ||
23973 | // from milliseconds | ||
23974 | config._d = new Date(input); | ||
23975 | } else { | ||
23976 | hooks.createFromInputFallback(config); | ||
23977 | } | ||
23978 | } | ||
23979 | |||
23980 | function createLocalOrUTC (input, format, locale, strict, isUTC) { | ||
23981 | var c = {}; | ||
23982 | |||
23983 | if (locale === true || locale === false) { | ||
23984 | strict = locale; | ||
23985 | locale = undefined; | ||
23986 | } | ||
23987 | |||
23988 | if ((isObject(input) && isObjectEmpty(input)) || | ||
23989 | (isArray(input) && input.length === 0)) { | ||
23990 | input = undefined; | ||
23991 | } | ||
23992 | // object construction must be done this way. | ||
23993 | // https://github.com/moment/moment/issues/1423 | ||
23994 | c._isAMomentObject = true; | ||
23995 | c._useUTC = c._isUTC = isUTC; | ||
23996 | c._l = locale; | ||
23997 | c._i = input; | ||
23998 | c._f = format; | ||
23999 | c._strict = strict; | ||
24000 | |||
24001 | return createFromConfig(c); | ||
24002 | } | ||
24003 | |||
24004 | function createLocal (input, format, locale, strict) { | ||
24005 | return createLocalOrUTC(input, format, locale, strict, false); | ||
24006 | } | ||
24007 | |||
24008 | var prototypeMin = deprecate( | ||
24009 | 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', | ||
24010 | function () { | ||
24011 | var other = createLocal.apply(null, arguments); | ||
24012 | if (this.isValid() && other.isValid()) { | ||
24013 | return other < this ? this : other; | ||
24014 | } else { | ||
24015 | return createInvalid(); | ||
24016 | } | ||
24017 | } | ||
24018 | ); | ||
24019 | |||
24020 | var prototypeMax = deprecate( | ||
24021 | 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', | ||
24022 | function () { | ||
24023 | var other = createLocal.apply(null, arguments); | ||
24024 | if (this.isValid() && other.isValid()) { | ||
24025 | return other > this ? this : other; | ||
24026 | } else { | ||
24027 | return createInvalid(); | ||
24028 | } | ||
24029 | } | ||
24030 | ); | ||
24031 | |||
24032 | // Pick a moment m from moments so that m[fn](other) is true for all | ||
24033 | // other. This relies on the function fn to be transitive. | ||
24034 | // | ||
24035 | // moments should either be an array of moment objects or an array, whose | ||
24036 | // first element is an array of moment objects. | ||
24037 | function pickBy(fn, moments) { | ||
24038 | var res, i; | ||
24039 | if (moments.length === 1 && isArray(moments[0])) { | ||
24040 | moments = moments[0]; | ||
24041 | } | ||
24042 | if (!moments.length) { | ||
24043 | return createLocal(); | ||
24044 | } | ||
24045 | res = moments[0]; | ||
24046 | for (i = 1; i < moments.length; ++i) { | ||
24047 | if (!moments[i].isValid() || moments[i][fn](res)) { | ||
24048 | res = moments[i]; | ||
24049 | } | ||
24050 | } | ||
24051 | return res; | ||
24052 | } | ||
24053 | |||
24054 | // TODO: Use [].sort instead? | ||
24055 | function min () { | ||
24056 | var args = [].slice.call(arguments, 0); | ||
24057 | |||
24058 | return pickBy('isBefore', args); | ||
24059 | } | ||
24060 | |||
24061 | function max () { | ||
24062 | var args = [].slice.call(arguments, 0); | ||
24063 | |||
24064 | return pickBy('isAfter', args); | ||
24065 | } | ||
24066 | |||
24067 | var now = function () { | ||
24068 | return Date.now ? Date.now() : +(new Date()); | ||
24069 | }; | ||
24070 | |||
24071 | var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; | ||
24072 | |||
24073 | function isDurationValid(m) { | ||
24074 | for (var key in m) { | ||
24075 | if (!(ordering.indexOf(key) !== -1 && (m[key] == null || !isNaN(m[key])))) { | ||
24076 | return false; | ||
24077 | } | ||
24078 | } | ||
24079 | |||
24080 | var unitHasDecimal = false; | ||
24081 | for (var i = 0; i < ordering.length; ++i) { | ||
24082 | if (m[ordering[i]]) { | ||
24083 | if (unitHasDecimal) { | ||
24084 | return false; // only allow non-integers for smallest unit | ||
24085 | } | ||
24086 | if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { | ||
24087 | unitHasDecimal = true; | ||
24088 | } | ||
24089 | } | ||
24090 | } | ||
24091 | |||
24092 | return true; | ||
24093 | } | ||
24094 | |||
24095 | function isValid$1() { | ||
24096 | return this._isValid; | ||
24097 | } | ||
24098 | |||
24099 | function createInvalid$1() { | ||
24100 | return createDuration(NaN); | ||
24101 | } | ||
24102 | |||
24103 | function Duration (duration) { | ||
24104 | var normalizedInput = normalizeObjectUnits(duration), | ||
24105 | years = normalizedInput.year || 0, | ||
24106 | quarters = normalizedInput.quarter || 0, | ||
24107 | months = normalizedInput.month || 0, | ||
24108 | weeks = normalizedInput.week || 0, | ||
24109 | days = normalizedInput.day || 0, | ||
24110 | hours = normalizedInput.hour || 0, | ||
24111 | minutes = normalizedInput.minute || 0, | ||
24112 | seconds = normalizedInput.second || 0, | ||
24113 | milliseconds = normalizedInput.millisecond || 0; | ||
24114 | |||
24115 | this._isValid = isDurationValid(normalizedInput); | ||
24116 | |||
24117 | // representation for dateAddRemove | ||
24118 | this._milliseconds = +milliseconds + | ||
24119 | seconds * 1e3 + // 1000 | ||
24120 | minutes * 6e4 + // 1000 * 60 | ||
24121 | hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 | ||
24122 | // Because of dateAddRemove treats 24 hours as different from a | ||
24123 | // day when working around DST, we need to store them separately | ||
24124 | this._days = +days + | ||
24125 | weeks * 7; | ||
24126 | // It is impossible translate months into days without knowing | ||
24127 | // which months you are are talking about, so we have to store | ||
24128 | // it separately. | ||
24129 | this._months = +months + | ||
24130 | quarters * 3 + | ||
24131 | years * 12; | ||
24132 | |||
24133 | this._data = {}; | ||
24134 | |||
24135 | this._locale = getLocale(); | ||
24136 | |||
24137 | this._bubble(); | ||
24138 | } | ||
24139 | |||
24140 | function isDuration (obj) { | ||
24141 | return obj instanceof Duration; | ||
24142 | } | ||
24143 | |||
24144 | function absRound (number) { | ||
24145 | if (number < 0) { | ||
24146 | return Math.round(-1 * number) * -1; | ||
24147 | } else { | ||
24148 | return Math.round(number); | ||
24149 | } | ||
24150 | } | ||
24151 | |||
24152 | // FORMATTING | ||
24153 | |||
24154 | function offset (token, separator) { | ||
24155 | addFormatToken(token, 0, 0, function () { | ||
24156 | var offset = this.utcOffset(); | ||
24157 | var sign = '+'; | ||
24158 | if (offset < 0) { | ||
24159 | offset = -offset; | ||
24160 | sign = '-'; | ||
24161 | } | ||
24162 | return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); | ||
24163 | }); | ||
24164 | } | ||
24165 | |||
24166 | offset('Z', ':'); | ||
24167 | offset('ZZ', ''); | ||
24168 | |||
24169 | // PARSING | ||
24170 | |||
24171 | addRegexToken('Z', matchShortOffset); | ||
24172 | addRegexToken('ZZ', matchShortOffset); | ||
24173 | addParseToken(['Z', 'ZZ'], function (input, array, config) { | ||
24174 | config._useUTC = true; | ||
24175 | config._tzm = offsetFromString(matchShortOffset, input); | ||
24176 | }); | ||
24177 | |||
24178 | // HELPERS | ||
24179 | |||
24180 | // timezone chunker | ||
24181 | // '+10:00' > ['10', '00'] | ||
24182 | // '-1530' > ['-15', '30'] | ||
24183 | var chunkOffset = /([\+\-]|\d\d)/gi; | ||
24184 | |||
24185 | function offsetFromString(matcher, string) { | ||
24186 | var matches = (string || '').match(matcher); | ||
24187 | |||
24188 | if (matches === null) { | ||
24189 | return null; | ||
24190 | } | ||
24191 | |||
24192 | var chunk = matches[matches.length - 1] || []; | ||
24193 | var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; | ||
24194 | var minutes = +(parts[1] * 60) + toInt(parts[2]); | ||
24195 | |||
24196 | return minutes === 0 ? | ||
24197 | 0 : | ||
24198 | parts[0] === '+' ? minutes : -minutes; | ||
24199 | } | ||
24200 | |||
24201 | // Return a moment from input, that is local/utc/zone equivalent to model. | ||
24202 | function cloneWithOffset(input, model) { | ||
24203 | var res, diff; | ||
24204 | if (model._isUTC) { | ||
24205 | res = model.clone(); | ||
24206 | diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); | ||
24207 | // Use low-level api, because this fn is low-level api. | ||
24208 | res._d.setTime(res._d.valueOf() + diff); | ||
24209 | hooks.updateOffset(res, false); | ||
24210 | return res; | ||
24211 | } else { | ||
24212 | return createLocal(input).local(); | ||
24213 | } | ||
24214 | } | ||
24215 | |||
24216 | function getDateOffset (m) { | ||
24217 | // On Firefox.24 Date#getTimezoneOffset returns a floating point. | ||
24218 | // https://github.com/moment/moment/pull/1871 | ||
24219 | return -Math.round(m._d.getTimezoneOffset() / 15) * 15; | ||
24220 | } | ||
24221 | |||
24222 | // HOOKS | ||
24223 | |||
24224 | // This function will be called whenever a moment is mutated. | ||
24225 | // It is intended to keep the offset in sync with the timezone. | ||
24226 | hooks.updateOffset = function () {}; | ||
24227 | |||
24228 | // MOMENTS | ||
24229 | |||
24230 | // keepLocalTime = true means only change the timezone, without | ||
24231 | // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> | ||
24232 | // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset | ||
24233 | // +0200, so we adjust the time as needed, to be valid. | ||
24234 | // | ||
24235 | // Keeping the time actually adds/subtracts (one hour) | ||
24236 | // from the actual represented time. That is why we call updateOffset | ||
24237 | // a second time. In case it wants us to change the offset again | ||
24238 | // _changeInProgress == true case, then we have to adjust, because | ||
24239 | // there is no such time in the given timezone. | ||
24240 | function getSetOffset (input, keepLocalTime, keepMinutes) { | ||
24241 | var offset = this._offset || 0, | ||
24242 | localAdjust; | ||
24243 | if (!this.isValid()) { | ||
24244 | return input != null ? this : NaN; | ||
24245 | } | ||
24246 | if (input != null) { | ||
24247 | if (typeof input === 'string') { | ||
24248 | input = offsetFromString(matchShortOffset, input); | ||
24249 | if (input === null) { | ||
24250 | return this; | ||
24251 | } | ||
24252 | } else if (Math.abs(input) < 16 && !keepMinutes) { | ||
24253 | input = input * 60; | ||
24254 | } | ||
24255 | if (!this._isUTC && keepLocalTime) { | ||
24256 | localAdjust = getDateOffset(this); | ||
24257 | } | ||
24258 | this._offset = input; | ||
24259 | this._isUTC = true; | ||
24260 | if (localAdjust != null) { | ||
24261 | this.add(localAdjust, 'm'); | ||
24262 | } | ||
24263 | if (offset !== input) { | ||
24264 | if (!keepLocalTime || this._changeInProgress) { | ||
24265 | addSubtract(this, createDuration(input - offset, 'm'), 1, false); | ||
24266 | } else if (!this._changeInProgress) { | ||
24267 | this._changeInProgress = true; | ||
24268 | hooks.updateOffset(this, true); | ||
24269 | this._changeInProgress = null; | ||
24270 | } | ||
24271 | } | ||
24272 | return this; | ||
24273 | } else { | ||
24274 | return this._isUTC ? offset : getDateOffset(this); | ||
24275 | } | ||
24276 | } | ||
24277 | |||
24278 | function getSetZone (input, keepLocalTime) { | ||
24279 | if (input != null) { | ||
24280 | if (typeof input !== 'string') { | ||
24281 | input = -input; | ||
24282 | } | ||
24283 | |||
24284 | this.utcOffset(input, keepLocalTime); | ||
24285 | |||
24286 | return this; | ||
24287 | } else { | ||
24288 | return -this.utcOffset(); | ||
24289 | } | ||
24290 | } | ||
24291 | |||
24292 | function setOffsetToUTC (keepLocalTime) { | ||
24293 | return this.utcOffset(0, keepLocalTime); | ||
24294 | } | ||
24295 | |||
24296 | function setOffsetToLocal (keepLocalTime) { | ||
24297 | if (this._isUTC) { | ||
24298 | this.utcOffset(0, keepLocalTime); | ||
24299 | this._isUTC = false; | ||
24300 | |||
24301 | if (keepLocalTime) { | ||
24302 | this.subtract(getDateOffset(this), 'm'); | ||
24303 | } | ||
24304 | } | ||
24305 | return this; | ||
24306 | } | ||
24307 | |||
24308 | function setOffsetToParsedOffset () { | ||
24309 | if (this._tzm != null) { | ||
24310 | this.utcOffset(this._tzm, false, true); | ||
24311 | } else if (typeof this._i === 'string') { | ||
24312 | var tZone = offsetFromString(matchOffset, this._i); | ||
24313 | if (tZone != null) { | ||
24314 | this.utcOffset(tZone); | ||
24315 | } | ||
24316 | else { | ||
24317 | this.utcOffset(0, true); | ||
24318 | } | ||
24319 | } | ||
24320 | return this; | ||
24321 | } | ||
24322 | |||
24323 | function hasAlignedHourOffset (input) { | ||
24324 | if (!this.isValid()) { | ||
24325 | return false; | ||
24326 | } | ||
24327 | input = input ? createLocal(input).utcOffset() : 0; | ||
24328 | |||
24329 | return (this.utcOffset() - input) % 60 === 0; | ||
24330 | } | ||
24331 | |||
24332 | function isDaylightSavingTime () { | ||
24333 | return ( | ||
24334 | this.utcOffset() > this.clone().month(0).utcOffset() || | ||
24335 | this.utcOffset() > this.clone().month(5).utcOffset() | ||
24336 | ); | ||
24337 | } | ||
24338 | |||
24339 | function isDaylightSavingTimeShifted () { | ||
24340 | if (!isUndefined(this._isDSTShifted)) { | ||
24341 | return this._isDSTShifted; | ||
24342 | } | ||
24343 | |||
24344 | var c = {}; | ||
24345 | |||
24346 | copyConfig(c, this); | ||
24347 | c = prepareConfig(c); | ||
24348 | |||
24349 | if (c._a) { | ||
24350 | var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); | ||
24351 | this._isDSTShifted = this.isValid() && | ||
24352 | compareArrays(c._a, other.toArray()) > 0; | ||
24353 | } else { | ||
24354 | this._isDSTShifted = false; | ||
24355 | } | ||
24356 | |||
24357 | return this._isDSTShifted; | ||
24358 | } | ||
24359 | |||
24360 | function isLocal () { | ||
24361 | return this.isValid() ? !this._isUTC : false; | ||
24362 | } | ||
24363 | |||
24364 | function isUtcOffset () { | ||
24365 | return this.isValid() ? this._isUTC : false; | ||
24366 | } | ||
24367 | |||
24368 | function isUtc () { | ||
24369 | return this.isValid() ? this._isUTC && this._offset === 0 : false; | ||
24370 | } | ||
24371 | |||
24372 | // ASP.NET json date format regex | ||
24373 | var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; | ||
24374 | |||
24375 | // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html | ||
24376 | // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere | ||
24377 | // and further modified to allow for strings containing both week and day | ||
24378 | var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/; | ||
24379 | |||
24380 | function createDuration (input, key) { | ||
24381 | var duration = input, | ||
24382 | // matching against regexp is expensive, do it on demand | ||
24383 | match = null, | ||
24384 | sign, | ||
24385 | ret, | ||
24386 | diffRes; | ||
24387 | |||
24388 | if (isDuration(input)) { | ||
24389 | duration = { | ||
24390 | ms : input._milliseconds, | ||
24391 | d : input._days, | ||
24392 | M : input._months | ||
24393 | }; | ||
24394 | } else if (isNumber(input)) { | ||
24395 | duration = {}; | ||
24396 | if (key) { | ||
24397 | duration[key] = input; | ||
24398 | } else { | ||
24399 | duration.milliseconds = input; | ||
24400 | } | ||
24401 | } else if (!!(match = aspNetRegex.exec(input))) { | ||
24402 | sign = (match[1] === '-') ? -1 : 1; | ||
24403 | duration = { | ||
24404 | y : 0, | ||
24405 | d : toInt(match[DATE]) * sign, | ||
24406 | h : toInt(match[HOUR]) * sign, | ||
24407 | m : toInt(match[MINUTE]) * sign, | ||
24408 | s : toInt(match[SECOND]) * sign, | ||
24409 | ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match | ||
24410 | }; | ||
24411 | } else if (!!(match = isoRegex.exec(input))) { | ||
24412 | sign = (match[1] === '-') ? -1 : 1; | ||
24413 | duration = { | ||
24414 | y : parseIso(match[2], sign), | ||
24415 | M : parseIso(match[3], sign), | ||
24416 | w : parseIso(match[4], sign), | ||
24417 | d : parseIso(match[5], sign), | ||
24418 | h : parseIso(match[6], sign), | ||
24419 | m : parseIso(match[7], sign), | ||
24420 | s : parseIso(match[8], sign) | ||
24421 | }; | ||
24422 | } else if (duration == null) {// checks for null or undefined | ||
24423 | duration = {}; | ||
24424 | } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { | ||
24425 | diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); | ||
24426 | |||
24427 | duration = {}; | ||
24428 | duration.ms = diffRes.milliseconds; | ||
24429 | duration.M = diffRes.months; | ||
24430 | } | ||
24431 | |||
24432 | ret = new Duration(duration); | ||
24433 | |||
24434 | if (isDuration(input) && hasOwnProp(input, '_locale')) { | ||
24435 | ret._locale = input._locale; | ||
24436 | } | ||
24437 | |||
24438 | return ret; | ||
24439 | } | ||
24440 | |||
24441 | createDuration.fn = Duration.prototype; | ||
24442 | createDuration.invalid = createInvalid$1; | ||
24443 | |||
24444 | function parseIso (inp, sign) { | ||
24445 | // We'd normally use ~~inp for this, but unfortunately it also | ||
24446 | // converts floats to ints. | ||
24447 | // inp may be undefined, so careful calling replace on it. | ||
24448 | var res = inp && parseFloat(inp.replace(',', '.')); | ||
24449 | // apply sign while we're at it | ||
24450 | return (isNaN(res) ? 0 : res) * sign; | ||
24451 | } | ||
24452 | |||
24453 | function positiveMomentsDifference(base, other) { | ||
24454 | var res = {milliseconds: 0, months: 0}; | ||
24455 | |||
24456 | res.months = other.month() - base.month() + | ||
24457 | (other.year() - base.year()) * 12; | ||
24458 | if (base.clone().add(res.months, 'M').isAfter(other)) { | ||
24459 | --res.months; | ||
24460 | } | ||
24461 | |||
24462 | res.milliseconds = +other - +(base.clone().add(res.months, 'M')); | ||
24463 | |||
24464 | return res; | ||
24465 | } | ||
24466 | |||
24467 | function momentsDifference(base, other) { | ||
24468 | var res; | ||
24469 | if (!(base.isValid() && other.isValid())) { | ||
24470 | return {milliseconds: 0, months: 0}; | ||
24471 | } | ||
24472 | |||
24473 | other = cloneWithOffset(other, base); | ||
24474 | if (base.isBefore(other)) { | ||
24475 | res = positiveMomentsDifference(base, other); | ||
24476 | } else { | ||
24477 | res = positiveMomentsDifference(other, base); | ||
24478 | res.milliseconds = -res.milliseconds; | ||
24479 | res.months = -res.months; | ||
24480 | } | ||
24481 | |||
24482 | return res; | ||
24483 | } | ||
24484 | |||
24485 | // TODO: remove 'name' arg after deprecation is removed | ||
24486 | function createAdder(direction, name) { | ||
24487 | return function (val, period) { | ||
24488 | var dur, tmp; | ||
24489 | //invert the arguments, but complain about it | ||
24490 | if (period !== null && !isNaN(+period)) { | ||
24491 | deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + | ||
24492 | 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); | ||
24493 | tmp = val; val = period; period = tmp; | ||
24494 | } | ||
24495 | |||
24496 | val = typeof val === 'string' ? +val : val; | ||
24497 | dur = createDuration(val, period); | ||
24498 | addSubtract(this, dur, direction); | ||
24499 | return this; | ||
24500 | }; | ||
24501 | } | ||
24502 | |||
24503 | function addSubtract (mom, duration, isAdding, updateOffset) { | ||
24504 | var milliseconds = duration._milliseconds, | ||
24505 | days = absRound(duration._days), | ||
24506 | months = absRound(duration._months); | ||
24507 | |||
24508 | if (!mom.isValid()) { | ||
24509 | // No op | ||
24510 | return; | ||
24511 | } | ||
24512 | |||
24513 | updateOffset = updateOffset == null ? true : updateOffset; | ||
24514 | |||
24515 | if (milliseconds) { | ||
24516 | mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); | ||
24517 | } | ||
24518 | if (days) { | ||
24519 | set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); | ||
24520 | } | ||
24521 | if (months) { | ||
24522 | setMonth(mom, get(mom, 'Month') + months * isAdding); | ||
24523 | } | ||
24524 | if (updateOffset) { | ||
24525 | hooks.updateOffset(mom, days || months); | ||
24526 | } | ||
24527 | } | ||
24528 | |||
24529 | var add = createAdder(1, 'add'); | ||
24530 | var subtract = createAdder(-1, 'subtract'); | ||
24531 | |||
24532 | function getCalendarFormat(myMoment, now) { | ||
24533 | var diff = myMoment.diff(now, 'days', true); | ||
24534 | return diff < -6 ? 'sameElse' : | ||
24535 | diff < -1 ? 'lastWeek' : | ||
24536 | diff < 0 ? 'lastDay' : | ||
24537 | diff < 1 ? 'sameDay' : | ||
24538 | diff < 2 ? 'nextDay' : | ||
24539 | diff < 7 ? 'nextWeek' : 'sameElse'; | ||
24540 | } | ||
24541 | |||
24542 | function calendar$1 (time, formats) { | ||
24543 | // We want to compare the start of today, vs this. | ||
24544 | // Getting start-of-today depends on whether we're local/utc/offset or not. | ||
24545 | var now = time || createLocal(), | ||
24546 | sod = cloneWithOffset(now, this).startOf('day'), | ||
24547 | format = hooks.calendarFormat(this, sod) || 'sameElse'; | ||
24548 | |||
24549 | var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); | ||
24550 | |||
24551 | return this.format(output || this.localeData().calendar(format, this, createLocal(now))); | ||
24552 | } | ||
24553 | |||
24554 | function clone () { | ||
24555 | return new Moment(this); | ||
24556 | } | ||
24557 | |||
24558 | function isAfter (input, units) { | ||
24559 | var localInput = isMoment(input) ? input : createLocal(input); | ||
24560 | if (!(this.isValid() && localInput.isValid())) { | ||
24561 | return false; | ||
24562 | } | ||
24563 | units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); | ||
24564 | if (units === 'millisecond') { | ||
24565 | return this.valueOf() > localInput.valueOf(); | ||
24566 | } else { | ||
24567 | return localInput.valueOf() < this.clone().startOf(units).valueOf(); | ||
24568 | } | ||
24569 | } | ||
24570 | |||
24571 | function isBefore (input, units) { | ||
24572 | var localInput = isMoment(input) ? input : createLocal(input); | ||
24573 | if (!(this.isValid() && localInput.isValid())) { | ||
24574 | return false; | ||
24575 | } | ||
24576 | units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); | ||
24577 | if (units === 'millisecond') { | ||
24578 | return this.valueOf() < localInput.valueOf(); | ||
24579 | } else { | ||
24580 | return this.clone().endOf(units).valueOf() < localInput.valueOf(); | ||
24581 | } | ||
24582 | } | ||
24583 | |||
24584 | function isBetween (from, to, units, inclusivity) { | ||
24585 | inclusivity = inclusivity || '()'; | ||
24586 | return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && | ||
24587 | (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); | ||
24588 | } | ||
24589 | |||
24590 | function isSame (input, units) { | ||
24591 | var localInput = isMoment(input) ? input : createLocal(input), | ||
24592 | inputMs; | ||
24593 | if (!(this.isValid() && localInput.isValid())) { | ||
24594 | return false; | ||
24595 | } | ||
24596 | units = normalizeUnits(units || 'millisecond'); | ||
24597 | if (units === 'millisecond') { | ||
24598 | return this.valueOf() === localInput.valueOf(); | ||
24599 | } else { | ||
24600 | inputMs = localInput.valueOf(); | ||
24601 | return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); | ||
24602 | } | ||
24603 | } | ||
24604 | |||
24605 | function isSameOrAfter (input, units) { | ||
24606 | return this.isSame(input, units) || this.isAfter(input,units); | ||
24607 | } | ||
24608 | |||
24609 | function isSameOrBefore (input, units) { | ||
24610 | return this.isSame(input, units) || this.isBefore(input,units); | ||
24611 | } | ||
24612 | |||
24613 | function diff (input, units, asFloat) { | ||
24614 | var that, | ||
24615 | zoneDelta, | ||
24616 | delta, output; | ||
24617 | |||
24618 | if (!this.isValid()) { | ||
24619 | return NaN; | ||
24620 | } | ||
24621 | |||
24622 | that = cloneWithOffset(input, this); | ||
24623 | |||
24624 | if (!that.isValid()) { | ||
24625 | return NaN; | ||
24626 | } | ||
24627 | |||
24628 | zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; | ||
24629 | |||
24630 | units = normalizeUnits(units); | ||
24631 | |||
24632 | if (units === 'year' || units === 'month' || units === 'quarter') { | ||
24633 | output = monthDiff(this, that); | ||
24634 | if (units === 'quarter') { | ||
24635 | output = output / 3; | ||
24636 | } else if (units === 'year') { | ||
24637 | output = output / 12; | ||
24638 | } | ||
24639 | } else { | ||
24640 | delta = this - that; | ||
24641 | output = units === 'second' ? delta / 1e3 : // 1000 | ||
24642 | units === 'minute' ? delta / 6e4 : // 1000 * 60 | ||
24643 | units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 | ||
24644 | units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst | ||
24645 | units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst | ||
24646 | delta; | ||
24647 | } | ||
24648 | return asFloat ? output : absFloor(output); | ||
24649 | } | ||
24650 | |||
24651 | function monthDiff (a, b) { | ||
24652 | // difference in months | ||
24653 | var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), | ||
24654 | // b is in (anchor - 1 month, anchor + 1 month) | ||
24655 | anchor = a.clone().add(wholeMonthDiff, 'months'), | ||
24656 | anchor2, adjust; | ||
24657 | |||
24658 | if (b - anchor < 0) { | ||
24659 | anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); | ||
24660 | // linear across the month | ||
24661 | adjust = (b - anchor) / (anchor - anchor2); | ||
24662 | } else { | ||
24663 | anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); | ||
24664 | // linear across the month | ||
24665 | adjust = (b - anchor) / (anchor2 - anchor); | ||
24666 | } | ||
24667 | |||
24668 | //check for negative zero, return zero if negative zero | ||
24669 | return -(wholeMonthDiff + adjust) || 0; | ||
24670 | } | ||
24671 | |||
24672 | hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; | ||
24673 | hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; | ||
24674 | |||
24675 | function toString () { | ||
24676 | return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); | ||
24677 | } | ||
24678 | |||
24679 | function toISOString() { | ||
24680 | if (!this.isValid()) { | ||
24681 | return null; | ||
24682 | } | ||
24683 | var m = this.clone().utc(); | ||
24684 | if (m.year() < 0 || m.year() > 9999) { | ||
24685 | return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); | ||
24686 | } | ||
24687 | if (isFunction(Date.prototype.toISOString)) { | ||
24688 | // native implementation is ~50x faster, use it when we can | ||
24689 | return this.toDate().toISOString(); | ||
24690 | } | ||
24691 | return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); | ||
24692 | } | ||
24693 | |||
24694 | /** | ||
24695 | * Return a human readable representation of a moment that can | ||
24696 | * also be evaluated to get a new moment which is the same | ||
24697 | * | ||
24698 | * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects | ||
24699 | */ | ||
24700 | function inspect () { | ||
24701 | if (!this.isValid()) { | ||
24702 | return 'moment.invalid(/* ' + this._i + ' */)'; | ||
24703 | } | ||
24704 | var func = 'moment'; | ||
24705 | var zone = ''; | ||
24706 | if (!this.isLocal()) { | ||
24707 | func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; | ||
24708 | zone = 'Z'; | ||
24709 | } | ||
24710 | var prefix = '[' + func + '("]'; | ||
24711 | var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; | ||
24712 | var datetime = '-MM-DD[T]HH:mm:ss.SSS'; | ||
24713 | var suffix = zone + '[")]'; | ||
24714 | |||
24715 | return this.format(prefix + year + datetime + suffix); | ||
24716 | } | ||
24717 | |||
24718 | function format (inputString) { | ||
24719 | if (!inputString) { | ||
24720 | inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; | ||
24721 | } | ||
24722 | var output = formatMoment(this, inputString); | ||
24723 | return this.localeData().postformat(output); | ||
24724 | } | ||
24725 | |||
24726 | function from (time, withoutSuffix) { | ||
24727 | if (this.isValid() && | ||
24728 | ((isMoment(time) && time.isValid()) || | ||
24729 | createLocal(time).isValid())) { | ||
24730 | return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); | ||
24731 | } else { | ||
24732 | return this.localeData().invalidDate(); | ||
24733 | } | ||
24734 | } | ||
24735 | |||
24736 | function fromNow (withoutSuffix) { | ||
24737 | return this.from(createLocal(), withoutSuffix); | ||
24738 | } | ||
24739 | |||
24740 | function to (time, withoutSuffix) { | ||
24741 | if (this.isValid() && | ||
24742 | ((isMoment(time) && time.isValid()) || | ||
24743 | createLocal(time).isValid())) { | ||
24744 | return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); | ||
24745 | } else { | ||
24746 | return this.localeData().invalidDate(); | ||
24747 | } | ||
24748 | } | ||
24749 | |||
24750 | function toNow (withoutSuffix) { | ||
24751 | return this.to(createLocal(), withoutSuffix); | ||
24752 | } | ||
24753 | |||
24754 | // If passed a locale key, it will set the locale for this | ||
24755 | // instance. Otherwise, it will return the locale configuration | ||
24756 | // variables for this instance. | ||
24757 | function locale (key) { | ||
24758 | var newLocaleData; | ||
24759 | |||
24760 | if (key === undefined) { | ||
24761 | return this._locale._abbr; | ||
24762 | } else { | ||
24763 | newLocaleData = getLocale(key); | ||
24764 | if (newLocaleData != null) { | ||
24765 | this._locale = newLocaleData; | ||
24766 | } | ||
24767 | return this; | ||
24768 | } | ||
24769 | } | ||
24770 | |||
24771 | var lang = deprecate( | ||
24772 | 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', | ||
24773 | function (key) { | ||
24774 | if (key === undefined) { | ||
24775 | return this.localeData(); | ||
24776 | } else { | ||
24777 | return this.locale(key); | ||
24778 | } | ||
24779 | } | ||
24780 | ); | ||
24781 | |||
24782 | function localeData () { | ||
24783 | return this._locale; | ||
24784 | } | ||
24785 | |||
24786 | function startOf (units) { | ||
24787 | units = normalizeUnits(units); | ||
24788 | // the following switch intentionally omits break keywords | ||
24789 | // to utilize falling through the cases. | ||
24790 | switch (units) { | ||
24791 | case 'year': | ||
24792 | this.month(0); | ||
24793 | /* falls through */ | ||
24794 | case 'quarter': | ||
24795 | case 'month': | ||
24796 | this.date(1); | ||
24797 | /* falls through */ | ||
24798 | case 'week': | ||
24799 | case 'isoWeek': | ||
24800 | case 'day': | ||
24801 | case 'date': | ||
24802 | this.hours(0); | ||
24803 | /* falls through */ | ||
24804 | case 'hour': | ||
24805 | this.minutes(0); | ||
24806 | /* falls through */ | ||
24807 | case 'minute': | ||
24808 | this.seconds(0); | ||
24809 | /* falls through */ | ||
24810 | case 'second': | ||
24811 | this.milliseconds(0); | ||
24812 | } | ||
24813 | |||
24814 | // weeks are a special case | ||
24815 | if (units === 'week') { | ||
24816 | this.weekday(0); | ||
24817 | } | ||
24818 | if (units === 'isoWeek') { | ||
24819 | this.isoWeekday(1); | ||
24820 | } | ||
24821 | |||
24822 | // quarters are also special | ||
24823 | if (units === 'quarter') { | ||
24824 | this.month(Math.floor(this.month() / 3) * 3); | ||
24825 | } | ||
24826 | |||
24827 | return this; | ||
24828 | } | ||
24829 | |||
24830 | function endOf (units) { | ||
24831 | units = normalizeUnits(units); | ||
24832 | if (units === undefined || units === 'millisecond') { | ||
24833 | return this; | ||
24834 | } | ||
24835 | |||
24836 | // 'date' is an alias for 'day', so it should be considered as such. | ||
24837 | if (units === 'date') { | ||
24838 | units = 'day'; | ||
24839 | } | ||
24840 | |||
24841 | return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); | ||
24842 | } | ||
24843 | |||
24844 | function valueOf () { | ||
24845 | return this._d.valueOf() - ((this._offset || 0) * 60000); | ||
24846 | } | ||
24847 | |||
24848 | function unix () { | ||
24849 | return Math.floor(this.valueOf() / 1000); | ||
24850 | } | ||
24851 | |||
24852 | function toDate () { | ||
24853 | return new Date(this.valueOf()); | ||
24854 | } | ||
24855 | |||
24856 | function toArray () { | ||
24857 | var m = this; | ||
24858 | return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; | ||
24859 | } | ||
24860 | |||
24861 | function toObject () { | ||
24862 | var m = this; | ||
24863 | return { | ||
24864 | years: m.year(), | ||
24865 | months: m.month(), | ||
24866 | date: m.date(), | ||
24867 | hours: m.hours(), | ||
24868 | minutes: m.minutes(), | ||
24869 | seconds: m.seconds(), | ||
24870 | milliseconds: m.milliseconds() | ||
24871 | }; | ||
24872 | } | ||
24873 | |||
24874 | function toJSON () { | ||
24875 | // new Date(NaN).toJSON() === null | ||
24876 | return this.isValid() ? this.toISOString() : null; | ||
24877 | } | ||
24878 | |||
24879 | function isValid$2 () { | ||
24880 | return isValid(this); | ||
24881 | } | ||
24882 | |||
24883 | function parsingFlags () { | ||
24884 | return extend({}, getParsingFlags(this)); | ||
24885 | } | ||
24886 | |||
24887 | function invalidAt () { | ||
24888 | return getParsingFlags(this).overflow; | ||
24889 | } | ||
24890 | |||
24891 | function creationData() { | ||
24892 | return { | ||
24893 | input: this._i, | ||
24894 | format: this._f, | ||
24895 | locale: this._locale, | ||
24896 | isUTC: this._isUTC, | ||
24897 | strict: this._strict | ||
24898 | }; | ||
24899 | } | ||
24900 | |||
24901 | // FORMATTING | ||
24902 | |||
24903 | addFormatToken(0, ['gg', 2], 0, function () { | ||
24904 | return this.weekYear() % 100; | ||
24905 | }); | ||
24906 | |||
24907 | addFormatToken(0, ['GG', 2], 0, function () { | ||
24908 | return this.isoWeekYear() % 100; | ||
24909 | }); | ||
24910 | |||
24911 | function addWeekYearFormatToken (token, getter) { | ||
24912 | addFormatToken(0, [token, token.length], 0, getter); | ||
24913 | } | ||
24914 | |||
24915 | addWeekYearFormatToken('gggg', 'weekYear'); | ||
24916 | addWeekYearFormatToken('ggggg', 'weekYear'); | ||
24917 | addWeekYearFormatToken('GGGG', 'isoWeekYear'); | ||
24918 | addWeekYearFormatToken('GGGGG', 'isoWeekYear'); | ||
24919 | |||
24920 | // ALIASES | ||
24921 | |||
24922 | addUnitAlias('weekYear', 'gg'); | ||
24923 | addUnitAlias('isoWeekYear', 'GG'); | ||
24924 | |||
24925 | // PRIORITY | ||
24926 | |||
24927 | addUnitPriority('weekYear', 1); | ||
24928 | addUnitPriority('isoWeekYear', 1); | ||
24929 | |||
24930 | |||
24931 | // PARSING | ||
24932 | |||
24933 | addRegexToken('G', matchSigned); | ||
24934 | addRegexToken('g', matchSigned); | ||
24935 | addRegexToken('GG', match1to2, match2); | ||
24936 | addRegexToken('gg', match1to2, match2); | ||
24937 | addRegexToken('GGGG', match1to4, match4); | ||
24938 | addRegexToken('gggg', match1to4, match4); | ||
24939 | addRegexToken('GGGGG', match1to6, match6); | ||
24940 | addRegexToken('ggggg', match1to6, match6); | ||
24941 | |||
24942 | addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { | ||
24943 | week[token.substr(0, 2)] = toInt(input); | ||
24944 | }); | ||
24945 | |||
24946 | addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { | ||
24947 | week[token] = hooks.parseTwoDigitYear(input); | ||
24948 | }); | ||
24949 | |||
24950 | // MOMENTS | ||
24951 | |||
24952 | function getSetWeekYear (input) { | ||
24953 | return getSetWeekYearHelper.call(this, | ||
24954 | input, | ||
24955 | this.week(), | ||
24956 | this.weekday(), | ||
24957 | this.localeData()._week.dow, | ||
24958 | this.localeData()._week.doy); | ||
24959 | } | ||
24960 | |||
24961 | function getSetISOWeekYear (input) { | ||
24962 | return getSetWeekYearHelper.call(this, | ||
24963 | input, this.isoWeek(), this.isoWeekday(), 1, 4); | ||
24964 | } | ||
24965 | |||
24966 | function getISOWeeksInYear () { | ||
24967 | return weeksInYear(this.year(), 1, 4); | ||
24968 | } | ||
24969 | |||
24970 | function getWeeksInYear () { | ||
24971 | var weekInfo = this.localeData()._week; | ||
24972 | return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); | ||
24973 | } | ||
24974 | |||
24975 | function getSetWeekYearHelper(input, week, weekday, dow, doy) { | ||
24976 | var weeksTarget; | ||
24977 | if (input == null) { | ||
24978 | return weekOfYear(this, dow, doy).year; | ||
24979 | } else { | ||
24980 | weeksTarget = weeksInYear(input, dow, doy); | ||
24981 | if (week > weeksTarget) { | ||
24982 | week = weeksTarget; | ||
24983 | } | ||
24984 | return setWeekAll.call(this, input, week, weekday, dow, doy); | ||
24985 | } | ||
24986 | } | ||
24987 | |||
24988 | function setWeekAll(weekYear, week, weekday, dow, doy) { | ||
24989 | var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), | ||
24990 | date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); | ||
24991 | |||
24992 | this.year(date.getUTCFullYear()); | ||
24993 | this.month(date.getUTCMonth()); | ||
24994 | this.date(date.getUTCDate()); | ||
24995 | return this; | ||
24996 | } | ||
24997 | |||
24998 | // FORMATTING | ||
24999 | |||
25000 | addFormatToken('Q', 0, 'Qo', 'quarter'); | ||
25001 | |||
25002 | // ALIASES | ||
25003 | |||
25004 | addUnitAlias('quarter', 'Q'); | ||
25005 | |||
25006 | // PRIORITY | ||
25007 | |||
25008 | addUnitPriority('quarter', 7); | ||
25009 | |||
25010 | // PARSING | ||
25011 | |||
25012 | addRegexToken('Q', match1); | ||
25013 | addParseToken('Q', function (input, array) { | ||
25014 | array[MONTH] = (toInt(input) - 1) * 3; | ||
25015 | }); | ||
25016 | |||
25017 | // MOMENTS | ||
25018 | |||
25019 | function getSetQuarter (input) { | ||
25020 | return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); | ||
25021 | } | ||
25022 | |||
25023 | // FORMATTING | ||
25024 | |||
25025 | addFormatToken('D', ['DD', 2], 'Do', 'date'); | ||
25026 | |||
25027 | // ALIASES | ||
25028 | |||
25029 | addUnitAlias('date', 'D'); | ||
25030 | |||
25031 | // PRIOROITY | ||
25032 | addUnitPriority('date', 9); | ||
25033 | |||
25034 | // PARSING | ||
25035 | |||
25036 | addRegexToken('D', match1to2); | ||
25037 | addRegexToken('DD', match1to2, match2); | ||
25038 | addRegexToken('Do', function (isStrict, locale) { | ||
25039 | // TODO: Remove "ordinalParse" fallback in next major release. | ||
25040 | return isStrict ? | ||
25041 | (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : | ||
25042 | locale._dayOfMonthOrdinalParseLenient; | ||
25043 | }); | ||
25044 | |||
25045 | addParseToken(['D', 'DD'], DATE); | ||
25046 | addParseToken('Do', function (input, array) { | ||
25047 | array[DATE] = toInt(input.match(match1to2)[0], 10); | ||
25048 | }); | ||
25049 | |||
25050 | // MOMENTS | ||
25051 | |||
25052 | var getSetDayOfMonth = makeGetSet('Date', true); | ||
25053 | |||
25054 | // FORMATTING | ||
25055 | |||
25056 | addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); | ||
25057 | |||
25058 | // ALIASES | ||
25059 | |||
25060 | addUnitAlias('dayOfYear', 'DDD'); | ||
25061 | |||
25062 | // PRIORITY | ||
25063 | addUnitPriority('dayOfYear', 4); | ||
25064 | |||
25065 | // PARSING | ||
25066 | |||
25067 | addRegexToken('DDD', match1to3); | ||
25068 | addRegexToken('DDDD', match3); | ||
25069 | addParseToken(['DDD', 'DDDD'], function (input, array, config) { | ||
25070 | config._dayOfYear = toInt(input); | ||
25071 | }); | ||
25072 | |||
25073 | // HELPERS | ||
25074 | |||
25075 | // MOMENTS | ||
25076 | |||
25077 | function getSetDayOfYear (input) { | ||
25078 | var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; | ||
25079 | return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); | ||
25080 | } | ||
25081 | |||
25082 | // FORMATTING | ||
25083 | |||
25084 | addFormatToken('m', ['mm', 2], 0, 'minute'); | ||
25085 | |||
25086 | // ALIASES | ||
25087 | |||
25088 | addUnitAlias('minute', 'm'); | ||
25089 | |||
25090 | // PRIORITY | ||
25091 | |||
25092 | addUnitPriority('minute', 14); | ||
25093 | |||
25094 | // PARSING | ||
25095 | |||
25096 | addRegexToken('m', match1to2); | ||
25097 | addRegexToken('mm', match1to2, match2); | ||
25098 | addParseToken(['m', 'mm'], MINUTE); | ||
25099 | |||
25100 | // MOMENTS | ||
25101 | |||
25102 | var getSetMinute = makeGetSet('Minutes', false); | ||
25103 | |||
25104 | // FORMATTING | ||
25105 | |||
25106 | addFormatToken('s', ['ss', 2], 0, 'second'); | ||
25107 | |||
25108 | // ALIASES | ||
25109 | |||
25110 | addUnitAlias('second', 's'); | ||
25111 | |||
25112 | // PRIORITY | ||
25113 | |||
25114 | addUnitPriority('second', 15); | ||
25115 | |||
25116 | // PARSING | ||
25117 | |||
25118 | addRegexToken('s', match1to2); | ||
25119 | addRegexToken('ss', match1to2, match2); | ||
25120 | addParseToken(['s', 'ss'], SECOND); | ||
25121 | |||
25122 | // MOMENTS | ||
25123 | |||
25124 | var getSetSecond = makeGetSet('Seconds', false); | ||
25125 | |||
25126 | // FORMATTING | ||
25127 | |||
25128 | addFormatToken('S', 0, 0, function () { | ||
25129 | return ~~(this.millisecond() / 100); | ||
25130 | }); | ||
25131 | |||
25132 | addFormatToken(0, ['SS', 2], 0, function () { | ||
25133 | return ~~(this.millisecond() / 10); | ||
25134 | }); | ||
25135 | |||
25136 | addFormatToken(0, ['SSS', 3], 0, 'millisecond'); | ||
25137 | addFormatToken(0, ['SSSS', 4], 0, function () { | ||
25138 | return this.millisecond() * 10; | ||
25139 | }); | ||
25140 | addFormatToken(0, ['SSSSS', 5], 0, function () { | ||
25141 | return this.millisecond() * 100; | ||
25142 | }); | ||
25143 | addFormatToken(0, ['SSSSSS', 6], 0, function () { | ||
25144 | return this.millisecond() * 1000; | ||
25145 | }); | ||
25146 | addFormatToken(0, ['SSSSSSS', 7], 0, function () { | ||
25147 | return this.millisecond() * 10000; | ||
25148 | }); | ||
25149 | addFormatToken(0, ['SSSSSSSS', 8], 0, function () { | ||
25150 | return this.millisecond() * 100000; | ||
25151 | }); | ||
25152 | addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { | ||
25153 | return this.millisecond() * 1000000; | ||
25154 | }); | ||
25155 | |||
25156 | |||
25157 | // ALIASES | ||
25158 | |||
25159 | addUnitAlias('millisecond', 'ms'); | ||
25160 | |||
25161 | // PRIORITY | ||
25162 | |||
25163 | addUnitPriority('millisecond', 16); | ||
25164 | |||
25165 | // PARSING | ||
25166 | |||
25167 | addRegexToken('S', match1to3, match1); | ||
25168 | addRegexToken('SS', match1to3, match2); | ||
25169 | addRegexToken('SSS', match1to3, match3); | ||
25170 | |||
25171 | var token; | ||
25172 | for (token = 'SSSS'; token.length <= 9; token += 'S') { | ||
25173 | addRegexToken(token, matchUnsigned); | ||
25174 | } | ||
25175 | |||
25176 | function parseMs(input, array) { | ||
25177 | array[MILLISECOND] = toInt(('0.' + input) * 1000); | ||
25178 | } | ||
25179 | |||
25180 | for (token = 'S'; token.length <= 9; token += 'S') { | ||
25181 | addParseToken(token, parseMs); | ||
25182 | } | ||
25183 | // MOMENTS | ||
25184 | |||
25185 | var getSetMillisecond = makeGetSet('Milliseconds', false); | ||
25186 | |||
25187 | // FORMATTING | ||
25188 | |||
25189 | addFormatToken('z', 0, 0, 'zoneAbbr'); | ||
25190 | addFormatToken('zz', 0, 0, 'zoneName'); | ||
25191 | |||
25192 | // MOMENTS | ||
25193 | |||
25194 | function getZoneAbbr () { | ||
25195 | return this._isUTC ? 'UTC' : ''; | ||
25196 | } | ||
25197 | |||
25198 | function getZoneName () { | ||
25199 | return this._isUTC ? 'Coordinated Universal Time' : ''; | ||
25200 | } | ||
25201 | |||
25202 | var proto = Moment.prototype; | ||
25203 | |||
25204 | proto.add = add; | ||
25205 | proto.calendar = calendar$1; | ||
25206 | proto.clone = clone; | ||
25207 | proto.diff = diff; | ||
25208 | proto.endOf = endOf; | ||
25209 | proto.format = format; | ||
25210 | proto.from = from; | ||
25211 | proto.fromNow = fromNow; | ||
25212 | proto.to = to; | ||
25213 | proto.toNow = toNow; | ||
25214 | proto.get = stringGet; | ||
25215 | proto.invalidAt = invalidAt; | ||
25216 | proto.isAfter = isAfter; | ||
25217 | proto.isBefore = isBefore; | ||
25218 | proto.isBetween = isBetween; | ||
25219 | proto.isSame = isSame; | ||
25220 | proto.isSameOrAfter = isSameOrAfter; | ||
25221 | proto.isSameOrBefore = isSameOrBefore; | ||
25222 | proto.isValid = isValid$2; | ||
25223 | proto.lang = lang; | ||
25224 | proto.locale = locale; | ||
25225 | proto.localeData = localeData; | ||
25226 | proto.max = prototypeMax; | ||
25227 | proto.min = prototypeMin; | ||
25228 | proto.parsingFlags = parsingFlags; | ||
25229 | proto.set = stringSet; | ||
25230 | proto.startOf = startOf; | ||
25231 | proto.subtract = subtract; | ||
25232 | proto.toArray = toArray; | ||
25233 | proto.toObject = toObject; | ||
25234 | proto.toDate = toDate; | ||
25235 | proto.toISOString = toISOString; | ||
25236 | proto.inspect = inspect; | ||
25237 | proto.toJSON = toJSON; | ||
25238 | proto.toString = toString; | ||
25239 | proto.unix = unix; | ||
25240 | proto.valueOf = valueOf; | ||
25241 | proto.creationData = creationData; | ||
25242 | |||
25243 | // Year | ||
25244 | proto.year = getSetYear; | ||
25245 | proto.isLeapYear = getIsLeapYear; | ||
25246 | |||
25247 | // Week Year | ||
25248 | proto.weekYear = getSetWeekYear; | ||
25249 | proto.isoWeekYear = getSetISOWeekYear; | ||
25250 | |||
25251 | // Quarter | ||
25252 | proto.quarter = proto.quarters = getSetQuarter; | ||
25253 | |||
25254 | // Month | ||
25255 | proto.month = getSetMonth; | ||
25256 | proto.daysInMonth = getDaysInMonth; | ||
25257 | |||
25258 | // Week | ||
25259 | proto.week = proto.weeks = getSetWeek; | ||
25260 | proto.isoWeek = proto.isoWeeks = getSetISOWeek; | ||
25261 | proto.weeksInYear = getWeeksInYear; | ||
25262 | proto.isoWeeksInYear = getISOWeeksInYear; | ||
25263 | |||
25264 | // Day | ||
25265 | proto.date = getSetDayOfMonth; | ||
25266 | proto.day = proto.days = getSetDayOfWeek; | ||
25267 | proto.weekday = getSetLocaleDayOfWeek; | ||
25268 | proto.isoWeekday = getSetISODayOfWeek; | ||
25269 | proto.dayOfYear = getSetDayOfYear; | ||
25270 | |||
25271 | // Hour | ||
25272 | proto.hour = proto.hours = getSetHour; | ||
25273 | |||
25274 | // Minute | ||
25275 | proto.minute = proto.minutes = getSetMinute; | ||
25276 | |||
25277 | // Second | ||
25278 | proto.second = proto.seconds = getSetSecond; | ||
25279 | |||
25280 | // Millisecond | ||
25281 | proto.millisecond = proto.milliseconds = getSetMillisecond; | ||
25282 | |||
25283 | // Offset | ||
25284 | proto.utcOffset = getSetOffset; | ||
25285 | proto.utc = setOffsetToUTC; | ||
25286 | proto.local = setOffsetToLocal; | ||
25287 | proto.parseZone = setOffsetToParsedOffset; | ||
25288 | proto.hasAlignedHourOffset = hasAlignedHourOffset; | ||
25289 | proto.isDST = isDaylightSavingTime; | ||
25290 | proto.isLocal = isLocal; | ||
25291 | proto.isUtcOffset = isUtcOffset; | ||
25292 | proto.isUtc = isUtc; | ||
25293 | proto.isUTC = isUtc; | ||
25294 | |||
25295 | // Timezone | ||
25296 | proto.zoneAbbr = getZoneAbbr; | ||
25297 | proto.zoneName = getZoneName; | ||
25298 | |||
25299 | // Deprecations | ||
25300 | proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); | ||
25301 | proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); | ||
25302 | proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); | ||
25303 | proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); | ||
25304 | proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); | ||
25305 | |||
25306 | function createUnix (input) { | ||
25307 | return createLocal(input * 1000); | ||
25308 | } | ||
25309 | |||
25310 | function createInZone () { | ||
25311 | return createLocal.apply(null, arguments).parseZone(); | ||
25312 | } | ||
25313 | |||
25314 | function preParsePostFormat (string) { | ||
25315 | return string; | ||
25316 | } | ||
25317 | |||
25318 | var proto$1 = Locale.prototype; | ||
25319 | |||
25320 | proto$1.calendar = calendar; | ||
25321 | proto$1.longDateFormat = longDateFormat; | ||
25322 | proto$1.invalidDate = invalidDate; | ||
25323 | proto$1.ordinal = ordinal; | ||
25324 | proto$1.preparse = preParsePostFormat; | ||
25325 | proto$1.postformat = preParsePostFormat; | ||
25326 | proto$1.relativeTime = relativeTime; | ||
25327 | proto$1.pastFuture = pastFuture; | ||
25328 | proto$1.set = set; | ||
25329 | |||
25330 | // Month | ||
25331 | proto$1.months = localeMonths; | ||
25332 | proto$1.monthsShort = localeMonthsShort; | ||
25333 | proto$1.monthsParse = localeMonthsParse; | ||
25334 | proto$1.monthsRegex = monthsRegex; | ||
25335 | proto$1.monthsShortRegex = monthsShortRegex; | ||
25336 | |||
25337 | // Week | ||
25338 | proto$1.week = localeWeek; | ||
25339 | proto$1.firstDayOfYear = localeFirstDayOfYear; | ||
25340 | proto$1.firstDayOfWeek = localeFirstDayOfWeek; | ||
25341 | |||
25342 | // Day of Week | ||
25343 | proto$1.weekdays = localeWeekdays; | ||
25344 | proto$1.weekdaysMin = localeWeekdaysMin; | ||
25345 | proto$1.weekdaysShort = localeWeekdaysShort; | ||
25346 | proto$1.weekdaysParse = localeWeekdaysParse; | ||
25347 | |||
25348 | proto$1.weekdaysRegex = weekdaysRegex; | ||
25349 | proto$1.weekdaysShortRegex = weekdaysShortRegex; | ||
25350 | proto$1.weekdaysMinRegex = weekdaysMinRegex; | ||
25351 | |||
25352 | // Hours | ||
25353 | proto$1.isPM = localeIsPM; | ||
25354 | proto$1.meridiem = localeMeridiem; | ||
25355 | |||
25356 | function get$1 (format, index, field, setter) { | ||
25357 | var locale = getLocale(); | ||
25358 | var utc = createUTC().set(setter, index); | ||
25359 | return locale[field](utc, format); | ||
25360 | } | ||
25361 | |||
25362 | function listMonthsImpl (format, index, field) { | ||
25363 | if (isNumber(format)) { | ||
25364 | index = format; | ||
25365 | format = undefined; | ||
25366 | } | ||
25367 | |||
25368 | format = format || ''; | ||
25369 | |||
25370 | if (index != null) { | ||
25371 | return get$1(format, index, field, 'month'); | ||
25372 | } | ||
25373 | |||
25374 | var i; | ||
25375 | var out = []; | ||
25376 | for (i = 0; i < 12; i++) { | ||
25377 | out[i] = get$1(format, i, field, 'month'); | ||
25378 | } | ||
25379 | return out; | ||
25380 | } | ||
25381 | |||
25382 | // () | ||
25383 | // (5) | ||
25384 | // (fmt, 5) | ||
25385 | // (fmt) | ||
25386 | // (true) | ||
25387 | // (true, 5) | ||
25388 | // (true, fmt, 5) | ||
25389 | // (true, fmt) | ||
25390 | function listWeekdaysImpl (localeSorted, format, index, field) { | ||
25391 | if (typeof localeSorted === 'boolean') { | ||
25392 | if (isNumber(format)) { | ||
25393 | index = format; | ||
25394 | format = undefined; | ||
25395 | } | ||
25396 | |||
25397 | format = format || ''; | ||
25398 | } else { | ||
25399 | format = localeSorted; | ||
25400 | index = format; | ||
25401 | localeSorted = false; | ||
25402 | |||
25403 | if (isNumber(format)) { | ||
25404 | index = format; | ||
25405 | format = undefined; | ||
25406 | } | ||
25407 | |||
25408 | format = format || ''; | ||
25409 | } | ||
25410 | |||
25411 | var locale = getLocale(), | ||
25412 | shift = localeSorted ? locale._week.dow : 0; | ||
25413 | |||
25414 | if (index != null) { | ||
25415 | return get$1(format, (index + shift) % 7, field, 'day'); | ||
25416 | } | ||
25417 | |||
25418 | var i; | ||
25419 | var out = []; | ||
25420 | for (i = 0; i < 7; i++) { | ||
25421 | out[i] = get$1(format, (i + shift) % 7, field, 'day'); | ||
25422 | } | ||
25423 | return out; | ||
25424 | } | ||
25425 | |||
25426 | function listMonths (format, index) { | ||
25427 | return listMonthsImpl(format, index, 'months'); | ||
25428 | } | ||
25429 | |||
25430 | function listMonthsShort (format, index) { | ||
25431 | return listMonthsImpl(format, index, 'monthsShort'); | ||
25432 | } | ||
25433 | |||
25434 | function listWeekdays (localeSorted, format, index) { | ||
25435 | return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); | ||
25436 | } | ||
25437 | |||
25438 | function listWeekdaysShort (localeSorted, format, index) { | ||
25439 | return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); | ||
25440 | } | ||
25441 | |||
25442 | function listWeekdaysMin (localeSorted, format, index) { | ||
25443 | return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); | ||
25444 | } | ||
25445 | |||
25446 | getSetGlobalLocale('en', { | ||
25447 | dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, | ||
25448 | ordinal : function (number) { | ||
25449 | var b = number % 10, | ||
25450 | output = (toInt(number % 100 / 10) === 1) ? 'th' : | ||
25451 | (b === 1) ? 'st' : | ||
25452 | (b === 2) ? 'nd' : | ||
25453 | (b === 3) ? 'rd' : 'th'; | ||
25454 | return number + output; | ||
25455 | } | ||
25456 | }); | ||
25457 | |||
25458 | // Side effect imports | ||
25459 | hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); | ||
25460 | hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); | ||
25461 | |||
25462 | var mathAbs = Math.abs; | ||
25463 | |||
25464 | function abs () { | ||
25465 | var data = this._data; | ||
25466 | |||
25467 | this._milliseconds = mathAbs(this._milliseconds); | ||
25468 | this._days = mathAbs(this._days); | ||
25469 | this._months = mathAbs(this._months); | ||
25470 | |||
25471 | data.milliseconds = mathAbs(data.milliseconds); | ||
25472 | data.seconds = mathAbs(data.seconds); | ||
25473 | data.minutes = mathAbs(data.minutes); | ||
25474 | data.hours = mathAbs(data.hours); | ||
25475 | data.months = mathAbs(data.months); | ||
25476 | data.years = mathAbs(data.years); | ||
25477 | |||
25478 | return this; | ||
25479 | } | ||
25480 | |||
25481 | function addSubtract$1 (duration, input, value, direction) { | ||
25482 | var other = createDuration(input, value); | ||
25483 | |||
25484 | duration._milliseconds += direction * other._milliseconds; | ||
25485 | duration._days += direction * other._days; | ||
25486 | duration._months += direction * other._months; | ||
25487 | |||
25488 | return duration._bubble(); | ||
25489 | } | ||
25490 | |||
25491 | // supports only 2.0-style add(1, 's') or add(duration) | ||
25492 | function add$1 (input, value) { | ||
25493 | return addSubtract$1(this, input, value, 1); | ||
25494 | } | ||
25495 | |||
25496 | // supports only 2.0-style subtract(1, 's') or subtract(duration) | ||
25497 | function subtract$1 (input, value) { | ||
25498 | return addSubtract$1(this, input, value, -1); | ||
25499 | } | ||
25500 | |||
25501 | function absCeil (number) { | ||
25502 | if (number < 0) { | ||
25503 | return Math.floor(number); | ||
25504 | } else { | ||
25505 | return Math.ceil(number); | ||
25506 | } | ||
25507 | } | ||
25508 | |||
25509 | function bubble () { | ||
25510 | var milliseconds = this._milliseconds; | ||
25511 | var days = this._days; | ||
25512 | var months = this._months; | ||
25513 | var data = this._data; | ||
25514 | var seconds, minutes, hours, years, monthsFromDays; | ||
25515 | |||
25516 | // if we have a mix of positive and negative values, bubble down first | ||
25517 | // check: https://github.com/moment/moment/issues/2166 | ||
25518 | if (!((milliseconds >= 0 && days >= 0 && months >= 0) || | ||
25519 | (milliseconds <= 0 && days <= 0 && months <= 0))) { | ||
25520 | milliseconds += absCeil(monthsToDays(months) + days) * 864e5; | ||
25521 | days = 0; | ||
25522 | months = 0; | ||
25523 | } | ||
25524 | |||
25525 | // The following code bubbles up values, see the tests for | ||
25526 | // examples of what that means. | ||
25527 | data.milliseconds = milliseconds % 1000; | ||
25528 | |||
25529 | seconds = absFloor(milliseconds / 1000); | ||
25530 | data.seconds = seconds % 60; | ||
25531 | |||
25532 | minutes = absFloor(seconds / 60); | ||
25533 | data.minutes = minutes % 60; | ||
25534 | |||
25535 | hours = absFloor(minutes / 60); | ||
25536 | data.hours = hours % 24; | ||
25537 | |||
25538 | days += absFloor(hours / 24); | ||
25539 | |||
25540 | // convert days to months | ||
25541 | monthsFromDays = absFloor(daysToMonths(days)); | ||
25542 | months += monthsFromDays; | ||
25543 | days -= absCeil(monthsToDays(monthsFromDays)); | ||
25544 | |||
25545 | // 12 months -> 1 year | ||
25546 | years = absFloor(months / 12); | ||
25547 | months %= 12; | ||
25548 | |||
25549 | data.days = days; | ||
25550 | data.months = months; | ||
25551 | data.years = years; | ||
25552 | |||
25553 | return this; | ||
25554 | } | ||
25555 | |||
25556 | function daysToMonths (days) { | ||
25557 | // 400 years have 146097 days (taking into account leap year rules) | ||
25558 | // 400 years have 12 months === 4800 | ||
25559 | return days * 4800 / 146097; | ||
25560 | } | ||
25561 | |||
25562 | function monthsToDays (months) { | ||
25563 | // the reverse of daysToMonths | ||
25564 | return months * 146097 / 4800; | ||
25565 | } | ||
25566 | |||
25567 | function as (units) { | ||
25568 | if (!this.isValid()) { | ||
25569 | return NaN; | ||
25570 | } | ||
25571 | var days; | ||
25572 | var months; | ||
25573 | var milliseconds = this._milliseconds; | ||
25574 | |||
25575 | units = normalizeUnits(units); | ||
25576 | |||
25577 | if (units === 'month' || units === 'year') { | ||
25578 | days = this._days + milliseconds / 864e5; | ||
25579 | months = this._months + daysToMonths(days); | ||
25580 | return units === 'month' ? months : months / 12; | ||
25581 | } else { | ||
25582 | // handle milliseconds separately because of floating point math errors (issue #1867) | ||
25583 | days = this._days + Math.round(monthsToDays(this._months)); | ||
25584 | switch (units) { | ||
25585 | case 'week' : return days / 7 + milliseconds / 6048e5; | ||
25586 | case 'day' : return days + milliseconds / 864e5; | ||
25587 | case 'hour' : return days * 24 + milliseconds / 36e5; | ||
25588 | case 'minute' : return days * 1440 + milliseconds / 6e4; | ||
25589 | case 'second' : return days * 86400 + milliseconds / 1000; | ||
25590 | // Math.floor prevents floating point math errors here | ||
25591 | case 'millisecond': return Math.floor(days * 864e5) + milliseconds; | ||
25592 | default: throw new Error('Unknown unit ' + units); | ||
25593 | } | ||
25594 | } | ||
25595 | } | ||
25596 | |||
25597 | // TODO: Use this.as('ms')? | ||
25598 | function valueOf$1 () { | ||
25599 | if (!this.isValid()) { | ||
25600 | return NaN; | ||
25601 | } | ||
25602 | return ( | ||
25603 | this._milliseconds + | ||
25604 | this._days * 864e5 + | ||
25605 | (this._months % 12) * 2592e6 + | ||
25606 | toInt(this._months / 12) * 31536e6 | ||
25607 | ); | ||
25608 | } | ||
25609 | |||
25610 | function makeAs (alias) { | ||
25611 | return function () { | ||
25612 | return this.as(alias); | ||
25613 | }; | ||
25614 | } | ||
25615 | |||
25616 | var asMilliseconds = makeAs('ms'); | ||
25617 | var asSeconds = makeAs('s'); | ||
25618 | var asMinutes = makeAs('m'); | ||
25619 | var asHours = makeAs('h'); | ||
25620 | var asDays = makeAs('d'); | ||
25621 | var asWeeks = makeAs('w'); | ||
25622 | var asMonths = makeAs('M'); | ||
25623 | var asYears = makeAs('y'); | ||
25624 | |||
25625 | function get$2 (units) { | ||
25626 | units = normalizeUnits(units); | ||
25627 | return this.isValid() ? this[units + 's']() : NaN; | ||
25628 | } | ||
25629 | |||
25630 | function makeGetter(name) { | ||
25631 | return function () { | ||
25632 | return this.isValid() ? this._data[name] : NaN; | ||
25633 | }; | ||
25634 | } | ||
25635 | |||
25636 | var milliseconds = makeGetter('milliseconds'); | ||
25637 | var seconds = makeGetter('seconds'); | ||
25638 | var minutes = makeGetter('minutes'); | ||
25639 | var hours = makeGetter('hours'); | ||
25640 | var days = makeGetter('days'); | ||
25641 | var months = makeGetter('months'); | ||
25642 | var years = makeGetter('years'); | ||
25643 | |||
25644 | function weeks () { | ||
25645 | return absFloor(this.days() / 7); | ||
25646 | } | ||
25647 | |||
25648 | var round = Math.round; | ||
25649 | var thresholds = { | ||
25650 | ss: 44, // a few seconds to seconds | ||
25651 | s : 45, // seconds to minute | ||
25652 | m : 45, // minutes to hour | ||
25653 | h : 22, // hours to day | ||
25654 | d : 26, // days to month | ||
25655 | M : 11 // months to year | ||
25656 | }; | ||
25657 | |||
25658 | // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize | ||
25659 | function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { | ||
25660 | return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); | ||
25661 | } | ||
25662 | |||
25663 | function relativeTime$1 (posNegDuration, withoutSuffix, locale) { | ||
25664 | var duration = createDuration(posNegDuration).abs(); | ||
25665 | var seconds = round(duration.as('s')); | ||
25666 | var minutes = round(duration.as('m')); | ||
25667 | var hours = round(duration.as('h')); | ||
25668 | var days = round(duration.as('d')); | ||
25669 | var months = round(duration.as('M')); | ||
25670 | var years = round(duration.as('y')); | ||
25671 | |||
25672 | var a = seconds <= thresholds.ss && ['s', seconds] || | ||
25673 | seconds < thresholds.s && ['ss', seconds] || | ||
25674 | minutes <= 1 && ['m'] || | ||
25675 | minutes < thresholds.m && ['mm', minutes] || | ||
25676 | hours <= 1 && ['h'] || | ||
25677 | hours < thresholds.h && ['hh', hours] || | ||
25678 | days <= 1 && ['d'] || | ||
25679 | days < thresholds.d && ['dd', days] || | ||
25680 | months <= 1 && ['M'] || | ||
25681 | months < thresholds.M && ['MM', months] || | ||
25682 | years <= 1 && ['y'] || ['yy', years]; | ||
25683 | |||
25684 | a[2] = withoutSuffix; | ||
25685 | a[3] = +posNegDuration > 0; | ||
25686 | a[4] = locale; | ||
25687 | return substituteTimeAgo.apply(null, a); | ||
25688 | } | ||
25689 | |||
25690 | // This function allows you to set the rounding function for relative time strings | ||
25691 | function getSetRelativeTimeRounding (roundingFunction) { | ||
25692 | if (roundingFunction === undefined) { | ||
25693 | return round; | ||
25694 | } | ||
25695 | if (typeof(roundingFunction) === 'function') { | ||
25696 | round = roundingFunction; | ||
25697 | return true; | ||
25698 | } | ||
25699 | return false; | ||
25700 | } | ||
25701 | |||
25702 | // This function allows you to set a threshold for relative time strings | ||
25703 | function getSetRelativeTimeThreshold (threshold, limit) { | ||
25704 | if (thresholds[threshold] === undefined) { | ||
25705 | return false; | ||
25706 | } | ||
25707 | if (limit === undefined) { | ||
25708 | return thresholds[threshold]; | ||
25709 | } | ||
25710 | thresholds[threshold] = limit; | ||
25711 | if (threshold === 's') { | ||
25712 | thresholds.ss = limit - 1; | ||
25713 | } | ||
25714 | return true; | ||
25715 | } | ||
25716 | |||
25717 | function humanize (withSuffix) { | ||
25718 | if (!this.isValid()) { | ||
25719 | return this.localeData().invalidDate(); | ||
25720 | } | ||
25721 | |||
25722 | var locale = this.localeData(); | ||
25723 | var output = relativeTime$1(this, !withSuffix, locale); | ||
25724 | |||
25725 | if (withSuffix) { | ||
25726 | output = locale.pastFuture(+this, output); | ||
25727 | } | ||
25728 | |||
25729 | return locale.postformat(output); | ||
25730 | } | ||
25731 | |||
25732 | var abs$1 = Math.abs; | ||
25733 | |||
25734 | function toISOString$1() { | ||
25735 | // for ISO strings we do not use the normal bubbling rules: | ||
25736 | // * milliseconds bubble up until they become hours | ||
25737 | // * days do not bubble at all | ||
25738 | // * months bubble up until they become years | ||
25739 | // This is because there is no context-free conversion between hours and days | ||
25740 | // (think of clock changes) | ||
25741 | // and also not between days and months (28-31 days per month) | ||
25742 | if (!this.isValid()) { | ||
25743 | return this.localeData().invalidDate(); | ||
25744 | } | ||
25745 | |||
25746 | var seconds = abs$1(this._milliseconds) / 1000; | ||
25747 | var days = abs$1(this._days); | ||
25748 | var months = abs$1(this._months); | ||
25749 | var minutes, hours, years; | ||
25750 | |||
25751 | // 3600 seconds -> 60 minutes -> 1 hour | ||
25752 | minutes = absFloor(seconds / 60); | ||
25753 | hours = absFloor(minutes / 60); | ||
25754 | seconds %= 60; | ||
25755 | minutes %= 60; | ||
25756 | |||
25757 | // 12 months -> 1 year | ||
25758 | years = absFloor(months / 12); | ||
25759 | months %= 12; | ||
25760 | |||
25761 | |||
25762 | // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js | ||
25763 | var Y = years; | ||
25764 | var M = months; | ||
25765 | var D = days; | ||
25766 | var h = hours; | ||
25767 | var m = minutes; | ||
25768 | var s = seconds; | ||
25769 | var total = this.asSeconds(); | ||
25770 | |||
25771 | if (!total) { | ||
25772 | // this is the same as C#'s (Noda) and python (isodate)... | ||
25773 | // but not other JS (goog.date) | ||
25774 | return 'P0D'; | ||
25775 | } | ||
25776 | |||
25777 | return (total < 0 ? '-' : '') + | ||
25778 | 'P' + | ||
25779 | (Y ? Y + 'Y' : '') + | ||
25780 | (M ? M + 'M' : '') + | ||
25781 | (D ? D + 'D' : '') + | ||
25782 | ((h || m || s) ? 'T' : '') + | ||
25783 | (h ? h + 'H' : '') + | ||
25784 | (m ? m + 'M' : '') + | ||
25785 | (s ? s + 'S' : ''); | ||
25786 | } | ||
25787 | |||
25788 | var proto$2 = Duration.prototype; | ||
25789 | |||
25790 | proto$2.isValid = isValid$1; | ||
25791 | proto$2.abs = abs; | ||
25792 | proto$2.add = add$1; | ||
25793 | proto$2.subtract = subtract$1; | ||
25794 | proto$2.as = as; | ||
25795 | proto$2.asMilliseconds = asMilliseconds; | ||
25796 | proto$2.asSeconds = asSeconds; | ||
25797 | proto$2.asMinutes = asMinutes; | ||
25798 | proto$2.asHours = asHours; | ||
25799 | proto$2.asDays = asDays; | ||
25800 | proto$2.asWeeks = asWeeks; | ||
25801 | proto$2.asMonths = asMonths; | ||
25802 | proto$2.asYears = asYears; | ||
25803 | proto$2.valueOf = valueOf$1; | ||
25804 | proto$2._bubble = bubble; | ||
25805 | proto$2.get = get$2; | ||
25806 | proto$2.milliseconds = milliseconds; | ||
25807 | proto$2.seconds = seconds; | ||
25808 | proto$2.minutes = minutes; | ||
25809 | proto$2.hours = hours; | ||
25810 | proto$2.days = days; | ||
25811 | proto$2.weeks = weeks; | ||
25812 | proto$2.months = months; | ||
25813 | proto$2.years = years; | ||
25814 | proto$2.humanize = humanize; | ||
25815 | proto$2.toISOString = toISOString$1; | ||
25816 | proto$2.toString = toISOString$1; | ||
25817 | proto$2.toJSON = toISOString$1; | ||
25818 | proto$2.locale = locale; | ||
25819 | proto$2.localeData = localeData; | ||
25820 | |||
25821 | // Deprecations | ||
25822 | proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); | ||
25823 | proto$2.lang = lang; | ||
25824 | |||
25825 | // Side effect imports | ||
25826 | |||
25827 | // FORMATTING | ||
25828 | |||
25829 | addFormatToken('X', 0, 0, 'unix'); | ||
25830 | addFormatToken('x', 0, 0, 'valueOf'); | ||
25831 | |||
25832 | // PARSING | ||
25833 | |||
25834 | addRegexToken('x', matchSigned); | ||
25835 | addRegexToken('X', matchTimestamp); | ||
25836 | addParseToken('X', function (input, array, config) { | ||
25837 | config._d = new Date(parseFloat(input, 10) * 1000); | ||
25838 | }); | ||
25839 | addParseToken('x', function (input, array, config) { | ||
25840 | config._d = new Date(toInt(input)); | ||
25841 | }); | ||
25842 | |||
25843 | // Side effect imports | ||
25844 | |||
25845 | |||
25846 | hooks.version = '2.18.1'; | ||
25847 | |||
25848 | setHookCallback(createLocal); | ||
25849 | |||
25850 | hooks.fn = proto; | ||
25851 | hooks.min = min; | ||
25852 | hooks.max = max; | ||
25853 | hooks.now = now; | ||
25854 | hooks.utc = createUTC; | ||
25855 | hooks.unix = createUnix; | ||
25856 | hooks.months = listMonths; | ||
25857 | hooks.isDate = isDate; | ||
25858 | hooks.locale = getSetGlobalLocale; | ||
25859 | hooks.invalid = createInvalid; | ||
25860 | hooks.duration = createDuration; | ||
25861 | hooks.isMoment = isMoment; | ||
25862 | hooks.weekdays = listWeekdays; | ||
25863 | hooks.parseZone = createInZone; | ||
25864 | hooks.localeData = getLocale; | ||
25865 | hooks.isDuration = isDuration; | ||
25866 | hooks.monthsShort = listMonthsShort; | ||
25867 | hooks.weekdaysMin = listWeekdaysMin; | ||
25868 | hooks.defineLocale = defineLocale; | ||
25869 | hooks.updateLocale = updateLocale; | ||
25870 | hooks.locales = listLocales; | ||
25871 | hooks.weekdaysShort = listWeekdaysShort; | ||
25872 | hooks.normalizeUnits = normalizeUnits; | ||
25873 | hooks.relativeTimeRounding = getSetRelativeTimeRounding; | ||
25874 | hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; | ||
25875 | hooks.calendarFormat = getCalendarFormat; | ||
25876 | hooks.prototype = proto; | ||
25877 | |||
25878 | return hooks; | ||
25879 | |||
25880 | }))); | ||
25881 | |||
25882 | |||
25883 | /***/ }), | ||
25884 | /* 185 */ | ||
25885 | /***/ (function(module, exports, __webpack_require__) { | ||
25886 | |||
25887 | 'use strict'; | ||
25888 | |||
25889 | Object.defineProperty(exports, "__esModule", { | ||
25890 | value: true | ||
25891 | }); | ||
25892 | |||
25893 | var _src = __webpack_require__(186); | ||
25894 | |||
25895 | var _src2 = _interopRequireDefault(_src); | ||
25896 | |||
25897 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
25898 | |||
25899 | exports.default = _src2.default; | ||
25900 | module.exports = exports['default']; | ||
25901 | |||
25902 | /***/ }), | ||
25903 | /* 186 */ | ||
25904 | /***/ (function(module, exports, __webpack_require__) { | ||
25905 | |||
25906 | 'use strict'; | ||
25907 | |||
25908 | Object.defineProperty(exports, "__esModule", { | ||
25909 | value: true | ||
25910 | }); | ||
25911 | |||
25912 | var _TimePicker = __webpack_require__(187); | ||
25913 | |||
25914 | var _TimePicker2 = _interopRequireDefault(_TimePicker); | ||
25915 | |||
25916 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
25917 | |||
25918 | exports.default = _TimePicker2.default; | ||
25919 | module.exports = exports['default']; | ||
25920 | |||
25921 | /***/ }), | ||
25922 | /* 187 */ | ||
25923 | /***/ (function(module, exports, __webpack_require__) { | ||
25924 | |||
25925 | 'use strict'; | ||
25926 | |||
25927 | Object.defineProperty(exports, "__esModule", { | ||
25928 | value: true | ||
25929 | }); | ||
25930 | |||
25931 | var _classCallCheck2 = __webpack_require__(188); | ||
25932 | |||
25933 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | ||
25934 | |||
25935 | var _possibleConstructorReturn2 = __webpack_require__(189); | ||
25936 | |||
25937 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); | ||
25938 | |||
25939 | var _inherits2 = __webpack_require__(258); | ||
25940 | |||
25941 | var _inherits3 = _interopRequireDefault(_inherits2); | ||
25942 | |||
25943 | var _react = __webpack_require__(3); | ||
25944 | |||
25945 | var _react2 = _interopRequireDefault(_react); | ||
25946 | |||
25947 | var _propTypes = __webpack_require__(266); | ||
25948 | |||
25949 | var _propTypes2 = _interopRequireDefault(_propTypes); | ||
25950 | |||
25951 | var _rcTrigger = __webpack_require__(268); | ||
25952 | |||
25953 | var _rcTrigger2 = _interopRequireDefault(_rcTrigger); | ||
25954 | |||
25955 | var _Panel = __webpack_require__(307); | ||
25956 | |||
25957 | var _Panel2 = _interopRequireDefault(_Panel); | ||
25958 | |||
25959 | var _placements = __webpack_require__(316); | ||
25960 | |||
25961 | var _placements2 = _interopRequireDefault(_placements); | ||
25962 | |||
25963 | var _moment = __webpack_require__(184); | ||
25964 | |||
25965 | var _moment2 = _interopRequireDefault(_moment); | ||
25966 | |||
25967 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
25968 | |||
25969 | function noop() {} | ||
25970 | |||
25971 | function refFn(field, component) { | ||
25972 | this[field] = component; | ||
25973 | } | ||
25974 | |||
25975 | var Picker = function (_Component) { | ||
25976 | (0, _inherits3.default)(Picker, _Component); | ||
25977 | |||
25978 | function Picker(props) { | ||
25979 | (0, _classCallCheck3.default)(this, Picker); | ||
25980 | |||
25981 | var _this = (0, _possibleConstructorReturn3.default)(this, _Component.call(this, props)); | ||
25982 | |||
25983 | _initialiseProps.call(_this); | ||
25984 | |||
25985 | _this.saveInputRef = refFn.bind(_this, 'picker'); | ||
25986 | _this.savePanelRef = refFn.bind(_this, 'panelInstance'); | ||
25987 | var defaultOpen = props.defaultOpen, | ||
25988 | defaultValue = props.defaultValue, | ||
25989 | _props$open = props.open, | ||
25990 | open = _props$open === undefined ? defaultOpen : _props$open, | ||
25991 | _props$value = props.value, | ||
25992 | value = _props$value === undefined ? defaultValue : _props$value; | ||
25993 | |||
25994 | _this.state = { | ||
25995 | open: open, | ||
25996 | value: value | ||
25997 | }; | ||
25998 | return _this; | ||
25999 | } | ||
26000 | |||
26001 | Picker.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { | ||
26002 | var value = nextProps.value, | ||
26003 | open = nextProps.open; | ||
26004 | |||
26005 | if ('value' in nextProps) { | ||
26006 | this.setState({ | ||
26007 | value: value | ||
26008 | }); | ||
26009 | } | ||
26010 | if (open !== undefined) { | ||
26011 | this.setState({ open: open }); | ||
26012 | } | ||
26013 | }; | ||
26014 | |||
26015 | Picker.prototype.setValue = function setValue(value) { | ||
26016 | if (!('value' in this.props)) { | ||
26017 | this.setState({ | ||
26018 | value: value | ||
26019 | }); | ||
26020 | } | ||
26021 | this.props.onChange(value); | ||
26022 | }; | ||
26023 | |||
26024 | Picker.prototype.getFormat = function getFormat() { | ||
26025 | var _props = this.props, | ||
26026 | format = _props.format, | ||
26027 | showHour = _props.showHour, | ||
26028 | showMinute = _props.showMinute, | ||
26029 | showSecond = _props.showSecond, | ||
26030 | use12Hours = _props.use12Hours; | ||
26031 | |||
26032 | if (format) { | ||
26033 | return format; | ||
26034 | } | ||
26035 | |||
26036 | if (use12Hours) { | ||
26037 | var fmtString = [showHour ? 'h' : '', showMinute ? 'mm' : '', showSecond ? 'ss' : ''].filter(function (item) { | ||
26038 | return !!item; | ||
26039 | }).join(':'); | ||
26040 | |||
26041 | return fmtString.concat(' a'); | ||
26042 | } | ||
26043 | |||
26044 | return [showHour ? 'HH' : '', showMinute ? 'mm' : '', showSecond ? 'ss' : ''].filter(function (item) { | ||
26045 | return !!item; | ||
26046 | }).join(':'); | ||
26047 | }; | ||
26048 | |||
26049 | Picker.prototype.getPanelElement = function getPanelElement() { | ||
26050 | var _props2 = this.props, | ||
26051 | prefixCls = _props2.prefixCls, | ||
26052 | placeholder = _props2.placeholder, | ||
26053 | disabledHours = _props2.disabledHours, | ||
26054 | disabledMinutes = _props2.disabledMinutes, | ||
26055 | disabledSeconds = _props2.disabledSeconds, | ||
26056 | hideDisabledOptions = _props2.hideDisabledOptions, | ||
26057 | allowEmpty = _props2.allowEmpty, | ||
26058 | showHour = _props2.showHour, | ||
26059 | showMinute = _props2.showMinute, | ||
26060 | showSecond = _props2.showSecond, | ||
26061 | defaultOpenValue = _props2.defaultOpenValue, | ||
26062 | clearText = _props2.clearText, | ||
26063 | addon = _props2.addon, | ||
26064 | use12Hours = _props2.use12Hours; | ||
26065 | |||
26066 | return _react2.default.createElement(_Panel2.default, { | ||
26067 | clearText: clearText, | ||
26068 | prefixCls: prefixCls + '-panel', | ||
26069 | ref: this.savePanelRef, | ||
26070 | value: this.state.value, | ||
26071 | onChange: this.onPanelChange, | ||
26072 | onClear: this.onPanelClear, | ||
26073 | defaultOpenValue: defaultOpenValue, | ||
26074 | showHour: showHour, | ||
26075 | showMinute: showMinute, | ||
26076 | showSecond: showSecond, | ||
26077 | onEsc: this.onEsc, | ||
26078 | allowEmpty: allowEmpty, | ||
26079 | format: this.getFormat(), | ||
26080 | placeholder: placeholder, | ||
26081 | disabledHours: disabledHours, | ||
26082 | disabledMinutes: disabledMinutes, | ||
26083 | disabledSeconds: disabledSeconds, | ||
26084 | hideDisabledOptions: hideDisabledOptions, | ||
26085 | use12Hours: use12Hours, | ||
26086 | addon: addon | ||
26087 | }); | ||
26088 | }; | ||
26089 | |||
26090 | Picker.prototype.getPopupClassName = function getPopupClassName() { | ||
26091 | var _props3 = this.props, | ||
26092 | showHour = _props3.showHour, | ||
26093 | showMinute = _props3.showMinute, | ||
26094 | showSecond = _props3.showSecond, | ||
26095 | use12Hours = _props3.use12Hours, | ||
26096 | prefixCls = _props3.prefixCls; | ||
26097 | |||
26098 | var popupClassName = this.props.popupClassName; | ||
26099 | // Keep it for old compatibility | ||
26100 | if ((!showHour || !showMinute || !showSecond) && !use12Hours) { | ||
26101 | popupClassName += ' ' + prefixCls + '-panel-narrow'; | ||
26102 | } | ||
26103 | var selectColumnCount = 0; | ||
26104 | if (showHour) { | ||
26105 | selectColumnCount += 1; | ||
26106 | } | ||
26107 | if (showMinute) { | ||
26108 | selectColumnCount += 1; | ||
26109 | } | ||
26110 | if (showSecond) { | ||
26111 | selectColumnCount += 1; | ||
26112 | } | ||
26113 | if (use12Hours) { | ||
26114 | selectColumnCount += 1; | ||
26115 | } | ||
26116 | popupClassName += ' ' + prefixCls + '-panel-column-' + selectColumnCount; | ||
26117 | return popupClassName; | ||
26118 | }; | ||
26119 | |||
26120 | Picker.prototype.setOpen = function setOpen(open) { | ||
26121 | var _props4 = this.props, | ||
26122 | onOpen = _props4.onOpen, | ||
26123 | onClose = _props4.onClose; | ||
26124 | |||
26125 | if (this.state.open !== open) { | ||
26126 | if (!('open' in this.props)) { | ||
26127 | this.setState({ open: open }); | ||
26128 | } | ||
26129 | if (open) { | ||
26130 | onOpen({ open: open }); | ||
26131 | } else { | ||
26132 | onClose({ open: open }); | ||
26133 | } | ||
26134 | } | ||
26135 | }; | ||
26136 | |||
26137 | Picker.prototype.focus = function focus() { | ||
26138 | this.picker.focus(); | ||
26139 | }; | ||
26140 | |||
26141 | Picker.prototype.render = function render() { | ||
26142 | var _props5 = this.props, | ||
26143 | prefixCls = _props5.prefixCls, | ||
26144 | placeholder = _props5.placeholder, | ||
26145 | placement = _props5.placement, | ||
26146 | align = _props5.align, | ||
26147 | disabled = _props5.disabled, | ||
26148 | transitionName = _props5.transitionName, | ||
26149 | style = _props5.style, | ||
26150 | className = _props5.className, | ||
26151 | getPopupContainer = _props5.getPopupContainer, | ||
26152 | name = _props5.name, | ||
26153 | autoComplete = _props5.autoComplete; | ||
26154 | var _state = this.state, | ||
26155 | open = _state.open, | ||
26156 | value = _state.value; | ||
26157 | |||
26158 | var popupClassName = this.getPopupClassName(); | ||
26159 | return _react2.default.createElement( | ||
26160 | _rcTrigger2.default, | ||
26161 | { | ||
26162 | prefixCls: prefixCls + '-panel', | ||
26163 | popupClassName: popupClassName, | ||
26164 | popup: this.getPanelElement(), | ||
26165 | popupAlign: align, | ||
26166 | builtinPlacements: _placements2.default, | ||
26167 | popupPlacement: placement, | ||
26168 | action: disabled ? [] : ['click'], | ||
26169 | destroyPopupOnHide: true, | ||
26170 | getPopupContainer: getPopupContainer, | ||
26171 | popupTransitionName: transitionName, | ||
26172 | popupVisible: open, | ||
26173 | onPopupVisibleChange: this.onVisibleChange | ||
26174 | }, | ||
26175 | _react2.default.createElement( | ||
26176 | 'span', | ||
26177 | { className: prefixCls + ' ' + className, style: style }, | ||
26178 | _react2.default.createElement('input', { | ||
26179 | className: prefixCls + '-input', | ||
26180 | ref: this.saveInputRef, | ||
26181 | type: 'text', | ||
26182 | placeholder: placeholder, | ||
26183 | name: name, | ||
26184 | readOnly: true, | ||
26185 | onKeyDown: this.onKeyDown, | ||
26186 | disabled: disabled, value: value && value.format(this.getFormat()) || '', | ||
26187 | autoComplete: autoComplete | ||
26188 | }), | ||
26189 | _react2.default.createElement('span', { className: prefixCls + '-icon' }) | ||
26190 | ) | ||
26191 | ); | ||
26192 | }; | ||
26193 | |||
26194 | return Picker; | ||
26195 | }(_react.Component); | ||
26196 | |||
26197 | Picker.propTypes = { | ||
26198 | prefixCls: _propTypes2.default.string, | ||
26199 | clearText: _propTypes2.default.string, | ||
26200 | value: _propTypes2.default.object, | ||
26201 | defaultOpenValue: _propTypes2.default.object, | ||
26202 | disabled: _propTypes2.default.bool, | ||
26203 | allowEmpty: _propTypes2.default.bool, | ||
26204 | defaultValue: _propTypes2.default.object, | ||
26205 | open: _propTypes2.default.bool, | ||
26206 | defaultOpen: _propTypes2.default.bool, | ||
26207 | align: _propTypes2.default.object, | ||
26208 | placement: _propTypes2.default.any, | ||
26209 | transitionName: _propTypes2.default.string, | ||
26210 | getPopupContainer: _propTypes2.default.func, | ||
26211 | placeholder: _propTypes2.default.string, | ||
26212 | format: _propTypes2.default.string, | ||
26213 | showHour: _propTypes2.default.bool, | ||
26214 | showMinute: _propTypes2.default.bool, | ||
26215 | showSecond: _propTypes2.default.bool, | ||
26216 | style: _propTypes2.default.object, | ||
26217 | className: _propTypes2.default.string, | ||
26218 | popupClassName: _propTypes2.default.string, | ||
26219 | disabledHours: _propTypes2.default.func, | ||
26220 | disabledMinutes: _propTypes2.default.func, | ||
26221 | disabledSeconds: _propTypes2.default.func, | ||
26222 | hideDisabledOptions: _propTypes2.default.bool, | ||
26223 | onChange: _propTypes2.default.func, | ||
26224 | onOpen: _propTypes2.default.func, | ||
26225 | onClose: _propTypes2.default.func, | ||
26226 | addon: _propTypes2.default.func, | ||
26227 | name: _propTypes2.default.string, | ||
26228 | autoComplete: _propTypes2.default.string, | ||
26229 | use12Hours: _propTypes2.default.bool | ||
26230 | }; | ||
26231 | Picker.defaultProps = { | ||
26232 | clearText: 'clear', | ||
26233 | prefixCls: 'rc-time-picker', | ||
26234 | defaultOpen: false, | ||
26235 | style: {}, | ||
26236 | className: '', | ||
26237 | popupClassName: '', | ||
26238 | align: {}, | ||
26239 | defaultOpenValue: (0, _moment2.default)(), | ||
26240 | allowEmpty: true, | ||
26241 | showHour: true, | ||
26242 | showMinute: true, | ||
26243 | showSecond: true, | ||
26244 | disabledHours: noop, | ||
26245 | disabledMinutes: noop, | ||
26246 | disabledSeconds: noop, | ||
26247 | hideDisabledOptions: false, | ||
26248 | placement: 'bottomLeft', | ||
26249 | onChange: noop, | ||
26250 | onOpen: noop, | ||
26251 | onClose: noop, | ||
26252 | addon: noop, | ||
26253 | use12Hours: false | ||
26254 | }; | ||
26255 | |||
26256 | var _initialiseProps = function _initialiseProps() { | ||
26257 | var _this2 = this; | ||
26258 | |||
26259 | this.onPanelChange = function (value) { | ||
26260 | _this2.setValue(value); | ||
26261 | }; | ||
26262 | |||
26263 | this.onPanelClear = function () { | ||
26264 | _this2.setValue(null); | ||
26265 | _this2.setOpen(false); | ||
26266 | }; | ||
26267 | |||
26268 | this.onVisibleChange = function (open) { | ||
26269 | _this2.setOpen(open); | ||
26270 | }; | ||
26271 | |||
26272 | this.onEsc = function () { | ||
26273 | _this2.setOpen(false); | ||
26274 | _this2.focus(); | ||
26275 | }; | ||
26276 | |||
26277 | this.onKeyDown = function (e) { | ||
26278 | if (e.keyCode === 40) { | ||
26279 | _this2.setOpen(true); | ||
26280 | } | ||
26281 | }; | ||
26282 | }; | ||
26283 | |||
26284 | exports.default = Picker; | ||
26285 | module.exports = exports['default']; | ||
26286 | |||
26287 | /***/ }), | ||
26288 | /* 188 */ | ||
26289 | /***/ (function(module, exports) { | ||
26290 | |||
26291 | "use strict"; | ||
26292 | |||
26293 | exports.__esModule = true; | ||
26294 | |||
26295 | exports.default = function (instance, Constructor) { | ||
26296 | if (!(instance instanceof Constructor)) { | ||
26297 | throw new TypeError("Cannot call a class as a function"); | ||
26298 | } | ||
26299 | }; | ||
26300 | |||
26301 | /***/ }), | ||
26302 | /* 189 */ | ||
26303 | /***/ (function(module, exports, __webpack_require__) { | ||
26304 | |||
26305 | "use strict"; | ||
26306 | |||
26307 | exports.__esModule = true; | ||
26308 | |||
26309 | var _typeof2 = __webpack_require__(190); | ||
26310 | |||
26311 | var _typeof3 = _interopRequireDefault(_typeof2); | ||
26312 | |||
26313 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
26314 | |||
26315 | exports.default = function (self, call) { | ||
26316 | if (!self) { | ||
26317 | throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); | ||
26318 | } | ||
26319 | |||
26320 | return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self; | ||
26321 | }; | ||
26322 | |||
26323 | /***/ }), | ||
26324 | /* 190 */ | ||
26325 | /***/ (function(module, exports, __webpack_require__) { | ||
26326 | |||
26327 | "use strict"; | ||
26328 | |||
26329 | exports.__esModule = true; | ||
26330 | |||
26331 | var _iterator = __webpack_require__(191); | ||
26332 | |||
26333 | var _iterator2 = _interopRequireDefault(_iterator); | ||
26334 | |||
26335 | var _symbol = __webpack_require__(242); | ||
26336 | |||
26337 | var _symbol2 = _interopRequireDefault(_symbol); | ||
26338 | |||
26339 | var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; | ||
26340 | |||
26341 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
26342 | |||
26343 | exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) { | ||
26344 | return typeof obj === "undefined" ? "undefined" : _typeof(obj); | ||
26345 | } : function (obj) { | ||
26346 | return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj); | ||
26347 | }; | ||
26348 | |||
26349 | /***/ }), | ||
26350 | /* 191 */ | ||
26351 | /***/ (function(module, exports, __webpack_require__) { | ||
26352 | |||
26353 | module.exports = { "default": __webpack_require__(192), __esModule: true }; | ||
26354 | |||
26355 | /***/ }), | ||
26356 | /* 192 */ | ||
26357 | /***/ (function(module, exports, __webpack_require__) { | ||
26358 | |||
26359 | __webpack_require__(193); | ||
26360 | __webpack_require__(237); | ||
26361 | module.exports = __webpack_require__(241).f('iterator'); | ||
26362 | |||
26363 | /***/ }), | ||
26364 | /* 193 */ | ||
26365 | /***/ (function(module, exports, __webpack_require__) { | ||
26366 | |||
26367 | 'use strict'; | ||
26368 | var $at = __webpack_require__(194)(true); | ||
26369 | |||
26370 | // 21.1.3.27 String.prototype[@@iterator]() | ||
26371 | __webpack_require__(197)(String, 'String', function(iterated){ | ||
26372 | this._t = String(iterated); // target | ||
26373 | this._i = 0; // next index | ||
26374 | // 21.1.5.2.1 %StringIteratorPrototype%.next() | ||
26375 | }, function(){ | ||
26376 | var O = this._t | ||
26377 | , index = this._i | ||
26378 | , point; | ||
26379 | if(index >= O.length)return {value: undefined, done: true}; | ||
26380 | point = $at(O, index); | ||
26381 | this._i += point.length; | ||
26382 | return {value: point, done: false}; | ||
26383 | }); | ||
26384 | |||
26385 | /***/ }), | ||
26386 | /* 194 */ | ||
26387 | /***/ (function(module, exports, __webpack_require__) { | ||
26388 | |||
26389 | var toInteger = __webpack_require__(195) | ||
26390 | , defined = __webpack_require__(196); | ||
26391 | // true -> String#at | ||
26392 | // false -> String#codePointAt | ||
26393 | module.exports = function(TO_STRING){ | ||
26394 | return function(that, pos){ | ||
26395 | var s = String(defined(that)) | ||
26396 | , i = toInteger(pos) | ||
26397 | , l = s.length | ||
26398 | , a, b; | ||
26399 | if(i < 0 || i >= l)return TO_STRING ? '' : undefined; | ||
26400 | a = s.charCodeAt(i); | ||
26401 | return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff | ||
26402 | ? TO_STRING ? s.charAt(i) : a | ||
26403 | : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; | ||
26404 | }; | ||
26405 | }; | ||
26406 | |||
26407 | /***/ }), | ||
26408 | /* 195 */ | ||
26409 | /***/ (function(module, exports) { | ||
26410 | |||
26411 | // 7.1.4 ToInteger | ||
26412 | var ceil = Math.ceil | ||
26413 | , floor = Math.floor; | ||
26414 | module.exports = function(it){ | ||
26415 | return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); | ||
26416 | }; | ||
26417 | |||
26418 | /***/ }), | ||
26419 | /* 196 */ | ||
26420 | /***/ (function(module, exports) { | ||
26421 | |||
26422 | // 7.2.1 RequireObjectCoercible(argument) | ||
26423 | module.exports = function(it){ | ||
26424 | if(it == undefined)throw TypeError("Can't call method on " + it); | ||
26425 | return it; | ||
26426 | }; | ||
26427 | |||
26428 | /***/ }), | ||
26429 | /* 197 */ | ||
26430 | /***/ (function(module, exports, __webpack_require__) { | ||
26431 | |||
26432 | 'use strict'; | ||
26433 | var LIBRARY = __webpack_require__(198) | ||
26434 | , $export = __webpack_require__(199) | ||
26435 | , redefine = __webpack_require__(214) | ||
26436 | , hide = __webpack_require__(204) | ||
26437 | , has = __webpack_require__(215) | ||
26438 | , Iterators = __webpack_require__(216) | ||
26439 | , $iterCreate = __webpack_require__(217) | ||
26440 | , setToStringTag = __webpack_require__(233) | ||
26441 | , getPrototypeOf = __webpack_require__(235) | ||
26442 | , ITERATOR = __webpack_require__(234)('iterator') | ||
26443 | , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next` | ||
26444 | , FF_ITERATOR = '@@iterator' | ||
26445 | , KEYS = 'keys' | ||
26446 | , VALUES = 'values'; | ||
26447 | |||
26448 | var returnThis = function(){ return this; }; | ||
26449 | |||
26450 | module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){ | ||
26451 | $iterCreate(Constructor, NAME, next); | ||
26452 | var getMethod = function(kind){ | ||
26453 | if(!BUGGY && kind in proto)return proto[kind]; | ||
26454 | switch(kind){ | ||
26455 | case KEYS: return function keys(){ return new Constructor(this, kind); }; | ||
26456 | case VALUES: return function values(){ return new Constructor(this, kind); }; | ||
26457 | } return function entries(){ return new Constructor(this, kind); }; | ||
26458 | }; | ||
26459 | var TAG = NAME + ' Iterator' | ||
26460 | , DEF_VALUES = DEFAULT == VALUES | ||
26461 | , VALUES_BUG = false | ||
26462 | , proto = Base.prototype | ||
26463 | , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] | ||
26464 | , $default = $native || getMethod(DEFAULT) | ||
26465 | , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined | ||
26466 | , $anyNative = NAME == 'Array' ? proto.entries || $native : $native | ||
26467 | , methods, key, IteratorPrototype; | ||
26468 | // Fix native | ||
26469 | if($anyNative){ | ||
26470 | IteratorPrototype = getPrototypeOf($anyNative.call(new Base)); | ||
26471 | if(IteratorPrototype !== Object.prototype){ | ||
26472 | // Set @@toStringTag to native iterators | ||
26473 | setToStringTag(IteratorPrototype, TAG, true); | ||
26474 | // fix for some old engines | ||
26475 | if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis); | ||
26476 | } | ||
26477 | } | ||
26478 | // fix Array#{values, @@iterator}.name in V8 / FF | ||
26479 | if(DEF_VALUES && $native && $native.name !== VALUES){ | ||
26480 | VALUES_BUG = true; | ||
26481 | $default = function values(){ return $native.call(this); }; | ||
26482 | } | ||
26483 | // Define iterator | ||
26484 | if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){ | ||
26485 | hide(proto, ITERATOR, $default); | ||
26486 | } | ||
26487 | // Plug for library | ||
26488 | Iterators[NAME] = $default; | ||
26489 | Iterators[TAG] = returnThis; | ||
26490 | if(DEFAULT){ | ||
26491 | methods = { | ||
26492 | values: DEF_VALUES ? $default : getMethod(VALUES), | ||
26493 | keys: IS_SET ? $default : getMethod(KEYS), | ||
26494 | entries: $entries | ||
26495 | }; | ||
26496 | if(FORCED)for(key in methods){ | ||
26497 | if(!(key in proto))redefine(proto, key, methods[key]); | ||
26498 | } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); | ||
26499 | } | ||
26500 | return methods; | ||
26501 | }; | ||
26502 | |||
26503 | /***/ }), | ||
26504 | /* 198 */ | ||
26505 | /***/ (function(module, exports) { | ||
26506 | |||
26507 | module.exports = true; | ||
26508 | |||
26509 | /***/ }), | ||
26510 | /* 199 */ | ||
26511 | /***/ (function(module, exports, __webpack_require__) { | ||
26512 | |||
26513 | var global = __webpack_require__(200) | ||
26514 | , core = __webpack_require__(201) | ||
26515 | , ctx = __webpack_require__(202) | ||
26516 | , hide = __webpack_require__(204) | ||
26517 | , PROTOTYPE = 'prototype'; | ||
26518 | |||
26519 | var $export = function(type, name, source){ | ||
26520 | var IS_FORCED = type & $export.F | ||
26521 | , IS_GLOBAL = type & $export.G | ||
26522 | , IS_STATIC = type & $export.S | ||
26523 | , IS_PROTO = type & $export.P | ||
26524 | , IS_BIND = type & $export.B | ||
26525 | , IS_WRAP = type & $export.W | ||
26526 | , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) | ||
26527 | , expProto = exports[PROTOTYPE] | ||
26528 | , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE] | ||
26529 | , key, own, out; | ||
26530 | if(IS_GLOBAL)source = name; | ||
26531 | for(key in source){ | ||
26532 | // contains in native | ||
26533 | own = !IS_FORCED && target && target[key] !== undefined; | ||
26534 | if(own && key in exports)continue; | ||
26535 | // export native or passed | ||
26536 | out = own ? target[key] : source[key]; | ||
26537 | // prevent global pollution for namespaces | ||
26538 | exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] | ||
26539 | // bind timers to global for call from export context | ||
26540 | : IS_BIND && own ? ctx(out, global) | ||
26541 | // wrap global constructors for prevent change them in library | ||
26542 | : IS_WRAP && target[key] == out ? (function(C){ | ||
26543 | var F = function(a, b, c){ | ||
26544 | if(this instanceof C){ | ||
26545 | switch(arguments.length){ | ||
26546 | case 0: return new C; | ||
26547 | case 1: return new C(a); | ||
26548 | case 2: return new C(a, b); | ||
26549 | } return new C(a, b, c); | ||
26550 | } return C.apply(this, arguments); | ||
26551 | }; | ||
26552 | F[PROTOTYPE] = C[PROTOTYPE]; | ||
26553 | return F; | ||
26554 | // make static versions for prototype methods | ||
26555 | })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; | ||
26556 | // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% | ||
26557 | if(IS_PROTO){ | ||
26558 | (exports.virtual || (exports.virtual = {}))[key] = out; | ||
26559 | // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% | ||
26560 | if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out); | ||
26561 | } | ||
26562 | } | ||
26563 | }; | ||
26564 | // type bitmap | ||
26565 | $export.F = 1; // forced | ||
26566 | $export.G = 2; // global | ||
26567 | $export.S = 4; // static | ||
26568 | $export.P = 8; // proto | ||
26569 | $export.B = 16; // bind | ||
26570 | $export.W = 32; // wrap | ||
26571 | $export.U = 64; // safe | ||
26572 | $export.R = 128; // real proto method for `library` | ||
26573 | module.exports = $export; | ||
26574 | |||
26575 | /***/ }), | ||
26576 | /* 200 */ | ||
26577 | /***/ (function(module, exports) { | ||
26578 | |||
26579 | // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 | ||
26580 | var global = module.exports = typeof window != 'undefined' && window.Math == Math | ||
26581 | ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); | ||
26582 | if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef | ||
26583 | |||
26584 | /***/ }), | ||
26585 | /* 201 */ | ||
26586 | /***/ (function(module, exports) { | ||
26587 | |||
26588 | var core = module.exports = {version: '2.4.0'}; | ||
26589 | if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef | ||
26590 | |||
26591 | /***/ }), | ||
26592 | /* 202 */ | ||
26593 | /***/ (function(module, exports, __webpack_require__) { | ||
26594 | |||
26595 | // optional / simple context binding | ||
26596 | var aFunction = __webpack_require__(203); | ||
26597 | module.exports = function(fn, that, length){ | ||
26598 | aFunction(fn); | ||
26599 | if(that === undefined)return fn; | ||
26600 | switch(length){ | ||
26601 | case 1: return function(a){ | ||
26602 | return fn.call(that, a); | ||
26603 | }; | ||
26604 | case 2: return function(a, b){ | ||
26605 | return fn.call(that, a, b); | ||
26606 | }; | ||
26607 | case 3: return function(a, b, c){ | ||
26608 | return fn.call(that, a, b, c); | ||
26609 | }; | ||
26610 | } | ||
26611 | return function(/* ...args */){ | ||
26612 | return fn.apply(that, arguments); | ||
26613 | }; | ||
26614 | }; | ||
26615 | |||
26616 | /***/ }), | ||
26617 | /* 203 */ | ||
26618 | /***/ (function(module, exports) { | ||
26619 | |||
26620 | module.exports = function(it){ | ||
26621 | if(typeof it != 'function')throw TypeError(it + ' is not a function!'); | ||
26622 | return it; | ||
26623 | }; | ||
26624 | |||
26625 | /***/ }), | ||
26626 | /* 204 */ | ||
26627 | /***/ (function(module, exports, __webpack_require__) { | ||
26628 | |||
26629 | var dP = __webpack_require__(205) | ||
26630 | , createDesc = __webpack_require__(213); | ||
26631 | module.exports = __webpack_require__(209) ? function(object, key, value){ | ||
26632 | return dP.f(object, key, createDesc(1, value)); | ||
26633 | } : function(object, key, value){ | ||
26634 | object[key] = value; | ||
26635 | return object; | ||
26636 | }; | ||
26637 | |||
26638 | /***/ }), | ||
26639 | /* 205 */ | ||
26640 | /***/ (function(module, exports, __webpack_require__) { | ||
26641 | |||
26642 | var anObject = __webpack_require__(206) | ||
26643 | , IE8_DOM_DEFINE = __webpack_require__(208) | ||
26644 | , toPrimitive = __webpack_require__(212) | ||
26645 | , dP = Object.defineProperty; | ||
26646 | |||
26647 | exports.f = __webpack_require__(209) ? Object.defineProperty : function defineProperty(O, P, Attributes){ | ||
26648 | anObject(O); | ||
26649 | P = toPrimitive(P, true); | ||
26650 | anObject(Attributes); | ||
26651 | if(IE8_DOM_DEFINE)try { | ||
26652 | return dP(O, P, Attributes); | ||
26653 | } catch(e){ /* empty */ } | ||
26654 | if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); | ||
26655 | if('value' in Attributes)O[P] = Attributes.value; | ||
26656 | return O; | ||
26657 | }; | ||
26658 | |||
26659 | /***/ }), | ||
26660 | /* 206 */ | ||
26661 | /***/ (function(module, exports, __webpack_require__) { | ||
26662 | |||
26663 | var isObject = __webpack_require__(207); | ||
26664 | module.exports = function(it){ | ||
26665 | if(!isObject(it))throw TypeError(it + ' is not an object!'); | ||
26666 | return it; | ||
26667 | }; | ||
26668 | |||
26669 | /***/ }), | ||
26670 | /* 207 */ | ||
26671 | /***/ (function(module, exports) { | ||
26672 | |||
26673 | module.exports = function(it){ | ||
26674 | return typeof it === 'object' ? it !== null : typeof it === 'function'; | ||
26675 | }; | ||
26676 | |||
26677 | /***/ }), | ||
26678 | /* 208 */ | ||
26679 | /***/ (function(module, exports, __webpack_require__) { | ||
26680 | |||
26681 | module.exports = !__webpack_require__(209) && !__webpack_require__(210)(function(){ | ||
26682 | return Object.defineProperty(__webpack_require__(211)('div'), 'a', {get: function(){ return 7; }}).a != 7; | ||
26683 | }); | ||
26684 | |||
26685 | /***/ }), | ||
26686 | /* 209 */ | ||
26687 | /***/ (function(module, exports, __webpack_require__) { | ||
26688 | |||
26689 | // Thank's IE8 for his funny defineProperty | ||
26690 | module.exports = !__webpack_require__(210)(function(){ | ||
26691 | return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; | ||
26692 | }); | ||
26693 | |||
26694 | /***/ }), | ||
26695 | /* 210 */ | ||
26696 | /***/ (function(module, exports) { | ||
26697 | |||
26698 | module.exports = function(exec){ | ||
26699 | try { | ||
26700 | return !!exec(); | ||
26701 | } catch(e){ | ||
26702 | return true; | ||
26703 | } | ||
26704 | }; | ||
26705 | |||
26706 | /***/ }), | ||
26707 | /* 211 */ | ||
26708 | /***/ (function(module, exports, __webpack_require__) { | ||
26709 | |||
26710 | var isObject = __webpack_require__(207) | ||
26711 | , document = __webpack_require__(200).document | ||
26712 | // in old IE typeof document.createElement is 'object' | ||
26713 | , is = isObject(document) && isObject(document.createElement); | ||
26714 | module.exports = function(it){ | ||
26715 | return is ? document.createElement(it) : {}; | ||
26716 | }; | ||
26717 | |||
26718 | /***/ }), | ||
26719 | /* 212 */ | ||
26720 | /***/ (function(module, exports, __webpack_require__) { | ||
26721 | |||
26722 | // 7.1.1 ToPrimitive(input [, PreferredType]) | ||
26723 | var isObject = __webpack_require__(207); | ||
26724 | // instead of the ES6 spec version, we didn't implement @@toPrimitive case | ||
26725 | // and the second argument - flag - preferred type is a string | ||
26726 | module.exports = function(it, S){ | ||
26727 | if(!isObject(it))return it; | ||
26728 | var fn, val; | ||
26729 | if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; | ||
26730 | if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val; | ||
26731 | if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; | ||
26732 | throw TypeError("Can't convert object to primitive value"); | ||
26733 | }; | ||
26734 | |||
26735 | /***/ }), | ||
26736 | /* 213 */ | ||
26737 | /***/ (function(module, exports) { | ||
26738 | |||
26739 | module.exports = function(bitmap, value){ | ||
26740 | return { | ||
26741 | enumerable : !(bitmap & 1), | ||
26742 | configurable: !(bitmap & 2), | ||
26743 | writable : !(bitmap & 4), | ||
26744 | value : value | ||
26745 | }; | ||
26746 | }; | ||
26747 | |||
26748 | /***/ }), | ||
26749 | /* 214 */ | ||
26750 | /***/ (function(module, exports, __webpack_require__) { | ||
26751 | |||
26752 | module.exports = __webpack_require__(204); | ||
26753 | |||
26754 | /***/ }), | ||
26755 | /* 215 */ | ||
26756 | /***/ (function(module, exports) { | ||
26757 | |||
26758 | var hasOwnProperty = {}.hasOwnProperty; | ||
26759 | module.exports = function(it, key){ | ||
26760 | return hasOwnProperty.call(it, key); | ||
26761 | }; | ||
26762 | |||
26763 | /***/ }), | ||
26764 | /* 216 */ | ||
26765 | /***/ (function(module, exports) { | ||
26766 | |||
26767 | module.exports = {}; | ||
26768 | |||
26769 | /***/ }), | ||
26770 | /* 217 */ | ||
26771 | /***/ (function(module, exports, __webpack_require__) { | ||
26772 | |||
26773 | 'use strict'; | ||
26774 | var create = __webpack_require__(218) | ||
26775 | , descriptor = __webpack_require__(213) | ||
26776 | , setToStringTag = __webpack_require__(233) | ||
26777 | , IteratorPrototype = {}; | ||
26778 | |||
26779 | // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() | ||
26780 | __webpack_require__(204)(IteratorPrototype, __webpack_require__(234)('iterator'), function(){ return this; }); | ||
26781 | |||
26782 | module.exports = function(Constructor, NAME, next){ | ||
26783 | Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)}); | ||
26784 | setToStringTag(Constructor, NAME + ' Iterator'); | ||
26785 | }; | ||
26786 | |||
26787 | /***/ }), | ||
26788 | /* 218 */ | ||
26789 | /***/ (function(module, exports, __webpack_require__) { | ||
26790 | |||
26791 | // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) | ||
26792 | var anObject = __webpack_require__(206) | ||
26793 | , dPs = __webpack_require__(219) | ||
26794 | , enumBugKeys = __webpack_require__(231) | ||
26795 | , IE_PROTO = __webpack_require__(228)('IE_PROTO') | ||
26796 | , Empty = function(){ /* empty */ } | ||
26797 | , PROTOTYPE = 'prototype'; | ||
26798 | |||
26799 | // Create object with fake `null` prototype: use iframe Object with cleared prototype | ||
26800 | var createDict = function(){ | ||
26801 | // Thrash, waste and sodomy: IE GC bug | ||
26802 | var iframe = __webpack_require__(211)('iframe') | ||
26803 | , i = enumBugKeys.length | ||
26804 | , lt = '<' | ||
26805 | , gt = '>' | ||
26806 | , iframeDocument; | ||
26807 | iframe.style.display = 'none'; | ||
26808 | __webpack_require__(232).appendChild(iframe); | ||
26809 | iframe.src = 'javascript:'; // eslint-disable-line no-script-url | ||
26810 | // createDict = iframe.contentWindow.Object; | ||
26811 | // html.removeChild(iframe); | ||
26812 | iframeDocument = iframe.contentWindow.document; | ||
26813 | iframeDocument.open(); | ||
26814 | iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); | ||
26815 | iframeDocument.close(); | ||
26816 | createDict = iframeDocument.F; | ||
26817 | while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]]; | ||
26818 | return createDict(); | ||
26819 | }; | ||
26820 | |||
26821 | module.exports = Object.create || function create(O, Properties){ | ||
26822 | var result; | ||
26823 | if(O !== null){ | ||
26824 | Empty[PROTOTYPE] = anObject(O); | ||
26825 | result = new Empty; | ||
26826 | Empty[PROTOTYPE] = null; | ||
26827 | // add "__proto__" for Object.getPrototypeOf polyfill | ||
26828 | result[IE_PROTO] = O; | ||
26829 | } else result = createDict(); | ||
26830 | return Properties === undefined ? result : dPs(result, Properties); | ||
26831 | }; | ||
26832 | |||
26833 | |||
26834 | /***/ }), | ||
26835 | /* 219 */ | ||
26836 | /***/ (function(module, exports, __webpack_require__) { | ||
26837 | |||
26838 | var dP = __webpack_require__(205) | ||
26839 | , anObject = __webpack_require__(206) | ||
26840 | , getKeys = __webpack_require__(220); | ||
26841 | |||
26842 | module.exports = __webpack_require__(209) ? Object.defineProperties : function defineProperties(O, Properties){ | ||
26843 | anObject(O); | ||
26844 | var keys = getKeys(Properties) | ||
26845 | , length = keys.length | ||
26846 | , i = 0 | ||
26847 | , P; | ||
26848 | while(length > i)dP.f(O, P = keys[i++], Properties[P]); | ||
26849 | return O; | ||
26850 | }; | ||
26851 | |||
26852 | /***/ }), | ||
26853 | /* 220 */ | ||
26854 | /***/ (function(module, exports, __webpack_require__) { | ||
26855 | |||
26856 | // 19.1.2.14 / 15.2.3.14 Object.keys(O) | ||
26857 | var $keys = __webpack_require__(221) | ||
26858 | , enumBugKeys = __webpack_require__(231); | ||
26859 | |||
26860 | module.exports = Object.keys || function keys(O){ | ||
26861 | return $keys(O, enumBugKeys); | ||
26862 | }; | ||
26863 | |||
26864 | /***/ }), | ||
26865 | /* 221 */ | ||
26866 | /***/ (function(module, exports, __webpack_require__) { | ||
26867 | |||
26868 | var has = __webpack_require__(215) | ||
26869 | , toIObject = __webpack_require__(222) | ||
26870 | , arrayIndexOf = __webpack_require__(225)(false) | ||
26871 | , IE_PROTO = __webpack_require__(228)('IE_PROTO'); | ||
26872 | |||
26873 | module.exports = function(object, names){ | ||
26874 | var O = toIObject(object) | ||
26875 | , i = 0 | ||
26876 | , result = [] | ||
26877 | , key; | ||
26878 | for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key); | ||
26879 | // Don't enum bug & hidden keys | ||
26880 | while(names.length > i)if(has(O, key = names[i++])){ | ||
26881 | ~arrayIndexOf(result, key) || result.push(key); | ||
26882 | } | ||
26883 | return result; | ||
26884 | }; | ||
26885 | |||
26886 | /***/ }), | ||
26887 | /* 222 */ | ||
26888 | /***/ (function(module, exports, __webpack_require__) { | ||
26889 | |||
26890 | // to indexed object, toObject with fallback for non-array-like ES3 strings | ||
26891 | var IObject = __webpack_require__(223) | ||
26892 | , defined = __webpack_require__(196); | ||
26893 | module.exports = function(it){ | ||
26894 | return IObject(defined(it)); | ||
26895 | }; | ||
26896 | |||
26897 | /***/ }), | ||
26898 | /* 223 */ | ||
26899 | /***/ (function(module, exports, __webpack_require__) { | ||
26900 | |||
26901 | // fallback for non-array-like ES3 and non-enumerable old V8 strings | ||
26902 | var cof = __webpack_require__(224); | ||
26903 | module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ | ||
26904 | return cof(it) == 'String' ? it.split('') : Object(it); | ||
26905 | }; | ||
26906 | |||
26907 | /***/ }), | ||
26908 | /* 224 */ | ||
26909 | /***/ (function(module, exports) { | ||
26910 | |||
26911 | var toString = {}.toString; | ||
26912 | |||
26913 | module.exports = function(it){ | ||
26914 | return toString.call(it).slice(8, -1); | ||
26915 | }; | ||
26916 | |||
26917 | /***/ }), | ||
26918 | /* 225 */ | ||
26919 | /***/ (function(module, exports, __webpack_require__) { | ||
26920 | |||
26921 | // false -> Array#indexOf | ||
26922 | // true -> Array#includes | ||
26923 | var toIObject = __webpack_require__(222) | ||
26924 | , toLength = __webpack_require__(226) | ||
26925 | , toIndex = __webpack_require__(227); | ||
26926 | module.exports = function(IS_INCLUDES){ | ||
26927 | return function($this, el, fromIndex){ | ||
26928 | var O = toIObject($this) | ||
26929 | , length = toLength(O.length) | ||
26930 | , index = toIndex(fromIndex, length) | ||
26931 | , value; | ||
26932 | // Array#includes uses SameValueZero equality algorithm | ||
26933 | if(IS_INCLUDES && el != el)while(length > index){ | ||
26934 | value = O[index++]; | ||
26935 | if(value != value)return true; | ||
26936 | // Array#toIndex ignores holes, Array#includes - not | ||
26937 | } else for(;length > index; index++)if(IS_INCLUDES || index in O){ | ||
26938 | if(O[index] === el)return IS_INCLUDES || index || 0; | ||
26939 | } return !IS_INCLUDES && -1; | ||
26940 | }; | ||
26941 | }; | ||
26942 | |||
26943 | /***/ }), | ||
26944 | /* 226 */ | ||
26945 | /***/ (function(module, exports, __webpack_require__) { | ||
26946 | |||
26947 | // 7.1.15 ToLength | ||
26948 | var toInteger = __webpack_require__(195) | ||
26949 | , min = Math.min; | ||
26950 | module.exports = function(it){ | ||
26951 | return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 | ||
26952 | }; | ||
26953 | |||
26954 | /***/ }), | ||
26955 | /* 227 */ | ||
26956 | /***/ (function(module, exports, __webpack_require__) { | ||
26957 | |||
26958 | var toInteger = __webpack_require__(195) | ||
26959 | , max = Math.max | ||
26960 | , min = Math.min; | ||
26961 | module.exports = function(index, length){ | ||
26962 | index = toInteger(index); | ||
26963 | return index < 0 ? max(index + length, 0) : min(index, length); | ||
26964 | }; | ||
26965 | |||
26966 | /***/ }), | ||
26967 | /* 228 */ | ||
26968 | /***/ (function(module, exports, __webpack_require__) { | ||
26969 | |||
26970 | var shared = __webpack_require__(229)('keys') | ||
26971 | , uid = __webpack_require__(230); | ||
26972 | module.exports = function(key){ | ||
26973 | return shared[key] || (shared[key] = uid(key)); | ||
26974 | }; | ||
26975 | |||
26976 | /***/ }), | ||
26977 | /* 229 */ | ||
26978 | /***/ (function(module, exports, __webpack_require__) { | ||
26979 | |||
26980 | var global = __webpack_require__(200) | ||
26981 | , SHARED = '__core-js_shared__' | ||
26982 | , store = global[SHARED] || (global[SHARED] = {}); | ||
26983 | module.exports = function(key){ | ||
26984 | return store[key] || (store[key] = {}); | ||
26985 | }; | ||
26986 | |||
26987 | /***/ }), | ||
26988 | /* 230 */ | ||
26989 | /***/ (function(module, exports) { | ||
26990 | |||
26991 | var id = 0 | ||
26992 | , px = Math.random(); | ||
26993 | module.exports = function(key){ | ||
26994 | return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); | ||
26995 | }; | ||
26996 | |||
26997 | /***/ }), | ||
26998 | /* 231 */ | ||
26999 | /***/ (function(module, exports) { | ||
27000 | |||
27001 | // IE 8- don't enum bug keys | ||
27002 | module.exports = ( | ||
27003 | 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' | ||
27004 | ).split(','); | ||
27005 | |||
27006 | /***/ }), | ||
27007 | /* 232 */ | ||
27008 | /***/ (function(module, exports, __webpack_require__) { | ||
27009 | |||
27010 | module.exports = __webpack_require__(200).document && document.documentElement; | ||
27011 | |||
27012 | /***/ }), | ||
27013 | /* 233 */ | ||
27014 | /***/ (function(module, exports, __webpack_require__) { | ||
27015 | |||
27016 | var def = __webpack_require__(205).f | ||
27017 | , has = __webpack_require__(215) | ||
27018 | , TAG = __webpack_require__(234)('toStringTag'); | ||
27019 | |||
27020 | module.exports = function(it, tag, stat){ | ||
27021 | if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag}); | ||
27022 | }; | ||
27023 | |||
27024 | /***/ }), | ||
27025 | /* 234 */ | ||
27026 | /***/ (function(module, exports, __webpack_require__) { | ||
27027 | |||
27028 | var store = __webpack_require__(229)('wks') | ||
27029 | , uid = __webpack_require__(230) | ||
27030 | , Symbol = __webpack_require__(200).Symbol | ||
27031 | , USE_SYMBOL = typeof Symbol == 'function'; | ||
27032 | |||
27033 | var $exports = module.exports = function(name){ | ||
27034 | return store[name] || (store[name] = | ||
27035 | USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); | ||
27036 | }; | ||
27037 | |||
27038 | $exports.store = store; | ||
27039 | |||
27040 | /***/ }), | ||
27041 | /* 235 */ | ||
27042 | /***/ (function(module, exports, __webpack_require__) { | ||
27043 | |||
27044 | // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) | ||
27045 | var has = __webpack_require__(215) | ||
27046 | , toObject = __webpack_require__(236) | ||
27047 | , IE_PROTO = __webpack_require__(228)('IE_PROTO') | ||
27048 | , ObjectProto = Object.prototype; | ||
27049 | |||
27050 | module.exports = Object.getPrototypeOf || function(O){ | ||
27051 | O = toObject(O); | ||
27052 | if(has(O, IE_PROTO))return O[IE_PROTO]; | ||
27053 | if(typeof O.constructor == 'function' && O instanceof O.constructor){ | ||
27054 | return O.constructor.prototype; | ||
27055 | } return O instanceof Object ? ObjectProto : null; | ||
27056 | }; | ||
27057 | |||
27058 | /***/ }), | ||
27059 | /* 236 */ | ||
27060 | /***/ (function(module, exports, __webpack_require__) { | ||
27061 | |||
27062 | // 7.1.13 ToObject(argument) | ||
27063 | var defined = __webpack_require__(196); | ||
27064 | module.exports = function(it){ | ||
27065 | return Object(defined(it)); | ||
27066 | }; | ||
27067 | |||
27068 | /***/ }), | ||
27069 | /* 237 */ | ||
27070 | /***/ (function(module, exports, __webpack_require__) { | ||
27071 | |||
27072 | __webpack_require__(238); | ||
27073 | var global = __webpack_require__(200) | ||
27074 | , hide = __webpack_require__(204) | ||
27075 | , Iterators = __webpack_require__(216) | ||
27076 | , TO_STRING_TAG = __webpack_require__(234)('toStringTag'); | ||
27077 | |||
27078 | for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){ | ||
27079 | var NAME = collections[i] | ||
27080 | , Collection = global[NAME] | ||
27081 | , proto = Collection && Collection.prototype; | ||
27082 | if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME); | ||
27083 | Iterators[NAME] = Iterators.Array; | ||
27084 | } | ||
27085 | |||
27086 | /***/ }), | ||
27087 | /* 238 */ | ||
27088 | /***/ (function(module, exports, __webpack_require__) { | ||
27089 | |||
27090 | 'use strict'; | ||
27091 | var addToUnscopables = __webpack_require__(239) | ||
27092 | , step = __webpack_require__(240) | ||
27093 | , Iterators = __webpack_require__(216) | ||
27094 | , toIObject = __webpack_require__(222); | ||
27095 | |||
27096 | // 22.1.3.4 Array.prototype.entries() | ||
27097 | // 22.1.3.13 Array.prototype.keys() | ||
27098 | // 22.1.3.29 Array.prototype.values() | ||
27099 | // 22.1.3.30 Array.prototype[@@iterator]() | ||
27100 | module.exports = __webpack_require__(197)(Array, 'Array', function(iterated, kind){ | ||
27101 | this._t = toIObject(iterated); // target | ||
27102 | this._i = 0; // next index | ||
27103 | this._k = kind; // kind | ||
27104 | // 22.1.5.2.1 %ArrayIteratorPrototype%.next() | ||
27105 | }, function(){ | ||
27106 | var O = this._t | ||
27107 | , kind = this._k | ||
27108 | , index = this._i++; | ||
27109 | if(!O || index >= O.length){ | ||
27110 | this._t = undefined; | ||
27111 | return step(1); | ||
27112 | } | ||
27113 | if(kind == 'keys' )return step(0, index); | ||
27114 | if(kind == 'values')return step(0, O[index]); | ||
27115 | return step(0, [index, O[index]]); | ||
27116 | }, 'values'); | ||
27117 | |||
27118 | // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) | ||
27119 | Iterators.Arguments = Iterators.Array; | ||
27120 | |||
27121 | addToUnscopables('keys'); | ||
27122 | addToUnscopables('values'); | ||
27123 | addToUnscopables('entries'); | ||
27124 | |||
27125 | /***/ }), | ||
27126 | /* 239 */ | ||
27127 | /***/ (function(module, exports) { | ||
27128 | |||
27129 | module.exports = function(){ /* empty */ }; | ||
27130 | |||
27131 | /***/ }), | ||
27132 | /* 240 */ | ||
27133 | /***/ (function(module, exports) { | ||
27134 | |||
27135 | module.exports = function(done, value){ | ||
27136 | return {value: value, done: !!done}; | ||
27137 | }; | ||
27138 | |||
27139 | /***/ }), | ||
27140 | /* 241 */ | ||
27141 | /***/ (function(module, exports, __webpack_require__) { | ||
27142 | |||
27143 | exports.f = __webpack_require__(234); | ||
27144 | |||
27145 | /***/ }), | ||
27146 | /* 242 */ | ||
27147 | /***/ (function(module, exports, __webpack_require__) { | ||
27148 | |||
27149 | module.exports = { "default": __webpack_require__(243), __esModule: true }; | ||
27150 | |||
27151 | /***/ }), | ||
27152 | /* 243 */ | ||
27153 | /***/ (function(module, exports, __webpack_require__) { | ||
27154 | |||
27155 | __webpack_require__(244); | ||
27156 | __webpack_require__(255); | ||
27157 | __webpack_require__(256); | ||
27158 | __webpack_require__(257); | ||
27159 | module.exports = __webpack_require__(201).Symbol; | ||
27160 | |||
27161 | /***/ }), | ||
27162 | /* 244 */ | ||
27163 | /***/ (function(module, exports, __webpack_require__) { | ||
27164 | |||
27165 | 'use strict'; | ||
27166 | // ECMAScript 6 symbols shim | ||
27167 | var global = __webpack_require__(200) | ||
27168 | , has = __webpack_require__(215) | ||
27169 | , DESCRIPTORS = __webpack_require__(209) | ||
27170 | , $export = __webpack_require__(199) | ||
27171 | , redefine = __webpack_require__(214) | ||
27172 | , META = __webpack_require__(245).KEY | ||
27173 | , $fails = __webpack_require__(210) | ||
27174 | , shared = __webpack_require__(229) | ||
27175 | , setToStringTag = __webpack_require__(233) | ||
27176 | , uid = __webpack_require__(230) | ||
27177 | , wks = __webpack_require__(234) | ||
27178 | , wksExt = __webpack_require__(241) | ||
27179 | , wksDefine = __webpack_require__(246) | ||
27180 | , keyOf = __webpack_require__(247) | ||
27181 | , enumKeys = __webpack_require__(248) | ||
27182 | , isArray = __webpack_require__(251) | ||
27183 | , anObject = __webpack_require__(206) | ||
27184 | , toIObject = __webpack_require__(222) | ||
27185 | , toPrimitive = __webpack_require__(212) | ||
27186 | , createDesc = __webpack_require__(213) | ||
27187 | , _create = __webpack_require__(218) | ||
27188 | , gOPNExt = __webpack_require__(252) | ||
27189 | , $GOPD = __webpack_require__(254) | ||
27190 | , $DP = __webpack_require__(205) | ||
27191 | , $keys = __webpack_require__(220) | ||
27192 | , gOPD = $GOPD.f | ||
27193 | , dP = $DP.f | ||
27194 | , gOPN = gOPNExt.f | ||
27195 | , $Symbol = global.Symbol | ||
27196 | , $JSON = global.JSON | ||
27197 | , _stringify = $JSON && $JSON.stringify | ||
27198 | , PROTOTYPE = 'prototype' | ||
27199 | , HIDDEN = wks('_hidden') | ||
27200 | , TO_PRIMITIVE = wks('toPrimitive') | ||
27201 | , isEnum = {}.propertyIsEnumerable | ||
27202 | , SymbolRegistry = shared('symbol-registry') | ||
27203 | , AllSymbols = shared('symbols') | ||
27204 | , OPSymbols = shared('op-symbols') | ||
27205 | , ObjectProto = Object[PROTOTYPE] | ||
27206 | , USE_NATIVE = typeof $Symbol == 'function' | ||
27207 | , QObject = global.QObject; | ||
27208 | // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 | ||
27209 | var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; | ||
27210 | |||
27211 | // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 | ||
27212 | var setSymbolDesc = DESCRIPTORS && $fails(function(){ | ||
27213 | return _create(dP({}, 'a', { | ||
27214 | get: function(){ return dP(this, 'a', {value: 7}).a; } | ||
27215 | })).a != 7; | ||
27216 | }) ? function(it, key, D){ | ||
27217 | var protoDesc = gOPD(ObjectProto, key); | ||
27218 | if(protoDesc)delete ObjectProto[key]; | ||
27219 | dP(it, key, D); | ||
27220 | if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc); | ||
27221 | } : dP; | ||
27222 | |||
27223 | var wrap = function(tag){ | ||
27224 | var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); | ||
27225 | sym._k = tag; | ||
27226 | return sym; | ||
27227 | }; | ||
27228 | |||
27229 | var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){ | ||
27230 | return typeof it == 'symbol'; | ||
27231 | } : function(it){ | ||
27232 | return it instanceof $Symbol; | ||
27233 | }; | ||
27234 | |||
27235 | var $defineProperty = function defineProperty(it, key, D){ | ||
27236 | if(it === ObjectProto)$defineProperty(OPSymbols, key, D); | ||
27237 | anObject(it); | ||
27238 | key = toPrimitive(key, true); | ||
27239 | anObject(D); | ||
27240 | if(has(AllSymbols, key)){ | ||
27241 | if(!D.enumerable){ | ||
27242 | if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {})); | ||
27243 | it[HIDDEN][key] = true; | ||
27244 | } else { | ||
27245 | if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false; | ||
27246 | D = _create(D, {enumerable: createDesc(0, false)}); | ||
27247 | } return setSymbolDesc(it, key, D); | ||
27248 | } return dP(it, key, D); | ||
27249 | }; | ||
27250 | var $defineProperties = function defineProperties(it, P){ | ||
27251 | anObject(it); | ||
27252 | var keys = enumKeys(P = toIObject(P)) | ||
27253 | , i = 0 | ||
27254 | , l = keys.length | ||
27255 | , key; | ||
27256 | while(l > i)$defineProperty(it, key = keys[i++], P[key]); | ||
27257 | return it; | ||
27258 | }; | ||
27259 | var $create = function create(it, P){ | ||
27260 | return P === undefined ? _create(it) : $defineProperties(_create(it), P); | ||
27261 | }; | ||
27262 | var $propertyIsEnumerable = function propertyIsEnumerable(key){ | ||
27263 | var E = isEnum.call(this, key = toPrimitive(key, true)); | ||
27264 | if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false; | ||
27265 | return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; | ||
27266 | }; | ||
27267 | var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){ | ||
27268 | it = toIObject(it); | ||
27269 | key = toPrimitive(key, true); | ||
27270 | if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return; | ||
27271 | var D = gOPD(it, key); | ||
27272 | if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true; | ||
27273 | return D; | ||
27274 | }; | ||
27275 | var $getOwnPropertyNames = function getOwnPropertyNames(it){ | ||
27276 | var names = gOPN(toIObject(it)) | ||
27277 | , result = [] | ||
27278 | , i = 0 | ||
27279 | , key; | ||
27280 | while(names.length > i){ | ||
27281 | if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key); | ||
27282 | } return result; | ||
27283 | }; | ||
27284 | var $getOwnPropertySymbols = function getOwnPropertySymbols(it){ | ||
27285 | var IS_OP = it === ObjectProto | ||
27286 | , names = gOPN(IS_OP ? OPSymbols : toIObject(it)) | ||
27287 | , result = [] | ||
27288 | , i = 0 | ||
27289 | , key; | ||
27290 | while(names.length > i){ | ||
27291 | if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]); | ||
27292 | } return result; | ||
27293 | }; | ||
27294 | |||
27295 | // 19.4.1.1 Symbol([description]) | ||
27296 | if(!USE_NATIVE){ | ||
27297 | $Symbol = function Symbol(){ | ||
27298 | if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!'); | ||
27299 | var tag = uid(arguments.length > 0 ? arguments[0] : undefined); | ||
27300 | var $set = function(value){ | ||
27301 | if(this === ObjectProto)$set.call(OPSymbols, value); | ||
27302 | if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false; | ||
27303 | setSymbolDesc(this, tag, createDesc(1, value)); | ||
27304 | }; | ||
27305 | if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set}); | ||
27306 | return wrap(tag); | ||
27307 | }; | ||
27308 | redefine($Symbol[PROTOTYPE], 'toString', function toString(){ | ||
27309 | return this._k; | ||
27310 | }); | ||
27311 | |||
27312 | $GOPD.f = $getOwnPropertyDescriptor; | ||
27313 | $DP.f = $defineProperty; | ||
27314 | __webpack_require__(253).f = gOPNExt.f = $getOwnPropertyNames; | ||
27315 | __webpack_require__(250).f = $propertyIsEnumerable; | ||
27316 | __webpack_require__(249).f = $getOwnPropertySymbols; | ||
27317 | |||
27318 | if(DESCRIPTORS && !__webpack_require__(198)){ | ||
27319 | redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); | ||
27320 | } | ||
27321 | |||
27322 | wksExt.f = function(name){ | ||
27323 | return wrap(wks(name)); | ||
27324 | } | ||
27325 | } | ||
27326 | |||
27327 | $export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol}); | ||
27328 | |||
27329 | for(var symbols = ( | ||
27330 | // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 | ||
27331 | 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' | ||
27332 | ).split(','), i = 0; symbols.length > i; )wks(symbols[i++]); | ||
27333 | |||
27334 | for(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]); | ||
27335 | |||
27336 | $export($export.S + $export.F * !USE_NATIVE, 'Symbol', { | ||
27337 | // 19.4.2.1 Symbol.for(key) | ||
27338 | 'for': function(key){ | ||
27339 | return has(SymbolRegistry, key += '') | ||
27340 | ? SymbolRegistry[key] | ||
27341 | : SymbolRegistry[key] = $Symbol(key); | ||
27342 | }, | ||
27343 | // 19.4.2.5 Symbol.keyFor(sym) | ||
27344 | keyFor: function keyFor(key){ | ||
27345 | if(isSymbol(key))return keyOf(SymbolRegistry, key); | ||
27346 | throw TypeError(key + ' is not a symbol!'); | ||
27347 | }, | ||
27348 | useSetter: function(){ setter = true; }, | ||
27349 | useSimple: function(){ setter = false; } | ||
27350 | }); | ||
27351 | |||
27352 | $export($export.S + $export.F * !USE_NATIVE, 'Object', { | ||
27353 | // 19.1.2.2 Object.create(O [, Properties]) | ||
27354 | create: $create, | ||
27355 | // 19.1.2.4 Object.defineProperty(O, P, Attributes) | ||
27356 | defineProperty: $defineProperty, | ||
27357 | // 19.1.2.3 Object.defineProperties(O, Properties) | ||
27358 | defineProperties: $defineProperties, | ||
27359 | // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) | ||
27360 | getOwnPropertyDescriptor: $getOwnPropertyDescriptor, | ||
27361 | // 19.1.2.7 Object.getOwnPropertyNames(O) | ||
27362 | getOwnPropertyNames: $getOwnPropertyNames, | ||
27363 | // 19.1.2.8 Object.getOwnPropertySymbols(O) | ||
27364 | getOwnPropertySymbols: $getOwnPropertySymbols | ||
27365 | }); | ||
27366 | |||
27367 | // 24.3.2 JSON.stringify(value [, replacer [, space]]) | ||
27368 | $JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){ | ||
27369 | var S = $Symbol(); | ||
27370 | // MS Edge converts symbol values to JSON as {} | ||
27371 | // WebKit converts symbol values to JSON as null | ||
27372 | // V8 throws on boxed symbols | ||
27373 | return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}'; | ||
27374 | })), 'JSON', { | ||
27375 | stringify: function stringify(it){ | ||
27376 | if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined | ||
27377 | var args = [it] | ||
27378 | , i = 1 | ||
27379 | , replacer, $replacer; | ||
27380 | while(arguments.length > i)args.push(arguments[i++]); | ||
27381 | replacer = args[1]; | ||
27382 | if(typeof replacer == 'function')$replacer = replacer; | ||
27383 | if($replacer || !isArray(replacer))replacer = function(key, value){ | ||
27384 | if($replacer)value = $replacer.call(this, key, value); | ||
27385 | if(!isSymbol(value))return value; | ||
27386 | }; | ||
27387 | args[1] = replacer; | ||
27388 | return _stringify.apply($JSON, args); | ||
27389 | } | ||
27390 | }); | ||
27391 | |||
27392 | // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) | ||
27393 | $Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(204)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); | ||
27394 | // 19.4.3.5 Symbol.prototype[@@toStringTag] | ||
27395 | setToStringTag($Symbol, 'Symbol'); | ||
27396 | // 20.2.1.9 Math[@@toStringTag] | ||
27397 | setToStringTag(Math, 'Math', true); | ||
27398 | // 24.3.3 JSON[@@toStringTag] | ||
27399 | setToStringTag(global.JSON, 'JSON', true); | ||
27400 | |||
27401 | /***/ }), | ||
27402 | /* 245 */ | ||
27403 | /***/ (function(module, exports, __webpack_require__) { | ||
27404 | |||
27405 | var META = __webpack_require__(230)('meta') | ||
27406 | , isObject = __webpack_require__(207) | ||
27407 | , has = __webpack_require__(215) | ||
27408 | , setDesc = __webpack_require__(205).f | ||
27409 | , id = 0; | ||
27410 | var isExtensible = Object.isExtensible || function(){ | ||
27411 | return true; | ||
27412 | }; | ||
27413 | var FREEZE = !__webpack_require__(210)(function(){ | ||
27414 | return isExtensible(Object.preventExtensions({})); | ||
27415 | }); | ||
27416 | var setMeta = function(it){ | ||
27417 | setDesc(it, META, {value: { | ||
27418 | i: 'O' + ++id, // object ID | ||
27419 | w: {} // weak collections IDs | ||
27420 | }}); | ||
27421 | }; | ||
27422 | var fastKey = function(it, create){ | ||
27423 | // return primitive with prefix | ||
27424 | if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; | ||
27425 | if(!has(it, META)){ | ||
27426 | // can't set metadata to uncaught frozen object | ||
27427 | if(!isExtensible(it))return 'F'; | ||
27428 | // not necessary to add metadata | ||
27429 | if(!create)return 'E'; | ||
27430 | // add missing metadata | ||
27431 | setMeta(it); | ||
27432 | // return object ID | ||
27433 | } return it[META].i; | ||
27434 | }; | ||
27435 | var getWeak = function(it, create){ | ||
27436 | if(!has(it, META)){ | ||
27437 | // can't set metadata to uncaught frozen object | ||
27438 | if(!isExtensible(it))return true; | ||
27439 | // not necessary to add metadata | ||
27440 | if(!create)return false; | ||
27441 | // add missing metadata | ||
27442 | setMeta(it); | ||
27443 | // return hash weak collections IDs | ||
27444 | } return it[META].w; | ||
27445 | }; | ||
27446 | // add metadata on freeze-family methods calling | ||
27447 | var onFreeze = function(it){ | ||
27448 | if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it); | ||
27449 | return it; | ||
27450 | }; | ||
27451 | var meta = module.exports = { | ||
27452 | KEY: META, | ||
27453 | NEED: false, | ||
27454 | fastKey: fastKey, | ||
27455 | getWeak: getWeak, | ||
27456 | onFreeze: onFreeze | ||
27457 | }; | ||
27458 | |||
27459 | /***/ }), | ||
27460 | /* 246 */ | ||
27461 | /***/ (function(module, exports, __webpack_require__) { | ||
27462 | |||
27463 | var global = __webpack_require__(200) | ||
27464 | , core = __webpack_require__(201) | ||
27465 | , LIBRARY = __webpack_require__(198) | ||
27466 | , wksExt = __webpack_require__(241) | ||
27467 | , defineProperty = __webpack_require__(205).f; | ||
27468 | module.exports = function(name){ | ||
27469 | var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); | ||
27470 | if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)}); | ||
27471 | }; | ||
27472 | |||
27473 | /***/ }), | ||
27474 | /* 247 */ | ||
27475 | /***/ (function(module, exports, __webpack_require__) { | ||
27476 | |||
27477 | var getKeys = __webpack_require__(220) | ||
27478 | , toIObject = __webpack_require__(222); | ||
27479 | module.exports = function(object, el){ | ||
27480 | var O = toIObject(object) | ||
27481 | , keys = getKeys(O) | ||
27482 | , length = keys.length | ||
27483 | , index = 0 | ||
27484 | , key; | ||
27485 | while(length > index)if(O[key = keys[index++]] === el)return key; | ||
27486 | }; | ||
27487 | |||
27488 | /***/ }), | ||
27489 | /* 248 */ | ||
27490 | /***/ (function(module, exports, __webpack_require__) { | ||
27491 | |||
27492 | // all enumerable object keys, includes symbols | ||
27493 | var getKeys = __webpack_require__(220) | ||
27494 | , gOPS = __webpack_require__(249) | ||
27495 | , pIE = __webpack_require__(250); | ||
27496 | module.exports = function(it){ | ||
27497 | var result = getKeys(it) | ||
27498 | , getSymbols = gOPS.f; | ||
27499 | if(getSymbols){ | ||
27500 | var symbols = getSymbols(it) | ||
27501 | , isEnum = pIE.f | ||
27502 | , i = 0 | ||
27503 | , key; | ||
27504 | while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key); | ||
27505 | } return result; | ||
27506 | }; | ||
27507 | |||
27508 | /***/ }), | ||
27509 | /* 249 */ | ||
27510 | /***/ (function(module, exports) { | ||
27511 | |||
27512 | exports.f = Object.getOwnPropertySymbols; | ||
27513 | |||
27514 | /***/ }), | ||
27515 | /* 250 */ | ||
27516 | /***/ (function(module, exports) { | ||
27517 | |||
27518 | exports.f = {}.propertyIsEnumerable; | ||
27519 | |||
27520 | /***/ }), | ||
27521 | /* 251 */ | ||
27522 | /***/ (function(module, exports, __webpack_require__) { | ||
27523 | |||
27524 | // 7.2.2 IsArray(argument) | ||
27525 | var cof = __webpack_require__(224); | ||
27526 | module.exports = Array.isArray || function isArray(arg){ | ||
27527 | return cof(arg) == 'Array'; | ||
27528 | }; | ||
27529 | |||
27530 | /***/ }), | ||
27531 | /* 252 */ | ||
27532 | /***/ (function(module, exports, __webpack_require__) { | ||
27533 | |||
27534 | // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window | ||
27535 | var toIObject = __webpack_require__(222) | ||
27536 | , gOPN = __webpack_require__(253).f | ||
27537 | , toString = {}.toString; | ||
27538 | |||
27539 | var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames | ||
27540 | ? Object.getOwnPropertyNames(window) : []; | ||
27541 | |||
27542 | var getWindowNames = function(it){ | ||
27543 | try { | ||
27544 | return gOPN(it); | ||
27545 | } catch(e){ | ||
27546 | return windowNames.slice(); | ||
27547 | } | ||
27548 | }; | ||
27549 | |||
27550 | module.exports.f = function getOwnPropertyNames(it){ | ||
27551 | return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); | ||
27552 | }; | ||
27553 | |||
27554 | |||
27555 | /***/ }), | ||
27556 | /* 253 */ | ||
27557 | /***/ (function(module, exports, __webpack_require__) { | ||
27558 | |||
27559 | // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) | ||
27560 | var $keys = __webpack_require__(221) | ||
27561 | , hiddenKeys = __webpack_require__(231).concat('length', 'prototype'); | ||
27562 | |||
27563 | exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){ | ||
27564 | return $keys(O, hiddenKeys); | ||
27565 | }; | ||
27566 | |||
27567 | /***/ }), | ||
27568 | /* 254 */ | ||
27569 | /***/ (function(module, exports, __webpack_require__) { | ||
27570 | |||
27571 | var pIE = __webpack_require__(250) | ||
27572 | , createDesc = __webpack_require__(213) | ||
27573 | , toIObject = __webpack_require__(222) | ||
27574 | , toPrimitive = __webpack_require__(212) | ||
27575 | , has = __webpack_require__(215) | ||
27576 | , IE8_DOM_DEFINE = __webpack_require__(208) | ||
27577 | , gOPD = Object.getOwnPropertyDescriptor; | ||
27578 | |||
27579 | exports.f = __webpack_require__(209) ? gOPD : function getOwnPropertyDescriptor(O, P){ | ||
27580 | O = toIObject(O); | ||
27581 | P = toPrimitive(P, true); | ||
27582 | if(IE8_DOM_DEFINE)try { | ||
27583 | return gOPD(O, P); | ||
27584 | } catch(e){ /* empty */ } | ||
27585 | if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]); | ||
27586 | }; | ||
27587 | |||
27588 | /***/ }), | ||
27589 | /* 255 */ | ||
27590 | /***/ (function(module, exports) { | ||
27591 | |||
27592 | |||
27593 | |||
27594 | /***/ }), | ||
27595 | /* 256 */ | ||
27596 | /***/ (function(module, exports, __webpack_require__) { | ||
27597 | |||
27598 | __webpack_require__(246)('asyncIterator'); | ||
27599 | |||
27600 | /***/ }), | ||
27601 | /* 257 */ | ||
27602 | /***/ (function(module, exports, __webpack_require__) { | ||
27603 | |||
27604 | __webpack_require__(246)('observable'); | ||
27605 | |||
27606 | /***/ }), | ||
27607 | /* 258 */ | ||
27608 | /***/ (function(module, exports, __webpack_require__) { | ||
27609 | |||
27610 | "use strict"; | ||
27611 | |||
27612 | exports.__esModule = true; | ||
27613 | |||
27614 | var _setPrototypeOf = __webpack_require__(259); | ||
27615 | |||
27616 | var _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf); | ||
27617 | |||
27618 | var _create = __webpack_require__(263); | ||
27619 | |||
27620 | var _create2 = _interopRequireDefault(_create); | ||
27621 | |||
27622 | var _typeof2 = __webpack_require__(190); | ||
27623 | |||
27624 | var _typeof3 = _interopRequireDefault(_typeof2); | ||
27625 | |||
27626 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
27627 | |||
27628 | exports.default = function (subClass, superClass) { | ||
27629 | if (typeof superClass !== "function" && superClass !== null) { | ||
27630 | throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass))); | ||
27631 | } | ||
27632 | |||
27633 | subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, { | ||
27634 | constructor: { | ||
27635 | value: subClass, | ||
27636 | enumerable: false, | ||
27637 | writable: true, | ||
27638 | configurable: true | ||
27639 | } | ||
27640 | }); | ||
27641 | if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass; | ||
27642 | }; | ||
27643 | |||
27644 | /***/ }), | ||
27645 | /* 259 */ | ||
27646 | /***/ (function(module, exports, __webpack_require__) { | ||
27647 | |||
27648 | module.exports = { "default": __webpack_require__(260), __esModule: true }; | ||
27649 | |||
27650 | /***/ }), | ||
27651 | /* 260 */ | ||
27652 | /***/ (function(module, exports, __webpack_require__) { | ||
27653 | |||
27654 | __webpack_require__(261); | ||
27655 | module.exports = __webpack_require__(201).Object.setPrototypeOf; | ||
27656 | |||
27657 | /***/ }), | ||
27658 | /* 261 */ | ||
27659 | /***/ (function(module, exports, __webpack_require__) { | ||
27660 | |||
27661 | // 19.1.3.19 Object.setPrototypeOf(O, proto) | ||
27662 | var $export = __webpack_require__(199); | ||
27663 | $export($export.S, 'Object', {setPrototypeOf: __webpack_require__(262).set}); | ||
27664 | |||
27665 | /***/ }), | ||
27666 | /* 262 */ | ||
27667 | /***/ (function(module, exports, __webpack_require__) { | ||
27668 | |||
27669 | // Works with __proto__ only. Old v8 can't work with null proto objects. | ||
27670 | /* eslint-disable no-proto */ | ||
27671 | var isObject = __webpack_require__(207) | ||
27672 | , anObject = __webpack_require__(206); | ||
27673 | var check = function(O, proto){ | ||
27674 | anObject(O); | ||
27675 | if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!"); | ||
27676 | }; | ||
27677 | module.exports = { | ||
27678 | set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line | ||
27679 | function(test, buggy, set){ | ||
27680 | try { | ||
27681 | set = __webpack_require__(202)(Function.call, __webpack_require__(254).f(Object.prototype, '__proto__').set, 2); | ||
27682 | set(test, []); | ||
27683 | buggy = !(test instanceof Array); | ||
27684 | } catch(e){ buggy = true; } | ||
27685 | return function setPrototypeOf(O, proto){ | ||
27686 | check(O, proto); | ||
27687 | if(buggy)O.__proto__ = proto; | ||
27688 | else set(O, proto); | ||
27689 | return O; | ||
27690 | }; | ||
27691 | }({}, false) : undefined), | ||
27692 | check: check | ||
27693 | }; | ||
27694 | |||
27695 | /***/ }), | ||
27696 | /* 263 */ | ||
27697 | /***/ (function(module, exports, __webpack_require__) { | ||
27698 | |||
27699 | module.exports = { "default": __webpack_require__(264), __esModule: true }; | ||
27700 | |||
27701 | /***/ }), | ||
27702 | /* 264 */ | ||
27703 | /***/ (function(module, exports, __webpack_require__) { | ||
27704 | |||
27705 | __webpack_require__(265); | ||
27706 | var $Object = __webpack_require__(201).Object; | ||
27707 | module.exports = function create(P, D){ | ||
27708 | return $Object.create(P, D); | ||
27709 | }; | ||
27710 | |||
27711 | /***/ }), | ||
27712 | /* 265 */ | ||
27713 | /***/ (function(module, exports, __webpack_require__) { | ||
27714 | |||
27715 | var $export = __webpack_require__(199) | ||
27716 | // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) | ||
27717 | $export($export.S, 'Object', {create: __webpack_require__(218)}); | ||
27718 | |||
27719 | /***/ }), | ||
27720 | /* 266 */ | ||
27721 | /***/ (function(module, exports, __webpack_require__) { | ||
27722 | |||
27723 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
27724 | * Copyright 2013-present, Facebook, Inc. | ||
27725 | * All rights reserved. | ||
27726 | * | ||
27727 | * This source code is licensed under the BSD-style license found in the | ||
27728 | * LICENSE file in the root directory of this source tree. An additional grant | ||
27729 | * of patent rights can be found in the PATENTS file in the same directory. | ||
27730 | */ | ||
27731 | |||
27732 | if (process.env.NODE_ENV !== 'production') { | ||
27733 | var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' && | ||
27734 | Symbol.for && | ||
27735 | Symbol.for('react.element')) || | ||
27736 | 0xeac7; | ||
27737 | |||
27738 | var isValidElement = function(object) { | ||
27739 | return typeof object === 'object' && | ||
27740 | object !== null && | ||
27741 | object.$$typeof === REACT_ELEMENT_TYPE; | ||
27742 | }; | ||
27743 | |||
27744 | // By explicitly using `prop-types` you are opting into new development behavior. | ||
27745 | // http://fb.me/prop-types-in-prod | ||
27746 | var throwOnDirectAccess = true; | ||
27747 | module.exports = __webpack_require__(33)(isValidElement, throwOnDirectAccess); | ||
27748 | } else { | ||
27749 | // By explicitly using `prop-types` you are opting into new production behavior. | ||
27750 | // http://fb.me/prop-types-in-prod | ||
27751 | module.exports = __webpack_require__(267)(); | ||
27752 | } | ||
27753 | |||
27754 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
27755 | |||
27756 | /***/ }), | ||
27757 | /* 267 */ | ||
27758 | /***/ (function(module, exports, __webpack_require__) { | ||
27759 | |||
27760 | /** | ||
27761 | * Copyright 2013-present, Facebook, Inc. | ||
27762 | * All rights reserved. | ||
27763 | * | ||
27764 | * This source code is licensed under the BSD-style license found in the | ||
27765 | * LICENSE file in the root directory of this source tree. An additional grant | ||
27766 | * of patent rights can be found in the PATENTS file in the same directory. | ||
27767 | */ | ||
27768 | |||
27769 | 'use strict'; | ||
27770 | |||
27771 | var emptyFunction = __webpack_require__(14); | ||
27772 | var invariant = __webpack_require__(10); | ||
27773 | |||
27774 | module.exports = function() { | ||
27775 | // Important! | ||
27776 | // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. | ||
27777 | function shim() { | ||
27778 | invariant( | ||
27779 | false, | ||
27780 | 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + | ||
27781 | 'Use PropTypes.checkPropTypes() to call them. ' + | ||
27782 | 'Read more at http://fb.me/use-check-prop-types' | ||
27783 | ); | ||
27784 | }; | ||
27785 | shim.isRequired = shim; | ||
27786 | function getShim() { | ||
27787 | return shim; | ||
27788 | }; | ||
27789 | var ReactPropTypes = { | ||
27790 | array: shim, | ||
27791 | bool: shim, | ||
27792 | func: shim, | ||
27793 | number: shim, | ||
27794 | object: shim, | ||
27795 | string: shim, | ||
27796 | symbol: shim, | ||
27797 | |||
27798 | any: shim, | ||
27799 | arrayOf: getShim, | ||
27800 | element: shim, | ||
27801 | instanceOf: getShim, | ||
27802 | node: shim, | ||
27803 | objectOf: getShim, | ||
27804 | oneOf: getShim, | ||
27805 | oneOfType: getShim, | ||
27806 | shape: getShim | ||
27807 | }; | ||
27808 | |||
27809 | ReactPropTypes.checkPropTypes = emptyFunction; | ||
27810 | ReactPropTypes.PropTypes = ReactPropTypes; | ||
27811 | |||
27812 | return ReactPropTypes; | ||
27813 | }; | ||
27814 | |||
27815 | |||
27816 | /***/ }), | ||
27817 | /* 268 */ | ||
27818 | /***/ (function(module, exports, __webpack_require__) { | ||
27819 | |||
27820 | 'use strict'; | ||
27821 | |||
27822 | module.exports = __webpack_require__(269); | ||
27823 | |||
27824 | /***/ }), | ||
27825 | /* 269 */ | ||
27826 | /***/ (function(module, exports, __webpack_require__) { | ||
27827 | |||
27828 | 'use strict'; | ||
27829 | |||
27830 | Object.defineProperty(exports, "__esModule", { | ||
27831 | value: true | ||
27832 | }); | ||
27833 | |||
27834 | var _extends2 = __webpack_require__(270); | ||
27835 | |||
27836 | var _extends3 = _interopRequireDefault(_extends2); | ||
27837 | |||
27838 | var _react = __webpack_require__(3); | ||
27839 | |||
27840 | var _react2 = _interopRequireDefault(_react); | ||
27841 | |||
27842 | var _reactDom = __webpack_require__(38); | ||
27843 | |||
27844 | var _reactDom2 = _interopRequireDefault(_reactDom); | ||
27845 | |||
27846 | var _contains = __webpack_require__(275); | ||
27847 | |||
27848 | var _contains2 = _interopRequireDefault(_contains); | ||
27849 | |||
27850 | var _addEventListener = __webpack_require__(276); | ||
27851 | |||
27852 | var _addEventListener2 = _interopRequireDefault(_addEventListener); | ||
27853 | |||
27854 | var _Popup = __webpack_require__(280); | ||
27855 | |||
27856 | var _Popup2 = _interopRequireDefault(_Popup); | ||
27857 | |||
27858 | var _utils = __webpack_require__(305); | ||
27859 | |||
27860 | var _getContainerRenderMixin = __webpack_require__(306); | ||
27861 | |||
27862 | var _getContainerRenderMixin2 = _interopRequireDefault(_getContainerRenderMixin); | ||
27863 | |||
27864 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
27865 | |||
27866 | function noop() {} | ||
27867 | |||
27868 | function returnEmptyString() { | ||
27869 | return ''; | ||
27870 | } | ||
27871 | |||
27872 | function returnDocument() { | ||
27873 | return window.document; | ||
27874 | } | ||
27875 | |||
27876 | // use fastclick for mobile touch | ||
27877 | var ALL_HANDLERS = ['onClick', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur']; | ||
27878 | |||
27879 | var Trigger = _react2["default"].createClass({ | ||
27880 | displayName: 'Trigger', | ||
27881 | |||
27882 | propTypes: { | ||
27883 | children: _react.PropTypes.any, | ||
27884 | action: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.arrayOf(_react.PropTypes.string)]), | ||
27885 | showAction: _react.PropTypes.any, | ||
27886 | hideAction: _react.PropTypes.any, | ||
27887 | getPopupClassNameFromAlign: _react.PropTypes.any, | ||
27888 | onPopupVisibleChange: _react.PropTypes.func, | ||
27889 | afterPopupVisibleChange: _react.PropTypes.func, | ||
27890 | popup: _react.PropTypes.oneOfType([_react.PropTypes.node, _react.PropTypes.func]).isRequired, | ||
27891 | popupStyle: _react.PropTypes.object, | ||
27892 | prefixCls: _react.PropTypes.string, | ||
27893 | popupClassName: _react.PropTypes.string, | ||
27894 | popupPlacement: _react.PropTypes.string, | ||
27895 | builtinPlacements: _react.PropTypes.object, | ||
27896 | popupTransitionName: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.object]), | ||
27897 | popupAnimation: _react.PropTypes.any, | ||
27898 | mouseEnterDelay: _react.PropTypes.number, | ||
27899 | mouseLeaveDelay: _react.PropTypes.number, | ||
27900 | zIndex: _react.PropTypes.number, | ||
27901 | focusDelay: _react.PropTypes.number, | ||
27902 | blurDelay: _react.PropTypes.number, | ||
27903 | getPopupContainer: _react.PropTypes.func, | ||
27904 | getDocument: _react.PropTypes.func, | ||
27905 | destroyPopupOnHide: _react.PropTypes.bool, | ||
27906 | mask: _react.PropTypes.bool, | ||
27907 | maskClosable: _react.PropTypes.bool, | ||
27908 | onPopupAlign: _react.PropTypes.func, | ||
27909 | popupAlign: _react.PropTypes.object, | ||
27910 | popupVisible: _react.PropTypes.bool, | ||
27911 | maskTransitionName: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.object]), | ||
27912 | maskAnimation: _react.PropTypes.string | ||
27913 | }, | ||
27914 | |||
27915 | mixins: [(0, _getContainerRenderMixin2["default"])({ | ||
27916 | autoMount: false, | ||
27917 | |||
27918 | isVisible: function isVisible(instance) { | ||
27919 | return instance.state.popupVisible; | ||
27920 | }, | ||
27921 | getContainer: function getContainer(instance) { | ||
27922 | var props = instance.props; | ||
27923 | |||
27924 | var popupContainer = document.createElement('div'); | ||
27925 | // Make sure default popup container will never cause scrollbar appearing | ||
27926 | // https://github.com/react-component/trigger/issues/41 | ||
27927 | popupContainer.style.position = 'absolute'; | ||
27928 | popupContainer.style.top = '0'; | ||
27929 | popupContainer.style.left = '0'; | ||
27930 | popupContainer.style.width = '100%'; | ||
27931 | var mountNode = props.getPopupContainer ? props.getPopupContainer((0, _reactDom.findDOMNode)(instance)) : props.getDocument().body; | ||
27932 | mountNode.appendChild(popupContainer); | ||
27933 | return popupContainer; | ||
27934 | } | ||
27935 | })], | ||
27936 | |||
27937 | getDefaultProps: function getDefaultProps() { | ||
27938 | return { | ||
27939 | prefixCls: 'rc-trigger-popup', | ||
27940 | getPopupClassNameFromAlign: returnEmptyString, | ||
27941 | getDocument: returnDocument, | ||
27942 | onPopupVisibleChange: noop, | ||
27943 | afterPopupVisibleChange: noop, | ||
27944 | onPopupAlign: noop, | ||
27945 | popupClassName: '', | ||
27946 | mouseEnterDelay: 0, | ||
27947 | mouseLeaveDelay: 0.1, | ||
27948 | focusDelay: 0, | ||
27949 | blurDelay: 0.15, | ||
27950 | popupStyle: {}, | ||
27951 | destroyPopupOnHide: false, | ||
27952 | popupAlign: {}, | ||
27953 | defaultPopupVisible: false, | ||
27954 | mask: false, | ||
27955 | maskClosable: true, | ||
27956 | action: [], | ||
27957 | showAction: [], | ||
27958 | hideAction: [] | ||
27959 | }; | ||
27960 | }, | ||
27961 | getInitialState: function getInitialState() { | ||
27962 | var props = this.props; | ||
27963 | var popupVisible = void 0; | ||
27964 | if ('popupVisible' in props) { | ||
27965 | popupVisible = !!props.popupVisible; | ||
27966 | } else { | ||
27967 | popupVisible = !!props.defaultPopupVisible; | ||
27968 | } | ||
27969 | return { | ||
27970 | popupVisible: popupVisible | ||
27971 | }; | ||
27972 | }, | ||
27973 | componentWillMount: function componentWillMount() { | ||
27974 | var _this = this; | ||
27975 | |||
27976 | ALL_HANDLERS.forEach(function (h) { | ||
27977 | _this['fire' + h] = function (e) { | ||
27978 | _this.fireEvents(h, e); | ||
27979 | }; | ||
27980 | }); | ||
27981 | }, | ||
27982 | componentDidMount: function componentDidMount() { | ||
27983 | this.componentDidUpdate({}, { | ||
27984 | popupVisible: this.state.popupVisible | ||
27985 | }); | ||
27986 | }, | ||
27987 | componentWillReceiveProps: function componentWillReceiveProps(_ref) { | ||
27988 | var popupVisible = _ref.popupVisible; | ||
27989 | |||
27990 | if (popupVisible !== undefined) { | ||
27991 | this.setState({ | ||
27992 | popupVisible: popupVisible | ||
27993 | }); | ||
27994 | } | ||
27995 | }, | ||
27996 | componentDidUpdate: function componentDidUpdate(_, prevState) { | ||
27997 | var props = this.props; | ||
27998 | var state = this.state; | ||
27999 | this.renderComponent(null, function () { | ||
28000 | if (prevState.popupVisible !== state.popupVisible) { | ||
28001 | props.afterPopupVisibleChange(state.popupVisible); | ||
28002 | } | ||
28003 | }); | ||
28004 | |||
28005 | if (state.popupVisible) { | ||
28006 | var currentDocument = void 0; | ||
28007 | if (!this.clickOutsideHandler && this.isClickToHide()) { | ||
28008 | currentDocument = props.getDocument(); | ||
28009 | this.clickOutsideHandler = (0, _addEventListener2["default"])(currentDocument, 'click', this.onDocumentClick); | ||
28010 | } | ||
28011 | return; | ||
28012 | } | ||
28013 | |||
28014 | this.clearOutsideHandler(); | ||
28015 | }, | ||
28016 | componentWillUnmount: function componentWillUnmount() { | ||
28017 | this.clearDelayTimer(); | ||
28018 | this.clearOutsideHandler(); | ||
28019 | }, | ||
28020 | onMouseEnter: function onMouseEnter(e) { | ||
28021 | this.fireEvents('onMouseEnter', e); | ||
28022 | this.delaySetPopupVisible(true, this.props.mouseEnterDelay); | ||
28023 | }, | ||
28024 | onMouseLeave: function onMouseLeave(e) { | ||
28025 | this.fireEvents('onMouseLeave', e); | ||
28026 | this.delaySetPopupVisible(false, this.props.mouseLeaveDelay); | ||
28027 | }, | ||
28028 | onPopupMouseEnter: function onPopupMouseEnter() { | ||
28029 | this.clearDelayTimer(); | ||
28030 | }, | ||
28031 | onPopupMouseLeave: function onPopupMouseLeave(e) { | ||
28032 | // https://github.com/react-component/trigger/pull/13 | ||
28033 | // react bug? | ||
28034 | if (e.relatedTarget && !e.relatedTarget.setTimeout && this._component && (0, _contains2["default"])(this._component.getPopupDomNode(), e.relatedTarget)) { | ||
28035 | return; | ||
28036 | } | ||
28037 | this.delaySetPopupVisible(false, this.props.mouseLeaveDelay); | ||
28038 | }, | ||
28039 | onFocus: function onFocus(e) { | ||
28040 | this.fireEvents('onFocus', e); | ||
28041 | // incase focusin and focusout | ||
28042 | this.clearDelayTimer(); | ||
28043 | if (this.isFocusToShow()) { | ||
28044 | this.focusTime = Date.now(); | ||
28045 | this.delaySetPopupVisible(true, this.props.focusDelay); | ||
28046 | } | ||
28047 | }, | ||
28048 | onMouseDown: function onMouseDown(e) { | ||
28049 | this.fireEvents('onMouseDown', e); | ||
28050 | this.preClickTime = Date.now(); | ||
28051 | }, | ||
28052 | onBlur: function onBlur(e) { | ||
28053 | this.fireEvents('onBlur', e); | ||
28054 | this.clearDelayTimer(); | ||
28055 | if (this.isBlurToHide()) { | ||
28056 | this.delaySetPopupVisible(false, this.props.blurDelay); | ||
28057 | } | ||
28058 | }, | ||
28059 | onClick: function onClick(event) { | ||
28060 | this.fireEvents('onClick', event); | ||
28061 | // focus will trigger click | ||
28062 | if (this.focusTime) { | ||
28063 | var preTime = void 0; | ||
28064 | if (this.preClickTime) { | ||
28065 | preTime = this.preClickTime; | ||
28066 | } | ||
28067 | if (Math.abs(preTime - this.focusTime) < 20) { | ||
28068 | return; | ||
28069 | } | ||
28070 | this.focusTime = 0; | ||
28071 | } | ||
28072 | this.preClickTime = 0; | ||
28073 | event.preventDefault(); | ||
28074 | var nextVisible = !this.state.popupVisible; | ||
28075 | if (this.isClickToHide() && !nextVisible || nextVisible && this.isClickToShow()) { | ||
28076 | this.setPopupVisible(!this.state.popupVisible); | ||
28077 | } | ||
28078 | }, | ||
28079 | onDocumentClick: function onDocumentClick(event) { | ||
28080 | if (this.props.mask && !this.props.maskClosable) { | ||
28081 | return; | ||
28082 | } | ||
28083 | var target = event.target; | ||
28084 | var root = (0, _reactDom.findDOMNode)(this); | ||
28085 | var popupNode = this.getPopupDomNode(); | ||
28086 | if (!(0, _contains2["default"])(root, target) && !(0, _contains2["default"])(popupNode, target)) { | ||
28087 | this.close(); | ||
28088 | } | ||
28089 | }, | ||
28090 | getPopupDomNode: function getPopupDomNode() { | ||
28091 | // for test | ||
28092 | if (this._component) { | ||
28093 | return this._component.isMounted() ? this._component.getPopupDomNode() : null; | ||
28094 | } | ||
28095 | return null; | ||
28096 | }, | ||
28097 | getRootDomNode: function getRootDomNode() { | ||
28098 | return _reactDom2["default"].findDOMNode(this); | ||
28099 | }, | ||
28100 | getPopupClassNameFromAlign: function getPopupClassNameFromAlign(align) { | ||
28101 | var className = []; | ||
28102 | var props = this.props; | ||
28103 | var popupPlacement = props.popupPlacement, | ||
28104 | builtinPlacements = props.builtinPlacements, | ||
28105 | prefixCls = props.prefixCls; | ||
28106 | |||
28107 | if (popupPlacement && builtinPlacements) { | ||
28108 | className.push((0, _utils.getPopupClassNameFromAlign)(builtinPlacements, prefixCls, align)); | ||
28109 | } | ||
28110 | if (props.getPopupClassNameFromAlign) { | ||
28111 | className.push(props.getPopupClassNameFromAlign(align)); | ||
28112 | } | ||
28113 | return className.join(' '); | ||
28114 | }, | ||
28115 | getPopupAlign: function getPopupAlign() { | ||
28116 | var props = this.props; | ||
28117 | var popupPlacement = props.popupPlacement, | ||
28118 | popupAlign = props.popupAlign, | ||
28119 | builtinPlacements = props.builtinPlacements; | ||
28120 | |||
28121 | if (popupPlacement && builtinPlacements) { | ||
28122 | return (0, _utils.getAlignFromPlacement)(builtinPlacements, popupPlacement, popupAlign); | ||
28123 | } | ||
28124 | return popupAlign; | ||
28125 | }, | ||
28126 | getComponent: function getComponent() { | ||
28127 | var props = this.props, | ||
28128 | state = this.state; | ||
28129 | |||
28130 | var mouseProps = {}; | ||
28131 | if (this.isMouseEnterToShow()) { | ||
28132 | mouseProps.onMouseEnter = this.onPopupMouseEnter; | ||
28133 | } | ||
28134 | if (this.isMouseLeaveToHide()) { | ||
28135 | mouseProps.onMouseLeave = this.onPopupMouseLeave; | ||
28136 | } | ||
28137 | return _react2["default"].createElement( | ||
28138 | _Popup2["default"], | ||
28139 | (0, _extends3["default"])({ | ||
28140 | prefixCls: props.prefixCls, | ||
28141 | destroyPopupOnHide: props.destroyPopupOnHide, | ||
28142 | visible: state.popupVisible, | ||
28143 | className: props.popupClassName, | ||
28144 | action: props.action, | ||
28145 | align: this.getPopupAlign(), | ||
28146 | onAlign: props.onPopupAlign, | ||
28147 | animation: props.popupAnimation, | ||
28148 | getClassNameFromAlign: this.getPopupClassNameFromAlign | ||
28149 | }, mouseProps, { | ||
28150 | getRootDomNode: this.getRootDomNode, | ||
28151 | style: props.popupStyle, | ||
28152 | mask: props.mask, | ||
28153 | zIndex: props.zIndex, | ||
28154 | transitionName: props.popupTransitionName, | ||
28155 | maskAnimation: props.maskAnimation, | ||
28156 | maskTransitionName: props.maskTransitionName | ||
28157 | }), | ||
28158 | typeof props.popup === 'function' ? props.popup() : props.popup | ||
28159 | ); | ||
28160 | }, | ||
28161 | setPopupVisible: function setPopupVisible(popupVisible) { | ||
28162 | this.clearDelayTimer(); | ||
28163 | if (this.state.popupVisible !== popupVisible) { | ||
28164 | if (!('popupVisible' in this.props)) { | ||
28165 | this.setState({ | ||
28166 | popupVisible: popupVisible | ||
28167 | }); | ||
28168 | } | ||
28169 | this.props.onPopupVisibleChange(popupVisible); | ||
28170 | } | ||
28171 | }, | ||
28172 | delaySetPopupVisible: function delaySetPopupVisible(visible, delayS) { | ||
28173 | var _this2 = this; | ||
28174 | |||
28175 | var delay = delayS * 1000; | ||
28176 | this.clearDelayTimer(); | ||
28177 | if (delay) { | ||
28178 | this.delayTimer = setTimeout(function () { | ||
28179 | _this2.setPopupVisible(visible); | ||
28180 | _this2.clearDelayTimer(); | ||
28181 | }, delay); | ||
28182 | } else { | ||
28183 | this.setPopupVisible(visible); | ||
28184 | } | ||
28185 | }, | ||
28186 | clearDelayTimer: function clearDelayTimer() { | ||
28187 | if (this.delayTimer) { | ||
28188 | clearTimeout(this.delayTimer); | ||
28189 | this.delayTimer = null; | ||
28190 | } | ||
28191 | }, | ||
28192 | clearOutsideHandler: function clearOutsideHandler() { | ||
28193 | if (this.clickOutsideHandler) { | ||
28194 | this.clickOutsideHandler.remove(); | ||
28195 | this.clickOutsideHandler = null; | ||
28196 | } | ||
28197 | }, | ||
28198 | createTwoChains: function createTwoChains(event) { | ||
28199 | var childPros = this.props.children.props; | ||
28200 | var props = this.props; | ||
28201 | if (childPros[event] && props[event]) { | ||
28202 | return this['fire' + event]; | ||
28203 | } | ||
28204 | return childPros[event] || props[event]; | ||
28205 | }, | ||
28206 | isClickToShow: function isClickToShow() { | ||
28207 | var _props = this.props, | ||
28208 | action = _props.action, | ||
28209 | showAction = _props.showAction; | ||
28210 | |||
28211 | return action.indexOf('click') !== -1 || showAction.indexOf('click') !== -1; | ||
28212 | }, | ||
28213 | isClickToHide: function isClickToHide() { | ||
28214 | var _props2 = this.props, | ||
28215 | action = _props2.action, | ||
28216 | hideAction = _props2.hideAction; | ||
28217 | |||
28218 | return action.indexOf('click') !== -1 || hideAction.indexOf('click') !== -1; | ||
28219 | }, | ||
28220 | isMouseEnterToShow: function isMouseEnterToShow() { | ||
28221 | var _props3 = this.props, | ||
28222 | action = _props3.action, | ||
28223 | showAction = _props3.showAction; | ||
28224 | |||
28225 | return action.indexOf('hover') !== -1 || showAction.indexOf('mouseEnter') !== -1; | ||
28226 | }, | ||
28227 | isMouseLeaveToHide: function isMouseLeaveToHide() { | ||
28228 | var _props4 = this.props, | ||
28229 | action = _props4.action, | ||
28230 | hideAction = _props4.hideAction; | ||
28231 | |||
28232 | return action.indexOf('hover') !== -1 || hideAction.indexOf('mouseLeave') !== -1; | ||
28233 | }, | ||
28234 | isFocusToShow: function isFocusToShow() { | ||
28235 | var _props5 = this.props, | ||
28236 | action = _props5.action, | ||
28237 | showAction = _props5.showAction; | ||
28238 | |||
28239 | return action.indexOf('focus') !== -1 || showAction.indexOf('focus') !== -1; | ||
28240 | }, | ||
28241 | isBlurToHide: function isBlurToHide() { | ||
28242 | var _props6 = this.props, | ||
28243 | action = _props6.action, | ||
28244 | hideAction = _props6.hideAction; | ||
28245 | |||
28246 | return action.indexOf('focus') !== -1 || hideAction.indexOf('blur') !== -1; | ||
28247 | }, | ||
28248 | forcePopupAlign: function forcePopupAlign() { | ||
28249 | if (this.state.popupVisible && this.popupInstance && this.popupInstance.alignInstance) { | ||
28250 | this.popupInstance.alignInstance.forceAlign(); | ||
28251 | } | ||
28252 | }, | ||
28253 | fireEvents: function fireEvents(type, e) { | ||
28254 | var childCallback = this.props.children.props[type]; | ||
28255 | if (childCallback) { | ||
28256 | childCallback(e); | ||
28257 | } | ||
28258 | var callback = this.props[type]; | ||
28259 | if (callback) { | ||
28260 | callback(e); | ||
28261 | } | ||
28262 | }, | ||
28263 | close: function close() { | ||
28264 | this.setPopupVisible(false); | ||
28265 | }, | ||
28266 | render: function render() { | ||
28267 | var props = this.props; | ||
28268 | var children = props.children; | ||
28269 | var child = _react2["default"].Children.only(children); | ||
28270 | var newChildProps = {}; | ||
28271 | if (this.isClickToHide() || this.isClickToShow()) { | ||
28272 | newChildProps.onClick = this.onClick; | ||
28273 | newChildProps.onMouseDown = this.onMouseDown; | ||
28274 | } else { | ||
28275 | newChildProps.onClick = this.createTwoChains('onClick'); | ||
28276 | newChildProps.onMouseDown = this.createTwoChains('onMouseDown'); | ||
28277 | } | ||
28278 | if (this.isMouseEnterToShow()) { | ||
28279 | newChildProps.onMouseEnter = this.onMouseEnter; | ||
28280 | } else { | ||
28281 | newChildProps.onMouseEnter = this.createTwoChains('onMouseEnter'); | ||
28282 | } | ||
28283 | if (this.isMouseLeaveToHide()) { | ||
28284 | newChildProps.onMouseLeave = this.onMouseLeave; | ||
28285 | } else { | ||
28286 | newChildProps.onMouseLeave = this.createTwoChains('onMouseLeave'); | ||
28287 | } | ||
28288 | if (this.isFocusToShow() || this.isBlurToHide()) { | ||
28289 | newChildProps.onFocus = this.onFocus; | ||
28290 | newChildProps.onBlur = this.onBlur; | ||
28291 | } else { | ||
28292 | newChildProps.onFocus = this.createTwoChains('onFocus'); | ||
28293 | newChildProps.onBlur = this.createTwoChains('onBlur'); | ||
28294 | } | ||
28295 | |||
28296 | return _react2["default"].cloneElement(child, newChildProps); | ||
28297 | } | ||
28298 | }); | ||
28299 | |||
28300 | exports["default"] = Trigger; | ||
28301 | module.exports = exports['default']; | ||
28302 | |||
28303 | /***/ }), | ||
28304 | /* 270 */ | ||
28305 | /***/ (function(module, exports, __webpack_require__) { | ||
28306 | |||
28307 | "use strict"; | ||
28308 | |||
28309 | exports.__esModule = true; | ||
28310 | |||
28311 | var _assign = __webpack_require__(271); | ||
28312 | |||
28313 | var _assign2 = _interopRequireDefault(_assign); | ||
28314 | |||
28315 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
28316 | |||
28317 | exports.default = _assign2.default || function (target) { | ||
28318 | for (var i = 1; i < arguments.length; i++) { | ||
28319 | var source = arguments[i]; | ||
28320 | |||
28321 | for (var key in source) { | ||
28322 | if (Object.prototype.hasOwnProperty.call(source, key)) { | ||
28323 | target[key] = source[key]; | ||
28324 | } | ||
28325 | } | ||
28326 | } | ||
28327 | |||
28328 | return target; | ||
28329 | }; | ||
28330 | |||
28331 | /***/ }), | ||
28332 | /* 271 */ | ||
28333 | /***/ (function(module, exports, __webpack_require__) { | ||
28334 | |||
28335 | module.exports = { "default": __webpack_require__(272), __esModule: true }; | ||
28336 | |||
28337 | /***/ }), | ||
28338 | /* 272 */ | ||
28339 | /***/ (function(module, exports, __webpack_require__) { | ||
28340 | |||
28341 | __webpack_require__(273); | ||
28342 | module.exports = __webpack_require__(201).Object.assign; | ||
28343 | |||
28344 | /***/ }), | ||
28345 | /* 273 */ | ||
28346 | /***/ (function(module, exports, __webpack_require__) { | ||
28347 | |||
28348 | // 19.1.3.1 Object.assign(target, source) | ||
28349 | var $export = __webpack_require__(199); | ||
28350 | |||
28351 | $export($export.S + $export.F, 'Object', {assign: __webpack_require__(274)}); | ||
28352 | |||
28353 | /***/ }), | ||
28354 | /* 274 */ | ||
28355 | /***/ (function(module, exports, __webpack_require__) { | ||
28356 | |||
28357 | 'use strict'; | ||
28358 | // 19.1.2.1 Object.assign(target, source, ...) | ||
28359 | var getKeys = __webpack_require__(220) | ||
28360 | , gOPS = __webpack_require__(249) | ||
28361 | , pIE = __webpack_require__(250) | ||
28362 | , toObject = __webpack_require__(236) | ||
28363 | , IObject = __webpack_require__(223) | ||
28364 | , $assign = Object.assign; | ||
28365 | |||
28366 | // should work with symbols and should have deterministic property order (V8 bug) | ||
28367 | module.exports = !$assign || __webpack_require__(210)(function(){ | ||
28368 | var A = {} | ||
28369 | , B = {} | ||
28370 | , S = Symbol() | ||
28371 | , K = 'abcdefghijklmnopqrst'; | ||
28372 | A[S] = 7; | ||
28373 | K.split('').forEach(function(k){ B[k] = k; }); | ||
28374 | return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; | ||
28375 | }) ? function assign(target, source){ // eslint-disable-line no-unused-vars | ||
28376 | var T = toObject(target) | ||
28377 | , aLen = arguments.length | ||
28378 | , index = 1 | ||
28379 | , getSymbols = gOPS.f | ||
28380 | , isEnum = pIE.f; | ||
28381 | while(aLen > index){ | ||
28382 | var S = IObject(arguments[index++]) | ||
28383 | , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S) | ||
28384 | , length = keys.length | ||
28385 | , j = 0 | ||
28386 | , key; | ||
28387 | while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key]; | ||
28388 | } return T; | ||
28389 | } : $assign; | ||
28390 | |||
28391 | /***/ }), | ||
28392 | /* 275 */ | ||
28393 | /***/ (function(module, exports) { | ||
28394 | |||
28395 | "use strict"; | ||
28396 | |||
28397 | Object.defineProperty(exports, "__esModule", { | ||
28398 | value: true | ||
28399 | }); | ||
28400 | exports["default"] = contains; | ||
28401 | function contains(root, n) { | ||
28402 | var node = n; | ||
28403 | while (node) { | ||
28404 | if (node === root) { | ||
28405 | return true; | ||
28406 | } | ||
28407 | node = node.parentNode; | ||
28408 | } | ||
28409 | |||
28410 | return false; | ||
28411 | } | ||
28412 | module.exports = exports['default']; | ||
28413 | |||
28414 | /***/ }), | ||
28415 | /* 276 */ | ||
28416 | /***/ (function(module, exports, __webpack_require__) { | ||
28417 | |||
28418 | 'use strict'; | ||
28419 | |||
28420 | Object.defineProperty(exports, "__esModule", { | ||
28421 | value: true | ||
28422 | }); | ||
28423 | exports["default"] = addEventListenerWrap; | ||
28424 | |||
28425 | var _addDomEventListener = __webpack_require__(277); | ||
28426 | |||
28427 | var _addDomEventListener2 = _interopRequireDefault(_addDomEventListener); | ||
28428 | |||
28429 | var _reactDom = __webpack_require__(38); | ||
28430 | |||
28431 | var _reactDom2 = _interopRequireDefault(_reactDom); | ||
28432 | |||
28433 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
28434 | |||
28435 | function addEventListenerWrap(target, eventType, cb) { | ||
28436 | /* eslint camelcase: 2 */ | ||
28437 | var callback = _reactDom2["default"].unstable_batchedUpdates ? function run(e) { | ||
28438 | _reactDom2["default"].unstable_batchedUpdates(cb, e); | ||
28439 | } : cb; | ||
28440 | return (0, _addDomEventListener2["default"])(target, eventType, callback); | ||
28441 | } | ||
28442 | module.exports = exports['default']; | ||
28443 | |||
28444 | /***/ }), | ||
28445 | /* 277 */ | ||
28446 | /***/ (function(module, exports, __webpack_require__) { | ||
28447 | |||
28448 | 'use strict'; | ||
28449 | |||
28450 | Object.defineProperty(exports, "__esModule", { | ||
28451 | value: true | ||
28452 | }); | ||
28453 | exports["default"] = addEventListener; | ||
28454 | |||
28455 | var _EventObject = __webpack_require__(278); | ||
28456 | |||
28457 | var _EventObject2 = _interopRequireDefault(_EventObject); | ||
28458 | |||
28459 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
28460 | |||
28461 | function addEventListener(target, eventType, callback) { | ||
28462 | function wrapCallback(e) { | ||
28463 | var ne = new _EventObject2["default"](e); | ||
28464 | callback.call(target, ne); | ||
28465 | } | ||
28466 | |||
28467 | if (target.addEventListener) { | ||
28468 | target.addEventListener(eventType, wrapCallback, false); | ||
28469 | return { | ||
28470 | remove: function remove() { | ||
28471 | target.removeEventListener(eventType, wrapCallback, false); | ||
28472 | } | ||
28473 | }; | ||
28474 | } else if (target.attachEvent) { | ||
28475 | target.attachEvent('on' + eventType, wrapCallback); | ||
28476 | return { | ||
28477 | remove: function remove() { | ||
28478 | target.detachEvent('on' + eventType, wrapCallback); | ||
28479 | } | ||
28480 | }; | ||
28481 | } | ||
28482 | } | ||
28483 | module.exports = exports['default']; | ||
28484 | |||
28485 | /***/ }), | ||
28486 | /* 278 */ | ||
28487 | /***/ (function(module, exports, __webpack_require__) { | ||
28488 | |||
28489 | 'use strict'; | ||
28490 | |||
28491 | Object.defineProperty(exports, "__esModule", { | ||
28492 | value: true | ||
28493 | }); | ||
28494 | |||
28495 | var _EventBaseObject = __webpack_require__(279); | ||
28496 | |||
28497 | var _EventBaseObject2 = _interopRequireDefault(_EventBaseObject); | ||
28498 | |||
28499 | var _objectAssign = __webpack_require__(6); | ||
28500 | |||
28501 | var _objectAssign2 = _interopRequireDefault(_objectAssign); | ||
28502 | |||
28503 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
28504 | |||
28505 | /** | ||
28506 | * @ignore | ||
28507 | * event object for dom | ||
28508 | * @author yiminghe@gmail.com | ||
28509 | */ | ||
28510 | |||
28511 | var TRUE = true; | ||
28512 | var FALSE = false; | ||
28513 | var commonProps = ['altKey', 'bubbles', 'cancelable', 'ctrlKey', 'currentTarget', 'eventPhase', 'metaKey', 'shiftKey', 'target', 'timeStamp', 'view', 'type']; | ||
28514 | |||
28515 | function isNullOrUndefined(w) { | ||
28516 | return w === null || w === undefined; | ||
28517 | } | ||
28518 | |||
28519 | var eventNormalizers = [{ | ||
28520 | reg: /^key/, | ||
28521 | props: ['char', 'charCode', 'key', 'keyCode', 'which'], | ||
28522 | fix: function fix(event, nativeEvent) { | ||
28523 | if (isNullOrUndefined(event.which)) { | ||
28524 | event.which = !isNullOrUndefined(nativeEvent.charCode) ? nativeEvent.charCode : nativeEvent.keyCode; | ||
28525 | } | ||
28526 | |||
28527 | // add metaKey to non-Mac browsers (use ctrl for PC 's and Meta for Macs) | ||
28528 | if (event.metaKey === undefined) { | ||
28529 | event.metaKey = event.ctrlKey; | ||
28530 | } | ||
28531 | } | ||
28532 | }, { | ||
28533 | reg: /^touch/, | ||
28534 | props: ['touches', 'changedTouches', 'targetTouches'] | ||
28535 | }, { | ||
28536 | reg: /^hashchange$/, | ||
28537 | props: ['newURL', 'oldURL'] | ||
28538 | }, { | ||
28539 | reg: /^gesturechange$/i, | ||
28540 | props: ['rotation', 'scale'] | ||
28541 | }, { | ||
28542 | reg: /^(mousewheel|DOMMouseScroll)$/, | ||
28543 | props: [], | ||
28544 | fix: function fix(event, nativeEvent) { | ||
28545 | var deltaX = void 0; | ||
28546 | var deltaY = void 0; | ||
28547 | var delta = void 0; | ||
28548 | var wheelDelta = nativeEvent.wheelDelta; | ||
28549 | var axis = nativeEvent.axis; | ||
28550 | var wheelDeltaY = nativeEvent.wheelDeltaY; | ||
28551 | var wheelDeltaX = nativeEvent.wheelDeltaX; | ||
28552 | var detail = nativeEvent.detail; | ||
28553 | |||
28554 | // ie/webkit | ||
28555 | if (wheelDelta) { | ||
28556 | delta = wheelDelta / 120; | ||
28557 | } | ||
28558 | |||
28559 | // gecko | ||
28560 | if (detail) { | ||
28561 | // press control e.detail == 1 else e.detail == 3 | ||
28562 | delta = 0 - (detail % 3 === 0 ? detail / 3 : detail); | ||
28563 | } | ||
28564 | |||
28565 | // Gecko | ||
28566 | if (axis !== undefined) { | ||
28567 | if (axis === event.HORIZONTAL_AXIS) { | ||
28568 | deltaY = 0; | ||
28569 | deltaX = 0 - delta; | ||
28570 | } else if (axis === event.VERTICAL_AXIS) { | ||
28571 | deltaX = 0; | ||
28572 | deltaY = delta; | ||
28573 | } | ||
28574 | } | ||
28575 | |||
28576 | // Webkit | ||
28577 | if (wheelDeltaY !== undefined) { | ||
28578 | deltaY = wheelDeltaY / 120; | ||
28579 | } | ||
28580 | if (wheelDeltaX !== undefined) { | ||
28581 | deltaX = -1 * wheelDeltaX / 120; | ||
28582 | } | ||
28583 | |||
28584 | // 默认 deltaY (ie) | ||
28585 | if (!deltaX && !deltaY) { | ||
28586 | deltaY = delta; | ||
28587 | } | ||
28588 | |||
28589 | if (deltaX !== undefined) { | ||
28590 | /** | ||
28591 | * deltaX of mousewheel event | ||
28592 | * @property deltaX | ||
28593 | * @member Event.DomEvent.Object | ||
28594 | */ | ||
28595 | event.deltaX = deltaX; | ||
28596 | } | ||
28597 | |||
28598 | if (deltaY !== undefined) { | ||
28599 | /** | ||
28600 | * deltaY of mousewheel event | ||
28601 | * @property deltaY | ||
28602 | * @member Event.DomEvent.Object | ||
28603 | */ | ||
28604 | event.deltaY = deltaY; | ||
28605 | } | ||
28606 | |||
28607 | if (delta !== undefined) { | ||
28608 | /** | ||
28609 | * delta of mousewheel event | ||
28610 | * @property delta | ||
28611 | * @member Event.DomEvent.Object | ||
28612 | */ | ||
28613 | event.delta = delta; | ||
28614 | } | ||
28615 | } | ||
28616 | }, { | ||
28617 | reg: /^mouse|contextmenu|click|mspointer|(^DOMMouseScroll$)/i, | ||
28618 | props: ['buttons', 'clientX', 'clientY', 'button', 'offsetX', 'relatedTarget', 'which', 'fromElement', 'toElement', 'offsetY', 'pageX', 'pageY', 'screenX', 'screenY'], | ||
28619 | fix: function fix(event, nativeEvent) { | ||
28620 | var eventDoc = void 0; | ||
28621 | var doc = void 0; | ||
28622 | var body = void 0; | ||
28623 | var target = event.target; | ||
28624 | var button = nativeEvent.button; | ||
28625 | |||
28626 | // Calculate pageX/Y if missing and clientX/Y available | ||
28627 | if (target && isNullOrUndefined(event.pageX) && !isNullOrUndefined(nativeEvent.clientX)) { | ||
28628 | eventDoc = target.ownerDocument || document; | ||
28629 | doc = eventDoc.documentElement; | ||
28630 | body = eventDoc.body; | ||
28631 | event.pageX = nativeEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); | ||
28632 | event.pageY = nativeEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); | ||
28633 | } | ||
28634 | |||
28635 | // which for click: 1 === left; 2 === middle; 3 === right | ||
28636 | // do not use button | ||
28637 | if (!event.which && button !== undefined) { | ||
28638 | if (button & 1) { | ||
28639 | event.which = 1; | ||
28640 | } else if (button & 2) { | ||
28641 | event.which = 3; | ||
28642 | } else if (button & 4) { | ||
28643 | event.which = 2; | ||
28644 | } else { | ||
28645 | event.which = 0; | ||
28646 | } | ||
28647 | } | ||
28648 | |||
28649 | // add relatedTarget, if necessary | ||
28650 | if (!event.relatedTarget && event.fromElement) { | ||
28651 | event.relatedTarget = event.fromElement === target ? event.toElement : event.fromElement; | ||
28652 | } | ||
28653 | |||
28654 | return event; | ||
28655 | } | ||
28656 | }]; | ||
28657 | |||
28658 | function retTrue() { | ||
28659 | return TRUE; | ||
28660 | } | ||
28661 | |||
28662 | function retFalse() { | ||
28663 | return FALSE; | ||
28664 | } | ||
28665 | |||
28666 | function DomEventObject(nativeEvent) { | ||
28667 | var type = nativeEvent.type; | ||
28668 | |||
28669 | var isNative = typeof nativeEvent.stopPropagation === 'function' || typeof nativeEvent.cancelBubble === 'boolean'; | ||
28670 | |||
28671 | _EventBaseObject2["default"].call(this); | ||
28672 | |||
28673 | this.nativeEvent = nativeEvent; | ||
28674 | |||
28675 | // in case dom event has been mark as default prevented by lower dom node | ||
28676 | var isDefaultPrevented = retFalse; | ||
28677 | if ('defaultPrevented' in nativeEvent) { | ||
28678 | isDefaultPrevented = nativeEvent.defaultPrevented ? retTrue : retFalse; | ||
28679 | } else if ('getPreventDefault' in nativeEvent) { | ||
28680 | // https://bugzilla.mozilla.org/show_bug.cgi?id=691151 | ||
28681 | isDefaultPrevented = nativeEvent.getPreventDefault() ? retTrue : retFalse; | ||
28682 | } else if ('returnValue' in nativeEvent) { | ||
28683 | isDefaultPrevented = nativeEvent.returnValue === FALSE ? retTrue : retFalse; | ||
28684 | } | ||
28685 | |||
28686 | this.isDefaultPrevented = isDefaultPrevented; | ||
28687 | |||
28688 | var fixFns = []; | ||
28689 | var fixFn = void 0; | ||
28690 | var l = void 0; | ||
28691 | var prop = void 0; | ||
28692 | var props = commonProps.concat(); | ||
28693 | |||
28694 | eventNormalizers.forEach(function (normalizer) { | ||
28695 | if (type.match(normalizer.reg)) { | ||
28696 | props = props.concat(normalizer.props); | ||
28697 | if (normalizer.fix) { | ||
28698 | fixFns.push(normalizer.fix); | ||
28699 | } | ||
28700 | } | ||
28701 | }); | ||
28702 | |||
28703 | l = props.length; | ||
28704 | |||
28705 | // clone properties of the original event object | ||
28706 | while (l) { | ||
28707 | prop = props[--l]; | ||
28708 | this[prop] = nativeEvent[prop]; | ||
28709 | } | ||
28710 | |||
28711 | // fix target property, if necessary | ||
28712 | if (!this.target && isNative) { | ||
28713 | this.target = nativeEvent.srcElement || document; // srcElement might not be defined either | ||
28714 | } | ||
28715 | |||
28716 | // check if target is a text node (safari) | ||
28717 | if (this.target && this.target.nodeType === 3) { | ||
28718 | this.target = this.target.parentNode; | ||
28719 | } | ||
28720 | |||
28721 | l = fixFns.length; | ||
28722 | |||
28723 | while (l) { | ||
28724 | fixFn = fixFns[--l]; | ||
28725 | fixFn(this, nativeEvent); | ||
28726 | } | ||
28727 | |||
28728 | this.timeStamp = nativeEvent.timeStamp || Date.now(); | ||
28729 | } | ||
28730 | |||
28731 | var EventBaseObjectProto = _EventBaseObject2["default"].prototype; | ||
28732 | |||
28733 | (0, _objectAssign2["default"])(DomEventObject.prototype, EventBaseObjectProto, { | ||
28734 | constructor: DomEventObject, | ||
28735 | |||
28736 | preventDefault: function preventDefault() { | ||
28737 | var e = this.nativeEvent; | ||
28738 | |||
28739 | // if preventDefault exists run it on the original event | ||
28740 | if (e.preventDefault) { | ||
28741 | e.preventDefault(); | ||
28742 | } else { | ||
28743 | // otherwise set the returnValue property of the original event to FALSE (IE) | ||
28744 | e.returnValue = FALSE; | ||
28745 | } | ||
28746 | |||
28747 | EventBaseObjectProto.preventDefault.call(this); | ||
28748 | }, | ||
28749 | stopPropagation: function stopPropagation() { | ||
28750 | var e = this.nativeEvent; | ||
28751 | |||
28752 | // if stopPropagation exists run it on the original event | ||
28753 | if (e.stopPropagation) { | ||
28754 | e.stopPropagation(); | ||
28755 | } else { | ||
28756 | // otherwise set the cancelBubble property of the original event to TRUE (IE) | ||
28757 | e.cancelBubble = TRUE; | ||
28758 | } | ||
28759 | |||
28760 | EventBaseObjectProto.stopPropagation.call(this); | ||
28761 | } | ||
28762 | }); | ||
28763 | |||
28764 | exports["default"] = DomEventObject; | ||
28765 | module.exports = exports['default']; | ||
28766 | |||
28767 | /***/ }), | ||
28768 | /* 279 */ | ||
28769 | /***/ (function(module, exports) { | ||
28770 | |||
28771 | "use strict"; | ||
28772 | |||
28773 | Object.defineProperty(exports, "__esModule", { | ||
28774 | value: true | ||
28775 | }); | ||
28776 | /** | ||
28777 | * @ignore | ||
28778 | * base event object for custom and dom event. | ||
28779 | * @author yiminghe@gmail.com | ||
28780 | */ | ||
28781 | |||
28782 | function returnFalse() { | ||
28783 | return false; | ||
28784 | } | ||
28785 | |||
28786 | function returnTrue() { | ||
28787 | return true; | ||
28788 | } | ||
28789 | |||
28790 | function EventBaseObject() { | ||
28791 | this.timeStamp = Date.now(); | ||
28792 | this.target = undefined; | ||
28793 | this.currentTarget = undefined; | ||
28794 | } | ||
28795 | |||
28796 | EventBaseObject.prototype = { | ||
28797 | isEventObject: 1, | ||
28798 | |||
28799 | constructor: EventBaseObject, | ||
28800 | |||
28801 | isDefaultPrevented: returnFalse, | ||
28802 | |||
28803 | isPropagationStopped: returnFalse, | ||
28804 | |||
28805 | isImmediatePropagationStopped: returnFalse, | ||
28806 | |||
28807 | preventDefault: function preventDefault() { | ||
28808 | this.isDefaultPrevented = returnTrue; | ||
28809 | }, | ||
28810 | stopPropagation: function stopPropagation() { | ||
28811 | this.isPropagationStopped = returnTrue; | ||
28812 | }, | ||
28813 | stopImmediatePropagation: function stopImmediatePropagation() { | ||
28814 | this.isImmediatePropagationStopped = returnTrue; | ||
28815 | // fixed 1.2 | ||
28816 | // call stopPropagation implicitly | ||
28817 | this.stopPropagation(); | ||
28818 | }, | ||
28819 | halt: function halt(immediate) { | ||
28820 | if (immediate) { | ||
28821 | this.stopImmediatePropagation(); | ||
28822 | } else { | ||
28823 | this.stopPropagation(); | ||
28824 | } | ||
28825 | this.preventDefault(); | ||
28826 | } | ||
28827 | }; | ||
28828 | |||
28829 | exports["default"] = EventBaseObject; | ||
28830 | module.exports = exports['default']; | ||
28831 | |||
28832 | /***/ }), | ||
28833 | /* 280 */ | ||
28834 | /***/ (function(module, exports, __webpack_require__) { | ||
28835 | |||
28836 | 'use strict'; | ||
28837 | |||
28838 | Object.defineProperty(exports, "__esModule", { | ||
28839 | value: true | ||
28840 | }); | ||
28841 | |||
28842 | var _extends2 = __webpack_require__(270); | ||
28843 | |||
28844 | var _extends3 = _interopRequireDefault(_extends2); | ||
28845 | |||
28846 | var _react = __webpack_require__(3); | ||
28847 | |||
28848 | var _react2 = _interopRequireDefault(_react); | ||
28849 | |||
28850 | var _reactDom = __webpack_require__(38); | ||
28851 | |||
28852 | var _reactDom2 = _interopRequireDefault(_reactDom); | ||
28853 | |||
28854 | var _rcAlign = __webpack_require__(281); | ||
28855 | |||
28856 | var _rcAlign2 = _interopRequireDefault(_rcAlign); | ||
28857 | |||
28858 | var _rcAnimate = __webpack_require__(293); | ||
28859 | |||
28860 | var _rcAnimate2 = _interopRequireDefault(_rcAnimate); | ||
28861 | |||
28862 | var _PopupInner = __webpack_require__(302); | ||
28863 | |||
28864 | var _PopupInner2 = _interopRequireDefault(_PopupInner); | ||
28865 | |||
28866 | var _LazyRenderBox = __webpack_require__(303); | ||
28867 | |||
28868 | var _LazyRenderBox2 = _interopRequireDefault(_LazyRenderBox); | ||
28869 | |||
28870 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
28871 | |||
28872 | var Popup = _react2["default"].createClass({ | ||
28873 | displayName: 'Popup', | ||
28874 | |||
28875 | propTypes: { | ||
28876 | visible: _react.PropTypes.bool, | ||
28877 | style: _react.PropTypes.object, | ||
28878 | getClassNameFromAlign: _react.PropTypes.func, | ||
28879 | onAlign: _react.PropTypes.func, | ||
28880 | getRootDomNode: _react.PropTypes.func, | ||
28881 | onMouseEnter: _react.PropTypes.func, | ||
28882 | align: _react.PropTypes.any, | ||
28883 | destroyPopupOnHide: _react.PropTypes.bool, | ||
28884 | className: _react.PropTypes.string, | ||
28885 | prefixCls: _react.PropTypes.string, | ||
28886 | onMouseLeave: _react.PropTypes.func | ||
28887 | }, | ||
28888 | |||
28889 | componentDidMount: function componentDidMount() { | ||
28890 | this.rootNode = this.getPopupDomNode(); | ||
28891 | }, | ||
28892 | onAlign: function onAlign(popupDomNode, align) { | ||
28893 | var props = this.props; | ||
28894 | var alignClassName = props.getClassNameFromAlign(props.align); | ||
28895 | var currentAlignClassName = props.getClassNameFromAlign(align); | ||
28896 | if (alignClassName !== currentAlignClassName) { | ||
28897 | this.currentAlignClassName = currentAlignClassName; | ||
28898 | popupDomNode.className = this.getClassName(currentAlignClassName); | ||
28899 | } | ||
28900 | props.onAlign(popupDomNode, align); | ||
28901 | }, | ||
28902 | getPopupDomNode: function getPopupDomNode() { | ||
28903 | return _reactDom2["default"].findDOMNode(this.refs.popup); | ||
28904 | }, | ||
28905 | getTarget: function getTarget() { | ||
28906 | return this.props.getRootDomNode(); | ||
28907 | }, | ||
28908 | getMaskTransitionName: function getMaskTransitionName() { | ||
28909 | var props = this.props; | ||
28910 | var transitionName = props.maskTransitionName; | ||
28911 | var animation = props.maskAnimation; | ||
28912 | if (!transitionName && animation) { | ||
28913 | transitionName = props.prefixCls + '-' + animation; | ||
28914 | } | ||
28915 | return transitionName; | ||
28916 | }, | ||
28917 | getTransitionName: function getTransitionName() { | ||
28918 | var props = this.props; | ||
28919 | var transitionName = props.transitionName; | ||
28920 | if (!transitionName && props.animation) { | ||
28921 | transitionName = props.prefixCls + '-' + props.animation; | ||
28922 | } | ||
28923 | return transitionName; | ||
28924 | }, | ||
28925 | getClassName: function getClassName(currentAlignClassName) { | ||
28926 | return this.props.prefixCls + ' ' + this.props.className + ' ' + currentAlignClassName; | ||
28927 | }, | ||
28928 | getPopupElement: function getPopupElement() { | ||
28929 | var props = this.props; | ||
28930 | var align = props.align, | ||
28931 | style = props.style, | ||
28932 | visible = props.visible, | ||
28933 | prefixCls = props.prefixCls, | ||
28934 | destroyPopupOnHide = props.destroyPopupOnHide; | ||
28935 | |||
28936 | var className = this.getClassName(this.currentAlignClassName || props.getClassNameFromAlign(align)); | ||
28937 | var hiddenClassName = prefixCls + '-hidden'; | ||
28938 | if (!visible) { | ||
28939 | this.currentAlignClassName = null; | ||
28940 | } | ||
28941 | var newStyle = (0, _extends3["default"])({}, style, this.getZIndexStyle()); | ||
28942 | var popupInnerProps = { | ||
28943 | className: className, | ||
28944 | prefixCls: prefixCls, | ||
28945 | ref: 'popup', | ||
28946 | onMouseEnter: props.onMouseEnter, | ||
28947 | onMouseLeave: props.onMouseLeave, | ||
28948 | style: newStyle | ||
28949 | }; | ||
28950 | if (destroyPopupOnHide) { | ||
28951 | return _react2["default"].createElement( | ||
28952 | _rcAnimate2["default"], | ||
28953 | { | ||
28954 | component: '', | ||
28955 | exclusive: true, | ||
28956 | transitionAppear: true, | ||
28957 | transitionName: this.getTransitionName() | ||
28958 | }, | ||
28959 | visible ? _react2["default"].createElement( | ||
28960 | _rcAlign2["default"], | ||
28961 | { | ||
28962 | target: this.getTarget, | ||
28963 | key: 'popup', | ||
28964 | ref: this.saveAlign, | ||
28965 | monitorWindowResize: true, | ||
28966 | align: align, | ||
28967 | onAlign: this.onAlign | ||
28968 | }, | ||
28969 | _react2["default"].createElement( | ||
28970 | _PopupInner2["default"], | ||
28971 | (0, _extends3["default"])({ | ||
28972 | visible: true | ||
28973 | }, popupInnerProps), | ||
28974 | props.children | ||
28975 | ) | ||
28976 | ) : null | ||
28977 | ); | ||
28978 | } | ||
28979 | return _react2["default"].createElement( | ||
28980 | _rcAnimate2["default"], | ||
28981 | { | ||
28982 | component: '', | ||
28983 | exclusive: true, | ||
28984 | transitionAppear: true, | ||
28985 | transitionName: this.getTransitionName(), | ||
28986 | showProp: 'xVisible' | ||
28987 | }, | ||
28988 | _react2["default"].createElement( | ||
28989 | _rcAlign2["default"], | ||
28990 | { | ||
28991 | target: this.getTarget, | ||
28992 | key: 'popup', | ||
28993 | ref: this.saveAlign, | ||
28994 | monitorWindowResize: true, | ||
28995 | xVisible: visible, | ||
28996 | childrenProps: { visible: 'xVisible' }, | ||
28997 | disabled: !visible, | ||
28998 | align: align, | ||
28999 | onAlign: this.onAlign | ||
29000 | }, | ||
29001 | _react2["default"].createElement( | ||
29002 | _PopupInner2["default"], | ||
29003 | (0, _extends3["default"])({ | ||
29004 | hiddenClassName: hiddenClassName | ||
29005 | }, popupInnerProps), | ||
29006 | props.children | ||
29007 | ) | ||
29008 | ) | ||
29009 | ); | ||
29010 | }, | ||
29011 | getZIndexStyle: function getZIndexStyle() { | ||
29012 | var style = {}; | ||
29013 | var props = this.props; | ||
29014 | if (props.zIndex !== undefined) { | ||
29015 | style.zIndex = props.zIndex; | ||
29016 | } | ||
29017 | return style; | ||
29018 | }, | ||
29019 | getMaskElement: function getMaskElement() { | ||
29020 | var props = this.props; | ||
29021 | var maskElement = void 0; | ||
29022 | if (props.mask) { | ||
29023 | var maskTransition = this.getMaskTransitionName(); | ||
29024 | maskElement = _react2["default"].createElement(_LazyRenderBox2["default"], { | ||
29025 | style: this.getZIndexStyle(), | ||
29026 | key: 'mask', | ||
29027 | className: props.prefixCls + '-mask', | ||
29028 | hiddenClassName: props.prefixCls + '-mask-hidden', | ||
29029 | visible: props.visible | ||
29030 | }); | ||
29031 | if (maskTransition) { | ||
29032 | maskElement = _react2["default"].createElement( | ||
29033 | _rcAnimate2["default"], | ||
29034 | { | ||
29035 | key: 'mask', | ||
29036 | showProp: 'visible', | ||
29037 | transitionAppear: true, | ||
29038 | component: '', | ||
29039 | transitionName: maskTransition | ||
29040 | }, | ||
29041 | maskElement | ||
29042 | ); | ||
29043 | } | ||
29044 | } | ||
29045 | return maskElement; | ||
29046 | }, | ||
29047 | saveAlign: function saveAlign(align) { | ||
29048 | this.alignInstance = align; | ||
29049 | }, | ||
29050 | render: function render() { | ||
29051 | return _react2["default"].createElement( | ||
29052 | 'div', | ||
29053 | null, | ||
29054 | this.getMaskElement(), | ||
29055 | this.getPopupElement() | ||
29056 | ); | ||
29057 | } | ||
29058 | }); | ||
29059 | |||
29060 | exports["default"] = Popup; | ||
29061 | module.exports = exports['default']; | ||
29062 | |||
29063 | /***/ }), | ||
29064 | /* 281 */ | ||
29065 | /***/ (function(module, exports, __webpack_require__) { | ||
29066 | |||
29067 | 'use strict'; | ||
29068 | |||
29069 | Object.defineProperty(exports, "__esModule", { | ||
29070 | value: true | ||
29071 | }); | ||
29072 | |||
29073 | var _Align = __webpack_require__(282); | ||
29074 | |||
29075 | var _Align2 = _interopRequireDefault(_Align); | ||
29076 | |||
29077 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
29078 | |||
29079 | exports["default"] = _Align2["default"]; // export this package's api | ||
29080 | |||
29081 | module.exports = exports['default']; | ||
29082 | |||
29083 | /***/ }), | ||
29084 | /* 282 */ | ||
29085 | /***/ (function(module, exports, __webpack_require__) { | ||
29086 | |||
29087 | 'use strict'; | ||
29088 | |||
29089 | Object.defineProperty(exports, "__esModule", { | ||
29090 | value: true | ||
29091 | }); | ||
29092 | |||
29093 | var _react = __webpack_require__(3); | ||
29094 | |||
29095 | var _react2 = _interopRequireDefault(_react); | ||
29096 | |||
29097 | var _reactDom = __webpack_require__(38); | ||
29098 | |||
29099 | var _reactDom2 = _interopRequireDefault(_reactDom); | ||
29100 | |||
29101 | var _domAlign = __webpack_require__(283); | ||
29102 | |||
29103 | var _domAlign2 = _interopRequireDefault(_domAlign); | ||
29104 | |||
29105 | var _addEventListener = __webpack_require__(276); | ||
29106 | |||
29107 | var _addEventListener2 = _interopRequireDefault(_addEventListener); | ||
29108 | |||
29109 | var _isWindow = __webpack_require__(292); | ||
29110 | |||
29111 | var _isWindow2 = _interopRequireDefault(_isWindow); | ||
29112 | |||
29113 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
29114 | |||
29115 | function buffer(fn, ms) { | ||
29116 | var timer = void 0; | ||
29117 | |||
29118 | function clear() { | ||
29119 | if (timer) { | ||
29120 | clearTimeout(timer); | ||
29121 | timer = null; | ||
29122 | } | ||
29123 | } | ||
29124 | |||
29125 | function bufferFn() { | ||
29126 | clear(); | ||
29127 | timer = setTimeout(fn, ms); | ||
29128 | } | ||
29129 | |||
29130 | bufferFn.clear = clear; | ||
29131 | |||
29132 | return bufferFn; | ||
29133 | } | ||
29134 | |||
29135 | var Align = _react2["default"].createClass({ | ||
29136 | displayName: 'Align', | ||
29137 | |||
29138 | propTypes: { | ||
29139 | childrenProps: _react.PropTypes.object, | ||
29140 | align: _react.PropTypes.object.isRequired, | ||
29141 | target: _react.PropTypes.func, | ||
29142 | onAlign: _react.PropTypes.func, | ||
29143 | monitorBufferTime: _react.PropTypes.number, | ||
29144 | monitorWindowResize: _react.PropTypes.bool, | ||
29145 | disabled: _react.PropTypes.bool, | ||
29146 | children: _react.PropTypes.any | ||
29147 | }, | ||
29148 | |||
29149 | getDefaultProps: function getDefaultProps() { | ||
29150 | return { | ||
29151 | target: function target() { | ||
29152 | return window; | ||
29153 | }, | ||
29154 | onAlign: function onAlign() {}, | ||
29155 | |||
29156 | monitorBufferTime: 50, | ||
29157 | monitorWindowResize: false, | ||
29158 | disabled: false | ||
29159 | }; | ||
29160 | }, | ||
29161 | componentDidMount: function componentDidMount() { | ||
29162 | var props = this.props; | ||
29163 | // if parent ref not attached .... use document.getElementById | ||
29164 | this.forceAlign(); | ||
29165 | if (!props.disabled && props.monitorWindowResize) { | ||
29166 | this.startMonitorWindowResize(); | ||
29167 | } | ||
29168 | }, | ||
29169 | componentDidUpdate: function componentDidUpdate(prevProps) { | ||
29170 | var reAlign = false; | ||
29171 | var props = this.props; | ||
29172 | |||
29173 | if (!props.disabled) { | ||
29174 | if (prevProps.disabled || prevProps.align !== props.align) { | ||
29175 | reAlign = true; | ||
29176 | } else { | ||
29177 | var lastTarget = prevProps.target(); | ||
29178 | var currentTarget = props.target(); | ||
29179 | if ((0, _isWindow2["default"])(lastTarget) && (0, _isWindow2["default"])(currentTarget)) { | ||
29180 | reAlign = false; | ||
29181 | } else if (lastTarget !== currentTarget) { | ||
29182 | reAlign = true; | ||
29183 | } | ||
29184 | } | ||
29185 | } | ||
29186 | |||
29187 | if (reAlign) { | ||
29188 | this.forceAlign(); | ||
29189 | } | ||
29190 | |||
29191 | if (props.monitorWindowResize && !props.disabled) { | ||
29192 | this.startMonitorWindowResize(); | ||
29193 | } else { | ||
29194 | this.stopMonitorWindowResize(); | ||
29195 | } | ||
29196 | }, | ||
29197 | componentWillUnmount: function componentWillUnmount() { | ||
29198 | this.stopMonitorWindowResize(); | ||
29199 | }, | ||
29200 | startMonitorWindowResize: function startMonitorWindowResize() { | ||
29201 | if (!this.resizeHandler) { | ||
29202 | this.bufferMonitor = buffer(this.forceAlign, this.props.monitorBufferTime); | ||
29203 | this.resizeHandler = (0, _addEventListener2["default"])(window, 'resize', this.bufferMonitor); | ||
29204 | } | ||
29205 | }, | ||
29206 | stopMonitorWindowResize: function stopMonitorWindowResize() { | ||
29207 | if (this.resizeHandler) { | ||
29208 | this.bufferMonitor.clear(); | ||
29209 | this.resizeHandler.remove(); | ||
29210 | this.resizeHandler = null; | ||
29211 | } | ||
29212 | }, | ||
29213 | forceAlign: function forceAlign() { | ||
29214 | var props = this.props; | ||
29215 | if (!props.disabled) { | ||
29216 | var source = _reactDom2["default"].findDOMNode(this); | ||
29217 | props.onAlign(source, (0, _domAlign2["default"])(source, props.target(), props.align)); | ||
29218 | } | ||
29219 | }, | ||
29220 | render: function render() { | ||
29221 | var _props = this.props, | ||
29222 | childrenProps = _props.childrenProps, | ||
29223 | children = _props.children; | ||
29224 | |||
29225 | var child = _react2["default"].Children.only(children); | ||
29226 | if (childrenProps) { | ||
29227 | var newProps = {}; | ||
29228 | for (var prop in childrenProps) { | ||
29229 | if (childrenProps.hasOwnProperty(prop)) { | ||
29230 | newProps[prop] = this.props[childrenProps[prop]]; | ||
29231 | } | ||
29232 | } | ||
29233 | return _react2["default"].cloneElement(child, newProps); | ||
29234 | } | ||
29235 | return child; | ||
29236 | } | ||
29237 | }); | ||
29238 | |||
29239 | exports["default"] = Align; | ||
29240 | module.exports = exports['default']; | ||
29241 | |||
29242 | /***/ }), | ||
29243 | /* 283 */ | ||
29244 | /***/ (function(module, exports, __webpack_require__) { | ||
29245 | |||
29246 | 'use strict'; | ||
29247 | |||
29248 | Object.defineProperty(exports, "__esModule", { | ||
29249 | value: true | ||
29250 | }); | ||
29251 | |||
29252 | var _utils = __webpack_require__(284); | ||
29253 | |||
29254 | var _utils2 = _interopRequireDefault(_utils); | ||
29255 | |||
29256 | var _getOffsetParent = __webpack_require__(286); | ||
29257 | |||
29258 | var _getOffsetParent2 = _interopRequireDefault(_getOffsetParent); | ||
29259 | |||
29260 | var _getVisibleRectForElement = __webpack_require__(287); | ||
29261 | |||
29262 | var _getVisibleRectForElement2 = _interopRequireDefault(_getVisibleRectForElement); | ||
29263 | |||
29264 | var _adjustForViewport = __webpack_require__(288); | ||
29265 | |||
29266 | var _adjustForViewport2 = _interopRequireDefault(_adjustForViewport); | ||
29267 | |||
29268 | var _getRegion = __webpack_require__(289); | ||
29269 | |||
29270 | var _getRegion2 = _interopRequireDefault(_getRegion); | ||
29271 | |||
29272 | var _getElFuturePos = __webpack_require__(290); | ||
29273 | |||
29274 | var _getElFuturePos2 = _interopRequireDefault(_getElFuturePos); | ||
29275 | |||
29276 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
29277 | |||
29278 | // http://yiminghe.iteye.com/blog/1124720 | ||
29279 | |||
29280 | /** | ||
29281 | * align dom node flexibly | ||
29282 | * @author yiminghe@gmail.com | ||
29283 | */ | ||
29284 | |||
29285 | function isFailX(elFuturePos, elRegion, visibleRect) { | ||
29286 | return elFuturePos.left < visibleRect.left || elFuturePos.left + elRegion.width > visibleRect.right; | ||
29287 | } | ||
29288 | |||
29289 | function isFailY(elFuturePos, elRegion, visibleRect) { | ||
29290 | return elFuturePos.top < visibleRect.top || elFuturePos.top + elRegion.height > visibleRect.bottom; | ||
29291 | } | ||
29292 | |||
29293 | function isCompleteFailX(elFuturePos, elRegion, visibleRect) { | ||
29294 | return elFuturePos.left > visibleRect.right || elFuturePos.left + elRegion.width < visibleRect.left; | ||
29295 | } | ||
29296 | |||
29297 | function isCompleteFailY(elFuturePos, elRegion, visibleRect) { | ||
29298 | return elFuturePos.top > visibleRect.bottom || elFuturePos.top + elRegion.height < visibleRect.top; | ||
29299 | } | ||
29300 | |||
29301 | function flip(points, reg, map) { | ||
29302 | var ret = []; | ||
29303 | _utils2["default"].each(points, function (p) { | ||
29304 | ret.push(p.replace(reg, function (m) { | ||
29305 | return map[m]; | ||
29306 | })); | ||
29307 | }); | ||
29308 | return ret; | ||
29309 | } | ||
29310 | |||
29311 | function flipOffset(offset, index) { | ||
29312 | offset[index] = -offset[index]; | ||
29313 | return offset; | ||
29314 | } | ||
29315 | |||
29316 | function convertOffset(str, offsetLen) { | ||
29317 | var n = void 0; | ||
29318 | if (/%$/.test(str)) { | ||
29319 | n = parseInt(str.substring(0, str.length - 1), 10) / 100 * offsetLen; | ||
29320 | } else { | ||
29321 | n = parseInt(str, 10); | ||
29322 | } | ||
29323 | return n || 0; | ||
29324 | } | ||
29325 | |||
29326 | function normalizeOffset(offset, el) { | ||
29327 | offset[0] = convertOffset(offset[0], el.width); | ||
29328 | offset[1] = convertOffset(offset[1], el.height); | ||
29329 | } | ||
29330 | |||
29331 | function domAlign(el, refNode, align) { | ||
29332 | var points = align.points; | ||
29333 | var offset = align.offset || [0, 0]; | ||
29334 | var targetOffset = align.targetOffset || [0, 0]; | ||
29335 | var overflow = align.overflow; | ||
29336 | var target = align.target || refNode; | ||
29337 | var source = align.source || el; | ||
29338 | offset = [].concat(offset); | ||
29339 | targetOffset = [].concat(targetOffset); | ||
29340 | overflow = overflow || {}; | ||
29341 | var newOverflowCfg = {}; | ||
29342 | |||
29343 | var fail = 0; | ||
29344 | // 当前节点可以被放置的显示区域 | ||
29345 | var visibleRect = (0, _getVisibleRectForElement2["default"])(source); | ||
29346 | // 当前节点所占的区域, left/top/width/height | ||
29347 | var elRegion = (0, _getRegion2["default"])(source); | ||
29348 | // 参照节点所占的区域, left/top/width/height | ||
29349 | var refNodeRegion = (0, _getRegion2["default"])(target); | ||
29350 | // 将 offset 转换成数值,支持百分比 | ||
29351 | normalizeOffset(offset, elRegion); | ||
29352 | normalizeOffset(targetOffset, refNodeRegion); | ||
29353 | // 当前节点将要被放置的位置 | ||
29354 | var elFuturePos = (0, _getElFuturePos2["default"])(elRegion, refNodeRegion, points, offset, targetOffset); | ||
29355 | // 当前节点将要所处的区域 | ||
29356 | var newElRegion = _utils2["default"].merge(elRegion, elFuturePos); | ||
29357 | |||
29358 | // 如果可视区域不能完全放置当前节点时允许调整 | ||
29359 | if (visibleRect && (overflow.adjustX || overflow.adjustY)) { | ||
29360 | if (overflow.adjustX) { | ||
29361 | // 如果横向不能放下 | ||
29362 | if (isFailX(elFuturePos, elRegion, visibleRect)) { | ||
29363 | // 对齐位置反下 | ||
29364 | var newPoints = flip(points, /[lr]/ig, { | ||
29365 | l: 'r', | ||
29366 | r: 'l' | ||
29367 | }); | ||
29368 | // 偏移量也反下 | ||
29369 | var newOffset = flipOffset(offset, 0); | ||
29370 | var newTargetOffset = flipOffset(targetOffset, 0); | ||
29371 | var newElFuturePos = (0, _getElFuturePos2["default"])(elRegion, refNodeRegion, newPoints, newOffset, newTargetOffset); | ||
29372 | if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) { | ||
29373 | fail = 1; | ||
29374 | points = newPoints; | ||
29375 | offset = newOffset; | ||
29376 | targetOffset = newTargetOffset; | ||
29377 | } | ||
29378 | } | ||
29379 | } | ||
29380 | |||
29381 | if (overflow.adjustY) { | ||
29382 | // 如果纵向不能放下 | ||
29383 | if (isFailY(elFuturePos, elRegion, visibleRect)) { | ||
29384 | // 对齐位置反下 | ||
29385 | var _newPoints = flip(points, /[tb]/ig, { | ||
29386 | t: 'b', | ||
29387 | b: 't' | ||
29388 | }); | ||
29389 | // 偏移量也反下 | ||
29390 | var _newOffset = flipOffset(offset, 1); | ||
29391 | var _newTargetOffset = flipOffset(targetOffset, 1); | ||
29392 | var _newElFuturePos = (0, _getElFuturePos2["default"])(elRegion, refNodeRegion, _newPoints, _newOffset, _newTargetOffset); | ||
29393 | if (!isCompleteFailY(_newElFuturePos, elRegion, visibleRect)) { | ||
29394 | fail = 1; | ||
29395 | points = _newPoints; | ||
29396 | offset = _newOffset; | ||
29397 | targetOffset = _newTargetOffset; | ||
29398 | } | ||
29399 | } | ||
29400 | } | ||
29401 | |||
29402 | // 如果失败,重新计算当前节点将要被放置的位置 | ||
29403 | if (fail) { | ||
29404 | elFuturePos = (0, _getElFuturePos2["default"])(elRegion, refNodeRegion, points, offset, targetOffset); | ||
29405 | _utils2["default"].mix(newElRegion, elFuturePos); | ||
29406 | } | ||
29407 | |||
29408 | // 检查反下后的位置是否可以放下了 | ||
29409 | // 如果仍然放不下只有指定了可以调整当前方向才调整 | ||
29410 | newOverflowCfg.adjustX = overflow.adjustX && isFailX(elFuturePos, elRegion, visibleRect); | ||
29411 | |||
29412 | newOverflowCfg.adjustY = overflow.adjustY && isFailY(elFuturePos, elRegion, visibleRect); | ||
29413 | |||
29414 | // 确实要调整,甚至可能会调整高度宽度 | ||
29415 | if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) { | ||
29416 | newElRegion = (0, _adjustForViewport2["default"])(elFuturePos, elRegion, visibleRect, newOverflowCfg); | ||
29417 | } | ||
29418 | } | ||
29419 | |||
29420 | // need judge to in case set fixed with in css on height auto element | ||
29421 | if (newElRegion.width !== elRegion.width) { | ||
29422 | _utils2["default"].css(source, 'width', _utils2["default"].width(source) + newElRegion.width - elRegion.width); | ||
29423 | } | ||
29424 | |||
29425 | if (newElRegion.height !== elRegion.height) { | ||
29426 | _utils2["default"].css(source, 'height', _utils2["default"].height(source) + newElRegion.height - elRegion.height); | ||
29427 | } | ||
29428 | |||
29429 | // https://github.com/kissyteam/kissy/issues/190 | ||
29430 | // 相对于屏幕位置没变,而 left/top 变了 | ||
29431 | // 例如 <div 'relative'><el absolute></div> | ||
29432 | _utils2["default"].offset(source, { | ||
29433 | left: newElRegion.left, | ||
29434 | top: newElRegion.top | ||
29435 | }, { | ||
29436 | useCssRight: align.useCssRight, | ||
29437 | useCssBottom: align.useCssBottom, | ||
29438 | useCssTransform: align.useCssTransform | ||
29439 | }); | ||
29440 | |||
29441 | return { | ||
29442 | points: points, | ||
29443 | offset: offset, | ||
29444 | targetOffset: targetOffset, | ||
29445 | overflow: newOverflowCfg | ||
29446 | }; | ||
29447 | } | ||
29448 | |||
29449 | domAlign.__getOffsetParent = _getOffsetParent2["default"]; | ||
29450 | |||
29451 | domAlign.__getVisibleRectForElement = _getVisibleRectForElement2["default"]; | ||
29452 | |||
29453 | exports["default"] = domAlign; | ||
29454 | /** | ||
29455 | * 2012-04-26 yiminghe@gmail.com | ||
29456 | * - 优化智能对齐算法 | ||
29457 | * - 慎用 resizeXX | ||
29458 | * | ||
29459 | * 2011-07-13 yiminghe@gmail.com note: | ||
29460 | * - 增加智能对齐,以及大小调整选项 | ||
29461 | **/ | ||
29462 | |||
29463 | module.exports = exports['default']; | ||
29464 | |||
29465 | /***/ }), | ||
29466 | /* 284 */ | ||
29467 | /***/ (function(module, exports, __webpack_require__) { | ||
29468 | |||
29469 | 'use strict'; | ||
29470 | |||
29471 | Object.defineProperty(exports, "__esModule", { | ||
29472 | value: true | ||
29473 | }); | ||
29474 | |||
29475 | var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; | ||
29476 | |||
29477 | var _propertyUtils = __webpack_require__(285); | ||
29478 | |||
29479 | var RE_NUM = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source; | ||
29480 | |||
29481 | var getComputedStyleX = void 0; | ||
29482 | |||
29483 | function force(x, y) { | ||
29484 | return x + y; | ||
29485 | } | ||
29486 | |||
29487 | function css(el, name, v) { | ||
29488 | var value = v; | ||
29489 | if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') { | ||
29490 | for (var i in name) { | ||
29491 | if (name.hasOwnProperty(i)) { | ||
29492 | css(el, i, name[i]); | ||
29493 | } | ||
29494 | } | ||
29495 | return undefined; | ||
29496 | } | ||
29497 | if (typeof value !== 'undefined') { | ||
29498 | if (typeof value === 'number') { | ||
29499 | value = value + 'px'; | ||
29500 | } | ||
29501 | el.style[name] = value; | ||
29502 | return undefined; | ||
29503 | } | ||
29504 | return getComputedStyleX(el, name); | ||
29505 | } | ||
29506 | |||
29507 | function getClientPosition(elem) { | ||
29508 | var box = void 0; | ||
29509 | var x = void 0; | ||
29510 | var y = void 0; | ||
29511 | var doc = elem.ownerDocument; | ||
29512 | var body = doc.body; | ||
29513 | var docElem = doc && doc.documentElement; | ||
29514 | // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式 | ||
29515 | box = elem.getBoundingClientRect(); | ||
29516 | |||
29517 | // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop | ||
29518 | // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确 | ||
29519 | // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin | ||
29520 | |||
29521 | x = box.left; | ||
29522 | y = box.top; | ||
29523 | |||
29524 | // In IE, most of the time, 2 extra pixels are added to the top and left | ||
29525 | // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and | ||
29526 | // IE6 standards mode, this border can be overridden by setting the | ||
29527 | // document element's border to zero -- thus, we cannot rely on the | ||
29528 | // offset always being 2 pixels. | ||
29529 | |||
29530 | // In quirks mode, the offset can be determined by querying the body's | ||
29531 | // clientLeft/clientTop, but in standards mode, it is found by querying | ||
29532 | // the document element's clientLeft/clientTop. Since we already called | ||
29533 | // getClientBoundingRect we have already forced a reflow, so it is not | ||
29534 | // too expensive just to query them all. | ||
29535 | |||
29536 | // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的 | ||
29537 | // 窗口边框标准是设 documentElement ,quirks 时设置 body | ||
29538 | // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去 | ||
29539 | // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置 | ||
29540 | // 标准 ie 下 docElem.clientTop 就是 border-top | ||
29541 | // ie7 html 即窗口边框改变不了。永远为 2 | ||
29542 | // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0 | ||
29543 | |||
29544 | x -= docElem.clientLeft || body.clientLeft || 0; | ||
29545 | y -= docElem.clientTop || body.clientTop || 0; | ||
29546 | |||
29547 | return { | ||
29548 | left: x, | ||
29549 | top: y | ||
29550 | }; | ||
29551 | } | ||
29552 | |||
29553 | function getScroll(w, top) { | ||
29554 | var ret = w['page' + (top ? 'Y' : 'X') + 'Offset']; | ||
29555 | var method = 'scroll' + (top ? 'Top' : 'Left'); | ||
29556 | if (typeof ret !== 'number') { | ||
29557 | var d = w.document; | ||
29558 | // ie6,7,8 standard mode | ||
29559 | ret = d.documentElement[method]; | ||
29560 | if (typeof ret !== 'number') { | ||
29561 | // quirks mode | ||
29562 | ret = d.body[method]; | ||
29563 | } | ||
29564 | } | ||
29565 | return ret; | ||
29566 | } | ||
29567 | |||
29568 | function getScrollLeft(w) { | ||
29569 | return getScroll(w); | ||
29570 | } | ||
29571 | |||
29572 | function getScrollTop(w) { | ||
29573 | return getScroll(w, true); | ||
29574 | } | ||
29575 | |||
29576 | function getOffset(el) { | ||
29577 | var pos = getClientPosition(el); | ||
29578 | var doc = el.ownerDocument; | ||
29579 | var w = doc.defaultView || doc.parentWindow; | ||
29580 | pos.left += getScrollLeft(w); | ||
29581 | pos.top += getScrollTop(w); | ||
29582 | return pos; | ||
29583 | } | ||
29584 | function _getComputedStyle(elem, name, cs) { | ||
29585 | var computedStyle = cs; | ||
29586 | var val = ''; | ||
29587 | var d = elem.ownerDocument; | ||
29588 | computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null); | ||
29589 | |||
29590 | // https://github.com/kissyteam/kissy/issues/61 | ||
29591 | if (computedStyle) { | ||
29592 | val = computedStyle.getPropertyValue(name) || computedStyle[name]; | ||
29593 | } | ||
29594 | |||
29595 | return val; | ||
29596 | } | ||
29597 | |||
29598 | var _RE_NUM_NO_PX = new RegExp('^(' + RE_NUM + ')(?!px)[a-z%]+$', 'i'); | ||
29599 | var RE_POS = /^(top|right|bottom|left)$/; | ||
29600 | var CURRENT_STYLE = 'currentStyle'; | ||
29601 | var RUNTIME_STYLE = 'runtimeStyle'; | ||
29602 | var LEFT = 'left'; | ||
29603 | var PX = 'px'; | ||
29604 | |||
29605 | function _getComputedStyleIE(elem, name) { | ||
29606 | // currentStyle maybe null | ||
29607 | // http://msdn.microsoft.com/en-us/library/ms535231.aspx | ||
29608 | var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name]; | ||
29609 | |||
29610 | // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值 | ||
29611 | // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19 | ||
29612 | // 在 ie 下不对,需要直接用 offset 方式 | ||
29613 | // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了 | ||
29614 | |||
29615 | // From the awesome hack by Dean Edwards | ||
29616 | // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 | ||
29617 | // If we're not dealing with a regular pixel number | ||
29618 | // but a number that has a weird ending, we need to convert it to pixels | ||
29619 | // exclude left right for relativity | ||
29620 | if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) { | ||
29621 | // Remember the original values | ||
29622 | var style = elem.style; | ||
29623 | var left = style[LEFT]; | ||
29624 | var rsLeft = elem[RUNTIME_STYLE][LEFT]; | ||
29625 | |||
29626 | // prevent flashing of content | ||
29627 | elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT]; | ||
29628 | |||
29629 | // Put in the new values to get a computed value out | ||
29630 | style[LEFT] = name === 'fontSize' ? '1em' : ret || 0; | ||
29631 | ret = style.pixelLeft + PX; | ||
29632 | |||
29633 | // Revert the changed values | ||
29634 | style[LEFT] = left; | ||
29635 | |||
29636 | elem[RUNTIME_STYLE][LEFT] = rsLeft; | ||
29637 | } | ||
29638 | return ret === '' ? 'auto' : ret; | ||
29639 | } | ||
29640 | |||
29641 | if (typeof window !== 'undefined') { | ||
29642 | getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE; | ||
29643 | } | ||
29644 | |||
29645 | function getOffsetDirection(dir, option) { | ||
29646 | if (dir === 'left') { | ||
29647 | return option.useCssRight ? 'right' : dir; | ||
29648 | } | ||
29649 | return option.useCssBottom ? 'bottom' : dir; | ||
29650 | } | ||
29651 | |||
29652 | function oppositeOffsetDirection(dir) { | ||
29653 | if (dir === 'left') { | ||
29654 | return 'right'; | ||
29655 | } else if (dir === 'right') { | ||
29656 | return 'left'; | ||
29657 | } else if (dir === 'top') { | ||
29658 | return 'bottom'; | ||
29659 | } else if (dir === 'bottom') { | ||
29660 | return 'top'; | ||
29661 | } | ||
29662 | } | ||
29663 | |||
29664 | // 设置 elem 相对 elem.ownerDocument 的坐标 | ||
29665 | function setLeftTop(elem, offset, option) { | ||
29666 | // set position first, in-case top/left are set even on static elem | ||
29667 | if (css(elem, 'position') === 'static') { | ||
29668 | elem.style.position = 'relative'; | ||
29669 | } | ||
29670 | var presetH = -999; | ||
29671 | var presetV = -999; | ||
29672 | var horizontalProperty = getOffsetDirection('left', option); | ||
29673 | var verticalProperty = getOffsetDirection('top', option); | ||
29674 | var oppositeHorizontalProperty = oppositeOffsetDirection(horizontalProperty); | ||
29675 | var oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty); | ||
29676 | |||
29677 | if (horizontalProperty !== 'left') { | ||
29678 | presetH = 999; | ||
29679 | } | ||
29680 | |||
29681 | if (verticalProperty !== 'top') { | ||
29682 | presetV = 999; | ||
29683 | } | ||
29684 | var originalTransition = ''; | ||
29685 | var originalOffset = getOffset(elem); | ||
29686 | if ('left' in offset || 'top' in offset) { | ||
29687 | originalTransition = (0, _propertyUtils.getTransitionProperty)(elem) || ''; | ||
29688 | (0, _propertyUtils.setTransitionProperty)(elem, 'none'); | ||
29689 | } | ||
29690 | if ('left' in offset) { | ||
29691 | elem.style[oppositeHorizontalProperty] = ''; | ||
29692 | elem.style[horizontalProperty] = presetH + 'px'; | ||
29693 | } | ||
29694 | if ('top' in offset) { | ||
29695 | elem.style[oppositeVerticalProperty] = ''; | ||
29696 | elem.style[verticalProperty] = presetV + 'px'; | ||
29697 | } | ||
29698 | var old = getOffset(elem); | ||
29699 | var originalStyle = {}; | ||
29700 | for (var key in offset) { | ||
29701 | if (offset.hasOwnProperty(key)) { | ||
29702 | var dir = getOffsetDirection(key, option); | ||
29703 | var preset = key === 'left' ? presetH : presetV; | ||
29704 | var off = originalOffset[key] - old[key]; | ||
29705 | if (dir === key) { | ||
29706 | originalStyle[dir] = preset + off; | ||
29707 | } else { | ||
29708 | originalStyle[dir] = preset - off; | ||
29709 | } | ||
29710 | } | ||
29711 | } | ||
29712 | css(elem, originalStyle); | ||
29713 | // force relayout | ||
29714 | force(elem.offsetTop, elem.offsetLeft); | ||
29715 | if ('left' in offset || 'top' in offset) { | ||
29716 | (0, _propertyUtils.setTransitionProperty)(elem, originalTransition); | ||
29717 | } | ||
29718 | var ret = {}; | ||
29719 | for (var _key in offset) { | ||
29720 | if (offset.hasOwnProperty(_key)) { | ||
29721 | var _dir = getOffsetDirection(_key, option); | ||
29722 | var _off = offset[_key] - originalOffset[_key]; | ||
29723 | if (_key === _dir) { | ||
29724 | ret[_dir] = originalStyle[_dir] + _off; | ||
29725 | } else { | ||
29726 | ret[_dir] = originalStyle[_dir] - _off; | ||
29727 | } | ||
29728 | } | ||
29729 | } | ||
29730 | css(elem, ret); | ||
29731 | } | ||
29732 | |||
29733 | function setTransform(elem, offset) { | ||
29734 | var originalOffset = getOffset(elem); | ||
29735 | var originalXY = (0, _propertyUtils.getTransformXY)(elem); | ||
29736 | var resultXY = { x: originalXY.x, y: originalXY.y }; | ||
29737 | if ('left' in offset) { | ||
29738 | resultXY.x = originalXY.x + offset.left - originalOffset.left; | ||
29739 | } | ||
29740 | if ('top' in offset) { | ||
29741 | resultXY.y = originalXY.y + offset.top - originalOffset.top; | ||
29742 | } | ||
29743 | (0, _propertyUtils.setTransformXY)(elem, resultXY); | ||
29744 | } | ||
29745 | |||
29746 | function setOffset(elem, offset, option) { | ||
29747 | if (option.useCssRight || option.useCssBottom) { | ||
29748 | setLeftTop(elem, offset, option); | ||
29749 | } else if (option.useCssTransform && (0, _propertyUtils.getTransformName)() in document.body.style) { | ||
29750 | setTransform(elem, offset, option); | ||
29751 | } else { | ||
29752 | setLeftTop(elem, offset, option); | ||
29753 | } | ||
29754 | } | ||
29755 | |||
29756 | function each(arr, fn) { | ||
29757 | for (var i = 0; i < arr.length; i++) { | ||
29758 | fn(arr[i]); | ||
29759 | } | ||
29760 | } | ||
29761 | |||
29762 | function isBorderBoxFn(elem) { | ||
29763 | return getComputedStyleX(elem, 'boxSizing') === 'border-box'; | ||
29764 | } | ||
29765 | |||
29766 | var BOX_MODELS = ['margin', 'border', 'padding']; | ||
29767 | var CONTENT_INDEX = -1; | ||
29768 | var PADDING_INDEX = 2; | ||
29769 | var BORDER_INDEX = 1; | ||
29770 | var MARGIN_INDEX = 0; | ||
29771 | |||
29772 | function swap(elem, options, callback) { | ||
29773 | var old = {}; | ||
29774 | var style = elem.style; | ||
29775 | var name = void 0; | ||
29776 | |||
29777 | // Remember the old values, and insert the new ones | ||
29778 | for (name in options) { | ||
29779 | if (options.hasOwnProperty(name)) { | ||
29780 | old[name] = style[name]; | ||
29781 | style[name] = options[name]; | ||
29782 | } | ||
29783 | } | ||
29784 | |||
29785 | callback.call(elem); | ||
29786 | |||
29787 | // Revert the old values | ||
29788 | for (name in options) { | ||
29789 | if (options.hasOwnProperty(name)) { | ||
29790 | style[name] = old[name]; | ||
29791 | } | ||
29792 | } | ||
29793 | } | ||
29794 | |||
29795 | function getPBMWidth(elem, props, which) { | ||
29796 | var value = 0; | ||
29797 | var prop = void 0; | ||
29798 | var j = void 0; | ||
29799 | var i = void 0; | ||
29800 | for (j = 0; j < props.length; j++) { | ||
29801 | prop = props[j]; | ||
29802 | if (prop) { | ||
29803 | for (i = 0; i < which.length; i++) { | ||
29804 | var cssProp = void 0; | ||
29805 | if (prop === 'border') { | ||
29806 | cssProp = '' + prop + which[i] + 'Width'; | ||
29807 | } else { | ||
29808 | cssProp = prop + which[i]; | ||
29809 | } | ||
29810 | value += parseFloat(getComputedStyleX(elem, cssProp)) || 0; | ||
29811 | } | ||
29812 | } | ||
29813 | } | ||
29814 | return value; | ||
29815 | } | ||
29816 | |||
29817 | /** | ||
29818 | * A crude way of determining if an object is a window | ||
29819 | * @member util | ||
29820 | */ | ||
29821 | function isWindow(obj) { | ||
29822 | // must use == for ie8 | ||
29823 | /* eslint eqeqeq:0 */ | ||
29824 | return obj !== null && obj !== undefined && obj == obj.window; | ||
29825 | } | ||
29826 | |||
29827 | var domUtils = {}; | ||
29828 | |||
29829 | each(['Width', 'Height'], function (name) { | ||
29830 | domUtils['doc' + name] = function (refWin) { | ||
29831 | var d = refWin.document; | ||
29832 | return Math.max( | ||
29833 | // firefox chrome documentElement.scrollHeight< body.scrollHeight | ||
29834 | // ie standard mode : documentElement.scrollHeight> body.scrollHeight | ||
29835 | d.documentElement['scroll' + name], | ||
29836 | // quirks : documentElement.scrollHeight 最大等于可视窗口多一点? | ||
29837 | d.body['scroll' + name], domUtils['viewport' + name](d)); | ||
29838 | }; | ||
29839 | |||
29840 | domUtils['viewport' + name] = function (win) { | ||
29841 | // pc browser includes scrollbar in window.innerWidth | ||
29842 | var prop = 'client' + name; | ||
29843 | var doc = win.document; | ||
29844 | var body = doc.body; | ||
29845 | var documentElement = doc.documentElement; | ||
29846 | var documentElementProp = documentElement[prop]; | ||
29847 | // 标准模式取 documentElement | ||
29848 | // backcompat 取 body | ||
29849 | return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp; | ||
29850 | }; | ||
29851 | }); | ||
29852 | |||
29853 | /* | ||
29854 | 得到元素的大小信息 | ||
29855 | @param elem | ||
29856 | @param name | ||
29857 | @param {String} [extra] 'padding' : (css width) + padding | ||
29858 | 'border' : (css width) + padding + border | ||
29859 | 'margin' : (css width) + padding + border + margin | ||
29860 | */ | ||
29861 | function getWH(elem, name, ex) { | ||
29862 | var extra = ex; | ||
29863 | if (isWindow(elem)) { | ||
29864 | return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem); | ||
29865 | } else if (elem.nodeType === 9) { | ||
29866 | return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem); | ||
29867 | } | ||
29868 | var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom']; | ||
29869 | var borderBoxValue = name === 'width' ? elem.offsetWidth : elem.offsetHeight; | ||
29870 | var computedStyle = getComputedStyleX(elem); | ||
29871 | var isBorderBox = isBorderBoxFn(elem, computedStyle); | ||
29872 | var cssBoxValue = 0; | ||
29873 | if (borderBoxValue === null || borderBoxValue === undefined || borderBoxValue <= 0) { | ||
29874 | borderBoxValue = undefined; | ||
29875 | // Fall back to computed then un computed css if necessary | ||
29876 | cssBoxValue = getComputedStyleX(elem, name); | ||
29877 | if (cssBoxValue === null || cssBoxValue === undefined || Number(cssBoxValue) < 0) { | ||
29878 | cssBoxValue = elem.style[name] || 0; | ||
29879 | } | ||
29880 | // Normalize '', auto, and prepare for extra | ||
29881 | cssBoxValue = parseFloat(cssBoxValue) || 0; | ||
29882 | } | ||
29883 | if (extra === undefined) { | ||
29884 | extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX; | ||
29885 | } | ||
29886 | var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox; | ||
29887 | var val = borderBoxValue || cssBoxValue; | ||
29888 | if (extra === CONTENT_INDEX) { | ||
29889 | if (borderBoxValueOrIsBorderBox) { | ||
29890 | return val - getPBMWidth(elem, ['border', 'padding'], which, computedStyle); | ||
29891 | } | ||
29892 | return cssBoxValue; | ||
29893 | } else if (borderBoxValueOrIsBorderBox) { | ||
29894 | if (extra === BORDER_INDEX) { | ||
29895 | return val; | ||
29896 | } | ||
29897 | return val + (extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which, computedStyle) : getPBMWidth(elem, ['margin'], which, computedStyle)); | ||
29898 | } | ||
29899 | return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which, computedStyle); | ||
29900 | } | ||
29901 | |||
29902 | var cssShow = { | ||
29903 | position: 'absolute', | ||
29904 | visibility: 'hidden', | ||
29905 | display: 'block' | ||
29906 | }; | ||
29907 | |||
29908 | // fix #119 : https://github.com/kissyteam/kissy/issues/119 | ||
29909 | function getWHIgnoreDisplay() { | ||
29910 | for (var _len = arguments.length, args = Array(_len), _key2 = 0; _key2 < _len; _key2++) { | ||
29911 | args[_key2] = arguments[_key2]; | ||
29912 | } | ||
29913 | |||
29914 | var val = void 0; | ||
29915 | var elem = args[0]; | ||
29916 | // in case elem is window | ||
29917 | // elem.offsetWidth === undefined | ||
29918 | if (elem.offsetWidth !== 0) { | ||
29919 | val = getWH.apply(undefined, args); | ||
29920 | } else { | ||
29921 | swap(elem, cssShow, function () { | ||
29922 | val = getWH.apply(undefined, args); | ||
29923 | }); | ||
29924 | } | ||
29925 | return val; | ||
29926 | } | ||
29927 | |||
29928 | each(['width', 'height'], function (name) { | ||
29929 | var first = name.charAt(0).toUpperCase() + name.slice(1); | ||
29930 | domUtils['outer' + first] = function (el, includeMargin) { | ||
29931 | return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX); | ||
29932 | }; | ||
29933 | var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom']; | ||
29934 | |||
29935 | domUtils[name] = function (elem, v) { | ||
29936 | var val = v; | ||
29937 | if (val !== undefined) { | ||
29938 | if (elem) { | ||
29939 | var computedStyle = getComputedStyleX(elem); | ||
29940 | var isBorderBox = isBorderBoxFn(elem); | ||
29941 | if (isBorderBox) { | ||
29942 | val += getPBMWidth(elem, ['padding', 'border'], which, computedStyle); | ||
29943 | } | ||
29944 | return css(elem, name, val); | ||
29945 | } | ||
29946 | return undefined; | ||
29947 | } | ||
29948 | return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX); | ||
29949 | }; | ||
29950 | }); | ||
29951 | |||
29952 | function mix(to, from) { | ||
29953 | for (var i in from) { | ||
29954 | if (from.hasOwnProperty(i)) { | ||
29955 | to[i] = from[i]; | ||
29956 | } | ||
29957 | } | ||
29958 | return to; | ||
29959 | } | ||
29960 | |||
29961 | var utils = { | ||
29962 | getWindow: function getWindow(node) { | ||
29963 | if (node && node.document && node.setTimeout) { | ||
29964 | return node; | ||
29965 | } | ||
29966 | var doc = node.ownerDocument || node; | ||
29967 | return doc.defaultView || doc.parentWindow; | ||
29968 | }, | ||
29969 | offset: function offset(el, value, option) { | ||
29970 | if (typeof value !== 'undefined') { | ||
29971 | setOffset(el, value, option || {}); | ||
29972 | } else { | ||
29973 | return getOffset(el); | ||
29974 | } | ||
29975 | }, | ||
29976 | |||
29977 | isWindow: isWindow, | ||
29978 | each: each, | ||
29979 | css: css, | ||
29980 | clone: function clone(obj) { | ||
29981 | var i = void 0; | ||
29982 | var ret = {}; | ||
29983 | for (i in obj) { | ||
29984 | if (obj.hasOwnProperty(i)) { | ||
29985 | ret[i] = obj[i]; | ||
29986 | } | ||
29987 | } | ||
29988 | var overflow = obj.overflow; | ||
29989 | if (overflow) { | ||
29990 | for (i in obj) { | ||
29991 | if (obj.hasOwnProperty(i)) { | ||
29992 | ret.overflow[i] = obj.overflow[i]; | ||
29993 | } | ||
29994 | } | ||
29995 | } | ||
29996 | return ret; | ||
29997 | }, | ||
29998 | |||
29999 | mix: mix, | ||
30000 | getWindowScrollLeft: function getWindowScrollLeft(w) { | ||
30001 | return getScrollLeft(w); | ||
30002 | }, | ||
30003 | getWindowScrollTop: function getWindowScrollTop(w) { | ||
30004 | return getScrollTop(w); | ||
30005 | }, | ||
30006 | merge: function merge() { | ||
30007 | var ret = {}; | ||
30008 | |||
30009 | for (var _len2 = arguments.length, args = Array(_len2), _key3 = 0; _key3 < _len2; _key3++) { | ||
30010 | args[_key3] = arguments[_key3]; | ||
30011 | } | ||
30012 | |||
30013 | for (var i = 0; i < args.length; i++) { | ||
30014 | utils.mix(ret, args[i]); | ||
30015 | } | ||
30016 | return ret; | ||
30017 | }, | ||
30018 | |||
30019 | viewportWidth: 0, | ||
30020 | viewportHeight: 0 | ||
30021 | }; | ||
30022 | |||
30023 | mix(utils, domUtils); | ||
30024 | |||
30025 | exports["default"] = utils; | ||
30026 | module.exports = exports['default']; | ||
30027 | |||
30028 | /***/ }), | ||
30029 | /* 285 */ | ||
30030 | /***/ (function(module, exports) { | ||
30031 | |||
30032 | 'use strict'; | ||
30033 | |||
30034 | Object.defineProperty(exports, "__esModule", { | ||
30035 | value: true | ||
30036 | }); | ||
30037 | exports.getTransformName = getTransformName; | ||
30038 | exports.setTransitionProperty = setTransitionProperty; | ||
30039 | exports.getTransitionProperty = getTransitionProperty; | ||
30040 | exports.getTransformXY = getTransformXY; | ||
30041 | exports.setTransformXY = setTransformXY; | ||
30042 | var vendorPrefix = void 0; | ||
30043 | |||
30044 | var jsCssMap = { | ||
30045 | Webkit: '-webkit-', | ||
30046 | Moz: '-moz-', | ||
30047 | // IE did it wrong again ... | ||
30048 | ms: '-ms-', | ||
30049 | O: '-o-' | ||
30050 | }; | ||
30051 | |||
30052 | function getVendorPrefix() { | ||
30053 | if (vendorPrefix !== undefined) { | ||
30054 | return vendorPrefix; | ||
30055 | } | ||
30056 | vendorPrefix = ''; | ||
30057 | var style = document.createElement('p').style; | ||
30058 | var testProp = 'Transform'; | ||
30059 | for (var key in jsCssMap) { | ||
30060 | if (key + testProp in style) { | ||
30061 | vendorPrefix = key; | ||
30062 | } | ||
30063 | } | ||
30064 | return vendorPrefix; | ||
30065 | } | ||
30066 | |||
30067 | function getTransitionName() { | ||
30068 | return getVendorPrefix() ? getVendorPrefix() + 'TransitionProperty' : 'transitionProperty'; | ||
30069 | } | ||
30070 | |||
30071 | function getTransformName() { | ||
30072 | return getVendorPrefix() ? getVendorPrefix() + 'Transform' : 'transform'; | ||
30073 | } | ||
30074 | |||
30075 | function setTransitionProperty(node, value) { | ||
30076 | var name = getTransitionName(); | ||
30077 | if (name) { | ||
30078 | node.style[name] = value; | ||
30079 | if (name !== 'transitionProperty') { | ||
30080 | node.style.transitionProperty = value; | ||
30081 | } | ||
30082 | } | ||
30083 | } | ||
30084 | |||
30085 | function setTransform(node, value) { | ||
30086 | var name = getTransformName(); | ||
30087 | if (name) { | ||
30088 | node.style[name] = value; | ||
30089 | if (name !== 'transform') { | ||
30090 | node.style.transform = value; | ||
30091 | } | ||
30092 | } | ||
30093 | } | ||
30094 | |||
30095 | function getTransitionProperty(node) { | ||
30096 | return node.style.transitionProperty || node.style[getTransitionName()]; | ||
30097 | } | ||
30098 | |||
30099 | function getTransformXY(node) { | ||
30100 | var style = window.getComputedStyle(node, null); | ||
30101 | var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName()); | ||
30102 | if (transform && transform !== 'none') { | ||
30103 | var matrix = transform.replace(/[^0-9\-.,]/g, '').split(','); | ||
30104 | return { x: parseFloat(matrix[12] || matrix[4], 0), y: parseFloat(matrix[13] || matrix[5], 0) }; | ||
30105 | } | ||
30106 | return { | ||
30107 | x: 0, | ||
30108 | y: 0 | ||
30109 | }; | ||
30110 | } | ||
30111 | |||
30112 | var matrix2d = /matrix\((.*)\)/; | ||
30113 | var matrix3d = /matrix3d\((.*)\)/; | ||
30114 | |||
30115 | function setTransformXY(node, xy) { | ||
30116 | var style = window.getComputedStyle(node, null); | ||
30117 | var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName()); | ||
30118 | if (transform && transform !== 'none') { | ||
30119 | var arr = void 0; | ||
30120 | var match2d = transform.match(matrix2d); | ||
30121 | if (match2d) { | ||
30122 | match2d = match2d[1]; | ||
30123 | arr = match2d.split(',').map(function (item) { | ||
30124 | return parseFloat(item, 10); | ||
30125 | }); | ||
30126 | arr[4] = xy.x; | ||
30127 | arr[5] = xy.y; | ||
30128 | setTransform(node, 'matrix(' + arr.join(',') + ')'); | ||
30129 | } else { | ||
30130 | var match3d = transform.match(matrix3d)[1]; | ||
30131 | arr = match3d.split(',').map(function (item) { | ||
30132 | return parseFloat(item, 10); | ||
30133 | }); | ||
30134 | arr[12] = xy.x; | ||
30135 | arr[13] = xy.y; | ||
30136 | setTransform(node, 'matrix3d(' + arr.join(',') + ')'); | ||
30137 | } | ||
30138 | } else { | ||
30139 | setTransform(node, 'translateX(' + xy.x + 'px) translateY(' + xy.y + 'px) translateZ(0)'); | ||
30140 | } | ||
30141 | } | ||
30142 | |||
30143 | /***/ }), | ||
30144 | /* 286 */ | ||
30145 | /***/ (function(module, exports, __webpack_require__) { | ||
30146 | |||
30147 | 'use strict'; | ||
30148 | |||
30149 | Object.defineProperty(exports, "__esModule", { | ||
30150 | value: true | ||
30151 | }); | ||
30152 | |||
30153 | var _utils = __webpack_require__(284); | ||
30154 | |||
30155 | var _utils2 = _interopRequireDefault(_utils); | ||
30156 | |||
30157 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
30158 | |||
30159 | /** | ||
30160 | * 得到会导致元素显示不全的祖先元素 | ||
30161 | */ | ||
30162 | |||
30163 | function getOffsetParent(element) { | ||
30164 | // ie 这个也不是完全可行 | ||
30165 | /* | ||
30166 | <div style="width: 50px;height: 100px;overflow: hidden"> | ||
30167 | <div style="width: 50px;height: 100px;position: relative;" id="d6"> | ||
30168 | 元素 6 高 100px 宽 50px<br/> | ||
30169 | </div> | ||
30170 | </div> | ||
30171 | */ | ||
30172 | // element.offsetParent does the right thing in ie7 and below. Return parent with layout! | ||
30173 | // In other browsers it only includes elements with position absolute, relative or | ||
30174 | // fixed, not elements with overflow set to auto or scroll. | ||
30175 | // if (UA.ie && ieMode < 8) { | ||
30176 | // return element.offsetParent; | ||
30177 | // } | ||
30178 | // 统一的 offsetParent 方法 | ||
30179 | var doc = element.ownerDocument; | ||
30180 | var body = doc.body; | ||
30181 | var parent = void 0; | ||
30182 | var positionStyle = _utils2["default"].css(element, 'position'); | ||
30183 | var skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute'; | ||
30184 | |||
30185 | if (!skipStatic) { | ||
30186 | return element.nodeName.toLowerCase() === 'html' ? null : element.parentNode; | ||
30187 | } | ||
30188 | |||
30189 | for (parent = element.parentNode; parent && parent !== body; parent = parent.parentNode) { | ||
30190 | positionStyle = _utils2["default"].css(parent, 'position'); | ||
30191 | if (positionStyle !== 'static') { | ||
30192 | return parent; | ||
30193 | } | ||
30194 | } | ||
30195 | return null; | ||
30196 | } | ||
30197 | |||
30198 | exports["default"] = getOffsetParent; | ||
30199 | module.exports = exports['default']; | ||
30200 | |||
30201 | /***/ }), | ||
30202 | /* 287 */ | ||
30203 | /***/ (function(module, exports, __webpack_require__) { | ||
30204 | |||
30205 | 'use strict'; | ||
30206 | |||
30207 | Object.defineProperty(exports, "__esModule", { | ||
30208 | value: true | ||
30209 | }); | ||
30210 | |||
30211 | var _utils = __webpack_require__(284); | ||
30212 | |||
30213 | var _utils2 = _interopRequireDefault(_utils); | ||
30214 | |||
30215 | var _getOffsetParent = __webpack_require__(286); | ||
30216 | |||
30217 | var _getOffsetParent2 = _interopRequireDefault(_getOffsetParent); | ||
30218 | |||
30219 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
30220 | |||
30221 | /** | ||
30222 | * 获得元素的显示部分的区域 | ||
30223 | */ | ||
30224 | function getVisibleRectForElement(element) { | ||
30225 | var visibleRect = { | ||
30226 | left: 0, | ||
30227 | right: Infinity, | ||
30228 | top: 0, | ||
30229 | bottom: Infinity | ||
30230 | }; | ||
30231 | var el = (0, _getOffsetParent2["default"])(element); | ||
30232 | var scrollX = void 0; | ||
30233 | var scrollY = void 0; | ||
30234 | var winSize = void 0; | ||
30235 | var doc = element.ownerDocument; | ||
30236 | var win = doc.defaultView || doc.parentWindow; | ||
30237 | var body = doc.body; | ||
30238 | var documentElement = doc.documentElement; | ||
30239 | |||
30240 | // Determine the size of the visible rect by climbing the dom accounting for | ||
30241 | // all scrollable containers. | ||
30242 | while (el) { | ||
30243 | // clientWidth is zero for inline block elements in ie. | ||
30244 | if ((navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) && | ||
30245 | // body may have overflow set on it, yet we still get the entire | ||
30246 | // viewport. In some browsers, el.offsetParent may be | ||
30247 | // document.documentElement, so check for that too. | ||
30248 | el !== body && el !== documentElement && _utils2["default"].css(el, 'overflow') !== 'visible') { | ||
30249 | var pos = _utils2["default"].offset(el); | ||
30250 | // add border | ||
30251 | pos.left += el.clientLeft; | ||
30252 | pos.top += el.clientTop; | ||
30253 | visibleRect.top = Math.max(visibleRect.top, pos.top); | ||
30254 | visibleRect.right = Math.min(visibleRect.right, | ||
30255 | // consider area without scrollBar | ||
30256 | pos.left + el.clientWidth); | ||
30257 | visibleRect.bottom = Math.min(visibleRect.bottom, pos.top + el.clientHeight); | ||
30258 | visibleRect.left = Math.max(visibleRect.left, pos.left); | ||
30259 | } else if (el === body || el === documentElement) { | ||
30260 | break; | ||
30261 | } | ||
30262 | el = (0, _getOffsetParent2["default"])(el); | ||
30263 | } | ||
30264 | |||
30265 | // Clip by window's viewport. | ||
30266 | scrollX = _utils2["default"].getWindowScrollLeft(win); | ||
30267 | scrollY = _utils2["default"].getWindowScrollTop(win); | ||
30268 | visibleRect.left = Math.max(visibleRect.left, scrollX); | ||
30269 | visibleRect.top = Math.max(visibleRect.top, scrollY); | ||
30270 | winSize = { | ||
30271 | width: _utils2["default"].viewportWidth(win), | ||
30272 | height: _utils2["default"].viewportHeight(win) | ||
30273 | }; | ||
30274 | visibleRect.right = Math.min(visibleRect.right, scrollX + winSize.width); | ||
30275 | visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + winSize.height); | ||
30276 | return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null; | ||
30277 | } | ||
30278 | |||
30279 | exports["default"] = getVisibleRectForElement; | ||
30280 | module.exports = exports['default']; | ||
30281 | |||
30282 | /***/ }), | ||
30283 | /* 288 */ | ||
30284 | /***/ (function(module, exports, __webpack_require__) { | ||
30285 | |||
30286 | 'use strict'; | ||
30287 | |||
30288 | Object.defineProperty(exports, "__esModule", { | ||
30289 | value: true | ||
30290 | }); | ||
30291 | |||
30292 | var _utils = __webpack_require__(284); | ||
30293 | |||
30294 | var _utils2 = _interopRequireDefault(_utils); | ||
30295 | |||
30296 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
30297 | |||
30298 | function adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) { | ||
30299 | var pos = _utils2["default"].clone(elFuturePos); | ||
30300 | var size = { | ||
30301 | width: elRegion.width, | ||
30302 | height: elRegion.height | ||
30303 | }; | ||
30304 | |||
30305 | if (overflow.adjustX && pos.left < visibleRect.left) { | ||
30306 | pos.left = visibleRect.left; | ||
30307 | } | ||
30308 | |||
30309 | // Left edge inside and right edge outside viewport, try to resize it. | ||
30310 | if (overflow.resizeWidth && pos.left >= visibleRect.left && pos.left + size.width > visibleRect.right) { | ||
30311 | size.width -= pos.left + size.width - visibleRect.right; | ||
30312 | } | ||
30313 | |||
30314 | // Right edge outside viewport, try to move it. | ||
30315 | if (overflow.adjustX && pos.left + size.width > visibleRect.right) { | ||
30316 | // 保证左边界和可视区域左边界对齐 | ||
30317 | pos.left = Math.max(visibleRect.right - size.width, visibleRect.left); | ||
30318 | } | ||
30319 | |||
30320 | // Top edge outside viewport, try to move it. | ||
30321 | if (overflow.adjustY && pos.top < visibleRect.top) { | ||
30322 | pos.top = visibleRect.top; | ||
30323 | } | ||
30324 | |||
30325 | // Top edge inside and bottom edge outside viewport, try to resize it. | ||
30326 | if (overflow.resizeHeight && pos.top >= visibleRect.top && pos.top + size.height > visibleRect.bottom) { | ||
30327 | size.height -= pos.top + size.height - visibleRect.bottom; | ||
30328 | } | ||
30329 | |||
30330 | // Bottom edge outside viewport, try to move it. | ||
30331 | if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) { | ||
30332 | // 保证上边界和可视区域上边界对齐 | ||
30333 | pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top); | ||
30334 | } | ||
30335 | |||
30336 | return _utils2["default"].mix(pos, size); | ||
30337 | } | ||
30338 | |||
30339 | exports["default"] = adjustForViewport; | ||
30340 | module.exports = exports['default']; | ||
30341 | |||
30342 | /***/ }), | ||
30343 | /* 289 */ | ||
30344 | /***/ (function(module, exports, __webpack_require__) { | ||
30345 | |||
30346 | 'use strict'; | ||
30347 | |||
30348 | Object.defineProperty(exports, "__esModule", { | ||
30349 | value: true | ||
30350 | }); | ||
30351 | |||
30352 | var _utils = __webpack_require__(284); | ||
30353 | |||
30354 | var _utils2 = _interopRequireDefault(_utils); | ||
30355 | |||
30356 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
30357 | |||
30358 | function getRegion(node) { | ||
30359 | var offset = void 0; | ||
30360 | var w = void 0; | ||
30361 | var h = void 0; | ||
30362 | if (!_utils2["default"].isWindow(node) && node.nodeType !== 9) { | ||
30363 | offset = _utils2["default"].offset(node); | ||
30364 | w = _utils2["default"].outerWidth(node); | ||
30365 | h = _utils2["default"].outerHeight(node); | ||
30366 | } else { | ||
30367 | var win = _utils2["default"].getWindow(node); | ||
30368 | offset = { | ||
30369 | left: _utils2["default"].getWindowScrollLeft(win), | ||
30370 | top: _utils2["default"].getWindowScrollTop(win) | ||
30371 | }; | ||
30372 | w = _utils2["default"].viewportWidth(win); | ||
30373 | h = _utils2["default"].viewportHeight(win); | ||
30374 | } | ||
30375 | offset.width = w; | ||
30376 | offset.height = h; | ||
30377 | return offset; | ||
30378 | } | ||
30379 | |||
30380 | exports["default"] = getRegion; | ||
30381 | module.exports = exports['default']; | ||
30382 | |||
30383 | /***/ }), | ||
30384 | /* 290 */ | ||
30385 | /***/ (function(module, exports, __webpack_require__) { | ||
30386 | |||
30387 | 'use strict'; | ||
30388 | |||
30389 | Object.defineProperty(exports, "__esModule", { | ||
30390 | value: true | ||
30391 | }); | ||
30392 | |||
30393 | var _getAlignOffset = __webpack_require__(291); | ||
30394 | |||
30395 | var _getAlignOffset2 = _interopRequireDefault(_getAlignOffset); | ||
30396 | |||
30397 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
30398 | |||
30399 | function getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) { | ||
30400 | var xy = void 0; | ||
30401 | var diff = void 0; | ||
30402 | var p1 = void 0; | ||
30403 | var p2 = void 0; | ||
30404 | |||
30405 | xy = { | ||
30406 | left: elRegion.left, | ||
30407 | top: elRegion.top | ||
30408 | }; | ||
30409 | |||
30410 | p1 = (0, _getAlignOffset2["default"])(refNodeRegion, points[1]); | ||
30411 | p2 = (0, _getAlignOffset2["default"])(elRegion, points[0]); | ||
30412 | |||
30413 | diff = [p2.left - p1.left, p2.top - p1.top]; | ||
30414 | |||
30415 | return { | ||
30416 | left: xy.left - diff[0] + offset[0] - targetOffset[0], | ||
30417 | top: xy.top - diff[1] + offset[1] - targetOffset[1] | ||
30418 | }; | ||
30419 | } | ||
30420 | |||
30421 | exports["default"] = getElFuturePos; | ||
30422 | module.exports = exports['default']; | ||
30423 | |||
30424 | /***/ }), | ||
30425 | /* 291 */ | ||
30426 | /***/ (function(module, exports) { | ||
30427 | |||
30428 | 'use strict'; | ||
30429 | |||
30430 | Object.defineProperty(exports, "__esModule", { | ||
30431 | value: true | ||
30432 | }); | ||
30433 | /** | ||
30434 | * 获取 node 上的 align 对齐点 相对于页面的坐标 | ||
30435 | */ | ||
30436 | |||
30437 | function getAlignOffset(region, align) { | ||
30438 | var V = align.charAt(0); | ||
30439 | var H = align.charAt(1); | ||
30440 | var w = region.width; | ||
30441 | var h = region.height; | ||
30442 | var x = void 0; | ||
30443 | var y = void 0; | ||
30444 | |||
30445 | x = region.left; | ||
30446 | y = region.top; | ||
30447 | |||
30448 | if (V === 'c') { | ||
30449 | y += h / 2; | ||
30450 | } else if (V === 'b') { | ||
30451 | y += h; | ||
30452 | } | ||
30453 | |||
30454 | if (H === 'c') { | ||
30455 | x += w / 2; | ||
30456 | } else if (H === 'r') { | ||
30457 | x += w; | ||
30458 | } | ||
30459 | |||
30460 | return { | ||
30461 | left: x, | ||
30462 | top: y | ||
30463 | }; | ||
30464 | } | ||
30465 | |||
30466 | exports["default"] = getAlignOffset; | ||
30467 | module.exports = exports['default']; | ||
30468 | |||
30469 | /***/ }), | ||
30470 | /* 292 */ | ||
30471 | /***/ (function(module, exports) { | ||
30472 | |||
30473 | "use strict"; | ||
30474 | |||
30475 | Object.defineProperty(exports, "__esModule", { | ||
30476 | value: true | ||
30477 | }); | ||
30478 | exports["default"] = isWindow; | ||
30479 | function isWindow(obj) { | ||
30480 | /* eslint no-eq-null: 0 */ | ||
30481 | /* eslint eqeqeq: 0 */ | ||
30482 | return obj != null && obj == obj.window; | ||
30483 | } | ||
30484 | module.exports = exports['default']; | ||
30485 | |||
30486 | /***/ }), | ||
30487 | /* 293 */ | ||
30488 | /***/ (function(module, exports, __webpack_require__) { | ||
30489 | |||
30490 | 'use strict'; | ||
30491 | |||
30492 | // export this package's api | ||
30493 | module.exports = __webpack_require__(294); | ||
30494 | |||
30495 | /***/ }), | ||
30496 | /* 294 */ | ||
30497 | /***/ (function(module, exports, __webpack_require__) { | ||
30498 | |||
30499 | 'use strict'; | ||
30500 | |||
30501 | Object.defineProperty(exports, "__esModule", { | ||
30502 | value: true | ||
30503 | }); | ||
30504 | |||
30505 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
30506 | |||
30507 | var _react = __webpack_require__(3); | ||
30508 | |||
30509 | var _react2 = _interopRequireDefault(_react); | ||
30510 | |||
30511 | var _ChildrenUtils = __webpack_require__(295); | ||
30512 | |||
30513 | var _AnimateChild = __webpack_require__(296); | ||
30514 | |||
30515 | var _AnimateChild2 = _interopRequireDefault(_AnimateChild); | ||
30516 | |||
30517 | var _util = __webpack_require__(301); | ||
30518 | |||
30519 | var _util2 = _interopRequireDefault(_util); | ||
30520 | |||
30521 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
30522 | |||
30523 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
30524 | |||
30525 | var defaultKey = 'rc_animate_' + Date.now(); | ||
30526 | |||
30527 | |||
30528 | function getChildrenFromProps(props) { | ||
30529 | var children = props.children; | ||
30530 | if (_react2["default"].isValidElement(children)) { | ||
30531 | if (!children.key) { | ||
30532 | return _react2["default"].cloneElement(children, { | ||
30533 | key: defaultKey | ||
30534 | }); | ||
30535 | } | ||
30536 | } | ||
30537 | return children; | ||
30538 | } | ||
30539 | |||
30540 | function noop() {} | ||
30541 | |||
30542 | var Animate = _react2["default"].createClass({ | ||
30543 | displayName: 'Animate', | ||
30544 | |||
30545 | propTypes: { | ||
30546 | component: _react2["default"].PropTypes.any, | ||
30547 | componentProps: _react2["default"].PropTypes.object, | ||
30548 | animation: _react2["default"].PropTypes.object, | ||
30549 | transitionName: _react2["default"].PropTypes.oneOfType([_react2["default"].PropTypes.string, _react2["default"].PropTypes.object]), | ||
30550 | transitionEnter: _react2["default"].PropTypes.bool, | ||
30551 | transitionAppear: _react2["default"].PropTypes.bool, | ||
30552 | exclusive: _react2["default"].PropTypes.bool, | ||
30553 | transitionLeave: _react2["default"].PropTypes.bool, | ||
30554 | onEnd: _react2["default"].PropTypes.func, | ||
30555 | onEnter: _react2["default"].PropTypes.func, | ||
30556 | onLeave: _react2["default"].PropTypes.func, | ||
30557 | onAppear: _react2["default"].PropTypes.func, | ||
30558 | showProp: _react2["default"].PropTypes.string | ||
30559 | }, | ||
30560 | |||
30561 | getDefaultProps: function getDefaultProps() { | ||
30562 | return { | ||
30563 | animation: {}, | ||
30564 | component: 'span', | ||
30565 | componentProps: {}, | ||
30566 | transitionEnter: true, | ||
30567 | transitionLeave: true, | ||
30568 | transitionAppear: false, | ||
30569 | onEnd: noop, | ||
30570 | onEnter: noop, | ||
30571 | onLeave: noop, | ||
30572 | onAppear: noop | ||
30573 | }; | ||
30574 | }, | ||
30575 | getInitialState: function getInitialState() { | ||
30576 | this.currentlyAnimatingKeys = {}; | ||
30577 | this.keysToEnter = []; | ||
30578 | this.keysToLeave = []; | ||
30579 | return { | ||
30580 | children: (0, _ChildrenUtils.toArrayChildren)(getChildrenFromProps(this.props)) | ||
30581 | }; | ||
30582 | }, | ||
30583 | componentDidMount: function componentDidMount() { | ||
30584 | var _this = this; | ||
30585 | |||
30586 | var showProp = this.props.showProp; | ||
30587 | var children = this.state.children; | ||
30588 | if (showProp) { | ||
30589 | children = children.filter(function (child) { | ||
30590 | return !!child.props[showProp]; | ||
30591 | }); | ||
30592 | } | ||
30593 | children.forEach(function (child) { | ||
30594 | if (child) { | ||
30595 | _this.performAppear(child.key); | ||
30596 | } | ||
30597 | }); | ||
30598 | }, | ||
30599 | componentWillReceiveProps: function componentWillReceiveProps(nextProps) { | ||
30600 | var _this2 = this; | ||
30601 | |||
30602 | this.nextProps = nextProps; | ||
30603 | var nextChildren = (0, _ChildrenUtils.toArrayChildren)(getChildrenFromProps(nextProps)); | ||
30604 | var props = this.props; | ||
30605 | // exclusive needs immediate response | ||
30606 | if (props.exclusive) { | ||
30607 | Object.keys(this.currentlyAnimatingKeys).forEach(function (key) { | ||
30608 | _this2.stop(key); | ||
30609 | }); | ||
30610 | } | ||
30611 | var showProp = props.showProp; | ||
30612 | var currentlyAnimatingKeys = this.currentlyAnimatingKeys; | ||
30613 | // last props children if exclusive | ||
30614 | var currentChildren = props.exclusive ? (0, _ChildrenUtils.toArrayChildren)(getChildrenFromProps(props)) : this.state.children; | ||
30615 | // in case destroy in showProp mode | ||
30616 | var newChildren = []; | ||
30617 | if (showProp) { | ||
30618 | currentChildren.forEach(function (currentChild) { | ||
30619 | var nextChild = currentChild && (0, _ChildrenUtils.findChildInChildrenByKey)(nextChildren, currentChild.key); | ||
30620 | var newChild = void 0; | ||
30621 | if ((!nextChild || !nextChild.props[showProp]) && currentChild.props[showProp]) { | ||
30622 | newChild = _react2["default"].cloneElement(nextChild || currentChild, _defineProperty({}, showProp, true)); | ||
30623 | } else { | ||
30624 | newChild = nextChild; | ||
30625 | } | ||
30626 | if (newChild) { | ||
30627 | newChildren.push(newChild); | ||
30628 | } | ||
30629 | }); | ||
30630 | nextChildren.forEach(function (nextChild) { | ||
30631 | if (!nextChild || !(0, _ChildrenUtils.findChildInChildrenByKey)(currentChildren, nextChild.key)) { | ||
30632 | newChildren.push(nextChild); | ||
30633 | } | ||
30634 | }); | ||
30635 | } else { | ||
30636 | newChildren = (0, _ChildrenUtils.mergeChildren)(currentChildren, nextChildren); | ||
30637 | } | ||
30638 | |||
30639 | // need render to avoid update | ||
30640 | this.setState({ | ||
30641 | children: newChildren | ||
30642 | }); | ||
30643 | |||
30644 | nextChildren.forEach(function (child) { | ||
30645 | var key = child && child.key; | ||
30646 | if (child && currentlyAnimatingKeys[key]) { | ||
30647 | return; | ||
30648 | } | ||
30649 | var hasPrev = child && (0, _ChildrenUtils.findChildInChildrenByKey)(currentChildren, key); | ||
30650 | if (showProp) { | ||
30651 | var showInNext = child.props[showProp]; | ||
30652 | if (hasPrev) { | ||
30653 | var showInNow = (0, _ChildrenUtils.findShownChildInChildrenByKey)(currentChildren, key, showProp); | ||
30654 | if (!showInNow && showInNext) { | ||
30655 | _this2.keysToEnter.push(key); | ||
30656 | } | ||
30657 | } else if (showInNext) { | ||
30658 | _this2.keysToEnter.push(key); | ||
30659 | } | ||
30660 | } else if (!hasPrev) { | ||
30661 | _this2.keysToEnter.push(key); | ||
30662 | } | ||
30663 | }); | ||
30664 | |||
30665 | currentChildren.forEach(function (child) { | ||
30666 | var key = child && child.key; | ||
30667 | if (child && currentlyAnimatingKeys[key]) { | ||
30668 | return; | ||
30669 | } | ||
30670 | var hasNext = child && (0, _ChildrenUtils.findChildInChildrenByKey)(nextChildren, key); | ||
30671 | if (showProp) { | ||
30672 | var showInNow = child.props[showProp]; | ||
30673 | if (hasNext) { | ||
30674 | var showInNext = (0, _ChildrenUtils.findShownChildInChildrenByKey)(nextChildren, key, showProp); | ||
30675 | if (!showInNext && showInNow) { | ||
30676 | _this2.keysToLeave.push(key); | ||
30677 | } | ||
30678 | } else if (showInNow) { | ||
30679 | _this2.keysToLeave.push(key); | ||
30680 | } | ||
30681 | } else if (!hasNext) { | ||
30682 | _this2.keysToLeave.push(key); | ||
30683 | } | ||
30684 | }); | ||
30685 | }, | ||
30686 | componentDidUpdate: function componentDidUpdate() { | ||
30687 | var keysToEnter = this.keysToEnter; | ||
30688 | this.keysToEnter = []; | ||
30689 | keysToEnter.forEach(this.performEnter); | ||
30690 | var keysToLeave = this.keysToLeave; | ||
30691 | this.keysToLeave = []; | ||
30692 | keysToLeave.forEach(this.performLeave); | ||
30693 | }, | ||
30694 | performEnter: function performEnter(key) { | ||
30695 | // may already remove by exclusive | ||
30696 | if (this.refs[key]) { | ||
30697 | this.currentlyAnimatingKeys[key] = true; | ||
30698 | this.refs[key].componentWillEnter(this.handleDoneAdding.bind(this, key, 'enter')); | ||
30699 | } | ||
30700 | }, | ||
30701 | performAppear: function performAppear(key) { | ||
30702 | if (this.refs[key]) { | ||
30703 | this.currentlyAnimatingKeys[key] = true; | ||
30704 | this.refs[key].componentWillAppear(this.handleDoneAdding.bind(this, key, 'appear')); | ||
30705 | } | ||
30706 | }, | ||
30707 | handleDoneAdding: function handleDoneAdding(key, type) { | ||
30708 | var props = this.props; | ||
30709 | delete this.currentlyAnimatingKeys[key]; | ||
30710 | // if update on exclusive mode, skip check | ||
30711 | if (props.exclusive && props !== this.nextProps) { | ||
30712 | return; | ||
30713 | } | ||
30714 | var currentChildren = (0, _ChildrenUtils.toArrayChildren)(getChildrenFromProps(props)); | ||
30715 | if (!this.isValidChildByKey(currentChildren, key)) { | ||
30716 | // exclusive will not need this | ||
30717 | this.performLeave(key); | ||
30718 | } else { | ||
30719 | if (type === 'appear') { | ||
30720 | if (_util2["default"].allowAppearCallback(props)) { | ||
30721 | props.onAppear(key); | ||
30722 | props.onEnd(key, true); | ||
30723 | } | ||
30724 | } else { | ||
30725 | if (_util2["default"].allowEnterCallback(props)) { | ||
30726 | props.onEnter(key); | ||
30727 | props.onEnd(key, true); | ||
30728 | } | ||
30729 | } | ||
30730 | } | ||
30731 | }, | ||
30732 | performLeave: function performLeave(key) { | ||
30733 | // may already remove by exclusive | ||
30734 | if (this.refs[key]) { | ||
30735 | this.currentlyAnimatingKeys[key] = true; | ||
30736 | this.refs[key].componentWillLeave(this.handleDoneLeaving.bind(this, key)); | ||
30737 | } | ||
30738 | }, | ||
30739 | handleDoneLeaving: function handleDoneLeaving(key) { | ||
30740 | var props = this.props; | ||
30741 | delete this.currentlyAnimatingKeys[key]; | ||
30742 | // if update on exclusive mode, skip check | ||
30743 | if (props.exclusive && props !== this.nextProps) { | ||
30744 | return; | ||
30745 | } | ||
30746 | var currentChildren = (0, _ChildrenUtils.toArrayChildren)(getChildrenFromProps(props)); | ||
30747 | // in case state change is too fast | ||
30748 | if (this.isValidChildByKey(currentChildren, key)) { | ||
30749 | this.performEnter(key); | ||
30750 | } else { | ||
30751 | var end = function end() { | ||
30752 | if (_util2["default"].allowLeaveCallback(props)) { | ||
30753 | props.onLeave(key); | ||
30754 | props.onEnd(key, false); | ||
30755 | } | ||
30756 | }; | ||
30757 | /* eslint react/no-is-mounted:0 */ | ||
30758 | if (this.isMounted() && !(0, _ChildrenUtils.isSameChildren)(this.state.children, currentChildren, props.showProp)) { | ||
30759 | this.setState({ | ||
30760 | children: currentChildren | ||
30761 | }, end); | ||
30762 | } else { | ||
30763 | end(); | ||
30764 | } | ||
30765 | } | ||
30766 | }, | ||
30767 | isValidChildByKey: function isValidChildByKey(currentChildren, key) { | ||
30768 | var showProp = this.props.showProp; | ||
30769 | if (showProp) { | ||
30770 | return (0, _ChildrenUtils.findShownChildInChildrenByKey)(currentChildren, key, showProp); | ||
30771 | } | ||
30772 | return (0, _ChildrenUtils.findChildInChildrenByKey)(currentChildren, key); | ||
30773 | }, | ||
30774 | stop: function stop(key) { | ||
30775 | delete this.currentlyAnimatingKeys[key]; | ||
30776 | var component = this.refs[key]; | ||
30777 | if (component) { | ||
30778 | component.stop(); | ||
30779 | } | ||
30780 | }, | ||
30781 | render: function render() { | ||
30782 | var props = this.props; | ||
30783 | this.nextProps = props; | ||
30784 | var stateChildren = this.state.children; | ||
30785 | var children = null; | ||
30786 | if (stateChildren) { | ||
30787 | children = stateChildren.map(function (child) { | ||
30788 | if (child === null || child === undefined) { | ||
30789 | return child; | ||
30790 | } | ||
30791 | if (!child.key) { | ||
30792 | throw new Error('must set key for <rc-animate> children'); | ||
30793 | } | ||
30794 | return _react2["default"].createElement( | ||
30795 | _AnimateChild2["default"], | ||
30796 | { | ||
30797 | key: child.key, | ||
30798 | ref: child.key, | ||
30799 | animation: props.animation, | ||
30800 | transitionName: props.transitionName, | ||
30801 | transitionEnter: props.transitionEnter, | ||
30802 | transitionAppear: props.transitionAppear, | ||
30803 | transitionLeave: props.transitionLeave | ||
30804 | }, | ||
30805 | child | ||
30806 | ); | ||
30807 | }); | ||
30808 | } | ||
30809 | var Component = props.component; | ||
30810 | if (Component) { | ||
30811 | var passedProps = props; | ||
30812 | if (typeof Component === 'string') { | ||
30813 | passedProps = _extends({ | ||
30814 | className: props.className, | ||
30815 | style: props.style | ||
30816 | }, props.componentProps); | ||
30817 | } | ||
30818 | return _react2["default"].createElement( | ||
30819 | Component, | ||
30820 | passedProps, | ||
30821 | children | ||
30822 | ); | ||
30823 | } | ||
30824 | return children[0] || null; | ||
30825 | } | ||
30826 | }); | ||
30827 | |||
30828 | exports["default"] = Animate; | ||
30829 | module.exports = exports['default']; | ||
30830 | |||
30831 | /***/ }), | ||
30832 | /* 295 */ | ||
30833 | /***/ (function(module, exports, __webpack_require__) { | ||
30834 | |||
30835 | 'use strict'; | ||
30836 | |||
30837 | Object.defineProperty(exports, "__esModule", { | ||
30838 | value: true | ||
30839 | }); | ||
30840 | exports.toArrayChildren = toArrayChildren; | ||
30841 | exports.findChildInChildrenByKey = findChildInChildrenByKey; | ||
30842 | exports.findShownChildInChildrenByKey = findShownChildInChildrenByKey; | ||
30843 | exports.findHiddenChildInChildrenByKey = findHiddenChildInChildrenByKey; | ||
30844 | exports.isSameChildren = isSameChildren; | ||
30845 | exports.mergeChildren = mergeChildren; | ||
30846 | |||
30847 | var _react = __webpack_require__(3); | ||
30848 | |||
30849 | var _react2 = _interopRequireDefault(_react); | ||
30850 | |||
30851 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
30852 | |||
30853 | function toArrayChildren(children) { | ||
30854 | var ret = []; | ||
30855 | _react2["default"].Children.forEach(children, function (child) { | ||
30856 | ret.push(child); | ||
30857 | }); | ||
30858 | return ret; | ||
30859 | } | ||
30860 | |||
30861 | function findChildInChildrenByKey(children, key) { | ||
30862 | var ret = null; | ||
30863 | if (children) { | ||
30864 | children.forEach(function (child) { | ||
30865 | if (ret) { | ||
30866 | return; | ||
30867 | } | ||
30868 | if (child && child.key === key) { | ||
30869 | ret = child; | ||
30870 | } | ||
30871 | }); | ||
30872 | } | ||
30873 | return ret; | ||
30874 | } | ||
30875 | |||
30876 | function findShownChildInChildrenByKey(children, key, showProp) { | ||
30877 | var ret = null; | ||
30878 | if (children) { | ||
30879 | children.forEach(function (child) { | ||
30880 | if (child && child.key === key && child.props[showProp]) { | ||
30881 | if (ret) { | ||
30882 | throw new Error('two child with same key for <rc-animate> children'); | ||
30883 | } | ||
30884 | ret = child; | ||
30885 | } | ||
30886 | }); | ||
30887 | } | ||
30888 | return ret; | ||
30889 | } | ||
30890 | |||
30891 | function findHiddenChildInChildrenByKey(children, key, showProp) { | ||
30892 | var found = 0; | ||
30893 | if (children) { | ||
30894 | children.forEach(function (child) { | ||
30895 | if (found) { | ||
30896 | return; | ||
30897 | } | ||
30898 | found = child && child.key === key && !child.props[showProp]; | ||
30899 | }); | ||
30900 | } | ||
30901 | return found; | ||
30902 | } | ||
30903 | |||
30904 | function isSameChildren(c1, c2, showProp) { | ||
30905 | var same = c1.length === c2.length; | ||
30906 | if (same) { | ||
30907 | c1.forEach(function (child, index) { | ||
30908 | var child2 = c2[index]; | ||
30909 | if (child && child2) { | ||
30910 | if (child && !child2 || !child && child2) { | ||
30911 | same = false; | ||
30912 | } else if (child.key !== child2.key) { | ||
30913 | same = false; | ||
30914 | } else if (showProp && child.props[showProp] !== child2.props[showProp]) { | ||
30915 | same = false; | ||
30916 | } | ||
30917 | } | ||
30918 | }); | ||
30919 | } | ||
30920 | return same; | ||
30921 | } | ||
30922 | |||
30923 | function mergeChildren(prev, next) { | ||
30924 | var ret = []; | ||
30925 | |||
30926 | // For each key of `next`, the list of keys to insert before that key in | ||
30927 | // the combined list | ||
30928 | var nextChildrenPending = {}; | ||
30929 | var pendingChildren = []; | ||
30930 | prev.forEach(function (child) { | ||
30931 | if (child && findChildInChildrenByKey(next, child.key)) { | ||
30932 | if (pendingChildren.length) { | ||
30933 | nextChildrenPending[child.key] = pendingChildren; | ||
30934 | pendingChildren = []; | ||
30935 | } | ||
30936 | } else { | ||
30937 | pendingChildren.push(child); | ||
30938 | } | ||
30939 | }); | ||
30940 | |||
30941 | next.forEach(function (child) { | ||
30942 | if (child && nextChildrenPending.hasOwnProperty(child.key)) { | ||
30943 | ret = ret.concat(nextChildrenPending[child.key]); | ||
30944 | } | ||
30945 | ret.push(child); | ||
30946 | }); | ||
30947 | |||
30948 | ret = ret.concat(pendingChildren); | ||
30949 | |||
30950 | return ret; | ||
30951 | } | ||
30952 | |||
30953 | /***/ }), | ||
30954 | /* 296 */ | ||
30955 | /***/ (function(module, exports, __webpack_require__) { | ||
30956 | |||
30957 | 'use strict'; | ||
30958 | |||
30959 | Object.defineProperty(exports, "__esModule", { | ||
30960 | value: true | ||
30961 | }); | ||
30962 | |||
30963 | var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; | ||
30964 | |||
30965 | var _react = __webpack_require__(3); | ||
30966 | |||
30967 | var _react2 = _interopRequireDefault(_react); | ||
30968 | |||
30969 | var _reactDom = __webpack_require__(38); | ||
30970 | |||
30971 | var _reactDom2 = _interopRequireDefault(_reactDom); | ||
30972 | |||
30973 | var _cssAnimation = __webpack_require__(297); | ||
30974 | |||
30975 | var _cssAnimation2 = _interopRequireDefault(_cssAnimation); | ||
30976 | |||
30977 | var _util = __webpack_require__(301); | ||
30978 | |||
30979 | var _util2 = _interopRequireDefault(_util); | ||
30980 | |||
30981 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
30982 | |||
30983 | var transitionMap = { | ||
30984 | enter: 'transitionEnter', | ||
30985 | appear: 'transitionAppear', | ||
30986 | leave: 'transitionLeave' | ||
30987 | }; | ||
30988 | |||
30989 | var AnimateChild = _react2["default"].createClass({ | ||
30990 | displayName: 'AnimateChild', | ||
30991 | |||
30992 | propTypes: { | ||
30993 | children: _react2["default"].PropTypes.any | ||
30994 | }, | ||
30995 | |||
30996 | componentWillUnmount: function componentWillUnmount() { | ||
30997 | this.stop(); | ||
30998 | }, | ||
30999 | componentWillEnter: function componentWillEnter(done) { | ||
31000 | if (_util2["default"].isEnterSupported(this.props)) { | ||
31001 | this.transition('enter', done); | ||
31002 | } else { | ||
31003 | done(); | ||
31004 | } | ||
31005 | }, | ||
31006 | componentWillAppear: function componentWillAppear(done) { | ||
31007 | if (_util2["default"].isAppearSupported(this.props)) { | ||
31008 | this.transition('appear', done); | ||
31009 | } else { | ||
31010 | done(); | ||
31011 | } | ||
31012 | }, | ||
31013 | componentWillLeave: function componentWillLeave(done) { | ||
31014 | if (_util2["default"].isLeaveSupported(this.props)) { | ||
31015 | this.transition('leave', done); | ||
31016 | } else { | ||
31017 | // always sync, do not interupt with react component life cycle | ||
31018 | // update hidden -> animate hidden -> | ||
31019 | // didUpdate -> animate leave -> unmount (if animate is none) | ||
31020 | done(); | ||
31021 | } | ||
31022 | }, | ||
31023 | transition: function transition(animationType, finishCallback) { | ||
31024 | var _this = this; | ||
31025 | |||
31026 | var node = _reactDom2["default"].findDOMNode(this); | ||
31027 | var props = this.props; | ||
31028 | var transitionName = props.transitionName; | ||
31029 | var nameIsObj = (typeof transitionName === 'undefined' ? 'undefined' : _typeof(transitionName)) === 'object'; | ||
31030 | this.stop(); | ||
31031 | var end = function end() { | ||
31032 | _this.stopper = null; | ||
31033 | finishCallback(); | ||
31034 | }; | ||
31035 | if ((_cssAnimation.isCssAnimationSupported || !props.animation[animationType]) && transitionName && props[transitionMap[animationType]]) { | ||
31036 | var name = nameIsObj ? transitionName[animationType] : transitionName + '-' + animationType; | ||
31037 | var activeName = name + '-active'; | ||
31038 | if (nameIsObj && transitionName[animationType + 'Active']) { | ||
31039 | activeName = transitionName[animationType + 'Active']; | ||
31040 | } | ||
31041 | this.stopper = (0, _cssAnimation2["default"])(node, { | ||
31042 | name: name, | ||
31043 | active: activeName | ||
31044 | }, end); | ||
31045 | } else { | ||
31046 | this.stopper = props.animation[animationType](node, end); | ||
31047 | } | ||
31048 | }, | ||
31049 | stop: function stop() { | ||
31050 | var stopper = this.stopper; | ||
31051 | if (stopper) { | ||
31052 | this.stopper = null; | ||
31053 | stopper.stop(); | ||
31054 | } | ||
31055 | }, | ||
31056 | render: function render() { | ||
31057 | return this.props.children; | ||
31058 | } | ||
31059 | }); | ||
31060 | |||
31061 | exports["default"] = AnimateChild; | ||
31062 | module.exports = exports['default']; | ||
31063 | |||
31064 | /***/ }), | ||
31065 | /* 297 */ | ||
31066 | /***/ (function(module, exports, __webpack_require__) { | ||
31067 | |||
31068 | 'use strict'; | ||
31069 | |||
31070 | Object.defineProperty(exports, "__esModule", { | ||
31071 | value: true | ||
31072 | }); | ||
31073 | |||
31074 | var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; | ||
31075 | |||
31076 | var _Event = __webpack_require__(298); | ||
31077 | |||
31078 | var _Event2 = _interopRequireDefault(_Event); | ||
31079 | |||
31080 | var _componentClasses = __webpack_require__(299); | ||
31081 | |||
31082 | var _componentClasses2 = _interopRequireDefault(_componentClasses); | ||
31083 | |||
31084 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
31085 | |||
31086 | var isCssAnimationSupported = _Event2["default"].endEvents.length !== 0; | ||
31087 | |||
31088 | |||
31089 | var capitalPrefixes = ['Webkit', 'Moz', 'O', | ||
31090 | // ms is special .... ! | ||
31091 | 'ms']; | ||
31092 | var prefixes = ['-webkit-', '-moz-', '-o-', 'ms-', '']; | ||
31093 | |||
31094 | function getStyleProperty(node, name) { | ||
31095 | // old ff need null, https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle | ||
31096 | var style = window.getComputedStyle(node, null); | ||
31097 | var ret = ''; | ||
31098 | for (var i = 0; i < prefixes.length; i++) { | ||
31099 | ret = style.getPropertyValue(prefixes[i] + name); | ||
31100 | if (ret) { | ||
31101 | break; | ||
31102 | } | ||
31103 | } | ||
31104 | return ret; | ||
31105 | } | ||
31106 | |||
31107 | function fixBrowserByTimeout(node) { | ||
31108 | if (isCssAnimationSupported) { | ||
31109 | var transitionDelay = parseFloat(getStyleProperty(node, 'transition-delay')) || 0; | ||
31110 | var transitionDuration = parseFloat(getStyleProperty(node, 'transition-duration')) || 0; | ||
31111 | var animationDelay = parseFloat(getStyleProperty(node, 'animation-delay')) || 0; | ||
31112 | var animationDuration = parseFloat(getStyleProperty(node, 'animation-duration')) || 0; | ||
31113 | var time = Math.max(transitionDuration + transitionDelay, animationDuration + animationDelay); | ||
31114 | // sometimes, browser bug | ||
31115 | node.rcEndAnimTimeout = setTimeout(function () { | ||
31116 | node.rcEndAnimTimeout = null; | ||
31117 | if (node.rcEndListener) { | ||
31118 | node.rcEndListener(); | ||
31119 | } | ||
31120 | }, time * 1000 + 200); | ||
31121 | } | ||
31122 | } | ||
31123 | |||
31124 | function clearBrowserBugTimeout(node) { | ||
31125 | if (node.rcEndAnimTimeout) { | ||
31126 | clearTimeout(node.rcEndAnimTimeout); | ||
31127 | node.rcEndAnimTimeout = null; | ||
31128 | } | ||
31129 | } | ||
31130 | |||
31131 | var cssAnimation = function cssAnimation(node, transitionName, endCallback) { | ||
31132 | var nameIsObj = (typeof transitionName === 'undefined' ? 'undefined' : _typeof(transitionName)) === 'object'; | ||
31133 | var className = nameIsObj ? transitionName.name : transitionName; | ||
31134 | var activeClassName = nameIsObj ? transitionName.active : transitionName + '-active'; | ||
31135 | var end = endCallback; | ||
31136 | var start = void 0; | ||
31137 | var active = void 0; | ||
31138 | var nodeClasses = (0, _componentClasses2["default"])(node); | ||
31139 | |||
31140 | if (endCallback && Object.prototype.toString.call(endCallback) === '[object Object]') { | ||
31141 | end = endCallback.end; | ||
31142 | start = endCallback.start; | ||
31143 | active = endCallback.active; | ||
31144 | } | ||
31145 | |||
31146 | if (node.rcEndListener) { | ||
31147 | node.rcEndListener(); | ||
31148 | } | ||
31149 | |||
31150 | node.rcEndListener = function (e) { | ||
31151 | if (e && e.target !== node) { | ||
31152 | return; | ||
31153 | } | ||
31154 | |||
31155 | if (node.rcAnimTimeout) { | ||
31156 | clearTimeout(node.rcAnimTimeout); | ||
31157 | node.rcAnimTimeout = null; | ||
31158 | } | ||
31159 | |||
31160 | clearBrowserBugTimeout(node); | ||
31161 | |||
31162 | nodeClasses.remove(className); | ||
31163 | nodeClasses.remove(activeClassName); | ||
31164 | |||
31165 | _Event2["default"].removeEndEventListener(node, node.rcEndListener); | ||
31166 | node.rcEndListener = null; | ||
31167 | |||
31168 | // Usually this optional end is used for informing an owner of | ||
31169 | // a leave animation and telling it to remove the child. | ||
31170 | if (end) { | ||
31171 | end(); | ||
31172 | } | ||
31173 | }; | ||
31174 | |||
31175 | _Event2["default"].addEndEventListener(node, node.rcEndListener); | ||
31176 | |||
31177 | if (start) { | ||
31178 | start(); | ||
31179 | } | ||
31180 | nodeClasses.add(className); | ||
31181 | |||
31182 | node.rcAnimTimeout = setTimeout(function () { | ||
31183 | node.rcAnimTimeout = null; | ||
31184 | nodeClasses.add(activeClassName); | ||
31185 | if (active) { | ||
31186 | setTimeout(active, 0); | ||
31187 | } | ||
31188 | fixBrowserByTimeout(node); | ||
31189 | // 30ms for firefox | ||
31190 | }, 30); | ||
31191 | |||
31192 | return { | ||
31193 | stop: function stop() { | ||
31194 | if (node.rcEndListener) { | ||
31195 | node.rcEndListener(); | ||
31196 | } | ||
31197 | } | ||
31198 | }; | ||
31199 | }; | ||
31200 | |||
31201 | cssAnimation.style = function (node, style, callback) { | ||
31202 | if (node.rcEndListener) { | ||
31203 | node.rcEndListener(); | ||
31204 | } | ||
31205 | |||
31206 | node.rcEndListener = function (e) { | ||
31207 | if (e && e.target !== node) { | ||
31208 | return; | ||
31209 | } | ||
31210 | |||
31211 | if (node.rcAnimTimeout) { | ||
31212 | clearTimeout(node.rcAnimTimeout); | ||
31213 | node.rcAnimTimeout = null; | ||
31214 | } | ||
31215 | |||
31216 | clearBrowserBugTimeout(node); | ||
31217 | |||
31218 | _Event2["default"].removeEndEventListener(node, node.rcEndListener); | ||
31219 | node.rcEndListener = null; | ||
31220 | |||
31221 | // Usually this optional callback is used for informing an owner of | ||
31222 | // a leave animation and telling it to remove the child. | ||
31223 | if (callback) { | ||
31224 | callback(); | ||
31225 | } | ||
31226 | }; | ||
31227 | |||
31228 | _Event2["default"].addEndEventListener(node, node.rcEndListener); | ||
31229 | |||
31230 | node.rcAnimTimeout = setTimeout(function () { | ||
31231 | for (var s in style) { | ||
31232 | if (style.hasOwnProperty(s)) { | ||
31233 | node.style[s] = style[s]; | ||
31234 | } | ||
31235 | } | ||
31236 | node.rcAnimTimeout = null; | ||
31237 | fixBrowserByTimeout(node); | ||
31238 | }, 0); | ||
31239 | }; | ||
31240 | |||
31241 | cssAnimation.setTransition = function (node, p, value) { | ||
31242 | var property = p; | ||
31243 | var v = value; | ||
31244 | if (value === undefined) { | ||
31245 | v = property; | ||
31246 | property = ''; | ||
31247 | } | ||
31248 | property = property || ''; | ||
31249 | capitalPrefixes.forEach(function (prefix) { | ||
31250 | node.style[prefix + 'Transition' + property] = v; | ||
31251 | }); | ||
31252 | }; | ||
31253 | |||
31254 | cssAnimation.isCssAnimationSupported = isCssAnimationSupported; | ||
31255 | |||
31256 | exports["default"] = cssAnimation; | ||
31257 | module.exports = exports['default']; | ||
31258 | |||
31259 | /***/ }), | ||
31260 | /* 298 */ | ||
31261 | /***/ (function(module, exports) { | ||
31262 | |||
31263 | 'use strict'; | ||
31264 | |||
31265 | Object.defineProperty(exports, "__esModule", { | ||
31266 | value: true | ||
31267 | }); | ||
31268 | var EVENT_NAME_MAP = { | ||
31269 | transitionend: { | ||
31270 | transition: 'transitionend', | ||
31271 | WebkitTransition: 'webkitTransitionEnd', | ||
31272 | MozTransition: 'mozTransitionEnd', | ||
31273 | OTransition: 'oTransitionEnd', | ||
31274 | msTransition: 'MSTransitionEnd' | ||
31275 | }, | ||
31276 | |||
31277 | animationend: { | ||
31278 | animation: 'animationend', | ||
31279 | WebkitAnimation: 'webkitAnimationEnd', | ||
31280 | MozAnimation: 'mozAnimationEnd', | ||
31281 | OAnimation: 'oAnimationEnd', | ||
31282 | msAnimation: 'MSAnimationEnd' | ||
31283 | } | ||
31284 | }; | ||
31285 | |||
31286 | var endEvents = []; | ||
31287 | |||
31288 | function detectEvents() { | ||
31289 | var testEl = document.createElement('div'); | ||
31290 | var style = testEl.style; | ||
31291 | |||
31292 | if (!('AnimationEvent' in window)) { | ||
31293 | delete EVENT_NAME_MAP.animationend.animation; | ||
31294 | } | ||
31295 | |||
31296 | if (!('TransitionEvent' in window)) { | ||
31297 | delete EVENT_NAME_MAP.transitionend.transition; | ||
31298 | } | ||
31299 | |||
31300 | for (var baseEventName in EVENT_NAME_MAP) { | ||
31301 | if (EVENT_NAME_MAP.hasOwnProperty(baseEventName)) { | ||
31302 | var baseEvents = EVENT_NAME_MAP[baseEventName]; | ||
31303 | for (var styleName in baseEvents) { | ||
31304 | if (styleName in style) { | ||
31305 | endEvents.push(baseEvents[styleName]); | ||
31306 | break; | ||
31307 | } | ||
31308 | } | ||
31309 | } | ||
31310 | } | ||
31311 | } | ||
31312 | |||
31313 | if (typeof window !== 'undefined' && typeof document !== 'undefined') { | ||
31314 | detectEvents(); | ||
31315 | } | ||
31316 | |||
31317 | function addEventListener(node, eventName, eventListener) { | ||
31318 | node.addEventListener(eventName, eventListener, false); | ||
31319 | } | ||
31320 | |||
31321 | function removeEventListener(node, eventName, eventListener) { | ||
31322 | node.removeEventListener(eventName, eventListener, false); | ||
31323 | } | ||
31324 | |||
31325 | var TransitionEvents = { | ||
31326 | addEndEventListener: function addEndEventListener(node, eventListener) { | ||
31327 | if (endEvents.length === 0) { | ||
31328 | window.setTimeout(eventListener, 0); | ||
31329 | return; | ||
31330 | } | ||
31331 | endEvents.forEach(function (endEvent) { | ||
31332 | addEventListener(node, endEvent, eventListener); | ||
31333 | }); | ||
31334 | }, | ||
31335 | |||
31336 | |||
31337 | endEvents: endEvents, | ||
31338 | |||
31339 | removeEndEventListener: function removeEndEventListener(node, eventListener) { | ||
31340 | if (endEvents.length === 0) { | ||
31341 | return; | ||
31342 | } | ||
31343 | endEvents.forEach(function (endEvent) { | ||
31344 | removeEventListener(node, endEvent, eventListener); | ||
31345 | }); | ||
31346 | } | ||
31347 | }; | ||
31348 | |||
31349 | exports["default"] = TransitionEvents; | ||
31350 | module.exports = exports['default']; | ||
31351 | |||
31352 | /***/ }), | ||
31353 | /* 299 */ | ||
31354 | /***/ (function(module, exports, __webpack_require__) { | ||
31355 | |||
31356 | /** | ||
31357 | * Module dependencies. | ||
31358 | */ | ||
31359 | |||
31360 | try { | ||
31361 | var index = __webpack_require__(300); | ||
31362 | } catch (err) { | ||
31363 | var index = __webpack_require__(300); | ||
31364 | } | ||
31365 | |||
31366 | /** | ||
31367 | * Whitespace regexp. | ||
31368 | */ | ||
31369 | |||
31370 | var re = /\s+/; | ||
31371 | |||
31372 | /** | ||
31373 | * toString reference. | ||
31374 | */ | ||
31375 | |||
31376 | var toString = Object.prototype.toString; | ||
31377 | |||
31378 | /** | ||
31379 | * Wrap `el` in a `ClassList`. | ||
31380 | * | ||
31381 | * @param {Element} el | ||
31382 | * @return {ClassList} | ||
31383 | * @api public | ||
31384 | */ | ||
31385 | |||
31386 | module.exports = function(el){ | ||
31387 | return new ClassList(el); | ||
31388 | }; | ||
31389 | |||
31390 | /** | ||
31391 | * Initialize a new ClassList for `el`. | ||
31392 | * | ||
31393 | * @param {Element} el | ||
31394 | * @api private | ||
31395 | */ | ||
31396 | |||
31397 | function ClassList(el) { | ||
31398 | if (!el || !el.nodeType) { | ||
31399 | throw new Error('A DOM element reference is required'); | ||
31400 | } | ||
31401 | this.el = el; | ||
31402 | this.list = el.classList; | ||
31403 | } | ||
31404 | |||
31405 | /** | ||
31406 | * Add class `name` if not already present. | ||
31407 | * | ||
31408 | * @param {String} name | ||
31409 | * @return {ClassList} | ||
31410 | * @api public | ||
31411 | */ | ||
31412 | |||
31413 | ClassList.prototype.add = function(name){ | ||
31414 | // classList | ||
31415 | if (this.list) { | ||
31416 | this.list.add(name); | ||
31417 | return this; | ||
31418 | } | ||
31419 | |||
31420 | // fallback | ||
31421 | var arr = this.array(); | ||
31422 | var i = index(arr, name); | ||
31423 | if (!~i) arr.push(name); | ||
31424 | this.el.className = arr.join(' '); | ||
31425 | return this; | ||
31426 | }; | ||
31427 | |||
31428 | /** | ||
31429 | * Remove class `name` when present, or | ||
31430 | * pass a regular expression to remove | ||
31431 | * any which match. | ||
31432 | * | ||
31433 | * @param {String|RegExp} name | ||
31434 | * @return {ClassList} | ||
31435 | * @api public | ||
31436 | */ | ||
31437 | |||
31438 | ClassList.prototype.remove = function(name){ | ||
31439 | if ('[object RegExp]' == toString.call(name)) { | ||
31440 | return this.removeMatching(name); | ||
31441 | } | ||
31442 | |||
31443 | // classList | ||
31444 | if (this.list) { | ||
31445 | this.list.remove(name); | ||
31446 | return this; | ||
31447 | } | ||
31448 | |||
31449 | // fallback | ||
31450 | var arr = this.array(); | ||
31451 | var i = index(arr, name); | ||
31452 | if (~i) arr.splice(i, 1); | ||
31453 | this.el.className = arr.join(' '); | ||
31454 | return this; | ||
31455 | }; | ||
31456 | |||
31457 | /** | ||
31458 | * Remove all classes matching `re`. | ||
31459 | * | ||
31460 | * @param {RegExp} re | ||
31461 | * @return {ClassList} | ||
31462 | * @api private | ||
31463 | */ | ||
31464 | |||
31465 | ClassList.prototype.removeMatching = function(re){ | ||
31466 | var arr = this.array(); | ||
31467 | for (var i = 0; i < arr.length; i++) { | ||
31468 | if (re.test(arr[i])) { | ||
31469 | this.remove(arr[i]); | ||
31470 | } | ||
31471 | } | ||
31472 | return this; | ||
31473 | }; | ||
31474 | |||
31475 | /** | ||
31476 | * Toggle class `name`, can force state via `force`. | ||
31477 | * | ||
31478 | * For browsers that support classList, but do not support `force` yet, | ||
31479 | * the mistake will be detected and corrected. | ||
31480 | * | ||
31481 | * @param {String} name | ||
31482 | * @param {Boolean} force | ||
31483 | * @return {ClassList} | ||
31484 | * @api public | ||
31485 | */ | ||
31486 | |||
31487 | ClassList.prototype.toggle = function(name, force){ | ||
31488 | // classList | ||
31489 | if (this.list) { | ||
31490 | if ("undefined" !== typeof force) { | ||
31491 | if (force !== this.list.toggle(name, force)) { | ||
31492 | this.list.toggle(name); // toggle again to correct | ||
31493 | } | ||
31494 | } else { | ||
31495 | this.list.toggle(name); | ||
31496 | } | ||
31497 | return this; | ||
31498 | } | ||
31499 | |||
31500 | // fallback | ||
31501 | if ("undefined" !== typeof force) { | ||
31502 | if (!force) { | ||
31503 | this.remove(name); | ||
31504 | } else { | ||
31505 | this.add(name); | ||
31506 | } | ||
31507 | } else { | ||
31508 | if (this.has(name)) { | ||
31509 | this.remove(name); | ||
31510 | } else { | ||
31511 | this.add(name); | ||
31512 | } | ||
31513 | } | ||
31514 | |||
31515 | return this; | ||
31516 | }; | ||
31517 | |||
31518 | /** | ||
31519 | * Return an array of classes. | ||
31520 | * | ||
31521 | * @return {Array} | ||
31522 | * @api public | ||
31523 | */ | ||
31524 | |||
31525 | ClassList.prototype.array = function(){ | ||
31526 | var className = this.el.getAttribute('class') || ''; | ||
31527 | var str = className.replace(/^\s+|\s+$/g, ''); | ||
31528 | var arr = str.split(re); | ||
31529 | if ('' === arr[0]) arr.shift(); | ||
31530 | return arr; | ||
31531 | }; | ||
31532 | |||
31533 | /** | ||
31534 | * Check if class `name` is present. | ||
31535 | * | ||
31536 | * @param {String} name | ||
31537 | * @return {ClassList} | ||
31538 | * @api public | ||
31539 | */ | ||
31540 | |||
31541 | ClassList.prototype.has = | ||
31542 | ClassList.prototype.contains = function(name){ | ||
31543 | return this.list | ||
31544 | ? this.list.contains(name) | ||
31545 | : !! ~index(this.array(), name); | ||
31546 | }; | ||
31547 | |||
31548 | |||
31549 | /***/ }), | ||
31550 | /* 300 */ | ||
31551 | /***/ (function(module, exports) { | ||
31552 | |||
31553 | module.exports = function(arr, obj){ | ||
31554 | if (arr.indexOf) return arr.indexOf(obj); | ||
31555 | for (var i = 0; i < arr.length; ++i) { | ||
31556 | if (arr[i] === obj) return i; | ||
31557 | } | ||
31558 | return -1; | ||
31559 | }; | ||
31560 | |||
31561 | /***/ }), | ||
31562 | /* 301 */ | ||
31563 | /***/ (function(module, exports) { | ||
31564 | |||
31565 | "use strict"; | ||
31566 | |||
31567 | Object.defineProperty(exports, "__esModule", { | ||
31568 | value: true | ||
31569 | }); | ||
31570 | var util = { | ||
31571 | isAppearSupported: function isAppearSupported(props) { | ||
31572 | return props.transitionName && props.transitionAppear || props.animation.appear; | ||
31573 | }, | ||
31574 | isEnterSupported: function isEnterSupported(props) { | ||
31575 | return props.transitionName && props.transitionEnter || props.animation.enter; | ||
31576 | }, | ||
31577 | isLeaveSupported: function isLeaveSupported(props) { | ||
31578 | return props.transitionName && props.transitionLeave || props.animation.leave; | ||
31579 | }, | ||
31580 | allowAppearCallback: function allowAppearCallback(props) { | ||
31581 | return props.transitionAppear || props.animation.appear; | ||
31582 | }, | ||
31583 | allowEnterCallback: function allowEnterCallback(props) { | ||
31584 | return props.transitionEnter || props.animation.enter; | ||
31585 | }, | ||
31586 | allowLeaveCallback: function allowLeaveCallback(props) { | ||
31587 | return props.transitionLeave || props.animation.leave; | ||
31588 | } | ||
31589 | }; | ||
31590 | exports["default"] = util; | ||
31591 | module.exports = exports['default']; | ||
31592 | |||
31593 | /***/ }), | ||
31594 | /* 302 */ | ||
31595 | /***/ (function(module, exports, __webpack_require__) { | ||
31596 | |||
31597 | 'use strict'; | ||
31598 | |||
31599 | Object.defineProperty(exports, "__esModule", { | ||
31600 | value: true | ||
31601 | }); | ||
31602 | |||
31603 | var _react = __webpack_require__(3); | ||
31604 | |||
31605 | var _react2 = _interopRequireDefault(_react); | ||
31606 | |||
31607 | var _LazyRenderBox = __webpack_require__(303); | ||
31608 | |||
31609 | var _LazyRenderBox2 = _interopRequireDefault(_LazyRenderBox); | ||
31610 | |||
31611 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
31612 | |||
31613 | var PopupInner = _react2["default"].createClass({ | ||
31614 | displayName: 'PopupInner', | ||
31615 | |||
31616 | propTypes: { | ||
31617 | hiddenClassName: _react.PropTypes.string, | ||
31618 | className: _react.PropTypes.string, | ||
31619 | prefixCls: _react.PropTypes.string, | ||
31620 | onMouseEnter: _react.PropTypes.func, | ||
31621 | onMouseLeave: _react.PropTypes.func, | ||
31622 | children: _react.PropTypes.any | ||
31623 | }, | ||
31624 | render: function render() { | ||
31625 | var props = this.props; | ||
31626 | var className = props.className; | ||
31627 | if (!props.visible) { | ||
31628 | className += ' ' + props.hiddenClassName; | ||
31629 | } | ||
31630 | return _react2["default"].createElement( | ||
31631 | 'div', | ||
31632 | { | ||
31633 | className: className, | ||
31634 | onMouseEnter: props.onMouseEnter, | ||
31635 | onMouseLeave: props.onMouseLeave, | ||
31636 | style: props.style | ||
31637 | }, | ||
31638 | _react2["default"].createElement( | ||
31639 | _LazyRenderBox2["default"], | ||
31640 | { className: props.prefixCls + '-content', visible: props.visible }, | ||
31641 | props.children | ||
31642 | ) | ||
31643 | ); | ||
31644 | } | ||
31645 | }); | ||
31646 | |||
31647 | exports["default"] = PopupInner; | ||
31648 | module.exports = exports['default']; | ||
31649 | |||
31650 | /***/ }), | ||
31651 | /* 303 */ | ||
31652 | /***/ (function(module, exports, __webpack_require__) { | ||
31653 | |||
31654 | 'use strict'; | ||
31655 | |||
31656 | Object.defineProperty(exports, "__esModule", { | ||
31657 | value: true | ||
31658 | }); | ||
31659 | |||
31660 | var _objectWithoutProperties2 = __webpack_require__(304); | ||
31661 | |||
31662 | var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2); | ||
31663 | |||
31664 | var _react = __webpack_require__(3); | ||
31665 | |||
31666 | var _react2 = _interopRequireDefault(_react); | ||
31667 | |||
31668 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
31669 | |||
31670 | var LazyRenderBox = _react2["default"].createClass({ | ||
31671 | displayName: 'LazyRenderBox', | ||
31672 | |||
31673 | propTypes: { | ||
31674 | children: _react.PropTypes.any, | ||
31675 | className: _react.PropTypes.string, | ||
31676 | visible: _react.PropTypes.bool, | ||
31677 | hiddenClassName: _react.PropTypes.string | ||
31678 | }, | ||
31679 | shouldComponentUpdate: function shouldComponentUpdate(nextProps) { | ||
31680 | return nextProps.hiddenClassName || nextProps.visible; | ||
31681 | }, | ||
31682 | render: function render() { | ||
31683 | var _props = this.props, | ||
31684 | hiddenClassName = _props.hiddenClassName, | ||
31685 | visible = _props.visible, | ||
31686 | props = (0, _objectWithoutProperties3["default"])(_props, ['hiddenClassName', 'visible']); | ||
31687 | |||
31688 | |||
31689 | if (hiddenClassName || _react2["default"].Children.count(props.children) > 1) { | ||
31690 | if (!visible && hiddenClassName) { | ||
31691 | props.className += ' ' + hiddenClassName; | ||
31692 | } | ||
31693 | return _react2["default"].createElement('div', props); | ||
31694 | } | ||
31695 | |||
31696 | return _react2["default"].Children.only(props.children); | ||
31697 | } | ||
31698 | }); | ||
31699 | |||
31700 | exports["default"] = LazyRenderBox; | ||
31701 | module.exports = exports['default']; | ||
31702 | |||
31703 | /***/ }), | ||
31704 | /* 304 */ | ||
31705 | /***/ (function(module, exports) { | ||
31706 | |||
31707 | "use strict"; | ||
31708 | |||
31709 | exports.__esModule = true; | ||
31710 | |||
31711 | exports.default = function (obj, keys) { | ||
31712 | var target = {}; | ||
31713 | |||
31714 | for (var i in obj) { | ||
31715 | if (keys.indexOf(i) >= 0) continue; | ||
31716 | if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; | ||
31717 | target[i] = obj[i]; | ||
31718 | } | ||
31719 | |||
31720 | return target; | ||
31721 | }; | ||
31722 | |||
31723 | /***/ }), | ||
31724 | /* 305 */ | ||
31725 | /***/ (function(module, exports, __webpack_require__) { | ||
31726 | |||
31727 | 'use strict'; | ||
31728 | |||
31729 | Object.defineProperty(exports, "__esModule", { | ||
31730 | value: true | ||
31731 | }); | ||
31732 | |||
31733 | var _extends2 = __webpack_require__(270); | ||
31734 | |||
31735 | var _extends3 = _interopRequireDefault(_extends2); | ||
31736 | |||
31737 | exports.getAlignFromPlacement = getAlignFromPlacement; | ||
31738 | exports.getPopupClassNameFromAlign = getPopupClassNameFromAlign; | ||
31739 | |||
31740 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
31741 | |||
31742 | function isPointsEq(a1, a2) { | ||
31743 | return a1[0] === a2[0] && a1[1] === a2[1]; | ||
31744 | } | ||
31745 | |||
31746 | function getAlignFromPlacement(builtinPlacements, placementStr, align) { | ||
31747 | var baseAlign = builtinPlacements[placementStr] || {}; | ||
31748 | return (0, _extends3["default"])({}, baseAlign, align); | ||
31749 | } | ||
31750 | |||
31751 | function getPopupClassNameFromAlign(builtinPlacements, prefixCls, align) { | ||
31752 | var points = align.points; | ||
31753 | for (var placement in builtinPlacements) { | ||
31754 | if (builtinPlacements.hasOwnProperty(placement)) { | ||
31755 | if (isPointsEq(builtinPlacements[placement].points, points)) { | ||
31756 | return prefixCls + '-placement-' + placement; | ||
31757 | } | ||
31758 | } | ||
31759 | } | ||
31760 | return ''; | ||
31761 | } | ||
31762 | |||
31763 | /***/ }), | ||
31764 | /* 306 */ | ||
31765 | /***/ (function(module, exports, __webpack_require__) { | ||
31766 | |||
31767 | 'use strict'; | ||
31768 | |||
31769 | Object.defineProperty(exports, "__esModule", { | ||
31770 | value: true | ||
31771 | }); | ||
31772 | |||
31773 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
31774 | |||
31775 | exports["default"] = getContainerRenderMixin; | ||
31776 | |||
31777 | var _reactDom = __webpack_require__(38); | ||
31778 | |||
31779 | var _reactDom2 = _interopRequireDefault(_reactDom); | ||
31780 | |||
31781 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
31782 | |||
31783 | function defaultGetContainer() { | ||
31784 | var container = document.createElement('div'); | ||
31785 | document.body.appendChild(container); | ||
31786 | return container; | ||
31787 | } | ||
31788 | |||
31789 | function getContainerRenderMixin(config) { | ||
31790 | var _config$autoMount = config.autoMount, | ||
31791 | autoMount = _config$autoMount === undefined ? true : _config$autoMount, | ||
31792 | _config$autoDestroy = config.autoDestroy, | ||
31793 | autoDestroy = _config$autoDestroy === undefined ? true : _config$autoDestroy, | ||
31794 | isVisible = config.isVisible, | ||
31795 | getComponent = config.getComponent, | ||
31796 | _config$getContainer = config.getContainer, | ||
31797 | getContainer = _config$getContainer === undefined ? defaultGetContainer : _config$getContainer; | ||
31798 | |||
31799 | |||
31800 | var mixin = void 0; | ||
31801 | |||
31802 | function _renderComponent(instance, componentArg, ready) { | ||
31803 | if (!isVisible || instance._component || isVisible(instance)) { | ||
31804 | if (!instance._container) { | ||
31805 | instance._container = getContainer(instance); | ||
31806 | } | ||
31807 | var component = void 0; | ||
31808 | if (instance.getComponent) { | ||
31809 | component = instance.getComponent(componentArg); | ||
31810 | } else { | ||
31811 | component = getComponent(instance, componentArg); | ||
31812 | } | ||
31813 | _reactDom2["default"].unstable_renderSubtreeIntoContainer(instance, component, instance._container, function callback() { | ||
31814 | instance._component = this; | ||
31815 | if (ready) { | ||
31816 | ready.call(this); | ||
31817 | } | ||
31818 | }); | ||
31819 | } | ||
31820 | } | ||
31821 | |||
31822 | if (autoMount) { | ||
31823 | mixin = _extends({}, mixin, { | ||
31824 | componentDidMount: function componentDidMount() { | ||
31825 | _renderComponent(this); | ||
31826 | }, | ||
31827 | componentDidUpdate: function componentDidUpdate() { | ||
31828 | _renderComponent(this); | ||
31829 | } | ||
31830 | }); | ||
31831 | } | ||
31832 | |||
31833 | if (!autoMount || !autoDestroy) { | ||
31834 | mixin = _extends({}, mixin, { | ||
31835 | renderComponent: function renderComponent(componentArg, ready) { | ||
31836 | _renderComponent(this, componentArg, ready); | ||
31837 | } | ||
31838 | }); | ||
31839 | } | ||
31840 | |||
31841 | function _removeContainer(instance) { | ||
31842 | if (instance._container) { | ||
31843 | var container = instance._container; | ||
31844 | _reactDom2["default"].unmountComponentAtNode(container); | ||
31845 | container.parentNode.removeChild(container); | ||
31846 | instance._container = null; | ||
31847 | } | ||
31848 | } | ||
31849 | |||
31850 | if (autoDestroy) { | ||
31851 | mixin = _extends({}, mixin, { | ||
31852 | componentWillUnmount: function componentWillUnmount() { | ||
31853 | _removeContainer(this); | ||
31854 | } | ||
31855 | }); | ||
31856 | } else { | ||
31857 | mixin = _extends({}, mixin, { | ||
31858 | removeContainer: function removeContainer() { | ||
31859 | _removeContainer(this); | ||
31860 | } | ||
31861 | }); | ||
31862 | } | ||
31863 | |||
31864 | return mixin; | ||
31865 | } | ||
31866 | module.exports = exports['default']; | ||
31867 | |||
31868 | /***/ }), | ||
31869 | /* 307 */ | ||
31870 | /***/ (function(module, exports, __webpack_require__) { | ||
31871 | |||
31872 | 'use strict'; | ||
31873 | |||
31874 | Object.defineProperty(exports, "__esModule", { | ||
31875 | value: true | ||
31876 | }); | ||
31877 | |||
31878 | var _defineProperty2 = __webpack_require__(308); | ||
31879 | |||
31880 | var _defineProperty3 = _interopRequireDefault(_defineProperty2); | ||
31881 | |||
31882 | var _classCallCheck2 = __webpack_require__(188); | ||
31883 | |||
31884 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | ||
31885 | |||
31886 | var _possibleConstructorReturn2 = __webpack_require__(189); | ||
31887 | |||
31888 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); | ||
31889 | |||
31890 | var _inherits2 = __webpack_require__(258); | ||
31891 | |||
31892 | var _inherits3 = _interopRequireDefault(_inherits2); | ||
31893 | |||
31894 | var _react = __webpack_require__(3); | ||
31895 | |||
31896 | var _react2 = _interopRequireDefault(_react); | ||
31897 | |||
31898 | var _propTypes = __webpack_require__(266); | ||
31899 | |||
31900 | var _propTypes2 = _interopRequireDefault(_propTypes); | ||
31901 | |||
31902 | var _Header = __webpack_require__(312); | ||
31903 | |||
31904 | var _Header2 = _interopRequireDefault(_Header); | ||
31905 | |||
31906 | var _Combobox = __webpack_require__(313); | ||
31907 | |||
31908 | var _Combobox2 = _interopRequireDefault(_Combobox); | ||
31909 | |||
31910 | var _moment = __webpack_require__(184); | ||
31911 | |||
31912 | var _moment2 = _interopRequireDefault(_moment); | ||
31913 | |||
31914 | var _classnames = __webpack_require__(315); | ||
31915 | |||
31916 | var _classnames2 = _interopRequireDefault(_classnames); | ||
31917 | |||
31918 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
31919 | |||
31920 | function noop() {} | ||
31921 | |||
31922 | function generateOptions(length, disabledOptions, hideDisabledOptions) { | ||
31923 | var arr = []; | ||
31924 | for (var value = 0; value < length; value++) { | ||
31925 | if (!disabledOptions || disabledOptions.indexOf(value) < 0 || !hideDisabledOptions) { | ||
31926 | arr.push(value); | ||
31927 | } | ||
31928 | } | ||
31929 | return arr; | ||
31930 | } | ||
31931 | |||
31932 | var Panel = function (_Component) { | ||
31933 | (0, _inherits3.default)(Panel, _Component); | ||
31934 | |||
31935 | function Panel(props) { | ||
31936 | (0, _classCallCheck3.default)(this, Panel); | ||
31937 | |||
31938 | var _this = (0, _possibleConstructorReturn3.default)(this, _Component.call(this, props)); | ||
31939 | |||
31940 | _this.onChange = function (newValue) { | ||
31941 | _this.setState({ value: newValue }); | ||
31942 | _this.props.onChange(newValue); | ||
31943 | }; | ||
31944 | |||
31945 | _this.onCurrentSelectPanelChange = function (currentSelectPanel) { | ||
31946 | _this.setState({ currentSelectPanel: currentSelectPanel }); | ||
31947 | }; | ||
31948 | |||
31949 | _this.state = { | ||
31950 | value: props.value, | ||
31951 | selectionRange: [] | ||
31952 | }; | ||
31953 | return _this; | ||
31954 | } | ||
31955 | |||
31956 | Panel.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { | ||
31957 | var value = nextProps.value; | ||
31958 | if (value) { | ||
31959 | this.setState({ | ||
31960 | value: value | ||
31961 | }); | ||
31962 | } | ||
31963 | }; | ||
31964 | |||
31965 | // https://github.com/ant-design/ant-design/issues/5829 | ||
31966 | Panel.prototype.close = function close() { | ||
31967 | this.props.onEsc(); | ||
31968 | }; | ||
31969 | |||
31970 | Panel.prototype.render = function render() { | ||
31971 | var _classNames; | ||
31972 | |||
31973 | var _props = this.props, | ||
31974 | prefixCls = _props.prefixCls, | ||
31975 | className = _props.className, | ||
31976 | placeholder = _props.placeholder, | ||
31977 | disabledHours = _props.disabledHours, | ||
31978 | disabledMinutes = _props.disabledMinutes, | ||
31979 | disabledSeconds = _props.disabledSeconds, | ||
31980 | hideDisabledOptions = _props.hideDisabledOptions, | ||
31981 | allowEmpty = _props.allowEmpty, | ||
31982 | showHour = _props.showHour, | ||
31983 | showMinute = _props.showMinute, | ||
31984 | showSecond = _props.showSecond, | ||
31985 | format = _props.format, | ||
31986 | defaultOpenValue = _props.defaultOpenValue, | ||
31987 | clearText = _props.clearText, | ||
31988 | onEsc = _props.onEsc, | ||
31989 | addon = _props.addon, | ||
31990 | use12Hours = _props.use12Hours, | ||
31991 | onClear = _props.onClear; | ||
31992 | var _state = this.state, | ||
31993 | value = _state.value, | ||
31994 | currentSelectPanel = _state.currentSelectPanel; | ||
31995 | |||
31996 | var disabledHourOptions = disabledHours(); | ||
31997 | var disabledMinuteOptions = disabledMinutes(value ? value.hour() : null); | ||
31998 | var disabledSecondOptions = disabledSeconds(value ? value.hour() : null, value ? value.minute() : null); | ||
31999 | var hourOptions = generateOptions(24, disabledHourOptions, hideDisabledOptions); | ||
32000 | var minuteOptions = generateOptions(60, disabledMinuteOptions, hideDisabledOptions); | ||
32001 | var secondOptions = generateOptions(60, disabledSecondOptions, hideDisabledOptions); | ||
32002 | |||
32003 | return _react2.default.createElement( | ||
32004 | 'div', | ||
32005 | { className: (0, _classnames2.default)((_classNames = {}, (0, _defineProperty3.default)(_classNames, prefixCls + '-inner', true), (0, _defineProperty3.default)(_classNames, className, !!className), _classNames)) }, | ||
32006 | _react2.default.createElement(_Header2.default, { | ||
32007 | clearText: clearText, | ||
32008 | prefixCls: prefixCls, | ||
32009 | defaultOpenValue: defaultOpenValue, | ||
32010 | value: value, | ||
32011 | currentSelectPanel: currentSelectPanel, | ||
32012 | onEsc: onEsc, | ||
32013 | format: format, | ||
32014 | placeholder: placeholder, | ||
32015 | hourOptions: hourOptions, | ||
32016 | minuteOptions: minuteOptions, | ||
32017 | secondOptions: secondOptions, | ||
32018 | disabledHours: disabledHours, | ||
32019 | disabledMinutes: disabledMinutes, | ||
32020 | disabledSeconds: disabledSeconds, | ||
32021 | onChange: this.onChange, | ||
32022 | onClear: onClear, | ||
32023 | allowEmpty: allowEmpty | ||
32024 | }), | ||
32025 | _react2.default.createElement(_Combobox2.default, { | ||
32026 | prefixCls: prefixCls, | ||
32027 | value: value, | ||
32028 | defaultOpenValue: defaultOpenValue, | ||
32029 | format: format, | ||
32030 | onChange: this.onChange, | ||
32031 | showHour: showHour, | ||
32032 | showMinute: showMinute, | ||
32033 | showSecond: showSecond, | ||
32034 | hourOptions: hourOptions, | ||
32035 | minuteOptions: minuteOptions, | ||
32036 | secondOptions: secondOptions, | ||
32037 | disabledHours: disabledHours, | ||
32038 | disabledMinutes: disabledMinutes, | ||
32039 | disabledSeconds: disabledSeconds, | ||
32040 | onCurrentSelectPanelChange: this.onCurrentSelectPanelChange, | ||
32041 | use12Hours: use12Hours | ||
32042 | }), | ||
32043 | addon(this) | ||
32044 | ); | ||
32045 | }; | ||
32046 | |||
32047 | return Panel; | ||
32048 | }(_react.Component); | ||
32049 | |||
32050 | Panel.propTypes = { | ||
32051 | clearText: _propTypes2.default.string, | ||
32052 | prefixCls: _propTypes2.default.string, | ||
32053 | className: _propTypes2.default.string, | ||
32054 | defaultOpenValue: _propTypes2.default.object, | ||
32055 | value: _propTypes2.default.object, | ||
32056 | placeholder: _propTypes2.default.string, | ||
32057 | format: _propTypes2.default.string, | ||
32058 | disabledHours: _propTypes2.default.func, | ||
32059 | disabledMinutes: _propTypes2.default.func, | ||
32060 | disabledSeconds: _propTypes2.default.func, | ||
32061 | hideDisabledOptions: _propTypes2.default.bool, | ||
32062 | onChange: _propTypes2.default.func, | ||
32063 | onEsc: _propTypes2.default.func, | ||
32064 | allowEmpty: _propTypes2.default.bool, | ||
32065 | showHour: _propTypes2.default.bool, | ||
32066 | showMinute: _propTypes2.default.bool, | ||
32067 | showSecond: _propTypes2.default.bool, | ||
32068 | onClear: _propTypes2.default.func, | ||
32069 | use12Hours: _propTypes2.default.bool, | ||
32070 | addon: _propTypes2.default.func | ||
32071 | }; | ||
32072 | Panel.defaultProps = { | ||
32073 | prefixCls: 'rc-time-picker-panel', | ||
32074 | onChange: noop, | ||
32075 | onClear: noop, | ||
32076 | disabledHours: noop, | ||
32077 | disabledMinutes: noop, | ||
32078 | disabledSeconds: noop, | ||
32079 | defaultOpenValue: (0, _moment2.default)(), | ||
32080 | use12Hours: false, | ||
32081 | addon: noop | ||
32082 | }; | ||
32083 | exports.default = Panel; | ||
32084 | module.exports = exports['default']; | ||
32085 | |||
32086 | /***/ }), | ||
32087 | /* 308 */ | ||
32088 | /***/ (function(module, exports, __webpack_require__) { | ||
32089 | |||
32090 | "use strict"; | ||
32091 | |||
32092 | exports.__esModule = true; | ||
32093 | |||
32094 | var _defineProperty = __webpack_require__(309); | ||
32095 | |||
32096 | var _defineProperty2 = _interopRequireDefault(_defineProperty); | ||
32097 | |||
32098 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
32099 | |||
32100 | exports.default = function (obj, key, value) { | ||
32101 | if (key in obj) { | ||
32102 | (0, _defineProperty2.default)(obj, key, { | ||
32103 | value: value, | ||
32104 | enumerable: true, | ||
32105 | configurable: true, | ||
32106 | writable: true | ||
32107 | }); | ||
32108 | } else { | ||
32109 | obj[key] = value; | ||
32110 | } | ||
32111 | |||
32112 | return obj; | ||
32113 | }; | ||
32114 | |||
32115 | /***/ }), | ||
32116 | /* 309 */ | ||
32117 | /***/ (function(module, exports, __webpack_require__) { | ||
32118 | |||
32119 | module.exports = { "default": __webpack_require__(310), __esModule: true }; | ||
32120 | |||
32121 | /***/ }), | ||
32122 | /* 310 */ | ||
32123 | /***/ (function(module, exports, __webpack_require__) { | ||
32124 | |||
32125 | __webpack_require__(311); | ||
32126 | var $Object = __webpack_require__(201).Object; | ||
32127 | module.exports = function defineProperty(it, key, desc){ | ||
32128 | return $Object.defineProperty(it, key, desc); | ||
32129 | }; | ||
32130 | |||
32131 | /***/ }), | ||
32132 | /* 311 */ | ||
32133 | /***/ (function(module, exports, __webpack_require__) { | ||
32134 | |||
32135 | var $export = __webpack_require__(199); | ||
32136 | // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) | ||
32137 | $export($export.S + $export.F * !__webpack_require__(209), 'Object', {defineProperty: __webpack_require__(205).f}); | ||
32138 | |||
32139 | /***/ }), | ||
32140 | /* 312 */ | ||
32141 | /***/ (function(module, exports, __webpack_require__) { | ||
32142 | |||
32143 | 'use strict'; | ||
32144 | |||
32145 | Object.defineProperty(exports, "__esModule", { | ||
32146 | value: true | ||
32147 | }); | ||
32148 | |||
32149 | var _classCallCheck2 = __webpack_require__(188); | ||
32150 | |||
32151 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | ||
32152 | |||
32153 | var _possibleConstructorReturn2 = __webpack_require__(189); | ||
32154 | |||
32155 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); | ||
32156 | |||
32157 | var _inherits2 = __webpack_require__(258); | ||
32158 | |||
32159 | var _inherits3 = _interopRequireDefault(_inherits2); | ||
32160 | |||
32161 | var _react = __webpack_require__(3); | ||
32162 | |||
32163 | var _react2 = _interopRequireDefault(_react); | ||
32164 | |||
32165 | var _propTypes = __webpack_require__(266); | ||
32166 | |||
32167 | var _propTypes2 = _interopRequireDefault(_propTypes); | ||
32168 | |||
32169 | var _moment = __webpack_require__(184); | ||
32170 | |||
32171 | var _moment2 = _interopRequireDefault(_moment); | ||
32172 | |||
32173 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
32174 | |||
32175 | var Header = function (_Component) { | ||
32176 | (0, _inherits3.default)(Header, _Component); | ||
32177 | |||
32178 | function Header(props) { | ||
32179 | (0, _classCallCheck3.default)(this, Header); | ||
32180 | |||
32181 | var _this = (0, _possibleConstructorReturn3.default)(this, _Component.call(this, props)); | ||
32182 | |||
32183 | _initialiseProps.call(_this); | ||
32184 | |||
32185 | var value = props.value, | ||
32186 | format = props.format; | ||
32187 | |||
32188 | _this.state = { | ||
32189 | str: value && value.format(format) || '', | ||
32190 | invalid: false | ||
32191 | }; | ||
32192 | return _this; | ||
32193 | } | ||
32194 | |||
32195 | Header.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { | ||
32196 | var value = nextProps.value, | ||
32197 | format = nextProps.format; | ||
32198 | |||
32199 | this.setState({ | ||
32200 | str: value && value.format(format) || '', | ||
32201 | invalid: false | ||
32202 | }); | ||
32203 | }; | ||
32204 | |||
32205 | Header.prototype.getClearButton = function getClearButton() { | ||
32206 | var _props = this.props, | ||
32207 | prefixCls = _props.prefixCls, | ||
32208 | allowEmpty = _props.allowEmpty; | ||
32209 | |||
32210 | if (!allowEmpty) { | ||
32211 | return null; | ||
32212 | } | ||
32213 | return _react2.default.createElement('a', { | ||
32214 | className: prefixCls + '-clear-btn', | ||
32215 | role: 'button', | ||
32216 | title: this.props.clearText, | ||
32217 | onMouseDown: this.onClear | ||
32218 | }); | ||
32219 | }; | ||
32220 | |||
32221 | Header.prototype.getProtoValue = function getProtoValue() { | ||
32222 | return this.props.value || this.props.defaultOpenValue; | ||
32223 | }; | ||
32224 | |||
32225 | Header.prototype.getInput = function getInput() { | ||
32226 | var _props2 = this.props, | ||
32227 | prefixCls = _props2.prefixCls, | ||
32228 | placeholder = _props2.placeholder; | ||
32229 | var _state = this.state, | ||
32230 | invalid = _state.invalid, | ||
32231 | str = _state.str; | ||
32232 | |||
32233 | var invalidClass = invalid ? prefixCls + '-input-invalid' : ''; | ||
32234 | return _react2.default.createElement('input', { | ||
32235 | className: prefixCls + '-input ' + invalidClass, | ||
32236 | ref: 'input', | ||
32237 | onKeyDown: this.onKeyDown, | ||
32238 | value: str, | ||
32239 | placeholder: placeholder, | ||
32240 | onChange: this.onInputChange | ||
32241 | }); | ||
32242 | }; | ||
32243 | |||
32244 | Header.prototype.render = function render() { | ||
32245 | var prefixCls = this.props.prefixCls; | ||
32246 | |||
32247 | return _react2.default.createElement( | ||
32248 | 'div', | ||
32249 | { className: prefixCls + '-input-wrap' }, | ||
32250 | this.getInput(), | ||
32251 | this.getClearButton() | ||
32252 | ); | ||
32253 | }; | ||
32254 | |||
32255 | return Header; | ||
32256 | }(_react.Component); | ||
32257 | |||
32258 | Header.propTypes = { | ||
32259 | format: _propTypes2.default.string, | ||
32260 | prefixCls: _propTypes2.default.string, | ||
32261 | disabledDate: _propTypes2.default.func, | ||
32262 | placeholder: _propTypes2.default.string, | ||
32263 | clearText: _propTypes2.default.string, | ||
32264 | value: _propTypes2.default.object, | ||
32265 | hourOptions: _propTypes2.default.array, | ||
32266 | minuteOptions: _propTypes2.default.array, | ||
32267 | secondOptions: _propTypes2.default.array, | ||
32268 | disabledHours: _propTypes2.default.func, | ||
32269 | disabledMinutes: _propTypes2.default.func, | ||
32270 | disabledSeconds: _propTypes2.default.func, | ||
32271 | onChange: _propTypes2.default.func, | ||
32272 | onClear: _propTypes2.default.func, | ||
32273 | onEsc: _propTypes2.default.func, | ||
32274 | allowEmpty: _propTypes2.default.bool, | ||
32275 | defaultOpenValue: _propTypes2.default.object, | ||
32276 | currentSelectPanel: _propTypes2.default.string | ||
32277 | }; | ||
32278 | |||
32279 | var _initialiseProps = function _initialiseProps() { | ||
32280 | var _this2 = this; | ||
32281 | |||
32282 | this.onInputChange = function (event) { | ||
32283 | var str = event.target.value; | ||
32284 | _this2.setState({ | ||
32285 | str: str | ||
32286 | }); | ||
32287 | var _props3 = _this2.props, | ||
32288 | format = _props3.format, | ||
32289 | hourOptions = _props3.hourOptions, | ||
32290 | minuteOptions = _props3.minuteOptions, | ||
32291 | secondOptions = _props3.secondOptions, | ||
32292 | disabledHours = _props3.disabledHours, | ||
32293 | disabledMinutes = _props3.disabledMinutes, | ||
32294 | disabledSeconds = _props3.disabledSeconds, | ||
32295 | onChange = _props3.onChange, | ||
32296 | allowEmpty = _props3.allowEmpty; | ||
32297 | |||
32298 | |||
32299 | if (str) { | ||
32300 | var originalValue = _this2.props.value; | ||
32301 | var value = _this2.getProtoValue().clone(); | ||
32302 | var parsed = (0, _moment2.default)(str, format, true); | ||
32303 | if (!parsed.isValid()) { | ||
32304 | _this2.setState({ | ||
32305 | invalid: true | ||
32306 | }); | ||
32307 | return; | ||
32308 | } | ||
32309 | value.hour(parsed.hour()).minute(parsed.minute()).second(parsed.second()); | ||
32310 | |||
32311 | // if time value not allowed, response warning. | ||
32312 | if (hourOptions.indexOf(value.hour()) < 0 || minuteOptions.indexOf(value.minute()) < 0 || secondOptions.indexOf(value.second()) < 0) { | ||
32313 | _this2.setState({ | ||
32314 | invalid: true | ||
32315 | }); | ||
32316 | return; | ||
32317 | } | ||
32318 | |||
32319 | // if time value is disabled, response warning. | ||
32320 | var disabledHourOptions = disabledHours(); | ||
32321 | var disabledMinuteOptions = disabledMinutes(value.hour()); | ||
32322 | var disabledSecondOptions = disabledSeconds(value.hour(), value.minute()); | ||
32323 | if (disabledHourOptions && disabledHourOptions.indexOf(value.hour()) >= 0 || disabledMinuteOptions && disabledMinuteOptions.indexOf(value.minute()) >= 0 || disabledSecondOptions && disabledSecondOptions.indexOf(value.second()) >= 0) { | ||
32324 | _this2.setState({ | ||
32325 | invalid: true | ||
32326 | }); | ||
32327 | return; | ||
32328 | } | ||
32329 | |||
32330 | if (originalValue) { | ||
32331 | if (originalValue.hour() !== value.hour() || originalValue.minute() !== value.minute() || originalValue.second() !== value.second()) { | ||
32332 | // keep other fields for rc-calendar | ||
32333 | var changedValue = originalValue.clone(); | ||
32334 | changedValue.hour(value.hour()); | ||
32335 | changedValue.minute(value.minute()); | ||
32336 | changedValue.second(value.second()); | ||
32337 | onChange(changedValue); | ||
32338 | } | ||
32339 | } else if (originalValue !== value) { | ||
32340 | onChange(value); | ||
32341 | } | ||
32342 | } else if (allowEmpty) { | ||
32343 | onChange(null); | ||
32344 | } else { | ||
32345 | _this2.setState({ | ||
32346 | invalid: true | ||
32347 | }); | ||
32348 | return; | ||
32349 | } | ||
32350 | |||
32351 | _this2.setState({ | ||
32352 | invalid: false | ||
32353 | }); | ||
32354 | }; | ||
32355 | |||
32356 | this.onKeyDown = function (e) { | ||
32357 | if (e.keyCode === 27) { | ||
32358 | _this2.props.onEsc(); | ||
32359 | } | ||
32360 | }; | ||
32361 | |||
32362 | this.onClear = function () { | ||
32363 | _this2.setState({ str: '' }); | ||
32364 | _this2.props.onClear(); | ||
32365 | }; | ||
32366 | }; | ||
32367 | |||
32368 | exports.default = Header; | ||
32369 | module.exports = exports['default']; | ||
32370 | |||
32371 | /***/ }), | ||
32372 | /* 313 */ | ||
32373 | /***/ (function(module, exports, __webpack_require__) { | ||
32374 | |||
32375 | 'use strict'; | ||
32376 | |||
32377 | Object.defineProperty(exports, "__esModule", { | ||
32378 | value: true | ||
32379 | }); | ||
32380 | |||
32381 | var _classCallCheck2 = __webpack_require__(188); | ||
32382 | |||
32383 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | ||
32384 | |||
32385 | var _possibleConstructorReturn2 = __webpack_require__(189); | ||
32386 | |||
32387 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); | ||
32388 | |||
32389 | var _inherits2 = __webpack_require__(258); | ||
32390 | |||
32391 | var _inherits3 = _interopRequireDefault(_inherits2); | ||
32392 | |||
32393 | var _react = __webpack_require__(3); | ||
32394 | |||
32395 | var _react2 = _interopRequireDefault(_react); | ||
32396 | |||
32397 | var _propTypes = __webpack_require__(266); | ||
32398 | |||
32399 | var _propTypes2 = _interopRequireDefault(_propTypes); | ||
32400 | |||
32401 | var _Select = __webpack_require__(314); | ||
32402 | |||
32403 | var _Select2 = _interopRequireDefault(_Select); | ||
32404 | |||
32405 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
32406 | |||
32407 | var formatOption = function formatOption(option, disabledOptions) { | ||
32408 | var value = '' + option; | ||
32409 | if (option < 10) { | ||
32410 | value = '0' + option; | ||
32411 | } | ||
32412 | |||
32413 | var disabled = false; | ||
32414 | if (disabledOptions && disabledOptions.indexOf(option) >= 0) { | ||
32415 | disabled = true; | ||
32416 | } | ||
32417 | |||
32418 | return { | ||
32419 | value: value, | ||
32420 | disabled: disabled | ||
32421 | }; | ||
32422 | }; | ||
32423 | |||
32424 | var Combobox = function (_Component) { | ||
32425 | (0, _inherits3.default)(Combobox, _Component); | ||
32426 | |||
32427 | function Combobox() { | ||
32428 | var _temp, _this, _ret; | ||
32429 | |||
32430 | (0, _classCallCheck3.default)(this, Combobox); | ||
32431 | |||
32432 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { | ||
32433 | args[_key] = arguments[_key]; | ||
32434 | } | ||
32435 | |||
32436 | return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.onItemChange = function (type, itemValue) { | ||
32437 | var _this$props = _this.props, | ||
32438 | onChange = _this$props.onChange, | ||
32439 | defaultOpenValue = _this$props.defaultOpenValue, | ||
32440 | use12Hours = _this$props.use12Hours; | ||
32441 | |||
32442 | var value = (_this.props.value || defaultOpenValue).clone(); | ||
32443 | |||
32444 | if (type === 'hour') { | ||
32445 | if (use12Hours) { | ||
32446 | if (_this.isAM()) { | ||
32447 | value.hour(+itemValue % 12); | ||
32448 | } else { | ||
32449 | value.hour(+itemValue % 12 + 12); | ||
32450 | } | ||
32451 | } else { | ||
32452 | value.hour(+itemValue); | ||
32453 | } | ||
32454 | } else if (type === 'minute') { | ||
32455 | value.minute(+itemValue); | ||
32456 | } else if (type === 'ampm') { | ||
32457 | var ampm = itemValue.toUpperCase(); | ||
32458 | if (use12Hours) { | ||
32459 | if (ampm === 'PM' && value.hour() < 12) { | ||
32460 | value.hour(value.hour() % 12 + 12); | ||
32461 | } | ||
32462 | |||
32463 | if (ampm === 'AM') { | ||
32464 | if (value.hour() >= 12) { | ||
32465 | value.hour(value.hour() - 12); | ||
32466 | } | ||
32467 | } | ||
32468 | } | ||
32469 | } else { | ||
32470 | value.second(+itemValue); | ||
32471 | } | ||
32472 | onChange(value); | ||
32473 | }, _this.onEnterSelectPanel = function (range) { | ||
32474 | _this.props.onCurrentSelectPanelChange(range); | ||
32475 | }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret); | ||
32476 | } | ||
32477 | |||
32478 | Combobox.prototype.getHourSelect = function getHourSelect(hour) { | ||
32479 | var _props = this.props, | ||
32480 | prefixCls = _props.prefixCls, | ||
32481 | hourOptions = _props.hourOptions, | ||
32482 | disabledHours = _props.disabledHours, | ||
32483 | showHour = _props.showHour, | ||
32484 | use12Hours = _props.use12Hours; | ||
32485 | |||
32486 | if (!showHour) { | ||
32487 | return null; | ||
32488 | } | ||
32489 | var disabledOptions = disabledHours(); | ||
32490 | var hourOptionsAdj = void 0; | ||
32491 | var hourAdj = void 0; | ||
32492 | if (use12Hours) { | ||
32493 | hourOptionsAdj = [12].concat(hourOptions.filter(function (h) { | ||
32494 | return h < 12 && h > 0; | ||
32495 | })); | ||
32496 | hourAdj = hour % 12 || 12; | ||
32497 | } else { | ||
32498 | hourOptionsAdj = hourOptions; | ||
32499 | hourAdj = hour; | ||
32500 | } | ||
32501 | |||
32502 | return _react2.default.createElement(_Select2.default, { | ||
32503 | prefixCls: prefixCls, | ||
32504 | options: hourOptionsAdj.map(function (option) { | ||
32505 | return formatOption(option, disabledOptions); | ||
32506 | }), | ||
32507 | selectedIndex: hourOptionsAdj.indexOf(hourAdj), | ||
32508 | type: 'hour', | ||
32509 | onSelect: this.onItemChange, | ||
32510 | onMouseEnter: this.onEnterSelectPanel.bind(this, 'hour') | ||
32511 | }); | ||
32512 | }; | ||
32513 | |||
32514 | Combobox.prototype.getMinuteSelect = function getMinuteSelect(minute) { | ||
32515 | var _props2 = this.props, | ||
32516 | prefixCls = _props2.prefixCls, | ||
32517 | minuteOptions = _props2.minuteOptions, | ||
32518 | disabledMinutes = _props2.disabledMinutes, | ||
32519 | defaultOpenValue = _props2.defaultOpenValue, | ||
32520 | showMinute = _props2.showMinute; | ||
32521 | |||
32522 | if (!showMinute) { | ||
32523 | return null; | ||
32524 | } | ||
32525 | var value = this.props.value || defaultOpenValue; | ||
32526 | var disabledOptions = disabledMinutes(value.hour()); | ||
32527 | |||
32528 | return _react2.default.createElement(_Select2.default, { | ||
32529 | prefixCls: prefixCls, | ||
32530 | options: minuteOptions.map(function (option) { | ||
32531 | return formatOption(option, disabledOptions); | ||
32532 | }), | ||
32533 | selectedIndex: minuteOptions.indexOf(minute), | ||
32534 | type: 'minute', | ||
32535 | onSelect: this.onItemChange, | ||
32536 | onMouseEnter: this.onEnterSelectPanel.bind(this, 'minute') | ||
32537 | }); | ||
32538 | }; | ||
32539 | |||
32540 | Combobox.prototype.getSecondSelect = function getSecondSelect(second) { | ||
32541 | var _props3 = this.props, | ||
32542 | prefixCls = _props3.prefixCls, | ||
32543 | secondOptions = _props3.secondOptions, | ||
32544 | disabledSeconds = _props3.disabledSeconds, | ||
32545 | showSecond = _props3.showSecond, | ||
32546 | defaultOpenValue = _props3.defaultOpenValue; | ||
32547 | |||
32548 | if (!showSecond) { | ||
32549 | return null; | ||
32550 | } | ||
32551 | var value = this.props.value || defaultOpenValue; | ||
32552 | var disabledOptions = disabledSeconds(value.hour(), value.minute()); | ||
32553 | |||
32554 | return _react2.default.createElement(_Select2.default, { | ||
32555 | prefixCls: prefixCls, | ||
32556 | options: secondOptions.map(function (option) { | ||
32557 | return formatOption(option, disabledOptions); | ||
32558 | }), | ||
32559 | selectedIndex: secondOptions.indexOf(second), | ||
32560 | type: 'second', | ||
32561 | onSelect: this.onItemChange, | ||
32562 | onMouseEnter: this.onEnterSelectPanel.bind(this, 'second') | ||
32563 | }); | ||
32564 | }; | ||
32565 | |||
32566 | Combobox.prototype.getAMPMSelect = function getAMPMSelect() { | ||
32567 | var _props4 = this.props, | ||
32568 | prefixCls = _props4.prefixCls, | ||
32569 | use12Hours = _props4.use12Hours, | ||
32570 | format = _props4.format; | ||
32571 | |||
32572 | if (!use12Hours) { | ||
32573 | return null; | ||
32574 | } | ||
32575 | |||
32576 | var AMPMOptions = ['am', 'pm'] // If format has A char, then we should uppercase AM/PM | ||
32577 | .map(function (c) { | ||
32578 | return format.match(/\sA/) ? c.toUpperCase() : c; | ||
32579 | }).map(function (c) { | ||
32580 | return { value: c }; | ||
32581 | }); | ||
32582 | |||
32583 | var selected = this.isAM() ? 0 : 1; | ||
32584 | |||
32585 | return _react2.default.createElement(_Select2.default, { | ||
32586 | prefixCls: prefixCls, | ||
32587 | options: AMPMOptions, | ||
32588 | selectedIndex: selected, | ||
32589 | type: 'ampm', | ||
32590 | onSelect: this.onItemChange, | ||
32591 | onMouseEnter: this.onEnterSelectPanel.bind(this, 'ampm') | ||
32592 | }); | ||
32593 | }; | ||
32594 | |||
32595 | Combobox.prototype.isAM = function isAM() { | ||
32596 | var value = this.props.value || this.props.defaultOpenValue; | ||
32597 | return value.hour() >= 0 && value.hour() < 12; | ||
32598 | }; | ||
32599 | |||
32600 | Combobox.prototype.render = function render() { | ||
32601 | var _props5 = this.props, | ||
32602 | prefixCls = _props5.prefixCls, | ||
32603 | defaultOpenValue = _props5.defaultOpenValue; | ||
32604 | |||
32605 | var value = this.props.value || defaultOpenValue; | ||
32606 | return _react2.default.createElement( | ||
32607 | 'div', | ||
32608 | { className: prefixCls + '-combobox' }, | ||
32609 | this.getHourSelect(value.hour()), | ||
32610 | this.getMinuteSelect(value.minute()), | ||
32611 | this.getSecondSelect(value.second()), | ||
32612 | this.getAMPMSelect(value.hour()) | ||
32613 | ); | ||
32614 | }; | ||
32615 | |||
32616 | return Combobox; | ||
32617 | }(_react.Component); | ||
32618 | |||
32619 | Combobox.propTypes = { | ||
32620 | format: _propTypes2.default.string, | ||
32621 | defaultOpenValue: _propTypes2.default.object, | ||
32622 | prefixCls: _propTypes2.default.string, | ||
32623 | value: _propTypes2.default.object, | ||
32624 | onChange: _propTypes2.default.func, | ||
32625 | showHour: _propTypes2.default.bool, | ||
32626 | showMinute: _propTypes2.default.bool, | ||
32627 | showSecond: _propTypes2.default.bool, | ||
32628 | hourOptions: _propTypes2.default.array, | ||
32629 | minuteOptions: _propTypes2.default.array, | ||
32630 | secondOptions: _propTypes2.default.array, | ||
32631 | disabledHours: _propTypes2.default.func, | ||
32632 | disabledMinutes: _propTypes2.default.func, | ||
32633 | disabledSeconds: _propTypes2.default.func, | ||
32634 | onCurrentSelectPanelChange: _propTypes2.default.func, | ||
32635 | use12Hours: _propTypes2.default.bool | ||
32636 | }; | ||
32637 | exports.default = Combobox; | ||
32638 | module.exports = exports['default']; | ||
32639 | |||
32640 | /***/ }), | ||
32641 | /* 314 */ | ||
32642 | /***/ (function(module, exports, __webpack_require__) { | ||
32643 | |||
32644 | 'use strict'; | ||
32645 | |||
32646 | Object.defineProperty(exports, "__esModule", { | ||
32647 | value: true | ||
32648 | }); | ||
32649 | |||
32650 | var _defineProperty2 = __webpack_require__(308); | ||
32651 | |||
32652 | var _defineProperty3 = _interopRequireDefault(_defineProperty2); | ||
32653 | |||
32654 | var _classCallCheck2 = __webpack_require__(188); | ||
32655 | |||
32656 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | ||
32657 | |||
32658 | var _possibleConstructorReturn2 = __webpack_require__(189); | ||
32659 | |||
32660 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); | ||
32661 | |||
32662 | var _inherits2 = __webpack_require__(258); | ||
32663 | |||
32664 | var _inherits3 = _interopRequireDefault(_inherits2); | ||
32665 | |||
32666 | var _react = __webpack_require__(3); | ||
32667 | |||
32668 | var _react2 = _interopRequireDefault(_react); | ||
32669 | |||
32670 | var _propTypes = __webpack_require__(266); | ||
32671 | |||
32672 | var _propTypes2 = _interopRequireDefault(_propTypes); | ||
32673 | |||
32674 | var _reactDom = __webpack_require__(38); | ||
32675 | |||
32676 | var _reactDom2 = _interopRequireDefault(_reactDom); | ||
32677 | |||
32678 | var _classnames3 = __webpack_require__(315); | ||
32679 | |||
32680 | var _classnames4 = _interopRequireDefault(_classnames3); | ||
32681 | |||
32682 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
32683 | |||
32684 | var scrollTo = function scrollTo(element, to, duration) { | ||
32685 | var requestAnimationFrame = window.requestAnimationFrame || function requestAnimationFrameTimeout() { | ||
32686 | return setTimeout(arguments[0], 10); | ||
32687 | }; | ||
32688 | // jump to target if duration zero | ||
32689 | if (duration <= 0) { | ||
32690 | element.scrollTop = to; | ||
32691 | return; | ||
32692 | } | ||
32693 | var difference = to - element.scrollTop; | ||
32694 | var perTick = difference / duration * 10; | ||
32695 | |||
32696 | requestAnimationFrame(function () { | ||
32697 | element.scrollTop = element.scrollTop + perTick; | ||
32698 | if (element.scrollTop === to) return; | ||
32699 | scrollTo(element, to, duration - 10); | ||
32700 | }); | ||
32701 | }; | ||
32702 | |||
32703 | var Select = function (_Component) { | ||
32704 | (0, _inherits3.default)(Select, _Component); | ||
32705 | |||
32706 | function Select() { | ||
32707 | var _temp, _this, _ret; | ||
32708 | |||
32709 | (0, _classCallCheck3.default)(this, Select); | ||
32710 | |||
32711 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { | ||
32712 | args[_key] = arguments[_key]; | ||
32713 | } | ||
32714 | |||
32715 | return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.state = { | ||
32716 | active: false | ||
32717 | }, _this.onSelect = function (value) { | ||
32718 | var _this$props = _this.props, | ||
32719 | onSelect = _this$props.onSelect, | ||
32720 | type = _this$props.type; | ||
32721 | |||
32722 | onSelect(type, value); | ||
32723 | }, _this.handleMouseEnter = function (e) { | ||
32724 | _this.setState({ active: true }); | ||
32725 | _this.props.onMouseEnter(e); | ||
32726 | }, _this.handleMouseLeave = function () { | ||
32727 | _this.setState({ active: false }); | ||
32728 | }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret); | ||
32729 | } | ||
32730 | |||
32731 | Select.prototype.componentDidMount = function componentDidMount() { | ||
32732 | // jump to selected option | ||
32733 | this.scrollToSelected(0); | ||
32734 | }; | ||
32735 | |||
32736 | Select.prototype.componentDidUpdate = function componentDidUpdate(prevProps) { | ||
32737 | // smooth scroll to selected option | ||
32738 | if (prevProps.selectedIndex !== this.props.selectedIndex) { | ||
32739 | this.scrollToSelected(120); | ||
32740 | } | ||
32741 | }; | ||
32742 | |||
32743 | Select.prototype.getOptions = function getOptions() { | ||
32744 | var _this2 = this; | ||
32745 | |||
32746 | var _props = this.props, | ||
32747 | options = _props.options, | ||
32748 | selectedIndex = _props.selectedIndex, | ||
32749 | prefixCls = _props.prefixCls; | ||
32750 | |||
32751 | return options.map(function (item, index) { | ||
32752 | var _classnames; | ||
32753 | |||
32754 | var cls = (0, _classnames4.default)((_classnames = {}, (0, _defineProperty3.default)(_classnames, prefixCls + '-select-option-selected', selectedIndex === index), (0, _defineProperty3.default)(_classnames, prefixCls + '-select-option-disabled', item.disabled), _classnames)); | ||
32755 | var onclick = null; | ||
32756 | if (!item.disabled) { | ||
32757 | onclick = _this2.onSelect.bind(_this2, item.value); | ||
32758 | } | ||
32759 | return _react2.default.createElement( | ||
32760 | 'li', | ||
32761 | { | ||
32762 | className: cls, | ||
32763 | key: index, | ||
32764 | onClick: onclick, | ||
32765 | disabled: item.disabled | ||
32766 | }, | ||
32767 | item.value | ||
32768 | ); | ||
32769 | }); | ||
32770 | }; | ||
32771 | |||
32772 | Select.prototype.scrollToSelected = function scrollToSelected(duration) { | ||
32773 | // move to selected item | ||
32774 | var select = _reactDom2.default.findDOMNode(this); | ||
32775 | var list = _reactDom2.default.findDOMNode(this.refs.list); | ||
32776 | if (!list) { | ||
32777 | return; | ||
32778 | } | ||
32779 | var index = this.props.selectedIndex; | ||
32780 | if (index < 0) { | ||
32781 | index = 0; | ||
32782 | } | ||
32783 | var topOption = list.children[index]; | ||
32784 | var to = topOption.offsetTop; | ||
32785 | scrollTo(select, to, duration); | ||
32786 | }; | ||
32787 | |||
32788 | Select.prototype.render = function render() { | ||
32789 | var _classnames2; | ||
32790 | |||
32791 | if (this.props.options.length === 0) { | ||
32792 | return null; | ||
32793 | } | ||
32794 | |||
32795 | var prefixCls = this.props.prefixCls; | ||
32796 | |||
32797 | var cls = (0, _classnames4.default)((_classnames2 = {}, (0, _defineProperty3.default)(_classnames2, prefixCls + '-select', 1), (0, _defineProperty3.default)(_classnames2, prefixCls + '-select-active', this.state.active), _classnames2)); | ||
32798 | |||
32799 | return _react2.default.createElement( | ||
32800 | 'div', | ||
32801 | { | ||
32802 | className: cls, | ||
32803 | onMouseEnter: this.handleMouseEnter, | ||
32804 | onMouseLeave: this.handleMouseLeave | ||
32805 | }, | ||
32806 | _react2.default.createElement( | ||
32807 | 'ul', | ||
32808 | { ref: 'list' }, | ||
32809 | this.getOptions() | ||
32810 | ) | ||
32811 | ); | ||
32812 | }; | ||
32813 | |||
32814 | return Select; | ||
32815 | }(_react.Component); | ||
32816 | |||
32817 | Select.propTypes = { | ||
32818 | prefixCls: _propTypes2.default.string, | ||
32819 | options: _propTypes2.default.array, | ||
32820 | selectedIndex: _propTypes2.default.number, | ||
32821 | type: _propTypes2.default.string, | ||
32822 | onSelect: _propTypes2.default.func, | ||
32823 | onMouseEnter: _propTypes2.default.func | ||
32824 | }; | ||
32825 | exports.default = Select; | ||
32826 | module.exports = exports['default']; | ||
32827 | |||
32828 | /***/ }), | ||
32829 | /* 315 */ | ||
32830 | /***/ (function(module, exports, __webpack_require__) { | ||
32831 | |||
32832 | var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! | ||
32833 | Copyright (c) 2016 Jed Watson. | ||
32834 | Licensed under the MIT License (MIT), see | ||
32835 | http://jedwatson.github.io/classnames | ||
32836 | */ | ||
32837 | /* global define */ | ||
32838 | |||
32839 | (function () { | ||
32840 | 'use strict'; | ||
32841 | |||
32842 | var hasOwn = {}.hasOwnProperty; | ||
32843 | |||
32844 | function classNames () { | ||
32845 | var classes = []; | ||
32846 | |||
32847 | for (var i = 0; i < arguments.length; i++) { | ||
32848 | var arg = arguments[i]; | ||
32849 | if (!arg) continue; | ||
32850 | |||
32851 | var argType = typeof arg; | ||
32852 | |||
32853 | if (argType === 'string' || argType === 'number') { | ||
32854 | classes.push(arg); | ||
32855 | } else if (Array.isArray(arg)) { | ||
32856 | classes.push(classNames.apply(null, arg)); | ||
32857 | } else if (argType === 'object') { | ||
32858 | for (var key in arg) { | ||
32859 | if (hasOwn.call(arg, key) && arg[key]) { | ||
32860 | classes.push(key); | ||
32861 | } | ||
32862 | } | ||
32863 | } | ||
32864 | } | ||
32865 | |||
32866 | return classes.join(' '); | ||
32867 | } | ||
32868 | |||
32869 | if (typeof module !== 'undefined' && module.exports) { | ||
32870 | module.exports = classNames; | ||
32871 | } else if (true) { | ||
32872 | // register as 'classnames', consistent with npm package name | ||
32873 | !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () { | ||
32874 | return classNames; | ||
32875 | }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); | ||
32876 | } else { | ||
32877 | window.classNames = classNames; | ||
32878 | } | ||
32879 | }()); | ||
32880 | |||
32881 | |||
32882 | /***/ }), | ||
32883 | /* 316 */ | ||
32884 | /***/ (function(module, exports) { | ||
32885 | |||
32886 | 'use strict'; | ||
32887 | |||
32888 | Object.defineProperty(exports, "__esModule", { | ||
32889 | value: true | ||
32890 | }); | ||
32891 | var autoAdjustOverflow = { | ||
32892 | adjustX: 1, | ||
32893 | adjustY: 1 | ||
32894 | }; | ||
32895 | |||
32896 | var targetOffset = [0, 0]; | ||
32897 | |||
32898 | var placements = { | ||
32899 | bottomLeft: { | ||
32900 | points: ['tl', 'tl'], | ||
32901 | overflow: autoAdjustOverflow, | ||
32902 | offset: [0, -3], | ||
32903 | targetOffset: targetOffset | ||
32904 | }, | ||
32905 | bottomRight: { | ||
32906 | points: ['tr', 'tr'], | ||
32907 | overflow: autoAdjustOverflow, | ||
32908 | offset: [0, -3], | ||
32909 | targetOffset: targetOffset | ||
32910 | }, | ||
32911 | topRight: { | ||
32912 | points: ['br', 'br'], | ||
32913 | overflow: autoAdjustOverflow, | ||
32914 | offset: [0, 3], | ||
32915 | targetOffset: targetOffset | ||
32916 | }, | ||
32917 | topLeft: { | ||
32918 | points: ['bl', 'bl'], | ||
32919 | overflow: autoAdjustOverflow, | ||
32920 | offset: [0, 3], | ||
32921 | targetOffset: targetOffset | ||
32922 | } | ||
32923 | }; | ||
32924 | |||
32925 | exports.default = placements; | ||
32926 | module.exports = exports['default']; | ||
32927 | |||
32928 | /***/ }), | ||
32929 | /* 317 */, | ||
32930 | /* 318 */, | ||
32931 | /* 319 */, | ||
32932 | /* 320 */, | ||
32933 | /* 321 */, | ||
32934 | /* 322 */, | ||
32935 | /* 323 */ | ||
32936 | /***/ (function(module, exports, __webpack_require__, __webpack_module_template_argument_0__) { | ||
32937 | |||
32938 | /* WEBPACK VAR INJECTION */(function(process) {/** | ||
32939 | * Copyright 2013-present, Facebook, Inc. | ||
32940 | * All rights reserved. | ||
32941 | * | ||
32942 | * This source code is licensed under the BSD-style license found in the | ||
32943 | * LICENSE file in the root directory of this source tree. An additional grant | ||
32944 | * of patent rights can be found in the PATENTS file in the same directory. | ||
32945 | * | ||
32946 | * | ||
32947 | */ | ||
32948 | |||
32949 | 'use strict'; | ||
32950 | |||
32951 | var _prodInvariant = __webpack_require__(__webpack_module_template_argument_0__); | ||
32952 | |||
32953 | var invariant = __webpack_require__(10); | ||
32954 | |||
32955 | /** | ||
32956 | * Static poolers. Several custom versions for each potential number of | ||
32957 | * arguments. A completely generic pooler is easy to implement, but would | ||
32958 | * require accessing the `arguments` object. In each of these, `this` refers to | ||
32959 | * the Class itself, not an instance. If any others are needed, simply add them | ||
32960 | * here, or in their own files. | ||
32961 | */ | ||
32962 | var oneArgumentPooler = function (copyFieldsFrom) { | ||
32963 | var Klass = this; | ||
32964 | if (Klass.instancePool.length) { | ||
32965 | var instance = Klass.instancePool.pop(); | ||
32966 | Klass.call(instance, copyFieldsFrom); | ||
32967 | return instance; | ||
32968 | } else { | ||
32969 | return new Klass(copyFieldsFrom); | ||
32970 | } | ||
32971 | }; | ||
32972 | |||
32973 | var twoArgumentPooler = function (a1, a2) { | ||
32974 | var Klass = this; | ||
32975 | if (Klass.instancePool.length) { | ||
32976 | var instance = Klass.instancePool.pop(); | ||
32977 | Klass.call(instance, a1, a2); | ||
32978 | return instance; | ||
32979 | } else { | ||
32980 | return new Klass(a1, a2); | ||
32981 | } | ||
32982 | }; | ||
32983 | |||
32984 | var threeArgumentPooler = function (a1, a2, a3) { | ||
32985 | var Klass = this; | ||
32986 | if (Klass.instancePool.length) { | ||
32987 | var instance = Klass.instancePool.pop(); | ||
32988 | Klass.call(instance, a1, a2, a3); | ||
32989 | return instance; | ||
32990 | } else { | ||
32991 | return new Klass(a1, a2, a3); | ||
32992 | } | ||
32993 | }; | ||
32994 | |||
32995 | var fourArgumentPooler = function (a1, a2, a3, a4) { | ||
32996 | var Klass = this; | ||
32997 | if (Klass.instancePool.length) { | ||
32998 | var instance = Klass.instancePool.pop(); | ||
32999 | Klass.call(instance, a1, a2, a3, a4); | ||
33000 | return instance; | ||
33001 | } else { | ||
33002 | return new Klass(a1, a2, a3, a4); | ||
33003 | } | ||
33004 | }; | ||
33005 | |||
33006 | var standardReleaser = function (instance) { | ||
33007 | var Klass = this; | ||
33008 | !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0; | ||
33009 | instance.destructor(); | ||
33010 | if (Klass.instancePool.length < Klass.poolSize) { | ||
33011 | Klass.instancePool.push(instance); | ||
33012 | } | ||
33013 | }; | ||
33014 | |||
33015 | var DEFAULT_POOL_SIZE = 10; | ||
33016 | var DEFAULT_POOLER = oneArgumentPooler; | ||
33017 | |||
33018 | /** | ||
33019 | * Augments `CopyConstructor` to be a poolable class, augmenting only the class | ||
33020 | * itself (statically) not adding any prototypical fields. Any CopyConstructor | ||
33021 | * you give this may have a `poolSize` property, and will look for a | ||
33022 | * prototypical `destructor` on instances. | ||
33023 | * | ||
33024 | * @param {Function} CopyConstructor Constructor that can be used to reset. | ||
33025 | * @param {Function} pooler Customizable pooler. | ||
33026 | */ | ||
33027 | var addPoolingTo = function (CopyConstructor, pooler) { | ||
33028 | // Casting as any so that flow ignores the actual implementation and trusts | ||
33029 | // it to match the type we declared | ||
33030 | var NewKlass = CopyConstructor; | ||
33031 | NewKlass.instancePool = []; | ||
33032 | NewKlass.getPooled = pooler || DEFAULT_POOLER; | ||
33033 | if (!NewKlass.poolSize) { | ||
33034 | NewKlass.poolSize = DEFAULT_POOL_SIZE; | ||
33035 | } | ||
33036 | NewKlass.release = standardReleaser; | ||
33037 | return NewKlass; | ||
33038 | }; | ||
33039 | |||
33040 | var PooledClass = { | ||
33041 | addPoolingTo: addPoolingTo, | ||
33042 | oneArgumentPooler: oneArgumentPooler, | ||
33043 | twoArgumentPooler: twoArgumentPooler, | ||
33044 | threeArgumentPooler: threeArgumentPooler, | ||
33045 | fourArgumentPooler: fourArgumentPooler | ||
33046 | }; | ||
33047 | |||
33048 | module.exports = PooledClass; | ||
33049 | /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5))) | ||
33050 | |||
33051 | /***/ }) | ||
33052 | /******/ ]))); | ||
33053 | //# sourceMappingURL=common.js.map \ No newline at end of file | ||
diff --git a/examples/common.js.map b/examples/common.js.map deleted file mode 100644 index a8a3cec..0000000 --- a/examples/common.js.map +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | {"version":3,"sources":["webpack:///webpack/bootstrap ea395229a7236d550efd","webpack:///./assets/index.less?b1b1","webpack:///./~/._react@15.5.4@react/react.js","webpack:///./~/._react@15.5.4@react/lib/React.js","webpack:///./~/._process@0.11.9@process/browser.js","webpack:///./~/._object-assign@4.1.1@object-assign/index.js","webpack:///./~/._react@15.5.4@react/lib/ReactChildren.js","webpack:///./~/._react@15.5.4@react/lib/reactProdInvariant.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/invariant.js","webpack:///./~/._react@15.5.4@react/lib/ReactElement.js","webpack:///./~/._react@15.5.4@react/lib/ReactCurrentOwner.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/warning.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/emptyFunction.js","webpack:///./~/._react@15.5.4@react/lib/canDefineProperty.js","webpack:///./~/._react@15.5.4@react/lib/ReactElementSymbol.js","webpack:///./~/._react@15.5.4@react/lib/traverseAllChildren.js","webpack:///./~/._react@15.5.4@react/lib/getIteratorFn.js","webpack:///./~/._react@15.5.4@react/lib/KeyEscapeUtils.js","webpack:///./~/._react@15.5.4@react/lib/ReactComponent.js","webpack:///./~/._react@15.5.4@react/lib/ReactNoopUpdateQueue.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/emptyObject.js","webpack:///./~/._react@15.5.4@react/lib/ReactPureComponent.js","webpack:///./~/._react@15.5.4@react/lib/ReactClass.js","webpack:///./~/._react@15.5.4@react/lib/ReactPropTypeLocationNames.js","webpack:///./~/._react@15.5.4@react/lib/ReactDOMFactories.js","webpack:///./~/._react@15.5.4@react/lib/ReactElementValidator.js","webpack:///./~/._react@15.5.4@react/lib/ReactComponentTreeHook.js","webpack:///./~/._react@15.5.4@react/lib/checkReactTypeSpec.js","webpack:///./~/._react@15.5.4@react/lib/ReactPropTypesSecret.js","webpack:///./~/._react@15.5.4@react/lib/ReactPropTypes.js","webpack:///./~/._prop-types@15.5.8@prop-types/factory.js","webpack:///./~/._prop-types@15.5.8@prop-types/factoryWithTypeCheckers.js","webpack:///./~/._prop-types@15.5.8@prop-types/lib/ReactPropTypesSecret.js","webpack:///./~/._prop-types@15.5.8@prop-types/checkPropTypes.js","webpack:///./~/._react@15.5.4@react/lib/ReactVersion.js","webpack:///./~/._react@15.5.4@react/lib/onlyChild.js","webpack:///./~/._react-dom@15.5.4@react-dom/index.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOM.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMComponentTree.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/DOMProperty.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMComponentFlags.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDefaultInjection.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ARIADOMPropertyConfig.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/BeforeInputEventPlugin.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/EventPropagators.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/EventPluginHub.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/EventPluginRegistry.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/EventPluginUtils.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactErrorUtils.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/accumulateInto.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/forEachAccumulated.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/ExecutionEnvironment.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/FallbackCompositionState.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/getTextContentAccessor.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SyntheticCompositionEvent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SyntheticEvent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SyntheticInputEvent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ChangeEventPlugin.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactUpdates.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/CallbackQueue.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactFeatureFlags.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactReconciler.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactRef.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactOwner.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactInstrumentation.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDebugTool.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactInvalidSetStateWarningHook.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactHostOperationHistoryHook.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/performanceNow.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/performance.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/Transaction.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/getEventTarget.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/isEventSupported.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/isTextInputElement.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/DefaultEventPluginOrder.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/EnterLeaveEventPlugin.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SyntheticMouseEvent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SyntheticUIEvent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ViewportMetrics.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/getEventModifierState.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/HTMLDOMPropertyConfig.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactComponentBrowserEnvironment.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/DOMChildrenOperations.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/DOMLazyTree.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/DOMNamespaces.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/setInnerHTML.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/createMicrosoftUnsafeLocalFunction.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/setTextContent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/escapeTextContentForBrowser.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/Danger.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/createNodesFromMarkup.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/createArrayFromMixed.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/getMarkupWrap.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMIDOperations.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMComponent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/AutoFocusUtils.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/focusNode.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/CSSPropertyOperations.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/CSSProperty.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/camelizeStyleName.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/camelize.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/dangerousStyleValue.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/hyphenateStyleName.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/hyphenate.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/memoizeStringOnly.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/DOMPropertyOperations.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/quoteAttributeValueForBrowser.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactBrowserEventEmitter.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactEventEmitterMixin.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/getVendorPrefixedEventName.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMInput.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/LinkedValueUtils.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMOption.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMSelect.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMTextarea.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactMultiChild.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactComponentEnvironment.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactInstanceMap.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactChildReconciler.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/instantiateReactComponent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactCompositeComponent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactNodeTypes.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/checkReactTypeSpec.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/shallowEqual.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/shouldUpdateReactComponent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactEmptyComponent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactHostComponent.js","webpack:///./~/._react@15.5.4@react/lib/getNextDebugID.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/traverseAllChildren.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/flattenChildren.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactServerRenderingTransaction.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactServerUpdateQueue.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactUpdateQueue.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/validateDOMNesting.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMEmptyComponent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMTreeTraversal.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMTextComponent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDefaultBatchingStrategy.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactEventListener.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/EventListener.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/getUnboundedScrollPosition.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactInjection.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactReconcileTransaction.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactInputSelection.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMSelection.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/getNodeForCharacterOffset.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/containsNode.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/isTextNode.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/isNode.js","webpack:///./~/._fbjs@0.8.12@fbjs/lib/getActiveElement.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SVGDOMPropertyConfig.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SelectEventPlugin.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SimpleEventPlugin.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SyntheticAnimationEvent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SyntheticClipboardEvent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SyntheticFocusEvent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SyntheticKeyboardEvent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/getEventCharCode.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/getEventKey.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SyntheticDragEvent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SyntheticTouchEvent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SyntheticTransitionEvent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/SyntheticWheelEvent.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactMount.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMContainerInfo.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMFeatureFlags.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactMarkupChecksum.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/adler32.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/findDOMNode.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/getHostComponentFromComposite.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/renderSubtreeIntoContainer.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMUnknownPropertyHook.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMNullInputValuePropHook.js","webpack:///./~/._react-dom@15.5.4@react-dom/lib/ReactDOMInvalidARIAHook.js","webpack:///./~/._moment@2.18.1@moment/moment.js","webpack:///./index.js","webpack:///./src/index.js","webpack:///./src/TimePicker.jsx","webpack:///./~/._babel-runtime@6.23.0@babel-runtime/helpers/classCallCheck.js","webpack:///./~/._babel-runtime@6.23.0@babel-runtime/helpers/possibleConstructorReturn.js","webpack:///./~/._babel-runtime@6.23.0@babel-runtime/helpers/typeof.js","webpack:///./~/._babel-runtime@6.23.0@babel-runtime/core-js/symbol/iterator.js","webpack:///./~/._core-js@2.4.1@core-js/library/fn/symbol/iterator.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/es6.string.iterator.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_string-at.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_to-integer.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_defined.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_iter-define.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_library.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_export.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_global.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_core.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_ctx.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_a-function.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_hide.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_object-dp.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_an-object.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_is-object.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_ie8-dom-define.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_descriptors.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_fails.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_dom-create.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_to-primitive.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_property-desc.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_redefine.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_has.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_iterators.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_iter-create.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_object-create.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_object-dps.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_object-keys.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_object-keys-internal.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_to-iobject.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_iobject.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_cof.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_array-includes.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_to-length.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_to-index.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_shared-key.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_shared.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_uid.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_enum-bug-keys.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_html.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_set-to-string-tag.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_wks.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_object-gpo.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_to-object.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/web.dom.iterable.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/es6.array.iterator.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_add-to-unscopables.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_iter-step.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_wks-ext.js","webpack:///./~/._babel-runtime@6.23.0@babel-runtime/core-js/symbol.js","webpack:///./~/._core-js@2.4.1@core-js/library/fn/symbol/index.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/es6.symbol.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_meta.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_wks-define.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_keyof.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_enum-keys.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_object-gops.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_object-pie.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_is-array.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_object-gopn-ext.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_object-gopn.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_object-gopd.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/es7.symbol.async-iterator.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/es7.symbol.observable.js","webpack:///./~/._babel-runtime@6.23.0@babel-runtime/helpers/inherits.js","webpack:///./~/._babel-runtime@6.23.0@babel-runtime/core-js/object/set-prototype-of.js","webpack:///./~/._core-js@2.4.1@core-js/library/fn/object/set-prototype-of.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/es6.object.set-prototype-of.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_set-proto.js","webpack:///./~/._babel-runtime@6.23.0@babel-runtime/core-js/object/create.js","webpack:///./~/._core-js@2.4.1@core-js/library/fn/object/create.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/es6.object.create.js","webpack:///./~/._prop-types@15.5.8@prop-types/index.js","webpack:///./~/._prop-types@15.5.8@prop-types/factoryWithThrowingShims.js","webpack:///./~/._rc-trigger@1.10.0@rc-trigger/lib/index.js","webpack:///./~/._rc-trigger@1.10.0@rc-trigger/lib/Trigger.js","webpack:///./~/._babel-runtime@6.23.0@babel-runtime/helpers/extends.js","webpack:///./~/._babel-runtime@6.23.0@babel-runtime/core-js/object/assign.js","webpack:///./~/._core-js@2.4.1@core-js/library/fn/object/assign.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/es6.object.assign.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/_object-assign.js","webpack:///./~/._rc-util@4.0.2@rc-util/lib/Dom/contains.js","webpack:///./~/._rc-util@4.0.2@rc-util/lib/Dom/addEventListener.js","webpack:///./~/._add-dom-event-listener@1.0.2@add-dom-event-listener/lib/index.js","webpack:///./~/._add-dom-event-listener@1.0.2@add-dom-event-listener/lib/EventObject.js","webpack:///./~/._add-dom-event-listener@1.0.2@add-dom-event-listener/lib/EventBaseObject.js","webpack:///./~/._rc-trigger@1.10.0@rc-trigger/lib/Popup.js","webpack:///./~/._rc-align@2.3.3@rc-align/lib/index.js","webpack:///./~/._rc-align@2.3.3@rc-align/lib/Align.js","webpack:///./~/._dom-align@1.5.3@dom-align/lib/index.js","webpack:///./~/._dom-align@1.5.3@dom-align/lib/utils.js","webpack:///./~/._dom-align@1.5.3@dom-align/lib/propertyUtils.js","webpack:///./~/._dom-align@1.5.3@dom-align/lib/getOffsetParent.js","webpack:///./~/._dom-align@1.5.3@dom-align/lib/getVisibleRectForElement.js","webpack:///./~/._dom-align@1.5.3@dom-align/lib/adjustForViewport.js","webpack:///./~/._dom-align@1.5.3@dom-align/lib/getRegion.js","webpack:///./~/._dom-align@1.5.3@dom-align/lib/getElFuturePos.js","webpack:///./~/._dom-align@1.5.3@dom-align/lib/getAlignOffset.js","webpack:///./~/._rc-align@2.3.3@rc-align/lib/isWindow.js","webpack:///./~/._rc-animate@2.3.3@rc-animate/lib/index.js","webpack:///./~/._rc-animate@2.3.3@rc-animate/lib/Animate.js","webpack:///./~/._rc-animate@2.3.3@rc-animate/lib/ChildrenUtils.js","webpack:///./~/._rc-animate@2.3.3@rc-animate/lib/AnimateChild.js","webpack:///./~/._css-animation@1.3.2@css-animation/lib/index.js","webpack:///./~/._css-animation@1.3.2@css-animation/lib/Event.js","webpack:///./~/._component-classes@1.2.6@component-classes/index.js","webpack:///./~/._component-indexof@0.0.3@component-indexof/index.js","webpack:///./~/._rc-animate@2.3.3@rc-animate/lib/util.js","webpack:///./~/._rc-trigger@1.10.0@rc-trigger/lib/PopupInner.js","webpack:///./~/._rc-trigger@1.10.0@rc-trigger/lib/LazyRenderBox.js","webpack:///./~/._babel-runtime@6.23.0@babel-runtime/helpers/objectWithoutProperties.js","webpack:///./~/._rc-trigger@1.10.0@rc-trigger/lib/utils.js","webpack:///./~/._rc-util@4.0.2@rc-util/lib/getContainerRenderMixin.js","webpack:///./src/Panel.jsx","webpack:///./~/._babel-runtime@6.23.0@babel-runtime/helpers/defineProperty.js","webpack:///./~/._babel-runtime@6.23.0@babel-runtime/core-js/object/define-property.js","webpack:///./~/._core-js@2.4.1@core-js/library/fn/object/define-property.js","webpack:///./~/._core-js@2.4.1@core-js/library/modules/es6.object.define-property.js","webpack:///./src/Header.jsx","webpack:///./src/Combobox.jsx","webpack:///./src/Select.jsx","webpack:///./~/._classnames@2.2.5@classnames/index.js","webpack:///./src/placements.js","webpack:///./~/._react@15.5.4@react/lib/PooledClass.js"],"names":["noop","refFn","field","component","Picker","props","saveInputRef","bind","savePanelRef","defaultOpen","defaultValue","open","value","state","componentWillReceiveProps","nextProps","setState","undefined","setValue","onChange","getFormat","format","showHour","showMinute","showSecond","use12Hours","fmtString","filter","item","join","concat","getPanelElement","prefixCls","placeholder","disabledHours","disabledMinutes","disabledSeconds","hideDisabledOptions","allowEmpty","defaultOpenValue","clearText","addon","onPanelChange","onPanelClear","onEsc","getPopupClassName","popupClassName","selectColumnCount","setOpen","onOpen","onClose","focus","picker","render","placement","align","disabled","transitionName","style","className","getPopupContainer","name","autoComplete","onVisibleChange","onKeyDown","propTypes","string","object","bool","any","func","defaultProps","e","keyCode","generateOptions","length","disabledOptions","arr","indexOf","push","Panel","newValue","onCurrentSelectPanelChange","currentSelectPanel","selectionRange","close","onClear","disabledHourOptions","disabledMinuteOptions","hour","disabledSecondOptions","minute","hourOptions","minuteOptions","secondOptions","Header","str","invalid","getClearButton","getProtoValue","getInput","invalidClass","onInputChange","disabledDate","array","event","target","originalValue","clone","parsed","isValid","second","changedValue","formatOption","option","Combobox","onItemChange","type","itemValue","isAM","ampm","toUpperCase","onEnterSelectPanel","range","getHourSelect","hourOptionsAdj","hourAdj","h","map","getMinuteSelect","getSecondSelect","getAMPMSelect","AMPMOptions","match","c","selected","scrollTo","element","to","duration","requestAnimationFrame","window","requestAnimationFrameTimeout","setTimeout","arguments","scrollTop","difference","perTick","Select","active","onSelect","handleMouseEnter","onMouseEnter","handleMouseLeave","componentDidMount","scrollToSelected","componentDidUpdate","prevProps","selectedIndex","getOptions","options","index","cls","onclick","select","findDOMNode","list","refs","topOption","children","offsetTop","number","autoAdjustOverflow","adjustX","adjustY","targetOffset","placements","bottomLeft","points","overflow","offset","bottomRight","topRight","topLeft"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAQ,oBAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wEAAgE,+GAA+G;AAC/K;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChHA,0C;;;;;;ACAA;;AAEA;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA,wB;;;;;;;ACtGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA2B;AAC3B;AACA;AACA;AACA,6BAA4B,UAAU;;;;;;;ACnLtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,mCAAkC;AAClC;AACA;AACA;;AAEA;AACA,GAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAgB,sBAAsB;AACtC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,UAAU;AACrB,YAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,GAAG;AACd,YAAW,iBAAiB;AAC5B,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,GAAG;AACd,YAAW,UAAU;AACrB,YAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,GAAG;AACd,YAAW,iBAAiB;AAC5B,YAAW,EAAE;AACb,aAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,GAAG;AACd,aAAY,OAAO;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gC;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qDAAoD;;AAEpD,uBAAsB,mBAAmB;AACzC;AACA;;AAEA;;AAEA;AACA;AACA,yBAAwB;;AAExB;AACA;;AAEA,qC;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,sDAAqD;AACrD,MAAK;AACL;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA,2BAA0B;AAC1B;AACA;AACA;;AAEA,4B;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,cAAc;AACzB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,oBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,oBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAW,QAAQ;AACnB,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;AAEA,+B;;;;;;;ACnVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAY;AACZ;AACA;;AAEA;;AAEA,oC;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,yFAAwF,aAAa;AACrG;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gBAAe;AACf;;AAEA;AACA,+FAA8F,eAAe;AAC7G;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA,0B;;;;;;;ACjEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA6C;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gC;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,6BAA4B,QAAQ,oBAAoB,EAAE;AAC1D;AACA,IAAG;AACH;AACA;AACA;;AAEA,oC;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,qC;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,GAAG;AACd,YAAW,QAAQ;AACnB,YAAW,UAAU;AACrB,YAAW,GAAG;AACd;AACA,aAAY,QAAQ;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB;AACvB;;AAEA;AACA,oBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2LAA2L,yCAAyC,+GAA+G,yCAAyC;AAC5X;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,GAAG;AACd,YAAW,UAAU;AACrB,YAAW,GAAG;AACd,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,sC;;;;;;;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,yCAAwC;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gC;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA,iC;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,gBAAgB;AAC3B;AACA,YAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iC;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,WAAW;AACxB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,UAAU;AACvB;AACA;AACA,0DAAyD;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,uC;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,8B;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qC;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,KAAK;AAClC;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,eAAc,QAAQ;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,0BAA0B;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,WAAW;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,0BAA0B;AACvC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,sBAAqB,mBAAmB;AACxC;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,+CAA8C;AAC9C,IAAG;AACH;AACA;AACA;AACA;AACA,0CAAyC;AACzC,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,uCAAsC;AACtC,IAAG;AACH;AACA;AACA,IAAG;AACH,2BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA,6HAA4H;AAC5H;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qOAAoO;;AAEpO;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,aAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA,qNAAoN;AACpN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,aAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,aAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,aAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAwF,aAAa;AACrG;AACA;;AAEA,uDAAsD;AACtD;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,eAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA,6B;;;;;;;ACjtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6C;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oC;;;;;;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA,0FAAyF;;AAEzF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,UAAU;AACrB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,sBAAsB;AAC3C;AACA;AACA;;AAEA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA,oBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;;AAEA;;AAEA,wC;;;;;;;AC3PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;;;AAGH;AACA;AACA;;AAEA,yC;;;;;;;AC5UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kJAAiJ;AACjJ;AACA,QAAO;AACP;AACA;AACA,uIAAsI;AACtI;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qC;;;;;;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,uC;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,0C;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,2CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,8BAA6B;AAC7B,SAAQ;AACR;AACA;AACA;AACA;AACA,gCAA+B,KAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,6BAA4B;AAC5B,QAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAqB,gCAAgC;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;AC7dA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAgG;AAChG;AACA,UAAS;AACT;AACA;AACA,iGAAgG;AAChG;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,2B;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB,aAAY,aAAa;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA,4B;;;;;;;ACpCA;;AAEA;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,+HAA8H;;AAE9H;AACA;AACA;;AAEA,oBAAmB,6BAA6B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2B;;;;;;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAkE;AAClE;AACA;AACA;AACA,WAAU,oBAAoB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAQ,4CAA4C;AACpD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAQ,gBAAgB;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wC;;;;;;;;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C;AAC5C,+BAA8B;AAC9B;AACA,iBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,qEAAoE,yBAAyB;;AAE7F;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,oDAAoD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA,8B;;;;;;;AChNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,yC;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA,G;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,wBAAuB;AACvB;AACA;;AAEA,wC;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAmC;AACnC;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,aAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,aAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAY,QAAQ;AACpB;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,yC;;;;;;AC/XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mC;;;;;;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;;AAEA;AACA,gBAAe,OAAO;AACtB;AACA;;AAEA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB;AACA;AACA;;AAEA;AACA,yGAAwG;AACxG;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,eAAc,UAAU;AACxB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,eAAc,EAAE;AAChB;AACA;AACA;AACA;AACA;AACA,oBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;;AAEA,iC;;;;;;;ACpRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA8B;;AAE9B;AACA;AACA;AACA,8BAA6B;;AAE7B;AACA;AACA;AACA,mCAAkC;;AAElC;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,wEAAuE;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,OAAO;AACpB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,sC;;;;;;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,YAAW,eAAe;AAC1B,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,8BAA8B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,8BAA8B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,eAAe;AAC1B,aAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;;AAEH;AACA;;AAEA,mC;;;;;;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,EAAE;AACb,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kC;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA,aAAY,WAAW;AACvB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iC;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA,qC;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,uC;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;;AAEA;AACA,kBAAiB,eAAe;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA,2C;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yC;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,4C;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,YAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,eAAc,QAAQ;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,oBAAmB,uCAAuC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+BAA8B;AAC9B;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,E;;;;;;;AC1QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,sC;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,oC;;;;;;ACxVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,eAAe;AAC1B,YAAW,eAAe;AAC1B,aAAY,OAAO;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,sBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iDAAgD;AAChD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,+B;;;;;;;ACzPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,kDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,SAAS;AACtB,cAAa,QAAQ;AACrB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA,EAAC;;AAED,0D;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oC;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAa,eAAe;AAC5B,cAAa,0DAA0D;AACvE,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,eAAe;AAC5B,cAAa,aAAa;AAC1B,cAAa,0BAA0B;AACvC,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,eAAe;AAC5B,cAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,kC;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2B;;;;;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,YAAW,QAAQ;AACnB,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,iBAAiB;AAC1C;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,eAAe;AAC5B,cAAa,OAAO;AACpB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,eAAe;AAC5B,cAAa,OAAO;AACpB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,6B;;;;;;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,mBAAkB,wB;;;;;;;ACtBlB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG,IAAI;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA,oBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iC;;;;;;;ACrWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA,kD;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA,gD;;;;;;AChCA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;;AAEA,iC;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,oC;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,4BAA4B;AACvC;AACA,aAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA,eAAc,0BAA0B;AACxC;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB,cAAa,SAAS;AACtB,cAAa,SAAS;AACtB,cAAa,SAAS;AACtB,cAAa,SAAS;AACtB,cAAa,SAAS;AACtB;AACA,eAAc,EAAE;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,6BAA4B,gCAAgC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,2DAA0D;AAC1D;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,gCAAgC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,sDAAqD;AACrD;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA,kC;;;;;;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY,eAAe;AAC3B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iC;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6CAA4C;AAC5C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mC;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,qC;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0C;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,wC;;;;;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,sC;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,mC;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,kC;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wC;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,uBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wC;;;;;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,mD;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,WAAW;AACtB,YAAW,WAAW;AACtB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yEAAwE;AACxE;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;;AAEA,wC;;;;;;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,qBAAqB;AACxC;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8B;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gC;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,WAAW;AACtB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA,+B;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;AACH;AACA;AACA;;AAEA,qD;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW;AACtB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iC;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAY,OAAO;AACnB,aAAY;AACZ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4BAA2B,oBAAoB;AAC/C;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA,yBAAwB,EAAE,8BAA8B;AACxD;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,YAAW,EAAE;AACb,aAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8C;;;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;;AAEA,yB;;;;;;;AC9CA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,UAAU;AACrB,aAAY,8BAA8B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,wC;;;;;;;AClFA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,yBAAyB;AACpC,aAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,oLAAmL;;AAEnL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB,aAAa;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,aAAY;AACZ;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;;AAEA,uC;;;;;;;AC7HA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA,gC;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uC;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,yBAAyB;AACxC;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qNAAoN,YAAY;AAChO;AACA;AACA;AACA;AACA;AACA;AACA,gOAA+N,+BAA+B;AAC9P;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,qDAAoD;AACpD;AACA,wBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,0DAA0D;AACvE,cAAa,mBAAmB;AAChC,cAAa,QAAQ;AACrB,cAAa,OAAO;AACpB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,0DAA0D;AACvE,cAAa,OAAO;AACpB,eAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,cAAa,0DAA0D;AACvE,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,eAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,wBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,cAAa,aAAa;AAC1B,cAAa,0DAA0D;AACvE,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,cAAa,0BAA0B;AACvC,cAAa,aAAa;AAC1B,cAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,uCAAsC,KAAK;AAC3C;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAyD;AACzD,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,0BAA0B;AACvC,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,sBAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;;AAEA,oC;;;;;;;ACv+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iC;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,YAAW,WAAW;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA,4B;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6CAA4C;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAa,OAAO;AACpB,cAAa,EAAE;AACf,cAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAgC,0BAA0B;AAC1D,qBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,kBAAkB;AAC/B,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAgF;AAChF;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,OAAO;AACpB,cAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA,wC;;;;;;;AC/MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,aAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8B;;;;;;AClJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY;AACZ;AACA;AACA;AACA;;AAEA,oC;;;;;;ACtCA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY;AACZ;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA,2B;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,YAAW,kBAAkB;AAC7B,aAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sC;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY;AACZ;AACA;AACA;AACA;;AAEA,qC;;;;;;ACrCA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY;AACZ;AACA;AACA;AACA;;AAEA,4B;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oC;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa,OAAO;AACpB,eAAc,OAAO;AACrB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,EAAE;AACf,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,EAAE;AACf,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,OAAO;AACpB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA,wC;;;;;;;AC3OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW,EAAE;AACb,aAAY,OAAO;AACnB;AACA;AACA;AACA;;AAEA,gD;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC;;AAEzC;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA,eAAc,QAAQ;AACtB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED,2C;;;;;;ACtUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yC;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6C;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uCAAsC;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA,2GAA0G;AAC1G;AACA;AACA;AACA,6GAA4G;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gC;;;;;;;AC3RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA,cAAa,OAAO;AACpB,eAAc,EAAE;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA,cAAa,OAAO;AACpB,eAAc,EAAE;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA,cAAa,OAAO;AACpB,cAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA,mC;;;;;;;;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,wBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA,2BAA0B;AAC1B,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA,8BAA6B,2CAA2C;;AAExE;AACA,iBAAgB;AAChB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,iC;;;;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wGAAuG;AACvG;AACA;;AAEA,kBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,YAAW,kBAAkB;AAC7B,YAAW,QAAQ;AACnB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,sBAAsB;AACrC;AACA;AACA,gBAAe,oBAAoB;AACnC;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iC;;;;;;;ACtMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uCAAsC;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,8GAA6G;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mC;;;;;;;AC9JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,iBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,gBAAe,0BAA0B;AACzC;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,gBAAe,QAAQ;AACvB,gBAAe,0BAA0B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,gBAAe,eAAe;AAC9B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,gBAAe,eAAe;AAC9B,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,gBAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,gBAAe,eAAe;AAC9B,gBAAe,OAAO;AACtB,gBAAe,OAAO;AACtB,gBAAe,0BAA0B;AACzC;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,gBAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,kC;;;;;;;AChcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,4C;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;;AAEA,mC;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sKAAqK;AACrK;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,0BAA0B;AACvC,cAAa,OAAO;AACpB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,uC;;;;;;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,aAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,UAAU;AACrB,YAAW,QAAQ;AACnB,aAAY,OAAO;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAC;;AAED,4C;;;;;;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,cAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,0DAA0D;AACvE,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT,QAAO;AACP;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA,cAAa,OAAO;AACpB,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,cAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,0BAA0B;AACvC,cAAa,aAAa;AAC1B,cAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+BAA8B;AAC9B,kCAAiC,kBAAkB;AACnD;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,cAAa,aAAa;AAC1B,cAAa,OAAO;AACpB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,0BAA0B;AACvC,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAyD;AACzD;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,eAAc,eAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;;AAEA,0C;;;;;;;ACp4BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA,iC;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kJAAiJ;AACjJ;AACA,QAAO;AACP;AACA;AACA,uIAAsI;AACtI;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,qC;;;;;;;;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+B;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,aAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA,6C;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,sC;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,aAAa;AACxB,aAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,UAAU;AACrB,aAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA,YAAW,eAAe;AAC1B,aAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,qC;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,iC;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,GAAG;AACd,YAAW,QAAQ;AACnB,YAAW,UAAU;AACrB,YAAW,GAAG;AACd;AACA,aAAY,QAAQ;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB;AACvB;;AAEA;AACA,oBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2LAA2L,yCAAyC,+GAA+G,yCAAyC;AAC5X;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,GAAG;AACd,YAAW,UAAU;AACrB,YAAW,GAAG;AACd,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,sC;;;;;;;;;;;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,SAAS;AACpB,YAAW,gBAAgB;AAC3B,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wKAAuK;AACvK;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;AACA;AACA;;AAEA,kC;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc,MAAM;AACpB;AACA;AACA;AACA,IAAG;;AAEH;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA,IAAG;;AAEH;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,6BAA4B;;AAE5B,6BAA4B;;AAE5B;AACA;;AAEA;;AAEA;;AAEA,kD;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,kDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,YAAY;AACvB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAa,WAAW;AACxB,eAAc,QAAQ;AACtB;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,UAAU;AACvB;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB;AACA;;;AAGA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,gBAAgB;AAC7B;AACA;;;AAGA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,gBAAgB;AAC7B;AACA;;;AAGA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA,EAAC;;AAED,yC;;;;;;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yRAAwR;AACxR;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa,WAAW;AACxB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,UAAU;AACvB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,0IAAyI;AACzI;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;;AAEA,mC;;;;;;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,0DAAyD;AACzD;AACA;AACA,wCAAuC;AACvC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAiC;AACjC,iBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAiB,iBAAiB;AAClC;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qC;;;;;;;ACvXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,mCAAkC;AAClC;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,EAAC;;AAED,yC;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAAyB,OAAO;AAChC;AACA;AACA;AACA,0BAAyB,OAAO;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,SAAS;AAChC;AACA;AACA,cAAa,iBAAiB;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,qBAAqB;AAClC;AACA;AACA,0BAAyB,SAAS;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,cAAa,0DAA0D;AACvE,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,UAAU;AACvB,cAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED,wC;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA,+C;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH,kBAAiB,kCAAkC;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,cAAa,OAAO;AACpB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA,qC;;;;;;ACzJA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,eAAe;AAC5B,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,eAAe;AAC5B,cAAa,OAAO;AACpB,cAAa,SAAS;AACtB,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA,gC;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,qBAAqB;AAChC,aAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6C;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iC;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,UAAU;AACxB;AACA;AACA;AACA,cAAa,UAAU;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA,IAAG;;AAEH;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,4C;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA,0BAAyB;AACzB,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA,sC;;;;;;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW;AACtB,aAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,WAAW;AACtB,aAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,uBAAuB;AAClC,YAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,uBAAuB;AAClC,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAa,WAAW;AACxB;AACA;;AAEA;AACA,cAAa,uBAAuB;AACpC,cAAa,OAAO;AACpB;AACA;AACA;;AAEA,oC;;;;;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW,uBAAuB;AAClC,aAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,uBAAuB;AAClC,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,uBAAuB;AAClC,YAAW,OAAO;AAClB,aAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,4C;;;;;;ACxEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;;AAEA,+B;;;;;;ACtCA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,YAAW,EAAE;AACb,aAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA,6B;;;;;;ACvBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,EAAE;AACb,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,yB;;;;;;ACvBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA,mC;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED,uC;;;;;;AC5SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,WAAW;AACtB,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA,oC;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,OAAM;AACN;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,oC;;;;;;;AClOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,0C;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,0C;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,sC;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,yC;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY,OAAO;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mC;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,aAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8B;;;;;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,qC;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,sC;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,2C;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA,sC;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAY,OAAO;AACnB;AACA;AACA;AACA,kBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAW,uBAAuB;AAClC;AACA,aAAY,GAAG;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,eAAe;AAC1B,YAAW,WAAW;AACtB,YAAW,0BAA0B;AACrC,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,eAAe;AAC1B,YAAW,WAAW;AACtB,YAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,eAAe;AAC1B,YAAW,WAAW;AACtB;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,YAAY;AACvB,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,YAAY;AACvB,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,YAAY;AACvB,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,YAAY;AACvB,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB,cAAa,SAAS;AACtB;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,cAAa,eAAe;AAC5B,cAAa,aAAa;AAC1B,cAAa,WAAW;AACxB,cAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,aAAa;AAC1B,cAAa,WAAW;AACxB,cAAa,QAAQ;AACrB,eAAc,eAAe;AAC7B;AACA;AACA;AACA;AACA;AACA,qLAAoL;;AAEpL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,eAAe;AAC5B,cAAa,aAAa;AAC1B,cAAa,WAAW;AACxB,cAAa,UAAU;AACvB,eAAc,eAAe;AAC7B;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA,oEAAmE,qBAAqB;;AAExF;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,aAAa;AAC1B,cAAa,WAAW;AACxB,cAAa,UAAU;AACvB,eAAc,eAAe;AAC7B;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,cAAa,WAAW;AACxB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oLAAmL;;AAEnL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA,6B;;;;;;;ACxhBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wC;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,uC;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,cAAa,OAAO;AACpB,eAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA,cAAa,OAAO;AACpB,cAAa,WAAW;AACxB,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sC;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA,SAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,0B;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,0BAA0B;AACrC,aAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA,8B;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA,gD;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,wD;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8CAA6C;AAC7C;;AAEA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA,8C;;;;;;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA,iD;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,0C;;;;;;;AC3FA;AACA;AACA;AACA;AACA;;AAEA,EAAC;AACD;AACA;AACA;AACA,EAAC,qBAAqB;;AAEtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,gBAAgB;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;;AAEA,wBAAuB,SAAS;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB,6BAA6B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C;AAC3C,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,IAAI;AAC3B;;AAEA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,yCAAwC,IAAI;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,iCAAiC;AACrD;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,wBAAuB,wBAAwB;AAC/C;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yLAAwL,IAAI;;AAE5L,kEAAiE,IAAI;;AAErE;;AAEA;;AAEA;AACA;AACA;AACA,2BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uCAAsC,YAAY;AAClD;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,oBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,2BAA0B;AAC1B,6BAA4B;AAC5B,0BAAyB,EAAE,EAAE;AAC7B,0BAAyB,EAAE,EAAE;AAC7B,+BAA8B,EAAE,EAAE;AAClC,8BAA6B;AAC7B,kCAAiC;AACjC,sCAAqC;AACrC,0BAAyB,IAAI,EAAE;AAC/B,0BAAyB,IAAI,EAAE;AAC/B,+BAA8B,IAAI,EAAE;;AAEpC,4BAA2B;AAC3B,iCAAgC;;AAEhC,2CAA0C;AAC1C,kDAAiD;;AAEjD,qCAAoC,IAAI,IAAI;;AAE5C;AACA;AACA,6HAA4H,IAAI;;;AAGhI;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA,2CAA0C;AAC1C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,kBAAkB;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA,oBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB;AACA;AACA;AACA,gBAAe,QAAQ;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,EAAC;AACD;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,EAAC;AACD;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,YAAY;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;;;AAGA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,wCAAuC,EAAE,IAAI,EAAE;AAC/C,qCAAoC,EAAE,IAAI,EAAE;;AAE5C;;AAEA;AACA,8BAA6B,EAAE;AAC/B,wBAAuB,EAAE;AACzB,0BAAyB,EAAE;AAC3B,wBAAuB,EAAE;AACzB,sBAAqB,EAAE,IAAI,EAAE;AAC7B,qBAAoB,EAAE;AACtB,4BAA2B,GAAG;AAC9B,sBAAqB,EAAE;AACvB;AACA,wBAAuB,EAAE,IAAI,EAAE;AAC/B,uBAAsB,EAAE,IAAI,EAAE;AAC9B,qBAAoB,EAAE;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA,6MAA4M,EAAE;;AAE9M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAiC;AACjC;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wBAAuB;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe,+BAA+B;AAC9C;AACA;;AAEA;AACA,WAAU,OAAO;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,gBAAe,mBAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gBAAe,sBAAsB;AACrC;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,+BAA8B,gBAAgB;AAC9C;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,oBAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAmB,qBAAqB;AACxC;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK,6BAA6B;AAClC;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAe;;AAEf;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB;AAChB;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,cAAc;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAA+B,qBAAqB;AACpD,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAA+B,qBAAqB;AACpD,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAoB;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,EAAC;AACD;AACA;AACA,EAAC;AACD;AACA;AACA,EAAC;AACD;AACA;AACA,EAAC;AACD;AACA;AACA,EAAC;;;AAGD;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAoB,mBAAmB;AACvC;AACA;;AAEA;AACA;AACA;;AAEA,kBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,EAAC;;AAED;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,EAAC;;;;;;;;;;;;;AC92ID;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;AAEA,UAASA,IAAT,GAAgB,CACf;;AAED,UAASC,KAAT,CAAeC,KAAf,EAAsBC,SAAtB,EAAiC;AAC/B,QAAKD,KAAL,IAAcC,SAAd;AACD;;KAEKC,M;;;AA6DJ,mBAAYC,KAAZ,EAAmB;AAAA;;AAAA,gEACjB,sBAAMA,KAAN,CADiB;;AAAA;;AAEjB,WAAKC,YAAL,GAAoBL,MAAMM,IAAN,QAAiB,QAAjB,CAApB;AACA,WAAKC,YAAL,GAAoBP,MAAMM,IAAN,QAAiB,eAAjB,CAApB;AAHiB,SAITE,WAJS,GAI+DJ,KAJ/D,CAITI,WAJS;AAAA,SAIIC,YAJJ,GAI+DL,KAJ/D,CAIIK,YAJJ;AAAA,uBAI+DL,KAJ/D,CAIkBM,IAJlB;AAAA,SAIkBA,IAJlB,+BAIyBF,WAJzB;AAAA,wBAI+DJ,KAJ/D,CAIsCO,KAJtC;AAAA,SAIsCA,KAJtC,gCAI8CF,YAJ9C;;AAKjB,WAAKG,KAAL,GAAa;AACXF,iBADW;AAEXC;AAFW,MAAb;AALiB;AASlB;;oBAEDE,yB,sCAA0BC,S,EAAW;AAAA,SAC3BH,KAD2B,GACXG,SADW,CAC3BH,KAD2B;AAAA,SACpBD,IADoB,GACXI,SADW,CACpBJ,IADoB;;AAEnC,SAAI,WAAWI,SAAf,EAA0B;AACxB,YAAKC,QAAL,CAAc;AACZJ;AADY,QAAd;AAGD;AACD,SAAID,SAASM,SAAb,EAAwB;AACtB,YAAKD,QAAL,CAAc,EAAEL,UAAF,EAAd;AACD;AACF,I;;oBA0BDO,Q,qBAASN,K,EAAO;AACd,SAAI,EAAE,WAAW,KAAKP,KAAlB,CAAJ,EAA8B;AAC5B,YAAKW,QAAL,CAAc;AACZJ;AADY,QAAd;AAGD;AACD,UAAKP,KAAL,CAAWc,QAAX,CAAoBP,KAApB;AACD,I;;oBAEDQ,S,wBAAY;AAAA,kBACuD,KAAKf,KAD5D;AAAA,SACFgB,MADE,UACFA,MADE;AAAA,SACMC,QADN,UACMA,QADN;AAAA,SACgBC,UADhB,UACgBA,UADhB;AAAA,SAC4BC,UAD5B,UAC4BA,UAD5B;AAAA,SACwCC,UADxC,UACwCA,UADxC;;AAEV,SAAIJ,MAAJ,EAAY;AACV,cAAOA,MAAP;AACD;;AAED,SAAII,UAAJ,EAAgB;AACd,WAAMC,YAAa,CACjBJ,WAAW,GAAX,GAAiB,EADA,EAEjBC,aAAa,IAAb,GAAoB,EAFH,EAGjBC,aAAa,IAAb,GAAoB,EAHH,EAIjBG,MAJiB,CAIV;AAAA,gBAAQ,CAAC,CAACC,IAAV;AAAA,QAJU,EAIMC,IAJN,CAIW,GAJX,CAAnB;;AAMA,cAAOH,UAAUI,MAAV,CAAiB,IAAjB,CAAP;AACD;;AAED,YAAO,CACLR,WAAW,IAAX,GAAkB,EADb,EAELC,aAAa,IAAb,GAAoB,EAFf,EAGLC,aAAa,IAAb,GAAoB,EAHf,EAILG,MAJK,CAIE;AAAA,cAAQ,CAAC,CAACC,IAAV;AAAA,MAJF,EAIkBC,IAJlB,CAIuB,GAJvB,CAAP;AAKD,I;;oBAEDE,e,8BAAkB;AAAA,mBAMZ,KAAK1B,KANO;AAAA,SAEd2B,SAFc,WAEdA,SAFc;AAAA,SAEHC,WAFG,WAEHA,WAFG;AAAA,SAEUC,aAFV,WAEUA,aAFV;AAAA,SAGdC,eAHc,WAGdA,eAHc;AAAA,SAGGC,eAHH,WAGGA,eAHH;AAAA,SAGoBC,mBAHpB,WAGoBA,mBAHpB;AAAA,SAIdC,UAJc,WAIdA,UAJc;AAAA,SAIFhB,QAJE,WAIFA,QAJE;AAAA,SAIQC,UAJR,WAIQA,UAJR;AAAA,SAIoBC,UAJpB,WAIoBA,UAJpB;AAAA,SAIgCe,gBAJhC,WAIgCA,gBAJhC;AAAA,SAIkDC,SAJlD,WAIkDA,SAJlD;AAAA,SAKdC,KALc,WAKdA,KALc;AAAA,SAKPhB,UALO,WAKPA,UALO;;AAOhB,YACE;AACE,kBAAWe,SADb;AAEE,kBAAcR,SAAd,WAFF;AAGE,YAAK,KAAKxB,YAHZ;AAIE,cAAO,KAAKK,KAAL,CAAWD,KAJpB;AAKE,iBAAU,KAAK8B,aALjB;AAME,gBAAS,KAAKC,YANhB;AAOE,yBAAkBJ,gBAPpB;AAQE,iBAAUjB,QARZ;AASE,mBAAYC,UATd;AAUE,mBAAYC,UAVd;AAWE,cAAO,KAAKoB,KAXd;AAYE,mBAAYN,UAZd;AAaE,eAAQ,KAAKlB,SAAL,EAbV;AAcE,oBAAaa,WAdf;AAeE,sBAAeC,aAfjB;AAgBE,wBAAiBC,eAhBnB;AAiBE,wBAAiBC,eAjBnB;AAkBE,4BAAqBC,mBAlBvB;AAmBE,mBAAYZ,UAnBd;AAoBE,cAAOgB;AApBT,OADF;AAwBD,I;;oBAEDI,iB,gCAAoB;AAAA,mBACkD,KAAKxC,KADvD;AAAA,SACViB,QADU,WACVA,QADU;AAAA,SACAC,UADA,WACAA,UADA;AAAA,SACYC,UADZ,WACYA,UADZ;AAAA,SACwBC,UADxB,WACwBA,UADxB;AAAA,SACoCO,SADpC,WACoCA,SADpC;;AAElB,SAAIc,iBAAiB,KAAKzC,KAAL,CAAWyC,cAAhC;AACA;AACA,SAAI,CAAC,CAACxB,QAAD,IAAa,CAACC,UAAd,IAA4B,CAACC,UAA9B,KAA6C,CAACC,UAAlD,EAA8D;AAC5DqB,+BAAsBd,SAAtB;AACD;AACD,SAAIe,oBAAoB,CAAxB;AACA,SAAIzB,QAAJ,EAAc;AACZyB,4BAAqB,CAArB;AACD;AACD,SAAIxB,UAAJ,EAAgB;AACdwB,4BAAqB,CAArB;AACD;AACD,SAAIvB,UAAJ,EAAgB;AACduB,4BAAqB,CAArB;AACD;AACD,SAAItB,UAAJ,EAAgB;AACdsB,4BAAqB,CAArB;AACD;AACDD,6BAAsBd,SAAtB,sBAAgDe,iBAAhD;AACA,YAAOD,cAAP;AACD,I;;oBAEDE,O,oBAAQrC,I,EAAM;AAAA,mBACgB,KAAKN,KADrB;AAAA,SACJ4C,MADI,WACJA,MADI;AAAA,SACIC,OADJ,WACIA,OADJ;;AAEZ,SAAI,KAAKrC,KAAL,CAAWF,IAAX,KAAoBA,IAAxB,EAA8B;AAC5B,WAAI,EAAE,UAAU,KAAKN,KAAjB,CAAJ,EAA6B;AAC3B,cAAKW,QAAL,CAAc,EAAEL,UAAF,EAAd;AACD;AACD,WAAIA,IAAJ,EAAU;AACRsC,gBAAO,EAAEtC,UAAF,EAAP;AACD,QAFD,MAEO;AACLuC,iBAAQ,EAAEvC,UAAF,EAAR;AACD;AACF;AACF,I;;oBAEDwC,K,oBAAQ;AACN,UAAKC,MAAL,CAAYD,KAAZ;AACD,I;;oBAEDE,M,qBAAS;AAAA,mBAIH,KAAKhD,KAJF;AAAA,SAEL2B,SAFK,WAELA,SAFK;AAAA,SAEMC,WAFN,WAEMA,WAFN;AAAA,SAEmBqB,SAFnB,WAEmBA,SAFnB;AAAA,SAE8BC,KAF9B,WAE8BA,KAF9B;AAAA,SAGLC,QAHK,WAGLA,QAHK;AAAA,SAGKC,cAHL,WAGKA,cAHL;AAAA,SAGqBC,KAHrB,WAGqBA,KAHrB;AAAA,SAG4BC,SAH5B,WAG4BA,SAH5B;AAAA,SAGuCC,iBAHvC,WAGuCA,iBAHvC;AAAA,SAG0DC,IAH1D,WAG0DA,IAH1D;AAAA,SAGgEC,YAHhE,WAGgEA,YAHhE;AAAA,kBAKiB,KAAKjD,KALtB;AAAA,SAKCF,IALD,UAKCA,IALD;AAAA,SAKOC,KALP,UAKOA,KALP;;AAMP,SAAMkC,iBAAiB,KAAKD,iBAAL,EAAvB;AACA,YACE;AAAA;AAAA;AACE,oBAAcb,SAAd,WADF;AAEE,yBAAgBc,cAFlB;AAGE,gBAAO,KAAKf,eAAL,EAHT;AAIE,qBAAYwB,KAJd;AAKE,gDALF;AAME,yBAAgBD,SANlB;AAOE,iBAAQE,WAAW,EAAX,GAAgB,CAAC,OAAD,CAP1B;AAQE,iCARF;AASE,4BAAmBI,iBATrB;AAUE,8BAAqBH,cAVvB;AAWE,uBAAc9C,IAXhB;AAYE,+BAAsB,KAAKoD;AAZ7B;AAcE;AAAA;AAAA,WAAM,WAAc/B,SAAd,SAA2B2B,SAAjC,EAA8C,OAAOD,KAArD;AACE;AACE,sBAAc1B,SAAd,WADF;AAEE,gBAAK,KAAK1B,YAFZ;AAGE,iBAAK,MAHP;AAIE,wBAAa2B,WAJf;AAKE,iBAAM4B,IALR;AAME,yBANF;AAOE,sBAAW,KAAKG,SAPlB;AAQE,qBAAUR,QARZ,EAQsB,OAAO5C,SAASA,MAAMS,MAAN,CAAa,KAAKD,SAAL,EAAb,CAAT,IAA2C,EARxE;AASE,yBAAc0C;AAThB,WADF;AAYE,iDAAM,WAAc9B,SAAd,UAAN;AAZF;AAdF,MADF;AA+BD,I;;;;;AA7PG5B,O,CACG6D,S,GAAY;AACjBjC,cAAW,oBAAUkC,MADJ;AAEjB1B,cAAW,oBAAU0B,MAFJ;AAGjBtD,UAAO,oBAAUuD,MAHA;AAIjB5B,qBAAkB,oBAAU4B,MAJX;AAKjBX,aAAU,oBAAUY,IALH;AAMjB9B,eAAY,oBAAU8B,IANL;AAOjB1D,iBAAc,oBAAUyD,MAPP;AAQjBxD,SAAM,oBAAUyD,IARC;AASjB3D,gBAAa,oBAAU2D,IATN;AAUjBb,UAAO,oBAAUY,MAVA;AAWjBb,cAAW,oBAAUe,GAXJ;AAYjBZ,mBAAgB,oBAAUS,MAZT;AAajBN,sBAAmB,oBAAUU,IAbZ;AAcjBrC,gBAAa,oBAAUiC,MAdN;AAejB7C,WAAQ,oBAAU6C,MAfD;AAgBjB5C,aAAU,oBAAU8C,IAhBH;AAiBjB7C,eAAY,oBAAU6C,IAjBL;AAkBjB5C,eAAY,oBAAU4C,IAlBL;AAmBjBV,UAAO,oBAAUS,MAnBA;AAoBjBR,cAAW,oBAAUO,MApBJ;AAqBjBpB,mBAAgB,oBAAUoB,MArBT;AAsBjBhC,kBAAe,oBAAUoC,IAtBR;AAuBjBnC,oBAAiB,oBAAUmC,IAvBV;AAwBjBlC,oBAAiB,oBAAUkC,IAxBV;AAyBjBjC,wBAAqB,oBAAU+B,IAzBd;AA0BjBjD,aAAU,oBAAUmD,IA1BH;AA2BjBrB,WAAQ,oBAAUqB,IA3BD;AA4BjBpB,YAAS,oBAAUoB,IA5BF;AA6BjB7B,UAAO,oBAAU6B,IA7BA;AA8BjBT,SAAM,oBAAUK,MA9BC;AA+BjBJ,iBAAc,oBAAUI,MA/BP;AAgCjBzC,eAAY,oBAAU2C;AAhCL,E;AADfhE,O,CAoCGmE,Y,GAAe;AACpB/B,cAAW,OADS;AAEpBR,cAAW,gBAFS;AAGpBvB,gBAAa,KAHO;AAIpBiD,UAAO,EAJa;AAKpBC,cAAW,EALS;AAMpBb,mBAAgB,EANI;AAOpBS,UAAO,EAPa;AAQpBhB,qBAAkB,uBARE;AASpBD,eAAY,IATQ;AAUpBhB,aAAU,IAVU;AAWpBC,eAAY,IAXQ;AAYpBC,eAAY,IAZQ;AAapBU,kBAAelC,IAbK;AAcpBmC,oBAAiBnC,IAdG;AAepBoC,oBAAiBpC,IAfG;AAgBpBqC,wBAAqB,KAhBD;AAiBpBiB,cAAW,YAjBS;AAkBpBnC,aAAUnB,IAlBU;AAmBpBiD,WAAQjD,IAnBY;AAoBpBkD,YAASlD,IApBW;AAqBpByC,UAAOzC,IArBa;AAsBpByB,eAAY;AAtBQ,E;;;;;QAgDtBiB,a,GAAgB,UAAC9B,KAAD,EAAW;AACzB,YAAKM,QAAL,CAAcN,KAAd;AACD,I;;QAED+B,Y,GAAe,YAAM;AACnB,YAAKzB,QAAL,CAAc,IAAd;AACA,YAAK8B,OAAL,CAAa,KAAb;AACD,I;;QAEDe,e,GAAkB,UAACpD,IAAD,EAAU;AAC1B,YAAKqC,OAAL,CAAarC,IAAb;AACD,I;;QAEDiC,K,GAAQ,YAAM;AACZ,YAAKI,OAAL,CAAa,KAAb;AACA,YAAKG,KAAL;AACD,I;;QAEDa,S,GAAY,UAACQ,CAAD,EAAO;AACjB,SAAIA,EAAEC,OAAF,KAAc,EAAlB,EAAsB;AACpB,cAAKzB,OAAL,CAAa,IAAb;AACD;AACF,I;;;mBAsJY5C,M;;;;;;;AC9Qf;;AAEA;;AAEA;AACA;AACA;AACA;AACA,G;;;;;;ACRA;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;;AAEA;AACA,G;;;;;;AChBA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,kHAAiH,mBAAmB,EAAE,mBAAmB,4JAA4J;;AAErT,uCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA,EAAC;AACD;AACA,G;;;;;;ACpBA,mBAAkB,yD;;;;;;ACAlB;AACA;AACA,yD;;;;;;ACFA;AACA;;AAEA;AACA;AACA,8BAA6B;AAC7B,eAAc;AACd;AACA,EAAC;AACD;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA,WAAU;AACV,EAAC,E;;;;;;AChBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACLA;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA4B,aAAa;;AAEzC;AACA;AACA;AACA;AACA;AACA,yCAAwC,oCAAoC;AAC5E,6CAA4C,oCAAoC;AAChF,MAAK,2BAA2B,oCAAoC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,mBAAmB;AACnC;AACA;AACA,kCAAiC,2BAA2B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,G;;;;;;ACrEA,uB;;;;;;ACAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAmE;AACnE;AACA,sFAAqF;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd,eAAc;AACd,eAAc;AACd,eAAc;AACd,gBAAe;AACf,gBAAe;AACf,gBAAe;AACf,iBAAgB;AAChB,0B;;;;;;AC5DA;AACA;AACA;AACA,wCAAuC,gC;;;;;;ACHvC,8BAA6B;AAC7B,sCAAqC,gC;;;;;;ACDrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACnBA;AACA;AACA;AACA,G;;;;;;ACHA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,G;;;;;;ACPA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG,UAAU;AACb;AACA;AACA;AACA,G;;;;;;ACfA;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA,G;;;;;;ACFA;AACA,uEAAsE,gBAAgB,UAAU,GAAG;AACnG,EAAC,E;;;;;;ACFD;AACA;AACA,kCAAiC,QAAQ,gBAAgB,UAAU,GAAG;AACtE,EAAC,E;;;;;;ACHD;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,G;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACPA,2C;;;;;;ACAA,wBAAuB;AACvB;AACA;AACA,G;;;;;;ACHA,qB;;;;;;ACAA;AACA;AACA;AACA;AACA;;AAEA;AACA,8FAAgF,aAAa,EAAE;;AAE/F;AACA,sDAAqD,0BAA0B;AAC/E;AACA,G;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;;;;;;ACxCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACZA;AACA;AACA;;AAEA;AACA;AACA,G;;;;;;ACNA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACLA;AACA;AACA;AACA;AACA,G;;;;;;ACJA,kBAAiB;;AAEjB;AACA;AACA,G;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK,WAAW,eAAe;AAC/B;AACA,MAAK;AACL;AACA,G;;;;;;ACpBA;AACA;AACA;AACA;AACA,4DAA2D;AAC3D,G;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACNA;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA,oDAAmD;AACnD;AACA,wCAAuC;AACvC,G;;;;;;ACLA;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA;AACA,c;;;;;;ACHA,gF;;;;;;ACAA;AACA;AACA;;AAEA;AACA,mEAAkE,+BAA+B;AACjG,G;;;;;;ACNA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wB;;;;;;ACVA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,G;;;;;;ACZA;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA;AACA;AACA;;AAEA,yGAAwG,OAAO;AAC/G;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACZA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC,eAAc;AACd,kBAAiB;AACjB;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA,6B;;;;;;ACjCA,6BAA4B,e;;;;;;ACA5B;AACA,WAAU;AACV,G;;;;;;ACFA,sC;;;;;;ACAA,mBAAkB,yD;;;;;;ACAlB;AACA;AACA;AACA;AACA,kD;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAsB;AACtB,qBAAoB,uBAAuB,SAAS,IAAI;AACxD,IAAG;AACH,EAAC;AACD;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAyD;AACzD;AACA,MAAK;AACL;AACA,uBAAsB,iCAAiC;AACvD,MAAK;AACL,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA8D,8BAA8B;AAC5F;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2DAA0D,gBAAgB;;AAE1E;AACA;AACA;AACA,qBAAoB,oBAAoB;;AAExC,2CAA0C,oBAAoB;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH,yBAAwB,eAAe,EAAE;AACzC,yBAAwB,gBAAgB;AACxC,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,qDAAoD,KAAK,QAAQ,iCAAiC;AAClG,EAAC;AACD;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2C;;;;;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD,EAAC;AACD;AACA,sBAAqB;AACrB;AACA,UAAS;AACT,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA0D,sBAAsB;AAChF,iFAAgF,sBAAsB;AACtG,G;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,G;;;;;;ACdA,0C;;;;;;ACAA,eAAc,sB;;;;;;ACAd;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA;AACA,mBAAkB;;AAElB;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;;;;;;AClBA;AACA;AACA;;AAEA;AACA;AACA,G;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG,UAAU;AACb;AACA,G;;;;;;;;;;;;ACfA,2C;;;;;;ACAA,wC;;;;;;ACAA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,G;;;;;;AChCA,mBAAkB,yD;;;;;;ACAlB;AACA,iE;;;;;;ACDA;AACA;AACA,+BAA8B,6CAA4C,E;;;;;;ACF1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA,QAAO,UAAU,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,MAAK,GAAG;AACR;AACA,G;;;;;;ACxBA,mBAAkB,yD;;;;;;ACAlB;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA,+BAA8B,iCAAoC,E;;;;;;ACFlE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;ACrDA;;AAEA,2C;;;;;;ACFA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA,+BAA8B;AAC9B;AACA,MAAK;AACL,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;AACA,qC;;;;;;ACzdA;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA,kBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,G;;;;;;ACtBA,mBAAkB,yD;;;;;;ACAlB;AACA,yD;;;;;;ACDA;AACA;;AAEA,2CAA0C,iCAAoC,E;;;;;;ACH9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,UAAU,EAAE;AAC9C,oBAAmB,sCAAsC;AACzD,EAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,W;;;;;;AChCD;;AAEA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qC;;;;;;ACjBA;;AAEA;AACA;AACA,EAAC;AACD;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,qC;;;;;;ACxBA;;AAEA;AACA;AACA,EAAC;AACD;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qC;;;;;;ACnCA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,EAAC;AACD;AACA;AACA,EAAC;AACD;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAmC,cAAc;AACjD;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sDAAqD;AACrD;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;AACA,qC;;;;;;ACpRA;;AAEA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,qC;;;;;;AC3DA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,sBAAsB;AAChD;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,qC;;;;;;ACjOA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F,yCAAwC;;AAExC,qC;;;;;;ACdA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,QAAO;AACP,qCAAoC;;AAEpC;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,qC;;;;;;ACzJA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qC;;;;;;ACzNA;;AAEA;AACA;AACA,EAAC;;AAED,qGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,kBAAkB;AAC/B;AACA;AACA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,UAAS,OAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mEAAkE,cAAc;AAChF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,wCAAuC;AACvC,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;;AAEA,uEAAsE,eAAe;AACrF;AACA;;AAEA,oBAAmB,iBAAiB;AACpC;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA,qC;;;;;;AC7iBA;;AAEA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,E;;;;;;AC7GA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA2B,cAAc;AACzC,4BAA2B,cAAc,mBAAmB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oCAAmC,2BAA2B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qC;;;;;;ACpDA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qC;;;;;;AC3EA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qC;;;;;;ACtDA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qC;;;;;;ACnCA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,qC;;;;;;ACnCA;;AAEA;AACA;AACA,EAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,qC;;;;;;ACvCA;;AAEA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,qC;;;;;;ACXA;;AAEA;AACA,2C;;;;;;ACHA;;AAEA;AACA;AACA,EAAC;;AAED,oDAAmD,gBAAgB,sBAAsB,OAAO,2BAA2B,0BAA0B,yDAAyD,2BAA2B,EAAE,EAAE,EAAE,eAAe;;AAE9P;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F,4CAA2C,kBAAkB,kCAAkC,qEAAqE,EAAE,EAAE,OAAO,kBAAkB,EAAE,YAAY;;AAE/M;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,oBAAmB;AACnB;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mGAAkG;AAClG,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,qC;;;;;;AC1UA;;AAEA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;;AAEA;AACA,E;;;;;;ACpHA;;AAEA;AACA;AACA,EAAC;;AAED,qGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,EAAC;;AAED;AACA,qC;;;;;;ACzGA;;AAEA;AACA;AACA,EAAC;;AAED,qGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;AAEA;AACA,qC;;;;;;AC7LA;;AAEA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;;;AAGH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA,qC;;;;;;ACvFA;AACA;AACA;;AAEA;AACA;AACA,EAAC;AACD;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAW,QAAQ;AACnB,aAAY;AACZ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,QAAQ;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,cAAc;AACzB,aAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY;AACZ;AACA;;AAEA;AACA;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,aAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,aAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9LA;AACA;AACA,kBAAiB,gBAAgB;AACjC;AACA;AACA;AACA,G;;;;;;ACNA;;AAEA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,qC;;;;;;AC1BA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS,kEAAkE;AAC3E;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,qC;;;;;;ACnDA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;AAED;AACA,qC;;;;;;AC/CA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,G;;;;;;ACdA;;AAEA;AACA;AACA,EAAC;;AAED;;AAEA;;AAEA;AACA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;AACA;;AAEA;AACA;AACA,sCAAqC;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;AClCA;;AAEA;AACA;AACA,EAAC;;AAED,oDAAmD,gBAAgB,sBAAsB,OAAO,2BAA2B,0BAA0B,yDAAyD,2BAA2B,EAAE,EAAE,EAAE,eAAe;;AAE9P;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA,wBAAuB;AACvB;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA,wBAAuB;AACvB;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAuB;AACvB;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH,wBAAuB;AACvB;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,qC;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnGA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;AAEA,UAASJ,IAAT,GAAgB,CACf;;AAED,UAAS0E,eAAT,CAAyBC,MAAzB,EAAiCC,eAAjC,EAAkDvC,mBAAlD,EAAuE;AACrE,OAAMwC,MAAM,EAAZ;AACA,QAAK,IAAIjE,QAAQ,CAAjB,EAAoBA,QAAQ+D,MAA5B,EAAoC/D,OAApC,EAA6C;AAC3C,SAAI,CAACgE,eAAD,IAAoBA,gBAAgBE,OAAhB,CAAwBlE,KAAxB,IAAiC,CAArD,IAA0D,CAACyB,mBAA/D,EAAoF;AAClFwC,WAAIE,IAAJ,CAASnE,KAAT;AACD;AACF;AACD,UAAOiE,GAAP;AACD;;KAEKG,K;;;AAoCJ,kBAAY3E,KAAZ,EAAmB;AAAA;;AAAA,gEACjB,sBAAMA,KAAN,CADiB;;AAAA,WAiBnBc,QAjBmB,GAiBR,UAAC8D,QAAD,EAAc;AACvB,aAAKjE,QAAL,CAAc,EAAEJ,OAAOqE,QAAT,EAAd;AACA,aAAK5E,KAAL,CAAWc,QAAX,CAAoB8D,QAApB;AACD,MApBkB;;AAAA,WAsBnBC,0BAtBmB,GAsBU,UAACC,kBAAD,EAAwB;AACnD,aAAKnE,QAAL,CAAc,EAAEmE,sCAAF,EAAd;AACD,MAxBkB;;AAEjB,WAAKtE,KAAL,GAAa;AACXD,cAAOP,MAAMO,KADF;AAEXwE,uBAAgB;AAFL,MAAb;AAFiB;AAMlB;;mBAEDtE,yB,sCAA0BC,S,EAAW;AACnC,SAAMH,QAAQG,UAAUH,KAAxB;AACA,SAAIA,KAAJ,EAAW;AACT,YAAKI,QAAL,CAAc;AACZJ;AADY,QAAd;AAGD;AACF,I;;AAWD;mBACAyE,K,oBAAQ;AACN,UAAKhF,KAAL,CAAWuC,KAAX;AACD,I;;mBAEDS,M,qBAAS;AAAA;;AAAA,kBAKH,KAAKhD,KALF;AAAA,SAEL2B,SAFK,UAELA,SAFK;AAAA,SAEM2B,SAFN,UAEMA,SAFN;AAAA,SAEiB1B,WAFjB,UAEiBA,WAFjB;AAAA,SAE8BC,aAF9B,UAE8BA,aAF9B;AAAA,SAE6CC,eAF7C,UAE6CA,eAF7C;AAAA,SAGLC,eAHK,UAGLA,eAHK;AAAA,SAGYC,mBAHZ,UAGYA,mBAHZ;AAAA,SAGiCC,UAHjC,UAGiCA,UAHjC;AAAA,SAG6ChB,QAH7C,UAG6CA,QAH7C;AAAA,SAGuDC,UAHvD,UAGuDA,UAHvD;AAAA,SAGmEC,UAHnE,UAGmEA,UAHnE;AAAA,SAILH,MAJK,UAILA,MAJK;AAAA,SAIGkB,gBAJH,UAIGA,gBAJH;AAAA,SAIqBC,SAJrB,UAIqBA,SAJrB;AAAA,SAIgCI,KAJhC,UAIgCA,KAJhC;AAAA,SAIuCH,KAJvC,UAIuCA,KAJvC;AAAA,SAI8ChB,UAJ9C,UAI8CA,UAJ9C;AAAA,SAI0D6D,OAJ1D,UAI0DA,OAJ1D;AAAA,kBAQH,KAAKzE,KARF;AAAA,SAOLD,KAPK,UAOLA,KAPK;AAAA,SAOEuE,kBAPF,UAOEA,kBAPF;;AASP,SAAMI,sBAAsBrD,eAA5B;AACA,SAAMsD,wBAAwBrD,gBAAgBvB,QAAQA,MAAM6E,IAAN,EAAR,GAAuB,IAAvC,CAA9B;AACA,SAAMC,wBAAwBtD,gBAAgBxB,QAAQA,MAAM6E,IAAN,EAAR,GAAuB,IAAvC,EAC5B7E,QAAQA,MAAM+E,MAAN,EAAR,GAAyB,IADG,CAA9B;AAEA,SAAMC,cAAclB,gBAAgB,EAAhB,EAAoBa,mBAApB,EAAyClD,mBAAzC,CAApB;AACA,SAAMwD,gBAAgBnB,gBAAgB,EAAhB,EAAoBc,qBAApB,EAA2CnD,mBAA3C,CAAtB;AACA,SAAMyD,gBAAgBpB,gBAAgB,EAAhB,EAAoBgB,qBAApB,EAA2CrD,mBAA3C,CAAtB;;AAEA,YACE;AAAA;AAAA,SAAK,WAAW,wFAAiBL,SAAjB,aAAqC,IAArC,8CAA4C2B,SAA5C,EAAwD,CAAC,CAACA,SAA1D,gBAAhB;AACE;AACE,oBAAWnB,SADb;AAEE,oBAAWR,SAFb;AAGE,2BAAkBO,gBAHpB;AAIE,gBAAO3B,KAJT;AAKE,6BAAoBuE,kBALtB;AAME,gBAAOvC,KANT;AAOE,iBAAQvB,MAPV;AAQE,sBAAaY,WARf;AASE,sBAAa2D,WATf;AAUE,wBAAeC,aAVjB;AAWE,wBAAeC,aAXjB;AAYE,wBAAe5D,aAZjB;AAaE,0BAAiBC,eAbnB;AAcE,0BAAiBC,eAdnB;AAeE,mBAAU,KAAKjB,QAfjB;AAgBE,kBAASmE,OAhBX;AAiBE,qBAAYhD;AAjBd,SADF;AAoBE;AACE,oBAAWN,SADb;AAEE,gBAAOpB,KAFT;AAGE,2BAAkB2B,gBAHpB;AAIE,iBAAQlB,MAJV;AAKE,mBAAU,KAAKF,QALjB;AAME,mBAAUG,QANZ;AAOE,qBAAYC,UAPd;AAQE,qBAAYC,UARd;AASE,sBAAaoE,WATf;AAUE,wBAAeC,aAVjB;AAWE,wBAAeC,aAXjB;AAYE,wBAAe5D,aAZjB;AAaE,0BAAiBC,eAbnB;AAcE,0BAAiBC,eAdnB;AAeE,qCAA4B,KAAK8C,0BAfnC;AAgBE,qBAAYzD;AAhBd,SApBF;AAsCGgB,aAAM,IAAN;AAtCH,MADF;AA0CD,I;;;;;AA9HGuC,M,CACGf,S,GAAY;AACjBzB,cAAW,oBAAU0B,MADJ;AAEjBlC,cAAW,oBAAUkC,MAFJ;AAGjBP,cAAW,oBAAUO,MAHJ;AAIjB3B,qBAAkB,oBAAU4B,MAJX;AAKjBvD,UAAO,oBAAUuD,MALA;AAMjBlC,gBAAa,oBAAUiC,MANN;AAOjB7C,WAAQ,oBAAU6C,MAPD;AAQjBhC,kBAAe,oBAAUoC,IARR;AASjBnC,oBAAiB,oBAAUmC,IATV;AAUjBlC,oBAAiB,oBAAUkC,IAVV;AAWjBjC,wBAAqB,oBAAU+B,IAXd;AAYjBjD,aAAU,oBAAUmD,IAZH;AAajB1B,UAAO,oBAAU0B,IAbA;AAcjBhC,eAAY,oBAAU8B,IAdL;AAejB9C,aAAU,oBAAU8C,IAfH;AAgBjB7C,eAAY,oBAAU6C,IAhBL;AAiBjB5C,eAAY,oBAAU4C,IAjBL;AAkBjBkB,YAAS,oBAAUhB,IAlBF;AAmBjB7C,eAAY,oBAAU2C,IAnBL;AAoBjB3B,UAAO,oBAAU6B;AApBA,E;AADfU,M,CAwBGT,Y,GAAe;AACpBvC,cAAW,sBADS;AAEpBb,aAAUnB,IAFU;AAGpBsF,YAAStF,IAHW;AAIpBkC,kBAAelC,IAJK;AAKpBmC,oBAAiBnC,IALG;AAMpBoC,oBAAiBpC,IANG;AAOpBuC,qBAAkB,uBAPE;AAQpBd,eAAY,KARQ;AASpBgB,UAAOzC;AATa,E;mBAyGTgF,K;;;;;;;ACrJf;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;;AAEA;AACA,G;;;;;;ACvBA,mBAAkB,yD;;;;;;ACAlB;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA,uEAAuE,2CAA0C,E;;;;;;;;;;;;;;;;;;;;;;;;ACFjH;;;;AACA;;;;AACA;;;;;;KAEMe,M;;;AAsBJ,mBAAY1F,KAAZ,EAAmB;AAAA;;AAAA,gEACjB,sBAAMA,KAAN,CADiB;;AAAA;;AAAA,SAETO,KAFS,GAESP,KAFT,CAETO,KAFS;AAAA,SAEFS,MAFE,GAEShB,KAFT,CAEFgB,MAFE;;AAGjB,WAAKR,KAAL,GAAa;AACXmF,YAAKpF,SAASA,MAAMS,MAAN,CAAaA,MAAb,CAAT,IAAiC,EAD3B;AAEX4E,gBAAS;AAFE,MAAb;AAHiB;AAOlB;;oBAEDnF,yB,sCAA0BC,S,EAAW;AAAA,SAC3BH,KAD2B,GACTG,SADS,CAC3BH,KAD2B;AAAA,SACpBS,MADoB,GACTN,SADS,CACpBM,MADoB;;AAEnC,UAAKL,QAAL,CAAc;AACZgF,YAAKpF,SAASA,MAAMS,MAAN,CAAaA,MAAb,CAAT,IAAiC,EAD1B;AAEZ4E,gBAAS;AAFG,MAAd;AAID,I;;oBA6FDC,c,6BAAiB;AAAA,kBACmB,KAAK7F,KADxB;AAAA,SACP2B,SADO,UACPA,SADO;AAAA,SACIM,UADJ,UACIA,UADJ;;AAEf,SAAI,CAACA,UAAL,EAAiB;AACf,cAAO,IAAP;AACD;AACD,YAAQ;AACN,kBAAcN,SAAd,eADM;AAEN,aAAK,QAFC;AAGN,cAAO,KAAK3B,KAAL,CAAWmC,SAHZ;AAIN,oBAAa,KAAK8C;AAJZ,OAAR;AAMD,I;;oBAEDa,a,4BAAgB;AACd,YAAO,KAAK9F,KAAL,CAAWO,KAAX,IAAoB,KAAKP,KAAL,CAAWkC,gBAAtC;AACD,I;;oBAED6D,Q,uBAAW;AAAA,mBAC0B,KAAK/F,KAD/B;AAAA,SACD2B,SADC,WACDA,SADC;AAAA,SACUC,WADV,WACUA,WADV;AAAA,kBAEgB,KAAKpB,KAFrB;AAAA,SAEDoF,OAFC,UAEDA,OAFC;AAAA,SAEQD,GAFR,UAEQA,GAFR;;AAGT,SAAMK,eAAeJ,UAAajE,SAAb,sBAAyC,EAA9D;AACA,YACE;AACE,kBAAcA,SAAd,gBAAkCqE,YADpC;AAEE,YAAI,OAFN;AAGE,kBAAW,KAAKrC,SAHlB;AAIE,cAAOgC,GAJT;AAKE,oBAAa/D,WALf;AAME,iBAAU,KAAKqE;AANjB,OADF;AAUD,I;;oBAEDjD,M,qBAAS;AAAA,SACCrB,SADD,GACe,KAAK3B,KADpB,CACC2B,SADD;;AAEP,YACE;AAAA;AAAA,SAAK,WAAcA,SAAd,gBAAL;AACG,YAAKoE,QAAL,EADH;AAEG,YAAKF,cAAL;AAFH,MADF;AAMD,I;;;;;AA3KGH,O,CACG9B,S,GAAY;AACjB5C,WAAQ,oBAAU6C,MADD;AAEjBlC,cAAW,oBAAUkC,MAFJ;AAGjBqC,iBAAc,oBAAUjC,IAHP;AAIjBrC,gBAAa,oBAAUiC,MAJN;AAKjB1B,cAAW,oBAAU0B,MALJ;AAMjBtD,UAAO,oBAAUuD,MANA;AAOjByB,gBAAa,oBAAUY,KAPN;AAQjBX,kBAAe,oBAAUW,KARR;AASjBV,kBAAe,oBAAUU,KATR;AAUjBtE,kBAAe,oBAAUoC,IAVR;AAWjBnC,oBAAiB,oBAAUmC,IAXV;AAYjBlC,oBAAiB,oBAAUkC,IAZV;AAajBnD,aAAU,oBAAUmD,IAbH;AAcjBgB,YAAS,oBAAUhB,IAdF;AAejB1B,UAAO,oBAAU0B,IAfA;AAgBjBhC,eAAY,oBAAU8B,IAhBL;AAiBjB7B,qBAAkB,oBAAU4B,MAjBX;AAkBjBgB,uBAAoB,oBAAUjB;AAlBb,E;;;;;QAsCnBoC,a,GAAgB,UAACG,KAAD,EAAW;AACzB,SAAMT,MAAMS,MAAMC,MAAN,CAAa9F,KAAzB;AACA,YAAKI,QAAL,CAAc;AACZgF;AADY,MAAd;AAFyB,mBASrB,OAAK3F,KATgB;AAAA,SAMvBgB,MANuB,WAMvBA,MANuB;AAAA,SAMfuE,WANe,WAMfA,WANe;AAAA,SAMFC,aANE,WAMFA,aANE;AAAA,SAMaC,aANb,WAMaA,aANb;AAAA,SAOvB5D,aAPuB,WAOvBA,aAPuB;AAAA,SAORC,eAPQ,WAORA,eAPQ;AAAA,SAQvBC,eARuB,WAQvBA,eARuB;AAAA,SAQNjB,QARM,WAQNA,QARM;AAAA,SAQImB,UARJ,WAQIA,UARJ;;;AAWzB,SAAI0D,GAAJ,EAAS;AACP,WAAMW,gBAAgB,OAAKtG,KAAL,CAAWO,KAAjC;AACA,WAAMA,QAAQ,OAAKuF,aAAL,GAAqBS,KAArB,EAAd;AACA,WAAMC,SAAS,sBAAOb,GAAP,EAAY3E,MAAZ,EAAoB,IAApB,CAAf;AACA,WAAI,CAACwF,OAAOC,OAAP,EAAL,EAAuB;AACrB,gBAAK9F,QAAL,CAAc;AACZiF,oBAAS;AADG,UAAd;AAGA;AACD;AACDrF,aAAM6E,IAAN,CAAWoB,OAAOpB,IAAP,EAAX,EAA0BE,MAA1B,CAAiCkB,OAAOlB,MAAP,EAAjC,EAAkDoB,MAAlD,CAAyDF,OAAOE,MAAP,EAAzD;;AAEA;AACA,WACEnB,YAAYd,OAAZ,CAAoBlE,MAAM6E,IAAN,EAApB,IAAoC,CAApC,IACAI,cAAcf,OAAd,CAAsBlE,MAAM+E,MAAN,EAAtB,IAAwC,CADxC,IAEAG,cAAchB,OAAd,CAAsBlE,MAAMmG,MAAN,EAAtB,IAAwC,CAH1C,EAIE;AACA,gBAAK/F,QAAL,CAAc;AACZiF,oBAAS;AADG,UAAd;AAGA;AACD;;AAED;AACA,WAAMV,sBAAsBrD,eAA5B;AACA,WAAMsD,wBAAwBrD,gBAAgBvB,MAAM6E,IAAN,EAAhB,CAA9B;AACA,WAAMC,wBAAwBtD,gBAAgBxB,MAAM6E,IAAN,EAAhB,EAA8B7E,MAAM+E,MAAN,EAA9B,CAA9B;AACA,WACGJ,uBAAuBA,oBAAoBT,OAApB,CAA4BlE,MAAM6E,IAAN,EAA5B,KAA6C,CAArE,IACCD,yBAAyBA,sBAAsBV,OAAtB,CAA8BlE,MAAM+E,MAAN,EAA9B,KAAiD,CAD3E,IAECD,yBAAyBA,sBAAsBZ,OAAtB,CAA8BlE,MAAMmG,MAAN,EAA9B,KAAiD,CAH7E,EAIE;AACA,gBAAK/F,QAAL,CAAc;AACZiF,oBAAS;AADG,UAAd;AAGA;AACD;;AAED,WAAIU,aAAJ,EAAmB;AACjB,aACEA,cAAclB,IAAd,OAAyB7E,MAAM6E,IAAN,EAAzB,IACAkB,cAAchB,MAAd,OAA2B/E,MAAM+E,MAAN,EAD3B,IAEAgB,cAAcI,MAAd,OAA2BnG,MAAMmG,MAAN,EAH7B,EAIE;AACA;AACA,eAAMC,eAAeL,cAAcC,KAAd,EAArB;AACAI,wBAAavB,IAAb,CAAkB7E,MAAM6E,IAAN,EAAlB;AACAuB,wBAAarB,MAAb,CAAoB/E,MAAM+E,MAAN,EAApB;AACAqB,wBAAaD,MAAb,CAAoBnG,MAAMmG,MAAN,EAApB;AACA5F,oBAAS6F,YAAT;AACD;AACF,QAbD,MAaO,IAAIL,kBAAkB/F,KAAtB,EAA6B;AAClCO,kBAASP,KAAT;AACD;AACF,MAvDD,MAuDO,IAAI0B,UAAJ,EAAgB;AACrBnB,gBAAS,IAAT;AACD,MAFM,MAEA;AACL,cAAKH,QAAL,CAAc;AACZiF,kBAAS;AADG,QAAd;AAGA;AACD;;AAED,YAAKjF,QAAL,CAAc;AACZiF,gBAAS;AADG,MAAd;AAGD,I;;QAEDjC,S,GAAY,UAACQ,CAAD,EAAO;AACjB,SAAIA,EAAEC,OAAF,KAAc,EAAlB,EAAsB;AACpB,cAAKpE,KAAL,CAAWuC,KAAX;AACD;AACF,I;;QAED0C,O,GAAU,YAAM;AACd,YAAKtE,QAAL,CAAc,EAAEgF,KAAK,EAAP,EAAd;AACA,YAAK3F,KAAL,CAAWiF,OAAX;AACD,I;;;mBA8CYS,M;;;;;;;;;;;;;;;;;;;;;;;;;AClLf;;;;AACA;;;;AACA;;;;;;AAEA,KAAMkB,eAAe,SAAfA,YAAe,CAACC,MAAD,EAAStC,eAAT,EAA6B;AAChD,OAAIhE,aAAWsG,MAAf;AACA,OAAIA,SAAS,EAAb,EAAiB;AACftG,mBAAYsG,MAAZ;AACD;;AAED,OAAI1D,WAAW,KAAf;AACA,OAAIoB,mBAAmBA,gBAAgBE,OAAhB,CAAwBoC,MAAxB,KAAmC,CAA1D,EAA6D;AAC3D1D,gBAAW,IAAX;AACD;;AAED,UAAO;AACL5C,iBADK;AAEL4C;AAFK,IAAP;AAID,EAfD;;KAiBM2D,Q;;;;;;;;;;;;2JAoBJC,Y,GAAe,UAACC,IAAD,EAAOC,SAAP,EAAqB;AAAA,yBACiB,MAAKjH,KADtB;AAAA,WAC1Bc,QAD0B,eAC1BA,QAD0B;AAAA,WAChBoB,gBADgB,eAChBA,gBADgB;AAAA,WACEd,UADF,eACEA,UADF;;AAElC,WAAMb,QAAQ,CAAC,MAAKP,KAAL,CAAWO,KAAX,IAAoB2B,gBAArB,EAAuCqE,KAAvC,EAAd;;AAEA,WAAIS,SAAS,MAAb,EAAqB;AACnB,aAAI5F,UAAJ,EAAgB;AACd,eAAI,MAAK8F,IAAL,EAAJ,EAAiB;AACf3G,mBAAM6E,IAAN,CAAW,CAAC6B,SAAD,GAAa,EAAxB;AACD,YAFD,MAEO;AACL1G,mBAAM6E,IAAN,CAAY,CAAC6B,SAAD,GAAa,EAAd,GAAoB,EAA/B;AACD;AACF,UAND,MAMO;AACL1G,iBAAM6E,IAAN,CAAW,CAAC6B,SAAZ;AACD;AACF,QAVD,MAUO,IAAID,SAAS,QAAb,EAAuB;AAC5BzG,eAAM+E,MAAN,CAAa,CAAC2B,SAAd;AACD,QAFM,MAEA,IAAID,SAAS,MAAb,EAAqB;AAC1B,aAAMG,OAAOF,UAAUG,WAAV,EAAb;AACA,aAAIhG,UAAJ,EAAgB;AACd,eAAI+F,SAAS,IAAT,IAAiB5G,MAAM6E,IAAN,KAAe,EAApC,EAAwC;AACtC7E,mBAAM6E,IAAN,CAAY7E,MAAM6E,IAAN,KAAe,EAAhB,GAAsB,EAAjC;AACD;;AAED,eAAI+B,SAAS,IAAb,EAAmB;AACjB,iBAAI5G,MAAM6E,IAAN,MAAgB,EAApB,EAAwB;AACtB7E,qBAAM6E,IAAN,CAAW7E,MAAM6E,IAAN,KAAe,EAA1B;AACD;AACF;AACF;AACF,QAbM,MAaA;AACL7E,eAAMmG,MAAN,CAAa,CAACO,SAAd;AACD;AACDnG,gBAASP,KAAT;AACD,M,QAED8G,kB,GAAqB,UAACC,KAAD,EAAW;AAC9B,aAAKtH,KAAL,CAAW6E,0BAAX,CAAsCyC,KAAtC;AACD,M;;;sBAEDC,a,0BAAcnC,I,EAAM;AAAA,kBACsD,KAAKpF,KAD3D;AAAA,SACV2B,SADU,UACVA,SADU;AAAA,SACC4D,WADD,UACCA,WADD;AAAA,SACc1D,aADd,UACcA,aADd;AAAA,SAC6BZ,QAD7B,UAC6BA,QAD7B;AAAA,SACuCG,UADvC,UACuCA,UADvC;;AAElB,SAAI,CAACH,QAAL,EAAe;AACb,cAAO,IAAP;AACD;AACD,SAAMsD,kBAAkB1C,eAAxB;AACA,SAAI2F,uBAAJ;AACA,SAAIC,gBAAJ;AACA,SAAIrG,UAAJ,EAAgB;AACdoG,wBAAiB,CAAC,EAAD,EAAK/F,MAAL,CAAY8D,YAAYjE,MAAZ,CAAmB;AAAA,gBAAKoG,IAAI,EAAJ,IAAUA,IAAI,CAAnB;AAAA,QAAnB,CAAZ,CAAjB;AACAD,iBAAWrC,OAAO,EAAR,IAAe,EAAzB;AACD,MAHD,MAGO;AACLoC,wBAAiBjC,WAAjB;AACAkC,iBAAUrC,IAAV;AACD;;AAED,YACE;AACE,kBAAWzD,SADb;AAEE,gBAAS6F,eAAeG,GAAf,CAAmB;AAAA,gBAAUf,aAAaC,MAAb,EAAqBtC,eAArB,CAAV;AAAA,QAAnB,CAFX;AAGE,sBAAeiD,eAAe/C,OAAf,CAAuBgD,OAAvB,CAHjB;AAIE,aAAK,MAJP;AAKE,iBAAU,KAAKV,YALjB;AAME,qBAAc,KAAKM,kBAAL,CAAwBnH,IAAxB,CAA6B,IAA7B,EAAmC,MAAnC;AANhB,OADF;AAUD,I;;sBAED0H,e,4BAAgBtC,M,EAAQ;AAAA,mBAC8D,KAAKtF,KADnE;AAAA,SACd2B,SADc,WACdA,SADc;AAAA,SACH6D,aADG,WACHA,aADG;AAAA,SACY1D,eADZ,WACYA,eADZ;AAAA,SAC6BI,gBAD7B,WAC6BA,gBAD7B;AAAA,SAC+ChB,UAD/C,WAC+CA,UAD/C;;AAEtB,SAAI,CAACA,UAAL,EAAiB;AACf,cAAO,IAAP;AACD;AACD,SAAMX,QAAQ,KAAKP,KAAL,CAAWO,KAAX,IAAoB2B,gBAAlC;AACA,SAAMqC,kBAAkBzC,gBAAgBvB,MAAM6E,IAAN,EAAhB,CAAxB;;AAEA,YACE;AACE,kBAAWzD,SADb;AAEE,gBAAS6D,cAAcmC,GAAd,CAAkB;AAAA,gBAAUf,aAAaC,MAAb,EAAqBtC,eAArB,CAAV;AAAA,QAAlB,CAFX;AAGE,sBAAeiB,cAAcf,OAAd,CAAsBa,MAAtB,CAHjB;AAIE,aAAK,QAJP;AAKE,iBAAU,KAAKyB,YALjB;AAME,qBAAc,KAAKM,kBAAL,CAAwBnH,IAAxB,CAA6B,IAA7B,EAAmC,QAAnC;AANhB,OADF;AAUD,I;;sBAED2H,e,4BAAgBnB,M,EAAQ;AAAA,mBAC8D,KAAK1G,KADnE;AAAA,SACd2B,SADc,WACdA,SADc;AAAA,SACH8D,aADG,WACHA,aADG;AAAA,SACY1D,eADZ,WACYA,eADZ;AAAA,SAC6BZ,UAD7B,WAC6BA,UAD7B;AAAA,SACyCe,gBADzC,WACyCA,gBADzC;;AAEtB,SAAI,CAACf,UAAL,EAAiB;AACf,cAAO,IAAP;AACD;AACD,SAAMZ,QAAQ,KAAKP,KAAL,CAAWO,KAAX,IAAoB2B,gBAAlC;AACA,SAAMqC,kBAAkBxC,gBAAgBxB,MAAM6E,IAAN,EAAhB,EAA8B7E,MAAM+E,MAAN,EAA9B,CAAxB;;AAEA,YACE;AACE,kBAAW3D,SADb;AAEE,gBAAS8D,cAAckC,GAAd,CAAkB;AAAA,gBAAUf,aAAaC,MAAb,EAAqBtC,eAArB,CAAV;AAAA,QAAlB,CAFX;AAGE,sBAAekB,cAAchB,OAAd,CAAsBiC,MAAtB,CAHjB;AAIE,aAAK,QAJP;AAKE,iBAAU,KAAKK,YALjB;AAME,qBAAc,KAAKM,kBAAL,CAAwBnH,IAAxB,CAA6B,IAA7B,EAAmC,QAAnC;AANhB,OADF;AAUD,I;;sBAED4H,a,4BAAgB;AAAA,mBAC4B,KAAK9H,KADjC;AAAA,SACN2B,SADM,WACNA,SADM;AAAA,SACKP,UADL,WACKA,UADL;AAAA,SACiBJ,MADjB,WACiBA,MADjB;;AAEd,SAAI,CAACI,UAAL,EAAiB;AACf,cAAO,IAAP;AACD;;AAED,SAAM2G,cAAc,CAAC,IAAD,EAAO,IAAP,EAAa;AAAb,MACGJ,GADH,CACO;AAAA,cAAK3G,OAAOgH,KAAP,CAAa,KAAb,IAAsBC,EAAEb,WAAF,EAAtB,GAAwCa,CAA7C;AAAA,MADP,EAEGN,GAFH,CAEO;AAAA,cAAM,EAAEpH,OAAO0H,CAAT,EAAN;AAAA,MAFP,CAApB;;AAIA,SAAMC,WAAW,KAAKhB,IAAL,KAAc,CAAd,GAAkB,CAAnC;;AAEA,YACE;AACE,kBAAWvF,SADb;AAEE,gBAASoG,WAFX;AAGE,sBAAeG,QAHjB;AAIE,aAAK,MAJP;AAKE,iBAAU,KAAKnB,YALjB;AAME,qBAAc,KAAKM,kBAAL,CAAwBnH,IAAxB,CAA6B,IAA7B,EAAmC,MAAnC;AANhB,OADF;AAUD,I;;sBAEDgH,I,mBAAO;AACL,SAAM3G,QAAS,KAAKP,KAAL,CAAWO,KAAX,IAAoB,KAAKP,KAAL,CAAWkC,gBAA9C;AACA,YAAO3B,MAAM6E,IAAN,MAAgB,CAAhB,IAAqB7E,MAAM6E,IAAN,KAAe,EAA3C;AACD,I;;sBAEDpC,M,qBAAS;AAAA,mBACiC,KAAKhD,KADtC;AAAA,SACC2B,SADD,WACCA,SADD;AAAA,SACYO,gBADZ,WACYA,gBADZ;;AAEP,SAAM3B,QAAQ,KAAKP,KAAL,CAAWO,KAAX,IAAoB2B,gBAAlC;AACA,YACE;AAAA;AAAA,SAAK,WAAcP,SAAd,cAAL;AACG,YAAK4F,aAAL,CAAmBhH,MAAM6E,IAAN,EAAnB,CADH;AAEG,YAAKwC,eAAL,CAAqBrH,MAAM+E,MAAN,EAArB,CAFH;AAGG,YAAKuC,eAAL,CAAqBtH,MAAMmG,MAAN,EAArB,CAHH;AAIG,YAAKoB,aAAL,CAAmBvH,MAAM6E,IAAN,EAAnB;AAJH,MADF;AAQD,I;;;;;AAvKG0B,S,CACGlD,S,GAAY;AACjB5C,WAAQ,oBAAU6C,MADD;AAEjB3B,qBAAkB,oBAAU4B,MAFX;AAGjBnC,cAAW,oBAAUkC,MAHJ;AAIjBtD,UAAO,oBAAUuD,MAJA;AAKjBhD,aAAU,oBAAUmD,IALH;AAMjBhD,aAAU,oBAAU8C,IANH;AAOjB7C,eAAY,oBAAU6C,IAPL;AAQjB5C,eAAY,oBAAU4C,IARL;AASjBwB,gBAAa,oBAAUY,KATN;AAUjBX,kBAAe,oBAAUW,KAVR;AAWjBV,kBAAe,oBAAUU,KAXR;AAYjBtE,kBAAe,oBAAUoC,IAZR;AAajBnC,oBAAiB,oBAAUmC,IAbV;AAcjBlC,oBAAiB,oBAAUkC,IAdV;AAejBY,+BAA4B,oBAAUZ,IAfrB;AAgBjB7C,eAAY,oBAAU2C;AAhBL,E;mBAyKN+C,Q;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/Lf;;;;AACA;;;;AACA;;;;AACA;;;;;;AAEA,KAAMqB,WAAW,SAAXA,QAAW,CAACC,OAAD,EAAUC,EAAV,EAAcC,QAAd,EAA2B;AAC1C,OAAMC,wBAAwBC,OAAOD,qBAAP,IAC5B,SAASE,4BAAT,GAAwC;AACtC,YAAOC,WAAWC,UAAU,CAAV,CAAX,EAAyB,EAAzB,CAAP;AACD,IAHH;AAIA;AACA,OAAIL,YAAY,CAAhB,EAAmB;AACjBF,aAAQQ,SAAR,GAAoBP,EAApB;AACA;AACD;AACD,OAAMQ,aAAaR,KAAKD,QAAQQ,SAAhC;AACA,OAAME,UAAUD,aAAaP,QAAb,GAAwB,EAAxC;;AAEAC,yBAAsB,YAAM;AAC1BH,aAAQQ,SAAR,GAAoBR,QAAQQ,SAAR,GAAoBE,OAAxC;AACA,SAAIV,QAAQQ,SAAR,KAAsBP,EAA1B,EAA8B;AAC9BF,cAASC,OAAT,EAAkBC,EAAlB,EAAsBC,WAAW,EAAjC;AACD,IAJD;AAKD,EAlBD;;KAoBMS,M;;;;;;;;;;;;2JAUJvI,K,GAAQ;AACNwI,eAAQ;AADF,M,QAgBRC,Q,GAAW,UAAC1I,KAAD,EAAW;AAAA,yBACO,MAAKP,KADZ;AAAA,WACZiJ,QADY,eACZA,QADY;AAAA,WACFjC,IADE,eACFA,IADE;;AAEpBiC,gBAASjC,IAAT,EAAezG,KAAf;AACD,M,QAwCD2I,gB,GAAmB,UAAC/E,CAAD,EAAO;AACxB,aAAKxD,QAAL,CAAc,EAAEqI,QAAQ,IAAV,EAAd;AACA,aAAKhJ,KAAL,CAAWmJ,YAAX,CAAwBhF,CAAxB;AACD,M,QAEDiF,gB,GAAmB,YAAM;AACvB,aAAKzI,QAAL,CAAc,EAAEqI,QAAQ,KAAV,EAAd;AACD,M;;;oBA9DDK,iB,gCAAoB;AAClB;AACA,UAAKC,gBAAL,CAAsB,CAAtB;AACD,I;;oBAEDC,kB,+BAAmBC,S,EAAW;AAC5B;AACA,SAAIA,UAAUC,aAAV,KAA4B,KAAKzJ,KAAL,CAAWyJ,aAA3C,EAA0D;AACxD,YAAKH,gBAAL,CAAsB,GAAtB;AACD;AACF,I;;oBAODI,U,yBAAa;AAAA;;AAAA,kBACmC,KAAK1J,KADxC;AAAA,SACH2J,OADG,UACHA,OADG;AAAA,SACMF,aADN,UACMA,aADN;AAAA,SACqB9H,SADrB,UACqBA,SADrB;;AAEX,YAAOgI,QAAQhC,GAAR,CAAY,UAACpG,IAAD,EAAOqI,KAAP,EAAiB;AAAA;;AAClC,WAAMC,MAAM,wFACNlI,SADM,8BAC+B8H,kBAAkBG,KADjD,8CAENjI,SAFM,8BAE+BJ,KAAK4B,QAFpC,gBAAZ;AAIA,WAAI2G,UAAU,IAAd;AACA,WAAI,CAACvI,KAAK4B,QAAV,EAAoB;AAClB2G,mBAAU,OAAKb,QAAL,CAAc/I,IAAd,SAAyBqB,KAAKhB,KAA9B,CAAV;AACD;AACD,cAAQ;AAAA;AAAA;AACN,sBAAWsJ,GADL;AAEN,gBAAKD,KAFC;AAGN,oBAASE,OAHH;AAIN,qBAAUvI,KAAK4B;AAJT;AAML5B,cAAKhB;AANA,QAAR;AAQD,MAjBM,CAAP;AAkBD,I;;oBAED+I,gB,6BAAiBhB,Q,EAAU;AACzB;AACA,SAAMyB,SAAS,mBAASC,WAAT,CAAqB,IAArB,CAAf;AACA,SAAMC,OAAO,mBAASD,WAAT,CAAqB,KAAKE,IAAL,CAAUD,IAA/B,CAAb;AACA,SAAI,CAACA,IAAL,EAAW;AACT;AACD;AACD,SAAIL,QAAQ,KAAK5J,KAAL,CAAWyJ,aAAvB;AACA,SAAIG,QAAQ,CAAZ,EAAe;AACbA,eAAQ,CAAR;AACD;AACD,SAAMO,YAAYF,KAAKG,QAAL,CAAcR,KAAd,CAAlB;AACA,SAAMvB,KAAK8B,UAAUE,SAArB;AACAlC,cAAS4B,MAAT,EAAiB1B,EAAjB,EAAqBC,QAArB;AACD,I;;oBAWDtF,M,qBAAS;AAAA;;AACP,SAAI,KAAKhD,KAAL,CAAW2J,OAAX,CAAmBrF,MAAnB,KAA8B,CAAlC,EAAqC;AACnC,cAAO,IAAP;AACD;;AAHM,SAKC3C,SALD,GAKe,KAAK3B,KALpB,CAKC2B,SALD;;AAMP,SAAMkI,MAAM,0FACNlI,SADM,cACe,CADf,+CAENA,SAFM,qBAEsB,KAAKnB,KAAL,CAAWwI,MAFjC,iBAAZ;;AAKA,YACE;AAAA;AAAA;AACE,oBAAWa,GADb;AAEE,uBAAc,KAAKX,gBAFrB;AAGE,uBAAc,KAAKE;AAHrB;AAKE;AAAA;AAAA,WAAI,KAAI,MAAR;AAAgB,cAAKM,UAAL;AAAhB;AALF,MADF;AASD,I;;;;;AAlGGX,O,CACGnF,S,GAAY;AACjBjC,cAAW,oBAAUkC,MADJ;AAEjB8F,YAAS,oBAAUxD,KAFF;AAGjBsD,kBAAe,oBAAUa,MAHR;AAIjBtD,SAAM,oBAAUnD,MAJC;AAKjBoF,aAAU,oBAAUhF,IALH;AAMjBkF,iBAAc,oBAAUlF;AANP,E;mBAoGN8E,M;;;;;;;AC9Hf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAgB;;AAEhB;AACA;;AAEA,kBAAiB,sBAAsB;AACvC;AACA;;AAEA;;AAEA;AACA;AACA,KAAI;AACJ;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF;AACA;AACA,EAAC;;;;;;;;;;;;AC/CD,KAAMwB,qBAAqB;AACzBC,YAAS,CADgB;AAEzBC,YAAS;AAFgB,EAA3B;;AAKA,KAAMC,eAAe,CAAC,CAAD,EAAI,CAAJ,CAArB;;AAEA,KAAMC,aAAa;AACjBC,eAAY;AACVC,aAAQ,CAAC,IAAD,EAAO,IAAP,CADE;AAEVC,eAAUP,kBAFA;AAGVQ,aAAQ,CAAC,CAAD,EAAI,CAAC,CAAL,CAHE;AAIVL;AAJU,IADK;AAOjBM,gBAAa;AACXH,aAAQ,CAAC,IAAD,EAAO,IAAP,CADG;AAEXC,eAAUP,kBAFC;AAGXQ,aAAQ,CAAC,CAAD,EAAI,CAAC,CAAL,CAHG;AAIXL;AAJW,IAPI;AAajBO,aAAU;AACRJ,aAAQ,CAAC,IAAD,EAAO,IAAP,CADA;AAERC,eAAUP,kBAFF;AAGRQ,aAAQ,CAAC,CAAD,EAAI,CAAJ,CAHA;AAIRL;AAJQ,IAbO;AAmBjBQ,YAAS;AACPL,aAAQ,CAAC,IAAD,EAAO,IAAP,CADD;AAEPC,eAAUP,kBAFH;AAGPQ,aAAQ,CAAC,CAAD,EAAI,CAAJ,CAHD;AAIPL;AAJO;AAnBQ,EAAnB;;mBA2BeC,U;;;;;;;;;;;;;AClCf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8B","file":"common.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId])\n \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tvar _m = moreModules[moduleId];\n\n \t\t\t\t// Check if module is deduplicated\n \t\t\t\tswitch(typeof _m) {\n \t\t\t\tcase \"object\":\n \t\t\t\t\t// Module can be created from a template\n \t\t\t\t\tmodules[moduleId] = (function(_m) {\n \t\t\t\t\t\tvar args = _m.slice(1), templateId = _m[0];\n \t\t\t\t\t\treturn function (a,b,c) {\n \t\t\t\t\t\t\tmodules[templateId].apply(this, [a,b,c].concat(args));\n \t\t\t\t\t\t};\n \t\t\t\t\t}(_m));\n \t\t\t\t\tbreak;\n \t\t\t\tcase \"function\":\n \t\t\t\t\t// Normal module\n \t\t\t\t\tmodules[moduleId] = _m;\n \t\t\t\t\tbreak;\n \t\t\t\tdefault:\n \t\t\t\t\t// Module is a copy of another module\n \t\t\t\t\tmodules[moduleId] = modules[_m];\n \t\t\t\t\tbreak;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n \t\twhile(callbacks.length)\n \t\t\tcallbacks.shift().call(null, __webpack_require__);\n \t\tif(moreModules[0]) {\n \t\t\tinstalledModules[0] = 0;\n \t\t\treturn __webpack_require__(0);\n \t\t}\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// \"0\" means \"already loaded\"\n \t// Array means \"loading\", array contains callbacks\n \tvar installedChunks = {\n \t\t7:0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n \t\t// \"0\" is the signal for \"already loaded\"\n \t\tif(installedChunks[chunkId] === 0)\n \t\t\treturn callback.call(null, __webpack_require__);\n\n \t\t// an array means \"currently loading\".\n \t\tif(installedChunks[chunkId] !== undefined) {\n \t\t\tinstalledChunks[chunkId].push(callback);\n \t\t} else {\n \t\t\t// start chunk loading\n \t\t\tinstalledChunks[chunkId] = [callback];\n \t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\tvar script = document.createElement('script');\n \t\t\tscript.type = 'text/javascript';\n \t\t\tscript.charset = 'utf-8';\n \t\t\tscript.async = true;\n\n \t\t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + ({\"0\":\"12hours\",\"1\":\"disabled\",\"2\":\"format\",\"3\":\"hidden\",\"4\":\"open\",\"5\":\"pick-time\",\"6\":\"value-and-defaultValue\"}[chunkId]||chunkId) + \".js\";\n \t\t\thead.appendChild(script);\n \t\t}\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap ea395229a7236d550efd","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/index.less\n// module id = 2\n// module chunks = 7","'use strict';\n\nmodule.exports = require('./lib/React');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/react.js\n// module id = 3\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactChildren = require('./ReactChildren');\nvar ReactComponent = require('./ReactComponent');\nvar ReactPureComponent = require('./ReactPureComponent');\nvar ReactClass = require('./ReactClass');\nvar ReactDOMFactories = require('./ReactDOMFactories');\nvar ReactElement = require('./ReactElement');\nvar ReactPropTypes = require('./ReactPropTypes');\nvar ReactVersion = require('./ReactVersion');\n\nvar onlyChild = require('./onlyChild');\nvar warning = require('fbjs/lib/warning');\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (process.env.NODE_ENV !== 'production') {\n var canDefineProperty = require('./canDefineProperty');\n var ReactElementValidator = require('./ReactElementValidator');\n var didWarnPropTypesDeprecated = false;\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar __spread = _assign;\n\nif (process.env.NODE_ENV !== 'production') {\n var warned = false;\n __spread = function () {\n process.env.NODE_ENV !== 'production' ? warning(warned, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.') : void 0;\n warned = true;\n return _assign.apply(null, arguments);\n };\n}\n\nvar React = {\n\n // Modern\n\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n toArray: ReactChildren.toArray,\n only: onlyChild\n },\n\n Component: ReactComponent,\n PureComponent: ReactPureComponent,\n\n createElement: createElement,\n cloneElement: cloneElement,\n isValidElement: ReactElement.isValidElement,\n\n // Classic\n\n PropTypes: ReactPropTypes,\n createClass: ReactClass.createClass,\n createFactory: createFactory,\n createMixin: function (mixin) {\n // Currently a noop. Will be used to validate and trace mixins.\n return mixin;\n },\n\n // This looks DOM specific but these are actually isomorphic helpers\n // since they are just generating DOM strings.\n DOM: ReactDOMFactories,\n\n version: ReactVersion,\n\n // Deprecated hook for JSX spread, don't use this for anything.\n __spread: __spread\n};\n\n// TODO: Fix tests so that this deprecation warning doesn't cause failures.\nif (process.env.NODE_ENV !== 'production') {\n if (canDefineProperty) {\n Object.defineProperty(React, 'PropTypes', {\n get: function () {\n process.env.NODE_ENV !== 'production' ? warning(didWarnPropTypesDeprecated, 'Accessing PropTypes via the main React package is deprecated. Use ' + 'the prop-types package from npm instead.') : void 0;\n didWarnPropTypesDeprecated = true;\n return ReactPropTypes;\n }\n });\n }\n}\n\nmodule.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/React.js\n// module id = 4\n// module chunks = 7","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._process@0.11.9@process/browser.js\n// module id = 5\n// module chunks = 7","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._object-assign@4.1.1@object-assign/index.js\n// module id = 6\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar PooledClass = require('./PooledClass');\nvar ReactElement = require('./ReactElement');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar traverseAllChildren = require('./traverseAllChildren');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.func = forEachFunction;\n this.context = forEachContext;\n this.count = 0;\n}\nForEachBookKeeping.prototype.destructor = function () {\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n this.result = mapResult;\n this.keyPrefix = keyPrefix;\n this.func = mapFunction;\n this.context = mapContext;\n this.count = 0;\n}\nMapBookKeeping.prototype.destructor = function () {\n this.result = null;\n this.keyPrefix = null;\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (ReactElement.isValidElement(mappedChild)) {\n mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n count: countChildren,\n toArray: toArray\n};\n\nmodule.exports = ReactChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/ReactChildren.js\n// module id = 7\n// module chunks = 7","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n'use strict';\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/reactProdInvariant.js\n// module id = 9\n// module chunks = 7","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/invariant.js\n// module id = 10\n// module chunks = 7","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar warning = require('fbjs/lib/warning');\nvar canDefineProperty = require('./canDefineProperty');\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\n\nvar specialPropKeyWarningShown, specialPropRefWarningShown;\n\nfunction hasValidRef(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allow us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n if (canDefineProperty) {\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n // self and source are DEV only properties.\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n });\n // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n } else {\n element._store.validated = false;\n element._self = self;\n element._source = source;\n }\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement\n */\nReactElement.createElement = function (type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n if (process.env.NODE_ENV !== 'production') {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (key || ref) {\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n};\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory\n */\nReactElement.createFactory = function (type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. `<Foo />.type === Foo`.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n return newElement;\n};\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement\n */\nReactElement.cloneElement = function (element, config, children) {\n var propName;\n\n // Original props are copied\n var props = _assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n // Self is preserved since the owner is preserved.\n var self = element._self;\n // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n // Remaining properties override existing props\n var defaultProps;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n};\n\n/**\n * Verifies the object is a ReactElement.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function (object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n};\n\nmodule.exports = ReactElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/ReactElement.js\n// module id = 11\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/ReactCurrentOwner.js\n// module id = 12\n// module chunks = 7","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n (function () {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n })();\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/warning.js\n// module id = 13\n// module chunks = 7","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/emptyFunction.js\n// module id = 14\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar canDefineProperty = false;\nif (process.env.NODE_ENV !== 'production') {\n try {\n // $FlowFixMe https://github.com/facebook/flow/issues/285\n Object.defineProperty({}, 'x', { get: function () {} });\n canDefineProperty = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\nmodule.exports = canDefineProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/canDefineProperty.js\n// module id = 15\n// module chunks = 7","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/ReactElementSymbol.js\n// module id = 16\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/traverseAllChildren.js\n// module id = 17\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/getIteratorFn.js\n// module id = 18\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/KeyEscapeUtils.js\n// module id = 19\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar canDefineProperty = require('./canDefineProperty');\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nReactComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function (partialState, callback) {\n !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;\n this.updater.enqueueSetState(this, partialState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'setState');\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'forceUpdate');\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (process.env.NODE_ENV !== 'production') {\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function (methodName, info) {\n if (canDefineProperty) {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function () {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0;\n return undefined;\n }\n });\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nmodule.exports = ReactComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/ReactComponent.js\n// module id = 20\n// module chunks = 7","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback) {},\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nmodule.exports = ReactNoopUpdateQueue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/ReactNoopUpdateQueue.js\n// module id = 21\n// module chunks = 7","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/emptyObject.js\n// module id = 22\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactComponent = require('./ReactComponent');\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactPureComponent(props, context, updater) {\n // Duplicated from ReactComponent.\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = ReactComponent.prototype;\nReactPureComponent.prototype = new ComponentDummy();\nReactPureComponent.prototype.constructor = ReactPureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(ReactPureComponent.prototype, ReactComponent.prototype);\nReactPureComponent.prototype.isPureReactComponent = true;\n\nmodule.exports = ReactPureComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/ReactPureComponent.js\n// module id = 23\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactComponent = require('./ReactComponent');\nvar ReactElement = require('./ReactElement');\nvar ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\n/**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n\nvar injectedMixins = [];\n\n/**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\nvar ReactClassInterface = {\n\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n\n};\n\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\nvar RESERVED_SPEC_KEYS = {\n displayName: function (Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function (Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function (Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);\n },\n contextTypes: function (Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function (Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function (Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function (Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function () {} };\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an invariant so components\n // don't show up in prod but only in __DEV__\n process.env.NODE_ENV !== 'production' ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0;\n }\n }\n}\n\nfunction validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n !(specPolicy === 'OVERRIDE_BASE') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0;\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0;\n }\n}\n\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\nfunction mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n process.env.NODE_ENV !== 'production' ? warning(isMixinValid, '%s: You\\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0;\n }\n\n return;\n }\n\n !(typeof spec !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0;\n !!ReactElement.isValidElement(spec) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0;\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0;\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n !!isReserved ? process.env.NODE_ENV !== 'production' ? invariant(false, '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.', name) : _prodInvariant('78', name) : void 0;\n\n var isInherited = name in Constructor;\n !!isInherited ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0;\n Constructor[name] = property;\n }\n}\n\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\nfunction mergeIntoWithNoDuplicateKeys(one, two) {\n !(one && two && typeof one === 'object' && typeof two === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0;\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n !(one[key] === undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, '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.', key) : _prodInvariant('81', key) : void 0;\n one[key] = two[key];\n }\n }\n return one;\n}\n\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n}\n\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n}\n\n/**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\nfunction bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function (newThis) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0;\n } else if (!args.length) {\n process.env.NODE_ENV !== 'production' ? warning(false, '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', componentName) : void 0;\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n}\n\n/**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\nfunction bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n}\n\n/**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\nvar ReactClassMixin = {\n\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function (newState, callback) {\n this.updater.enqueueReplaceState(this, newState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'replaceState');\n }\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function () {\n return this.updater.isMounted(this);\n }\n};\n\nvar ReactClassComponent = function () {};\n_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);\n\nvar didWarnDeprecated = false;\n\n/**\n * Module for creating composite components.\n *\n * @class ReactClass\n */\nvar ReactClass = {\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n createClass: function (spec) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(didWarnDeprecated, '%s: React.createClass is deprecated and will be removed in version 16. ' + 'Use plain JavaScript classes instead. If you\\'re not yet ready to ' + 'migrate, create-react-class is available on npm as a ' + 'drop-in replacement.', spec && spec.displayName || 'A Component') : void 0;\n didWarnDeprecated = true;\n }\n\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function (props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0;\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (initialState === undefined && this.getInitialState._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0;\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, spec);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n !Constructor.prototype.render ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0;\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n },\n\n injection: {\n injectMixin: function (mixin) {\n injectedMixins.push(mixin);\n }\n }\n\n};\n\nmodule.exports = ReactClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/ReactClass.js\n// module id = 24\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypeLocationNames = {};\n\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n}\n\nmodule.exports = ReactPropTypeLocationNames;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/ReactPropTypeLocationNames.js\n// module id = 25\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactElement = require('./ReactElement');\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @private\n */\nvar createDOMFactory = ReactElement.createFactory;\nif (process.env.NODE_ENV !== 'production') {\n var ReactElementValidator = require('./ReactElementValidator');\n createDOMFactory = ReactElementValidator.createFactory;\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n * This is also accessible via `React.DOM`.\n *\n * @public\n */\nvar ReactDOMFactories = {\n a: createDOMFactory('a'),\n abbr: createDOMFactory('abbr'),\n address: createDOMFactory('address'),\n area: createDOMFactory('area'),\n article: createDOMFactory('article'),\n aside: createDOMFactory('aside'),\n audio: createDOMFactory('audio'),\n b: createDOMFactory('b'),\n base: createDOMFactory('base'),\n bdi: createDOMFactory('bdi'),\n bdo: createDOMFactory('bdo'),\n big: createDOMFactory('big'),\n blockquote: createDOMFactory('blockquote'),\n body: createDOMFactory('body'),\n br: createDOMFactory('br'),\n button: createDOMFactory('button'),\n canvas: createDOMFactory('canvas'),\n caption: createDOMFactory('caption'),\n cite: createDOMFactory('cite'),\n code: createDOMFactory('code'),\n col: createDOMFactory('col'),\n colgroup: createDOMFactory('colgroup'),\n data: createDOMFactory('data'),\n datalist: createDOMFactory('datalist'),\n dd: createDOMFactory('dd'),\n del: createDOMFactory('del'),\n details: createDOMFactory('details'),\n dfn: createDOMFactory('dfn'),\n dialog: createDOMFactory('dialog'),\n div: createDOMFactory('div'),\n dl: createDOMFactory('dl'),\n dt: createDOMFactory('dt'),\n em: createDOMFactory('em'),\n embed: createDOMFactory('embed'),\n fieldset: createDOMFactory('fieldset'),\n figcaption: createDOMFactory('figcaption'),\n figure: createDOMFactory('figure'),\n footer: createDOMFactory('footer'),\n form: createDOMFactory('form'),\n h1: createDOMFactory('h1'),\n h2: createDOMFactory('h2'),\n h3: createDOMFactory('h3'),\n h4: createDOMFactory('h4'),\n h5: createDOMFactory('h5'),\n h6: createDOMFactory('h6'),\n head: createDOMFactory('head'),\n header: createDOMFactory('header'),\n hgroup: createDOMFactory('hgroup'),\n hr: createDOMFactory('hr'),\n html: createDOMFactory('html'),\n i: createDOMFactory('i'),\n iframe: createDOMFactory('iframe'),\n img: createDOMFactory('img'),\n input: createDOMFactory('input'),\n ins: createDOMFactory('ins'),\n kbd: createDOMFactory('kbd'),\n keygen: createDOMFactory('keygen'),\n label: createDOMFactory('label'),\n legend: createDOMFactory('legend'),\n li: createDOMFactory('li'),\n link: createDOMFactory('link'),\n main: createDOMFactory('main'),\n map: createDOMFactory('map'),\n mark: createDOMFactory('mark'),\n menu: createDOMFactory('menu'),\n menuitem: createDOMFactory('menuitem'),\n meta: createDOMFactory('meta'),\n meter: createDOMFactory('meter'),\n nav: createDOMFactory('nav'),\n noscript: createDOMFactory('noscript'),\n object: createDOMFactory('object'),\n ol: createDOMFactory('ol'),\n optgroup: createDOMFactory('optgroup'),\n option: createDOMFactory('option'),\n output: createDOMFactory('output'),\n p: createDOMFactory('p'),\n param: createDOMFactory('param'),\n picture: createDOMFactory('picture'),\n pre: createDOMFactory('pre'),\n progress: createDOMFactory('progress'),\n q: createDOMFactory('q'),\n rp: createDOMFactory('rp'),\n rt: createDOMFactory('rt'),\n ruby: createDOMFactory('ruby'),\n s: createDOMFactory('s'),\n samp: createDOMFactory('samp'),\n script: createDOMFactory('script'),\n section: createDOMFactory('section'),\n select: createDOMFactory('select'),\n small: createDOMFactory('small'),\n source: createDOMFactory('source'),\n span: createDOMFactory('span'),\n strong: createDOMFactory('strong'),\n style: createDOMFactory('style'),\n sub: createDOMFactory('sub'),\n summary: createDOMFactory('summary'),\n sup: createDOMFactory('sup'),\n table: createDOMFactory('table'),\n tbody: createDOMFactory('tbody'),\n td: createDOMFactory('td'),\n textarea: createDOMFactory('textarea'),\n tfoot: createDOMFactory('tfoot'),\n th: createDOMFactory('th'),\n thead: createDOMFactory('thead'),\n time: createDOMFactory('time'),\n title: createDOMFactory('title'),\n tr: createDOMFactory('tr'),\n track: createDOMFactory('track'),\n u: createDOMFactory('u'),\n ul: createDOMFactory('ul'),\n 'var': createDOMFactory('var'),\n video: createDOMFactory('video'),\n wbr: createDOMFactory('wbr'),\n\n // SVG\n circle: createDOMFactory('circle'),\n clipPath: createDOMFactory('clipPath'),\n defs: createDOMFactory('defs'),\n ellipse: createDOMFactory('ellipse'),\n g: createDOMFactory('g'),\n image: createDOMFactory('image'),\n line: createDOMFactory('line'),\n linearGradient: createDOMFactory('linearGradient'),\n mask: createDOMFactory('mask'),\n path: createDOMFactory('path'),\n pattern: createDOMFactory('pattern'),\n polygon: createDOMFactory('polygon'),\n polyline: createDOMFactory('polyline'),\n radialGradient: createDOMFactory('radialGradient'),\n rect: createDOMFactory('rect'),\n stop: createDOMFactory('stop'),\n svg: createDOMFactory('svg'),\n text: createDOMFactory('text'),\n tspan: createDOMFactory('tspan')\n};\n\nmodule.exports = ReactDOMFactories;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/ReactDOMFactories.js\n// module id = 26\n// module chunks = 7","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/**\n * ReactElementValidator provides a wrapper around a element factory\n * which validates the props passed to the element. This is intended to be\n * used only in DEV and could be replaced by a static type checker for languages\n * that support it.\n */\n\n'use strict';\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\nvar ReactComponentTreeHook = require('./ReactComponentTreeHook');\nvar ReactElement = require('./ReactElement');\n\nvar checkReactTypeSpec = require('./checkReactTypeSpec');\n\nvar canDefineProperty = require('./canDefineProperty');\nvar getIteratorFn = require('./getIteratorFn');\nvar warning = require('fbjs/lib/warning');\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nfunction getSourceInfoErrorAddendum(elementProps) {\n if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) {\n var source = elementProps.__source;\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return ' Check your code at ' + fileName + ':' + lineNumber + '.';\n }\n return '';\n}\n\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n if (parentName) {\n info = ' Check the top-level render call using <' + parentName + '>.';\n }\n }\n return info;\n}\n\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n element._store.validated = true;\n\n var memoizer = ownerHasKeyUseWarning.uniqueKey || (ownerHasKeyUseWarning.uniqueKey = {});\n\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n if (memoizer[currentComponentErrorInfo]) {\n return;\n }\n memoizer[currentComponentErrorInfo] = true;\n\n // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n var childOwner = '';\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = ' It was passed a child from ' + element._owner.getName() + '.';\n }\n\n process.env.NODE_ENV !== 'production' ? warning(false, 'Each child in an array or iterator should have a unique \"key\" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, ReactComponentTreeHook.getCurrentStackAddendum(element)) : void 0;\n}\n\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\nfunction validateChildKeys(node, parentType) {\n if (typeof node !== 'object') {\n return;\n }\n if (Array.isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n if (ReactElement.isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (ReactElement.isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n // Entry iterators provide implicit keys.\n if (iteratorFn) {\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n while (!(step = iterator.next()).done) {\n if (ReactElement.isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\nfunction validatePropTypes(element) {\n var componentClass = element.type;\n if (typeof componentClass !== 'function') {\n return;\n }\n var name = componentClass.displayName || componentClass.name;\n if (componentClass.propTypes) {\n checkReactTypeSpec(componentClass.propTypes, element.props, 'prop', name, element, null);\n }\n if (typeof componentClass.getDefaultProps === 'function') {\n process.env.NODE_ENV !== 'production' ? warning(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0;\n }\n}\n\nvar ReactElementValidator = {\n\n createElement: function (type, props, children) {\n var validType = typeof type === 'string' || typeof type === 'function';\n // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n if (!validType) {\n if (typeof type !== 'function' && typeof type !== 'string') {\n var info = '';\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + 'it\\'s defined in.';\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(props);\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n info += ReactComponentTreeHook.getCurrentStackAddendum();\n\n process.env.NODE_ENV !== 'production' ? warning(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', type == null ? type : typeof type, info) : void 0;\n }\n }\n\n var element = ReactElement.createElement.apply(this, arguments);\n\n // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n if (element == null) {\n return element;\n }\n\n // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n validatePropTypes(element);\n\n return element;\n },\n\n createFactory: function (type) {\n var validatedFactory = ReactElementValidator.createElement.bind(null, type);\n // Legacy hook TODO: Warn if this is accessed\n validatedFactory.type = type;\n\n if (process.env.NODE_ENV !== 'production') {\n if (canDefineProperty) {\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function () {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.') : void 0;\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n }\n\n return validatedFactory;\n },\n\n cloneElement: function (element, props, children) {\n var newElement = ReactElement.cloneElement.apply(this, arguments);\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n validatePropTypes(newElement);\n return newElement;\n }\n\n};\n\nmodule.exports = ReactElementValidator;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/ReactElementValidator.js\n// module id = 27\n// module chunks = 7","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction isNative(fn) {\n // Based on isNative() from Lodash\n var funcToString = Function.prototype.toString;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var reIsNative = RegExp('^' + funcToString\n // Take an example native function source for comparison\n .call(hasOwnProperty)\n // Strip regex characters so we can use it for regex\n .replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n // Remove hasOwnProperty from the template to make it generic\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n try {\n var source = funcToString.call(fn);\n return reIsNative.test(source);\n } catch (err) {\n return false;\n }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === 'function' &&\n// Map\ntypeof Map === 'function' && isNative(Map) &&\n// Map.prototype.keys\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n// Set\ntypeof Set === 'function' && isNative(Set) &&\n// Set.prototype.keys\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n var itemMap = new Map();\n var rootIDSet = new Set();\n\n setItem = function (id, item) {\n itemMap.set(id, item);\n };\n getItem = function (id) {\n return itemMap.get(id);\n };\n removeItem = function (id) {\n itemMap['delete'](id);\n };\n getItemIDs = function () {\n return Array.from(itemMap.keys());\n };\n\n addRoot = function (id) {\n rootIDSet.add(id);\n };\n removeRoot = function (id) {\n rootIDSet['delete'](id);\n };\n getRootIDs = function () {\n return Array.from(rootIDSet.keys());\n };\n} else {\n var itemByKey = {};\n var rootByKey = {};\n\n // Use non-numeric keys to prevent V8 performance issues:\n // https://github.com/facebook/react/pull/7232\n var getKeyFromID = function (id) {\n return '.' + id;\n };\n var getIDFromKey = function (key) {\n return parseInt(key.substr(1), 10);\n };\n\n setItem = function (id, item) {\n var key = getKeyFromID(id);\n itemByKey[key] = item;\n };\n getItem = function (id) {\n var key = getKeyFromID(id);\n return itemByKey[key];\n };\n removeItem = function (id) {\n var key = getKeyFromID(id);\n delete itemByKey[key];\n };\n getItemIDs = function () {\n return Object.keys(itemByKey).map(getIDFromKey);\n };\n\n addRoot = function (id) {\n var key = getKeyFromID(id);\n rootByKey[key] = true;\n };\n removeRoot = function (id) {\n var key = getKeyFromID(id);\n delete rootByKey[key];\n };\n getRootIDs = function () {\n return Object.keys(rootByKey).map(getIDFromKey);\n };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n var item = getItem(id);\n if (item) {\n var childIDs = item.childIDs;\n\n removeItem(id);\n childIDs.forEach(purgeDeep);\n }\n}\n\nfunction describeComponentFrame(name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n}\n\nfunction getDisplayName(element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n}\n\nfunction describeID(id) {\n var name = ReactComponentTreeHook.getDisplayName(id);\n var element = ReactComponentTreeHook.getElement(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName;\n if (ownerID) {\n ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n }\n process.env.NODE_ENV !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\n return describeComponentFrame(name, element && element._source, ownerName);\n}\n\nvar ReactComponentTreeHook = {\n onSetChildren: function (id, nextChildIDs) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.childIDs = nextChildIDs;\n\n for (var i = 0; i < nextChildIDs.length; i++) {\n var nextChildID = nextChildIDs[i];\n var nextChild = getItem(nextChildID);\n !nextChild ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\n !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\n !nextChild.isMounted ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\n if (nextChild.parentID == null) {\n nextChild.parentID = id;\n // TODO: This shouldn't be necessary but mounting a new root during in\n // componentWillMount currently causes not-yet-mounted components to\n // be purged from our tree data so their parent id is missing.\n }\n !(nextChild.parentID === id) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\n }\n },\n onBeforeMountComponent: function (id, element, parentID) {\n var item = {\n element: element,\n parentID: parentID,\n text: null,\n childIDs: [],\n isMounted: false,\n updateCount: 0\n };\n setItem(id, item);\n },\n onBeforeUpdateComponent: function (id, element) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.element = element;\n },\n onMountComponent: function (id) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.isMounted = true;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n addRoot(id);\n }\n },\n onUpdateComponent: function (id) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.updateCount++;\n },\n onUnmountComponent: function (id) {\n var item = getItem(id);\n if (item) {\n // We need to check if it exists.\n // `item` might not exist if it is inside an error boundary, and a sibling\n // error boundary child threw while mounting. Then this instance never\n // got a chance to mount, but it still gets an unmounting event during\n // the error boundary cleanup.\n item.isMounted = false;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n removeRoot(id);\n }\n }\n unmountedIDs.push(id);\n },\n purgeUnmountedComponents: function () {\n if (ReactComponentTreeHook._preventPurging) {\n // Should only be used for testing.\n return;\n }\n\n for (var i = 0; i < unmountedIDs.length; i++) {\n var id = unmountedIDs[i];\n purgeDeep(id);\n }\n unmountedIDs.length = 0;\n },\n isMounted: function (id) {\n var item = getItem(id);\n return item ? item.isMounted : false;\n },\n getCurrentStackAddendum: function (topElement) {\n var info = '';\n if (topElement) {\n var name = getDisplayName(topElement);\n var owner = topElement._owner;\n info += describeComponentFrame(name, topElement._source, owner && owner.getName());\n }\n\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n info += ReactComponentTreeHook.getStackAddendumByID(id);\n return info;\n },\n getStackAddendumByID: function (id) {\n var info = '';\n while (id) {\n info += describeID(id);\n id = ReactComponentTreeHook.getParentID(id);\n }\n return info;\n },\n getChildIDs: function (id) {\n var item = getItem(id);\n return item ? item.childIDs : [];\n },\n getDisplayName: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element) {\n return null;\n }\n return getDisplayName(element);\n },\n getElement: function (id) {\n var item = getItem(id);\n return item ? item.element : null;\n },\n getOwnerID: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element || !element._owner) {\n return null;\n }\n return element._owner._debugID;\n },\n getParentID: function (id) {\n var item = getItem(id);\n return item ? item.parentID : null;\n },\n getSource: function (id) {\n var item = getItem(id);\n var element = item ? item.element : null;\n var source = element != null ? element._source : null;\n return source;\n },\n getText: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (typeof element === 'string') {\n return element;\n } else if (typeof element === 'number') {\n return '' + element;\n } else {\n return null;\n }\n },\n getUpdateCount: function (id) {\n var item = getItem(id);\n return item ? item.updateCount : 0;\n },\n\n\n getRootIDs: getRootIDs,\n getRegisteredIDs: getItemIDs\n};\n\nmodule.exports = ReactComponentTreeHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/ReactComponentTreeHook.js\n// module id = 28\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');\nvar ReactPropTypesSecret = require('./ReactPropTypesSecret');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('./ReactComponentTreeHook');\n}\n\nvar loggedTypeFailures = {};\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?object} element The React element that is being type-checked\n * @param {?number} debugID The React component instance that is being type-checked\n * @private\n */\nfunction checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n !(typeof typeSpecs[typeSpecName] === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant('84', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : void 0;\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n process.env.NODE_ENV !== 'production' ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0;\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var componentStackInfo = '';\n\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('./ReactComponentTreeHook');\n }\n if (debugID !== null) {\n componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID);\n } else if (element !== null) {\n componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element);\n }\n }\n\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0;\n }\n }\n }\n}\n\nmodule.exports = checkReactTypeSpec;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/checkReactTypeSpec.js\n// module id = 29\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/ReactPropTypesSecret.js\n// module id = 30\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _require = require('./ReactElement'),\n isValidElement = _require.isValidElement;\n\nvar factory = require('prop-types/factory');\n\nmodule.exports = factory(isValidElement);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/ReactPropTypes.js\n// module id = 31\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n// React 15.5 references this module, and assumes PropTypes are still callable in production.\n// Therefore we re-export development-only version with all the PropTypes checks here.\n// However if one is migrating to the `prop-types` npm library, they will go through the\n// `index.js` entry point, and it will branch depending on the environment.\nvar factory = require('./factoryWithTypeCheckers');\nmodule.exports = function(isValidElement) {\n // It is still allowed in 15.5.\n var throwOnDirectAccess = false;\n return factory(isValidElement, throwOnDirectAccess);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._prop-types@15.5.8@prop-types/factory.js\n// module id = 32\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._prop-types@15.5.8@prop-types/factoryWithTypeCheckers.js\n// module id = 33\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._prop-types@15.5.8@prop-types/lib/ReactPropTypesSecret.js\n// module id = 34\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._prop-types@15.5.8@prop-types/checkPropTypes.js\n// module id = 35\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.5.4';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/ReactVersion.js\n// module id = 36\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactElement = require('./ReactElement');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !ReactElement.isValidElement(children) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;\n return children;\n}\n\nmodule.exports = onlyChild;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/onlyChild.js\n// module id = 37\n// module chunks = 7","'use strict';\n\nmodule.exports = require('./lib/ReactDOM');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/index.js\n// module id = 38\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDefaultInjection = require('./ReactDefaultInjection');\nvar ReactMount = require('./ReactMount');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdates = require('./ReactUpdates');\nvar ReactVersion = require('./ReactVersion');\n\nvar findDOMNode = require('./findDOMNode');\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar renderSubtreeIntoContainer = require('./renderSubtreeIntoContainer');\nvar warning = require('fbjs/lib/warning');\n\nReactDefaultInjection.inject();\n\nvar ReactDOM = {\n findDOMNode: findDOMNode,\n render: ReactMount.render,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n version: ReactVersion,\n\n /* eslint-disable camelcase */\n unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n ComponentTree: {\n getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n getNodeFromInstance: function (inst) {\n // inst is an internal instance (but could be a composite)\n if (inst._renderedComponent) {\n inst = getHostComponentFromComposite(inst);\n }\n if (inst) {\n return ReactDOMComponentTree.getNodeFromInstance(inst);\n } else {\n return null;\n }\n }\n },\n Mount: ReactMount,\n Reconciler: ReactReconciler\n });\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n\n // First check if devtools is not installed\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // If we're in Chrome or Firefox, provide a download link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n // Firefox does not have the issue with devtools loaded over file://\n var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;\n console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');\n }\n }\n\n var testFunc = function testFn() {};\n process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, 'It looks like you\\'re using a minified copy of the development build ' + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0;\n\n // If we're in IE8, check to see if we are in compatibility mode and provide\n // information on preventing compatibility mode\n var ieCompatibilityMode = document.documentMode && document.documentMode < 8;\n\n process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />') : void 0;\n\n var expectedFeatures = [\n // shims\n Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;\n break;\n }\n }\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactInstrumentation = require('./ReactInstrumentation');\n var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook');\n var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook');\n var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook');\n\n ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);\n}\n\nmodule.exports = ReactDOM;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOM.js\n// module id = 39\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\n\nvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n\n/**\n * Check if a given node should be cached.\n */\nfunction shouldPrecacheNode(node, nodeID) {\n return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' ';\n}\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n var rendered;\n while (rendered = component._renderedComponent) {\n component = rendered;\n }\n return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n var hostInst = getRenderedHostOrTextFromComponent(inst);\n hostInst._hostNode = node;\n node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n var node = inst._hostNode;\n if (node) {\n delete node[internalInstanceKey];\n inst._hostNode = null;\n }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n if (inst._flags & Flags.hasCachedChildNodes) {\n return;\n }\n var children = inst._renderedChildren;\n var childNode = node.firstChild;\n outer: for (var name in children) {\n if (!children.hasOwnProperty(name)) {\n continue;\n }\n var childInst = children[name];\n var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n if (childID === 0) {\n // We're currently unmounting this child in ReactMultiChild; skip it.\n continue;\n }\n // We assume the child nodes are in the same order as the child instances.\n for (; childNode !== null; childNode = childNode.nextSibling) {\n if (shouldPrecacheNode(childNode, childID)) {\n precacheNode(childInst, childNode);\n continue outer;\n }\n }\n // We reached the end of the DOM children without finding an ID match.\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;\n }\n inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n if (node[internalInstanceKey]) {\n return node[internalInstanceKey];\n }\n\n // Walk up the tree until we find an ancestor whose instance we have cached.\n var parents = [];\n while (!node[internalInstanceKey]) {\n parents.push(node);\n if (node.parentNode) {\n node = node.parentNode;\n } else {\n // Top of the tree. This node must not be part of a React tree (or is\n // unmounted, potentially).\n return null;\n }\n }\n\n var closest;\n var inst;\n for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n closest = inst;\n if (parents.length) {\n precacheChildNodes(inst, node);\n }\n }\n\n return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n var inst = getClosestInstanceFromNode(node);\n if (inst != null && inst._hostNode === node) {\n return inst;\n } else {\n return null;\n }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n !(inst._hostNode !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n if (inst._hostNode) {\n return inst._hostNode;\n }\n\n // Walk up the tree until we find an ancestor whose DOM node we have cached.\n var parents = [];\n while (!inst._hostNode) {\n parents.push(inst);\n !inst._hostParent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;\n inst = inst._hostParent;\n }\n\n // Now parents contains each ancestor that does *not* have a cached native\n // node, and `inst` is the deepest ancestor that does.\n for (; parents.length; inst = parents.pop()) {\n precacheChildNodes(inst, inst._hostNode);\n }\n\n return inst._hostNode;\n}\n\nvar ReactDOMComponentTree = {\n getClosestInstanceFromNode: getClosestInstanceFromNode,\n getInstanceFromNode: getInstanceFromNode,\n getNodeFromInstance: getNodeFromInstance,\n precacheChildNodes: precacheChildNodes,\n precacheNode: precacheNode,\n uncacheNode: uncacheNode\n};\n\nmodule.exports = ReactDOMComponentTree;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMComponentTree.js\n// module id = 40\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_PROPERTY: 0x1,\n HAS_BOOLEAN_VALUE: 0x4,\n HAS_NUMERIC_VALUE: 0x8,\n HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n * attribute namespace URL. (Attribute names not specified use no namespace.)\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function (domPropertyConfig) {\n var Injection = DOMPropertyInjection;\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);\n }\n\n for (var propName in Properties) {\n !!DOMProperty.properties.hasOwnProperty(propName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property \\'%s\\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : _prodInvariant('48', propName) : void 0;\n\n var lowerCased = propName.toLowerCase();\n var propConfig = Properties[propName];\n\n var propertyInfo = {\n attributeName: lowerCased,\n attributeNamespace: null,\n propertyName: propName,\n mutationMethod: null,\n\n mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)\n };\n !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n }\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n propertyInfo.attributeName = attributeName;\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n }\n }\n\n if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n }\n\n if (DOMPropertyNames.hasOwnProperty(propName)) {\n propertyInfo.propertyName = DOMPropertyNames[propName];\n }\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n propertyInfo.mutationMethod = DOMMutationMethods[propName];\n }\n\n DOMProperty.properties[propName] = propertyInfo;\n }\n }\n};\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\n/* eslint-enable max-len */\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n\n ID_ATTRIBUTE_NAME: 'data-reactid',\n ROOT_ATTRIBUTE_NAME: 'data-reactroot',\n\n ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040',\n\n /**\n * Map from property \"standard name\" to an object with info about how to set\n * the property in the DOM. Each object contains:\n *\n * attributeName:\n * Used when rendering markup or with `*Attribute()`.\n * attributeNamespace\n * propertyName:\n * Used on DOM node instances. (This includes properties that mutate due to\n * external factors.)\n * mutationMethod:\n * If non-null, used instead of the property or `setAttribute()` after\n * initial render.\n * mustUseProperty:\n * Whether the property must be accessed and mutated as an object property.\n * hasBooleanValue:\n * Whether the property should be removed when set to a falsey value.\n * hasNumericValue:\n * Whether the property must be numeric or parse as a numeric and should be\n * removed when set to a falsey value.\n * hasPositiveNumericValue:\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * hasOverloadedBooleanValue:\n * Whether the property can be used as a flag as well as with a value.\n * Removed when strictly equal to false; present without a value when\n * strictly equal to true; present with a value otherwise.\n */\n properties: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties. Available only in __DEV__.\n *\n * autofocus is predefined, because adding it to the property whitelist\n * causes unintended side effects.\n *\n * @type {Object}\n */\n getPossibleStandardName: process.env.NODE_ENV !== 'production' ? { autofocus: 'autoFocus' } : null,\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function (attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/DOMProperty.js\n// module id = 42\n// module chunks = 7","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentFlags = {\n hasCachedChildNodes: 1 << 0\n};\n\nmodule.exports = ReactDOMComponentFlags;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMComponentFlags.js\n// module id = 43\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = require('./ARIADOMPropertyConfig');\nvar BeforeInputEventPlugin = require('./BeforeInputEventPlugin');\nvar ChangeEventPlugin = require('./ChangeEventPlugin');\nvar DefaultEventPluginOrder = require('./DefaultEventPluginOrder');\nvar EnterLeaveEventPlugin = require('./EnterLeaveEventPlugin');\nvar HTMLDOMPropertyConfig = require('./HTMLDOMPropertyConfig');\nvar ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment');\nvar ReactDOMComponent = require('./ReactDOMComponent');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMEmptyComponent = require('./ReactDOMEmptyComponent');\nvar ReactDOMTreeTraversal = require('./ReactDOMTreeTraversal');\nvar ReactDOMTextComponent = require('./ReactDOMTextComponent');\nvar ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');\nvar ReactEventListener = require('./ReactEventListener');\nvar ReactInjection = require('./ReactInjection');\nvar ReactReconcileTransaction = require('./ReactReconcileTransaction');\nvar SVGDOMPropertyConfig = require('./SVGDOMPropertyConfig');\nvar SelectEventPlugin = require('./SelectEventPlugin');\nvar SimpleEventPlugin = require('./SimpleEventPlugin');\n\nvar alreadyInjected = false;\n\nfunction inject() {\n if (alreadyInjected) {\n // TODO: This is currently true because these injections are shared between\n // the client and the server package. They should be built independently\n // and not share any injection state. Then this problem will be solved.\n return;\n }\n alreadyInjected = true;\n\n ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n\n /**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\n ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n ReactInjection.EventPluginHub.injectEventPluginsByName({\n SimpleEventPlugin: SimpleEventPlugin,\n EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n ChangeEventPlugin: ChangeEventPlugin,\n SelectEventPlugin: SelectEventPlugin,\n BeforeInputEventPlugin: BeforeInputEventPlugin\n });\n\n ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);\n\n ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);\n\n ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n return new ReactDOMEmptyComponent(instantiate);\n });\n\n ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n\n ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n}\n\nmodule.exports = {\n inject: inject\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDefaultInjection.js\n// module id = 44\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = {\n Properties: {\n // Global States and Properties\n 'aria-current': 0, // state\n 'aria-details': 0,\n 'aria-disabled': 0, // state\n 'aria-hidden': 0, // state\n 'aria-invalid': 0, // state\n 'aria-keyshortcuts': 0,\n 'aria-label': 0,\n 'aria-roledescription': 0,\n // Widget Attributes\n 'aria-autocomplete': 0,\n 'aria-checked': 0,\n 'aria-expanded': 0,\n 'aria-haspopup': 0,\n 'aria-level': 0,\n 'aria-modal': 0,\n 'aria-multiline': 0,\n 'aria-multiselectable': 0,\n 'aria-orientation': 0,\n 'aria-placeholder': 0,\n 'aria-pressed': 0,\n 'aria-readonly': 0,\n 'aria-required': 0,\n 'aria-selected': 0,\n 'aria-sort': 0,\n 'aria-valuemax': 0,\n 'aria-valuemin': 0,\n 'aria-valuenow': 0,\n 'aria-valuetext': 0,\n // Live Region Attributes\n 'aria-atomic': 0,\n 'aria-busy': 0,\n 'aria-live': 0,\n 'aria-relevant': 0,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': 0,\n 'aria-grabbed': 0,\n // Relationship Attributes\n 'aria-activedescendant': 0,\n 'aria-colcount': 0,\n 'aria-colindex': 0,\n 'aria-colspan': 0,\n 'aria-controls': 0,\n 'aria-describedby': 0,\n 'aria-errormessage': 0,\n 'aria-flowto': 0,\n 'aria-labelledby': 0,\n 'aria-owns': 0,\n 'aria-posinset': 0,\n 'aria-rowcount': 0,\n 'aria-rowindex': 0,\n 'aria-rowspan': 0,\n 'aria-setsize': 0\n },\n DOMAttributeNames: {},\n DOMPropertyNames: {}\n};\n\nmodule.exports = ARIADOMPropertyConfig;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ARIADOMPropertyConfig.js\n// module id = 45\n// module chunks = 7","/**\n * Copyright 2013-present Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar FallbackCompositionState = require('./FallbackCompositionState');\nvar SyntheticCompositionEvent = require('./SyntheticCompositionEvent');\nvar SyntheticInputEvent = require('./SyntheticInputEvent');\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: 'onBeforeInput',\n captured: 'onBeforeInputCapture'\n },\n dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionEnd',\n captured: 'onCompositionEndCapture'\n },\n dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionStart',\n captured: 'onCompositionStartCapture'\n },\n dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionUpdate',\n captured: 'onCompositionUpdateCapture'\n },\n dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case 'topCompositionStart':\n return eventTypes.compositionStart;\n case 'topCompositionEnd':\n return eventTypes.compositionEnd;\n case 'topCompositionUpdate':\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topKeyUp':\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n case 'topKeyDown':\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n case 'topKeyPress':\n case 'topMouseDown':\n case 'topBlur':\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n if (typeof detail === 'object' && 'data' in detail) {\n return detail.data;\n }\n return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topCompositionEnd':\n return getDataFromCustomEvent(nativeEvent);\n case 'topKeyPress':\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case 'topTextInput':\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n // If composition event is available, we extract a string only at\n // compositionevent, otherwise extract it at fallback events.\n if (currentComposition) {\n if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n return null;\n }\n\n switch (topLevelType) {\n case 'topPaste':\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n case 'topKeyPress':\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case 'topCompositionEnd':\n return useFallbackCompositionData ? null : nativeEvent.data;\n default:\n return null;\n }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/BeforeInputEventPlugin.js\n// module id = 46\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\n\nvar accumulateInto = require('./accumulateInto');\nvar forEachAccumulated = require('./forEachAccumulated');\nvar warning = require('fbjs/lib/warning');\n\nvar getListener = EventPluginHub.getListener;\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(inst, event, propagationPhase) {\n var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n return getListener(inst, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;\n }\n var listener = listenerAtPhase(inst, event, phase);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory. We must loop through\n * each event and perform the traversal for each one. We cannot perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n var targetInst = event._targetInst;\n var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;\n EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(inst, ignoredDirection, event) {\n if (event && event.dispatchConfig.registrationName) {\n var registrationName = event.dispatchConfig.registrationName;\n var listener = getListener(inst, registrationName);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n accumulateDispatches(event._targetInst, null, event);\n }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n}\n\nfunction accumulateDirectDispatches(events) {\n forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n accumulateDirectDispatches: accumulateDirectDispatches,\n accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nmodule.exports = EventPropagators;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/EventPropagators.js\n// module id = 47\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar accumulateInto = require('./accumulateInto');\nvar forEachAccumulated = require('./forEachAccumulated');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Internal store for event listeners\n */\nvar listenerBank = {};\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @private\n */\nvar executeDispatchesAndRelease = function (event, simulated) {\n if (event) {\n EventPluginUtils.executeDispatchesInOrder(event, simulated);\n\n if (!event.isPersistent()) {\n event.constructor.release(event);\n }\n }\n};\nvar executeDispatchesAndReleaseSimulated = function (e) {\n return executeDispatchesAndRelease(e, true);\n};\nvar executeDispatchesAndReleaseTopLevel = function (e) {\n return executeDispatchesAndRelease(e, false);\n};\n\nvar getDictionaryKey = function (inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n};\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n switch (name) {\n case 'onClick':\n case 'onClickCapture':\n case 'onDoubleClick':\n case 'onDoubleClickCapture':\n case 'onMouseDown':\n case 'onMouseDownCapture':\n case 'onMouseMove':\n case 'onMouseMoveCapture':\n case 'onMouseUp':\n case 'onMouseUpCapture':\n return !!(props.disabled && isInteractive(type));\n default:\n return false;\n }\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n * Required. When a top-level event is fired, this method is expected to\n * extract synthetic events that will in turn be queued and dispatched.\n *\n * `eventTypes` {object}\n * Optional, plugins that fire events must publish a mapping of registration\n * names that are used to register listeners. Values of this mapping must\n * be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n * `executeDispatch` {function(object, function, string)}\n * Optional, allows plugins to override how an event gets dispatched. By\n * default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n\n /**\n * Methods for injecting dependencies.\n */\n injection: {\n\n /**\n * @param {array} InjectedEventPluginOrder\n * @public\n */\n injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n /**\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n */\n injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n\n },\n\n /**\n * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {function} listener The callback to store.\n */\n putListener: function (inst, registrationName, listener) {\n !(typeof listener === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0;\n\n var key = getDictionaryKey(inst);\n var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});\n bankForRegistrationName[key] = listener;\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.didPutListener) {\n PluginModule.didPutListener(inst, registrationName, listener);\n }\n },\n\n /**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n getListener: function (inst, registrationName) {\n // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not\n // live here; needs to be moved to a better place soon\n var bankForRegistrationName = listenerBank[registrationName];\n if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {\n return null;\n }\n var key = getDictionaryKey(inst);\n return bankForRegistrationName && bankForRegistrationName[key];\n },\n\n /**\n * Deletes a listener from the registration bank.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n */\n deleteListener: function (inst, registrationName) {\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n var bankForRegistrationName = listenerBank[registrationName];\n // TODO: This should never be null -- when is it?\n if (bankForRegistrationName) {\n var key = getDictionaryKey(inst);\n delete bankForRegistrationName[key];\n }\n },\n\n /**\n * Deletes all listeners for the DOM element with the supplied ID.\n *\n * @param {object} inst The instance, which is the source of events.\n */\n deleteAllListeners: function (inst) {\n var key = getDictionaryKey(inst);\n for (var registrationName in listenerBank) {\n if (!listenerBank.hasOwnProperty(registrationName)) {\n continue;\n }\n\n if (!listenerBank[registrationName][key]) {\n continue;\n }\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n delete listenerBank[registrationName][key];\n }\n },\n\n /**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events;\n var plugins = EventPluginRegistry.plugins;\n for (var i = 0; i < plugins.length; i++) {\n // Not every plugin in the ordering may be loaded at runtime.\n var possiblePlugin = plugins[i];\n if (possiblePlugin) {\n var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n if (extractedEvents) {\n events = accumulateInto(events, extractedEvents);\n }\n }\n }\n return events;\n },\n\n /**\n * Enqueues a synthetic event that should be dispatched when\n * `processEventQueue` is invoked.\n *\n * @param {*} events An accumulation of synthetic events.\n * @internal\n */\n enqueueEvents: function (events) {\n if (events) {\n eventQueue = accumulateInto(eventQueue, events);\n }\n },\n\n /**\n * Dispatches all synthetic events on the event queue.\n *\n * @internal\n */\n processEventQueue: function (simulated) {\n // Set `eventQueue` to null before processing it so that we can tell if more\n // events get enqueued while processing.\n var processingEventQueue = eventQueue;\n eventQueue = null;\n if (simulated) {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);\n } else {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n }\n !!eventQueue ? process.env.NODE_ENV !== 'production' ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0;\n // This would be a good time to rethrow if any of the event handlers threw.\n ReactErrorUtils.rethrowCaughtError();\n },\n\n /**\n * These are needed for tests only. Do not use!\n */\n __purge: function () {\n listenerBank = {};\n },\n\n __getListenerBank: function () {\n return listenerBank;\n }\n\n};\n\nmodule.exports = EventPluginHub;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/EventPluginHub.js\n// module id = 48\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!eventPluginOrder) {\n // Wait until an `eventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var pluginModule = namesToPlugins[pluginName];\n var pluginIndex = eventPluginOrder.indexOf(pluginName);\n !(pluginIndex > -1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n !pluginModule.extractEvents ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;\n EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n var publishedEvents = pluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n !!EventPluginRegistry.registrationNameModules[registrationName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;\n EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n if (process.env.NODE_ENV !== 'production') {\n var lowerCasedName = registrationName.toLowerCase();\n EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\n if (registrationName === 'onDoubleClick') {\n EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n }\n }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in __DEV__.\n * @type {Object}\n */\n possibleRegistrationNames: process.env.NODE_ENV !== 'production' ? {} : null,\n // Trust the developer to only use possibleRegistrationNames in __DEV__\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function (injectedEventPluginOrder) {\n !!eventPluginOrder ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;\n // Clone the ordering so it cannot be dynamically mutated.\n eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function (injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var pluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n !!namesToPlugins[pluginName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;\n namesToPlugins[pluginName] = pluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function (event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n }\n if (dispatchConfig.phasedRegistrationNames !== undefined) {\n // pulling phasedRegistrationNames out of dispatchConfig helps Flow see\n // that it is not undefined.\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\n for (var phase in phasedRegistrationNames) {\n if (!phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];\n if (pluginModule) {\n return pluginModule;\n }\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function () {\n eventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n for (var lowerCasedName in possibleRegistrationNames) {\n if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n delete possibleRegistrationNames[lowerCasedName];\n }\n }\n }\n }\n\n};\n\nmodule.exports = EventPluginRegistry;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/EventPluginRegistry.js\n// module id = 49\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n * and actual node references.\n */\nvar ComponentTree;\nvar TreeTraversal;\nvar injection = {\n injectComponentTree: function (Injected) {\n ComponentTree = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n }\n },\n injectTreeTraversal: function (Injected) {\n TreeTraversal = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;\n }\n }\n};\n\nfunction isEndish(topLevelType) {\n return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';\n}\nfunction isStartish(topLevelType) {\n return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';\n}\n\nvar validateEventDispatches;\nif (process.env.NODE_ENV !== 'production') {\n validateEventDispatches = function (event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n var instancesIsArr = Array.isArray(dispatchInstances);\n var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;\n };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n var type = event.type || 'unknown-event';\n event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n if (simulated) {\n ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n } else {\n ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n }\n event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n }\n } else if (dispatchListeners) {\n executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n }\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who's listener returns\n * true, or null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchInstances[i])) {\n return dispatchInstances[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchInstances)) {\n return dispatchInstances;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchInstances = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchInstance = event._dispatchInstances;\n !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;\n event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n var res = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n\n getInstanceFromNode: function (node) {\n return ComponentTree.getInstanceFromNode(node);\n },\n getNodeFromInstance: function (node) {\n return ComponentTree.getNodeFromInstance(node);\n },\n isAncestor: function (a, b) {\n return TreeTraversal.isAncestor(a, b);\n },\n getLowestCommonAncestor: function (a, b) {\n return TreeTraversal.getLowestCommonAncestor(a, b);\n },\n getParentInstance: function (inst) {\n return TreeTraversal.getParentInstance(inst);\n },\n traverseTwoPhase: function (target, fn, arg) {\n return TreeTraversal.traverseTwoPhase(target, fn, arg);\n },\n traverseEnterLeave: function (from, to, fn, argFrom, argTo) {\n return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n },\n\n injection: injection\n};\n\nmodule.exports = EventPluginUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/EventPluginUtils.js\n// module id = 50\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar caughtError = null;\n\n/**\n * Call a function while guarding against errors that happens within it.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} a First argument\n * @param {*} b Second argument\n */\nfunction invokeGuardedCallback(name, func, a) {\n try {\n func(a);\n } catch (x) {\n if (caughtError === null) {\n caughtError = x;\n }\n }\n}\n\nvar ReactErrorUtils = {\n invokeGuardedCallback: invokeGuardedCallback,\n\n /**\n * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n * handler are sure to be rethrown by rethrowCaughtError.\n */\n invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\n /**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n rethrowCaughtError: function () {\n if (caughtError) {\n var error = caughtError;\n caughtError = null;\n throw error;\n }\n }\n};\n\nif (process.env.NODE_ENV !== 'production') {\n /**\n * To help development we can get better devtools integration by simulating a\n * real browser event.\n */\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n var fakeNode = document.createElement('react');\n ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {\n var boundFunc = func.bind(null, a);\n var evtType = 'react-' + name;\n fakeNode.addEventListener(evtType, boundFunc, false);\n var evt = document.createEvent('Event');\n evt.initEvent(evtType, false, false);\n fakeNode.dispatchEvent(evt);\n fakeNode.removeEventListener(evtType, boundFunc, false);\n };\n }\n}\n\nmodule.exports = ReactErrorUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactErrorUtils.js\n// module id = 51\n// module chunks = 7","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;\n\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n if (Array.isArray(current)) {\n if (Array.isArray(next)) {\n current.push.apply(current, next);\n return current;\n }\n current.push(next);\n return current;\n }\n\n if (Array.isArray(next)) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/accumulateInto.js\n// module id = 52\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\n\nfunction forEachAccumulated(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n}\n\nmodule.exports = forEachAccumulated;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/forEachAccumulated.js\n// module id = 53\n// module chunks = 7","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/ExecutionEnvironment.js\n// module id = 54\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n this._root = root;\n this._startText = this.getText();\n this._fallbackText = null;\n}\n\n_assign(FallbackCompositionState.prototype, {\n destructor: function () {\n this._root = null;\n this._startText = null;\n this._fallbackText = null;\n },\n\n /**\n * Get current text of input.\n *\n * @return {string}\n */\n getText: function () {\n if ('value' in this._root) {\n return this._root.value;\n }\n return this._root[getTextContentAccessor()];\n },\n\n /**\n * Determine the differing substring between the initially stored\n * text content and the current content.\n *\n * @return {string}\n */\n getData: function () {\n if (this._fallbackText) {\n return this._fallbackText;\n }\n\n var start;\n var startValue = this._startText;\n var startLength = startValue.length;\n var end;\n var endValue = this.getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n this._fallbackText = endValue.slice(start, sliceTail);\n return this._fallbackText;\n }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\n\nmodule.exports = FallbackCompositionState;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/FallbackCompositionState.js\n// module id = 55\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n if (!contentKey && ExecutionEnvironment.canUseDOM) {\n // Prefer textContent to innerText because many browsers support both but\n // SVG <text> elements don't support innerText even when <div> does.\n contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n }\n return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/getTextContentAccessor.js\n// module id = 57\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\nmodule.exports = SyntheticCompositionEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SyntheticCompositionEvent.js\n// module id = 58\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === 'function';\n\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: null,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n if (process.env.NODE_ENV !== 'production') {\n // these have a getter/setter for warnings\n delete this.nativeEvent;\n delete this.preventDefault;\n delete this.stopPropagation;\n }\n\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n if (process.env.NODE_ENV !== 'production') {\n delete this[propName]; // this has a getter/setter for warnings\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n if (propName === 'target') {\n this.target = nativeEventTarget;\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n\n preventDefault: function () {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n } else if (typeof event.returnValue !== 'unknown') {\n // eslint-disable-line valid-typeof\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function () {\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (typeof event.cancelBubble !== 'unknown') {\n // eslint-disable-line valid-typeof\n // The ChangeEventPlugin registers a \"propertychange\" event for\n // IE. This event does not support bubbling or cancelling, and\n // any references to cancelBubble throw \"Member not found\". A\n // typeof check of \"unknown\" circumvents this issue (and is also\n // IE specific).\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function () {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function () {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n } else {\n this[propName] = null;\n }\n }\n for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n this[shouldBeReleasedProperties[i]] = null;\n }\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n }\n }\n\n});\n\nSyntheticEvent.Interface = EventInterface;\n\nif (process.env.NODE_ENV !== 'production') {\n if (isProxySupported) {\n /*eslint-disable no-func-assign */\n SyntheticEvent = new Proxy(SyntheticEvent, {\n construct: function (target, args) {\n return this.apply(target, Object.create(target.prototype), args);\n },\n apply: function (constructor, that, args) {\n return new Proxy(constructor.apply(that, args), {\n set: function (target, prop, value) {\n if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), 'This synthetic event is reused for performance reasons. If you\\'re ' + 'seeing this, you\\'re adding a new property in the synthetic event object. ' + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n didWarnForAddedNewProperty = true;\n }\n target[prop] = value;\n return true;\n }\n });\n }\n });\n /*eslint-enable no-func-assign */\n }\n}\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function (Class, Interface) {\n var Super = this;\n\n var E = function () {};\n E.prototype = Super.prototype;\n var prototype = new E();\n\n _assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = _assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n};\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n\n/**\n * Helper to nullify syntheticEvent instance properties when destructing\n *\n * @param {object} SyntheticEvent\n * @param {String} propName\n * @return {object} defineProperty object\n */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n var isFunction = typeof getVal === 'function';\n return {\n configurable: true,\n set: set,\n get: get\n };\n\n function set(val) {\n var action = isFunction ? 'setting the method' : 'setting the property';\n warn(action, 'This is effectively a no-op');\n return val;\n }\n\n function get() {\n var action = isFunction ? 'accessing the method' : 'accessing the property';\n var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n warn(action, result);\n return getVal;\n }\n\n function warn(action, result) {\n var warningCondition = false;\n process.env.NODE_ENV !== 'production' ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\\'re seeing this, ' + 'you\\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SyntheticEvent.js\n// module id = 59\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\nvar InputEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\n\nmodule.exports = SyntheticInputEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SyntheticInputEvent.js\n// module id = 60\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getEventTarget = require('./getEventTarget');\nvar isEventSupported = require('./isEventSupported');\nvar isTextInputElement = require('./isTextInputElement');\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: 'onChange',\n captured: 'onChangeCapture'\n },\n dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n }\n};\n\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\nvar activeElementValue = null;\nvar activeElementValueProp = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n EventPropagators.accumulateTwoPhaseDispatches(event);\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue(false);\n}\n\nfunction startWatchingForChangeEventIE8(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementInst = null;\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n if (topLevelType === 'topChange') {\n return targetInst;\n }\n}\nfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForChangeEventIE8();\n }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n // IE10+ fire input events to often, such when a placeholder\n // changes or when an input with a placeholder is focused.\n isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11);\n}\n\n/**\n * (For IE <=11) Replacement getter/setter for the `value` property that gets\n * set on the active element.\n */\nvar newValueProp = {\n get: function () {\n return activeElementValueProp.get.call(this);\n },\n set: function (val) {\n // Cast to a string so we can do equality checks.\n activeElementValue = '' + val;\n activeElementValueProp.set.call(this, val);\n }\n};\n\n/**\n * (For IE <=11) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElementValue = target.value;\n activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value');\n\n // Not guarded in a canDefineProperty check: IE8 supports defineProperty only\n // on DOM elements\n Object.defineProperty(activeElement, 'value', newValueProp);\n if (activeElement.attachEvent) {\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.addEventListener('propertychange', handlePropertyChange, false);\n }\n}\n\n/**\n * (For IE <=11) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n\n // delete restores the original property definition\n delete activeElement.value;\n\n if (activeElement.detachEvent) {\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.removeEventListener('propertychange', handlePropertyChange, false);\n }\n\n activeElement = null;\n activeElementInst = null;\n activeElementValue = null;\n activeElementValueProp = null;\n}\n\n/**\n * (For IE <=11) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n var value = nativeEvent.srcElement.value;\n if (value === activeElementValue) {\n return;\n }\n activeElementValue = value;\n\n manualDispatchChangeEvent(nativeEvent);\n}\n\n/**\n * If a `change` event should be fired, returns the target's ID.\n */\nfunction getTargetInstForInputEvent(topLevelType, targetInst) {\n if (topLevelType === 'topInput') {\n // In modern browsers (i.e., not IE8 or IE9), the input event is exactly\n // what we want so fall through here and trigger an abstract event\n return targetInst;\n }\n}\n\nfunction handleEventsForInputEventIE(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9-11, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventIE(topLevelType, targetInst) {\n if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n if (activeElement && activeElement.value !== activeElementValue) {\n activeElementValue = activeElement.value;\n return activeElementInst;\n }\n }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst) {\n if (topLevelType === 'topClick') {\n return targetInst;\n }\n}\n\nfunction handleControlledInputBlur(inst, node) {\n // TODO: In IE, inst is occasionally null. Why?\n if (inst == null) {\n return;\n }\n\n // Fiber and ReactDOM keep wrapper state in separate places\n var state = inst._wrapperState || node._wrapperState;\n\n if (!state || !state.controlled || node.type !== 'number') {\n return;\n }\n\n // If controlled, assign the value attribute to the current value on blur\n var value = '' + node.value;\n if (node.getAttribute('value') !== value) {\n node.setAttribute('value', value);\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n var getTargetInstFunc, handleEventFunc;\n if (shouldUseChangeEvent(targetNode)) {\n if (doesChangeEventBubble) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventIE;\n handleEventFunc = handleEventsForInputEventIE;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n }\n\n if (getTargetInstFunc) {\n var inst = getTargetInstFunc(topLevelType, targetInst);\n if (inst) {\n var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);\n event.type = 'change';\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(topLevelType, targetNode, targetInst);\n }\n\n // When blurring, set the value attribute for number inputs\n if (topLevelType === 'topBlur') {\n handleControlledInputBlur(targetInst, targetNode);\n }\n }\n\n};\n\nmodule.exports = ChangeEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ChangeEventPlugin.js\n// module id = 61\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactReconciler = require('./ReactReconciler');\nvar Transaction = require('./Transaction');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar dirtyComponents = [];\nvar updateBatchNumber = 0;\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;\n}\n\nvar NESTED_UPDATES = {\n initialize: function () {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function () {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function () {\n this.callbackQueue.reset();\n },\n close: function () {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function () {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function (method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n ensureInjected();\n return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n !(len === dirtyComponents.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n // Any updates enqueued while reconciling must be performed after this entire\n // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n // C, B could update twice in a single batch if C's render enqueues an update\n // to B (since B would have already updated, we should skip it, and the only\n // way we can know to do so is by checking the batch counter).\n updateBatchNumber++;\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var namedComponent = component;\n // Duck type TopLevelWrapper. This is probably always true.\n if (component._currentElement.type.isReactTopLevelWrapper) {\n namedComponent = component._renderedComponent;\n }\n markerName = 'React update: ' + namedComponent.getName();\n console.time(markerName);\n }\n\n ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function () {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n if (component._updateBatchNumber == null) {\n component._updateBatchNumber = updateBatchNumber + 1;\n }\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n !batchingStrategy.isBatchingUpdates ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0;\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function (ReconcileTransaction) {\n !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function (_batchingStrategy) {\n !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;\n !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;\n !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactUpdates.js\n// module id = 62\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PooledClass = require('./PooledClass');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\n\nvar CallbackQueue = function () {\n function CallbackQueue(arg) {\n _classCallCheck(this, CallbackQueue);\n\n this._callbacks = null;\n this._contexts = null;\n this._arg = arg;\n }\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n\n\n CallbackQueue.prototype.enqueue = function enqueue(callback, context) {\n this._callbacks = this._callbacks || [];\n this._callbacks.push(callback);\n this._contexts = this._contexts || [];\n this._contexts.push(context);\n };\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.notifyAll = function notifyAll() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n var arg = this._arg;\n if (callbacks && contexts) {\n !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].call(contexts[i], arg);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n };\n\n CallbackQueue.prototype.checkpoint = function checkpoint() {\n return this._callbacks ? this._callbacks.length : 0;\n };\n\n CallbackQueue.prototype.rollback = function rollback(len) {\n if (this._callbacks && this._contexts) {\n this._callbacks.length = len;\n this._contexts.length = len;\n }\n };\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.reset = function reset() {\n this._callbacks = null;\n this._contexts = null;\n };\n\n /**\n * `PooledClass` looks for this.\n */\n\n\n CallbackQueue.prototype.destructor = function destructor() {\n this.reset();\n };\n\n return CallbackQueue;\n}();\n\nmodule.exports = PooledClass.addPoolingTo(CallbackQueue);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/CallbackQueue.js\n// module id = 63\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactFeatureFlags = {\n // When true, call console.time() before and .timeEnd() after each top-level\n // render (both initial renders and updates). Useful when looking at prod-mode\n // timeline profiles in Chrome, for example.\n logTopLevelRenders: false\n};\n\nmodule.exports = ReactFeatureFlags;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactFeatureFlags.js\n// module id = 64\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactRef = require('./ReactRef');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} the containing host component instance\n * @param {?object} info about the host container\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots\n ) {\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);\n }\n }\n var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);\n if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);\n }\n }\n return markup;\n },\n\n /**\n * Returns a value that can be passed to\n * ReactComponentEnvironment.replaceNodeWithMarkup.\n */\n getHostNode: function (internalInstance) {\n return internalInstance.getHostNode();\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (internalInstance, safely) {\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);\n }\n }\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent(safely);\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function (internalInstance, nextElement, transaction, context) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && context === internalInstance._context) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n\n // TODO: Bailing out early is just a perf optimization right?\n // TODO: Removing the return statement should affect correctness?\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);\n }\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {\n if (internalInstance._updateBatchNumber !== updateBatchNumber) {\n // The component's enqueued batch number should always be the current\n // batch or the following one.\n process.env.NODE_ENV !== 'production' ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0;\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);\n }\n }\n internalInstance.performUpdateIfNecessary(transaction);\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n }\n\n};\n\nmodule.exports = ReactReconciler;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactReconciler.js\n// module id = 65\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactOwner = require('./ReactOwner');\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n var prevRef = null;\n var prevOwner = null;\n if (prevElement !== null && typeof prevElement === 'object') {\n prevRef = prevElement.ref;\n prevOwner = prevElement._owner;\n }\n\n var nextRef = null;\n var nextOwner = null;\n if (nextElement !== null && typeof nextElement === 'object') {\n nextRef = nextElement.ref;\n nextOwner = nextElement._owner;\n }\n\n return prevRef !== nextRef ||\n // If owner changes but we have an unchanged function ref, don't update refs\n typeof nextRef === 'string' && nextOwner !== prevOwner;\n};\n\nReactRef.detachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactRef.js\n// module id = 66\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\nfunction isValidOwner(object) {\n return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');\n}\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;\n var ownerPublicInstance = owner.getPublicInstance();\n // Check that `component`'s owner is still alive and that `component` is still the current ref\n // because we do not want to detach the ref if another component stole it.\n if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n\n};\n\nmodule.exports = ReactOwner;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactOwner.js\n// module id = 67\n// module chunks = 7","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n// Trust the developer to only use ReactInstrumentation with a __DEV__ check\n\nvar debugTool = null;\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactDebugTool = require('./ReactDebugTool');\n debugTool = ReactDebugTool;\n}\n\nmodule.exports = { debugTool: debugTool };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactInstrumentation.js\n// module id = 68\n// module chunks = 7","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactInvalidSetStateWarningHook = require('./ReactInvalidSetStateWarningHook');\nvar ReactHostOperationHistoryHook = require('./ReactHostOperationHistoryHook');\nvar ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar performanceNow = require('fbjs/lib/performanceNow');\nvar warning = require('fbjs/lib/warning');\n\nvar hooks = [];\nvar didHookThrowForEvent = {};\n\nfunction callHook(event, fn, context, arg1, arg2, arg3, arg4, arg5) {\n try {\n fn.call(context, arg1, arg2, arg3, arg4, arg5);\n } catch (e) {\n process.env.NODE_ENV !== 'production' ? warning(didHookThrowForEvent[event], 'Exception thrown by hook while handling %s: %s', event, e + '\\n' + e.stack) : void 0;\n didHookThrowForEvent[event] = true;\n }\n}\n\nfunction emitEvent(event, arg1, arg2, arg3, arg4, arg5) {\n for (var i = 0; i < hooks.length; i++) {\n var hook = hooks[i];\n var fn = hook[event];\n if (fn) {\n callHook(event, fn, hook, arg1, arg2, arg3, arg4, arg5);\n }\n }\n}\n\nvar isProfiling = false;\nvar flushHistory = [];\nvar lifeCycleTimerStack = [];\nvar currentFlushNesting = 0;\nvar currentFlushMeasurements = [];\nvar currentFlushStartTime = 0;\nvar currentTimerDebugID = null;\nvar currentTimerStartTime = 0;\nvar currentTimerNestedFlushDuration = 0;\nvar currentTimerType = null;\n\nvar lifeCycleTimerHasWarned = false;\n\nfunction clearHistory() {\n ReactComponentTreeHook.purgeUnmountedComponents();\n ReactHostOperationHistoryHook.clearHistory();\n}\n\nfunction getTreeSnapshot(registeredIDs) {\n return registeredIDs.reduce(function (tree, id) {\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var parentID = ReactComponentTreeHook.getParentID(id);\n tree[id] = {\n displayName: ReactComponentTreeHook.getDisplayName(id),\n text: ReactComponentTreeHook.getText(id),\n updateCount: ReactComponentTreeHook.getUpdateCount(id),\n childIDs: ReactComponentTreeHook.getChildIDs(id),\n // Text nodes don't have owners but this is close enough.\n ownerID: ownerID || parentID && ReactComponentTreeHook.getOwnerID(parentID) || 0,\n parentID: parentID\n };\n return tree;\n }, {});\n}\n\nfunction resetMeasurements() {\n var previousStartTime = currentFlushStartTime;\n var previousMeasurements = currentFlushMeasurements;\n var previousOperations = ReactHostOperationHistoryHook.getHistory();\n\n if (currentFlushNesting === 0) {\n currentFlushStartTime = 0;\n currentFlushMeasurements = [];\n clearHistory();\n return;\n }\n\n if (previousMeasurements.length || previousOperations.length) {\n var registeredIDs = ReactComponentTreeHook.getRegisteredIDs();\n flushHistory.push({\n duration: performanceNow() - previousStartTime,\n measurements: previousMeasurements || [],\n operations: previousOperations || [],\n treeSnapshot: getTreeSnapshot(registeredIDs)\n });\n }\n\n clearHistory();\n currentFlushStartTime = performanceNow();\n currentFlushMeasurements = [];\n}\n\nfunction checkDebugID(debugID) {\n var allowRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (allowRoot && debugID === 0) {\n return;\n }\n if (!debugID) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'ReactDebugTool: debugID may not be empty.') : void 0;\n }\n}\n\nfunction beginLifeCycleTimer(debugID, timerType) {\n if (currentFlushNesting === 0) {\n return;\n }\n if (currentTimerType && !lifeCycleTimerHasWarned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'There is an internal error in the React performance measurement code. ' + 'Did not expect %s timer to start while %s timer is still in ' + 'progress for %s instance.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0;\n lifeCycleTimerHasWarned = true;\n }\n currentTimerStartTime = performanceNow();\n currentTimerNestedFlushDuration = 0;\n currentTimerDebugID = debugID;\n currentTimerType = timerType;\n}\n\nfunction endLifeCycleTimer(debugID, timerType) {\n if (currentFlushNesting === 0) {\n return;\n }\n if (currentTimerType !== timerType && !lifeCycleTimerHasWarned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'There is an internal error in the React performance measurement code. ' + 'We did not expect %s timer to stop while %s timer is still in ' + 'progress for %s instance. Please report this as a bug in React.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0;\n lifeCycleTimerHasWarned = true;\n }\n if (isProfiling) {\n currentFlushMeasurements.push({\n timerType: timerType,\n instanceID: debugID,\n duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration\n });\n }\n currentTimerStartTime = 0;\n currentTimerNestedFlushDuration = 0;\n currentTimerDebugID = null;\n currentTimerType = null;\n}\n\nfunction pauseCurrentLifeCycleTimer() {\n var currentTimer = {\n startTime: currentTimerStartTime,\n nestedFlushStartTime: performanceNow(),\n debugID: currentTimerDebugID,\n timerType: currentTimerType\n };\n lifeCycleTimerStack.push(currentTimer);\n currentTimerStartTime = 0;\n currentTimerNestedFlushDuration = 0;\n currentTimerDebugID = null;\n currentTimerType = null;\n}\n\nfunction resumeCurrentLifeCycleTimer() {\n var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(),\n startTime = _lifeCycleTimerStack$.startTime,\n nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime,\n debugID = _lifeCycleTimerStack$.debugID,\n timerType = _lifeCycleTimerStack$.timerType;\n\n var nestedFlushDuration = performanceNow() - nestedFlushStartTime;\n currentTimerStartTime = startTime;\n currentTimerNestedFlushDuration += nestedFlushDuration;\n currentTimerDebugID = debugID;\n currentTimerType = timerType;\n}\n\nvar lastMarkTimeStamp = 0;\nvar canUsePerformanceMeasure = typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function';\n\nfunction shouldMark(debugID) {\n if (!isProfiling || !canUsePerformanceMeasure) {\n return false;\n }\n var element = ReactComponentTreeHook.getElement(debugID);\n if (element == null || typeof element !== 'object') {\n return false;\n }\n var isHostElement = typeof element.type === 'string';\n if (isHostElement) {\n return false;\n }\n return true;\n}\n\nfunction markBegin(debugID, markType) {\n if (!shouldMark(debugID)) {\n return;\n }\n\n var markName = debugID + '::' + markType;\n lastMarkTimeStamp = performanceNow();\n performance.mark(markName);\n}\n\nfunction markEnd(debugID, markType) {\n if (!shouldMark(debugID)) {\n return;\n }\n\n var markName = debugID + '::' + markType;\n var displayName = ReactComponentTreeHook.getDisplayName(debugID) || 'Unknown';\n\n // Chrome has an issue of dropping markers recorded too fast:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=640652\n // To work around this, we will not report very small measurements.\n // I determined the magic number by tweaking it back and forth.\n // 0.05ms was enough to prevent the issue, but I set it to 0.1ms to be safe.\n // When the bug is fixed, we can `measure()` unconditionally if we want to.\n var timeStamp = performanceNow();\n if (timeStamp - lastMarkTimeStamp > 0.1) {\n var measurementName = displayName + ' [' + markType + ']';\n performance.measure(measurementName, markName);\n }\n\n performance.clearMarks(markName);\n performance.clearMeasures(measurementName);\n}\n\nvar ReactDebugTool = {\n addHook: function (hook) {\n hooks.push(hook);\n },\n removeHook: function (hook) {\n for (var i = 0; i < hooks.length; i++) {\n if (hooks[i] === hook) {\n hooks.splice(i, 1);\n i--;\n }\n }\n },\n isProfiling: function () {\n return isProfiling;\n },\n beginProfiling: function () {\n if (isProfiling) {\n return;\n }\n\n isProfiling = true;\n flushHistory.length = 0;\n resetMeasurements();\n ReactDebugTool.addHook(ReactHostOperationHistoryHook);\n },\n endProfiling: function () {\n if (!isProfiling) {\n return;\n }\n\n isProfiling = false;\n resetMeasurements();\n ReactDebugTool.removeHook(ReactHostOperationHistoryHook);\n },\n getFlushHistory: function () {\n return flushHistory;\n },\n onBeginFlush: function () {\n currentFlushNesting++;\n resetMeasurements();\n pauseCurrentLifeCycleTimer();\n emitEvent('onBeginFlush');\n },\n onEndFlush: function () {\n resetMeasurements();\n currentFlushNesting--;\n resumeCurrentLifeCycleTimer();\n emitEvent('onEndFlush');\n },\n onBeginLifeCycleTimer: function (debugID, timerType) {\n checkDebugID(debugID);\n emitEvent('onBeginLifeCycleTimer', debugID, timerType);\n markBegin(debugID, timerType);\n beginLifeCycleTimer(debugID, timerType);\n },\n onEndLifeCycleTimer: function (debugID, timerType) {\n checkDebugID(debugID);\n endLifeCycleTimer(debugID, timerType);\n markEnd(debugID, timerType);\n emitEvent('onEndLifeCycleTimer', debugID, timerType);\n },\n onBeginProcessingChildContext: function () {\n emitEvent('onBeginProcessingChildContext');\n },\n onEndProcessingChildContext: function () {\n emitEvent('onEndProcessingChildContext');\n },\n onHostOperation: function (operation) {\n checkDebugID(operation.instanceID);\n emitEvent('onHostOperation', operation);\n },\n onSetState: function () {\n emitEvent('onSetState');\n },\n onSetChildren: function (debugID, childDebugIDs) {\n checkDebugID(debugID);\n childDebugIDs.forEach(checkDebugID);\n emitEvent('onSetChildren', debugID, childDebugIDs);\n },\n onBeforeMountComponent: function (debugID, element, parentDebugID) {\n checkDebugID(debugID);\n checkDebugID(parentDebugID, true);\n emitEvent('onBeforeMountComponent', debugID, element, parentDebugID);\n markBegin(debugID, 'mount');\n },\n onMountComponent: function (debugID) {\n checkDebugID(debugID);\n markEnd(debugID, 'mount');\n emitEvent('onMountComponent', debugID);\n },\n onBeforeUpdateComponent: function (debugID, element) {\n checkDebugID(debugID);\n emitEvent('onBeforeUpdateComponent', debugID, element);\n markBegin(debugID, 'update');\n },\n onUpdateComponent: function (debugID) {\n checkDebugID(debugID);\n markEnd(debugID, 'update');\n emitEvent('onUpdateComponent', debugID);\n },\n onBeforeUnmountComponent: function (debugID) {\n checkDebugID(debugID);\n emitEvent('onBeforeUnmountComponent', debugID);\n markBegin(debugID, 'unmount');\n },\n onUnmountComponent: function (debugID) {\n checkDebugID(debugID);\n markEnd(debugID, 'unmount');\n emitEvent('onUnmountComponent', debugID);\n },\n onTestEvent: function () {\n emitEvent('onTestEvent');\n }\n};\n\n// TODO remove these when RN/www gets updated\nReactDebugTool.addDevtool = ReactDebugTool.addHook;\nReactDebugTool.removeDevtool = ReactDebugTool.removeHook;\n\nReactDebugTool.addHook(ReactInvalidSetStateWarningHook);\nReactDebugTool.addHook(ReactComponentTreeHook);\nvar url = ExecutionEnvironment.canUseDOM && window.location.href || '';\nif (/[?&]react_perf\\b/.test(url)) {\n ReactDebugTool.beginProfiling();\n}\n\nmodule.exports = ReactDebugTool;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDebugTool.js\n// module id = 69\n// module chunks = 7","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nif (process.env.NODE_ENV !== 'production') {\n var processingChildContext = false;\n\n var warnInvalidSetState = function () {\n process.env.NODE_ENV !== 'production' ? warning(!processingChildContext, 'setState(...): Cannot call setState() inside getChildContext()') : void 0;\n };\n}\n\nvar ReactInvalidSetStateWarningHook = {\n onBeginProcessingChildContext: function () {\n processingChildContext = true;\n },\n onEndProcessingChildContext: function () {\n processingChildContext = false;\n },\n onSetState: function () {\n warnInvalidSetState();\n }\n};\n\nmodule.exports = ReactInvalidSetStateWarningHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactInvalidSetStateWarningHook.js\n// module id = 70\n// module chunks = 7","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar history = [];\n\nvar ReactHostOperationHistoryHook = {\n onHostOperation: function (operation) {\n history.push(operation);\n },\n clearHistory: function () {\n if (ReactHostOperationHistoryHook._preventClearing) {\n // Should only be used for tests.\n return;\n }\n\n history = [];\n },\n getHistory: function () {\n return history;\n }\n};\n\nmodule.exports = ReactHostOperationHistoryHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactHostOperationHistoryHook.js\n// module id = 71\n// module chunks = 7","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar performance = require('./performance');\n\nvar performanceNow;\n\n/**\n * Detect if we can use `window.performance.now()` and gracefully fallback to\n * `Date.now()` if it doesn't exist. We need to support Firefox < 15 for now\n * because of Facebook's testing infrastructure.\n */\nif (performance.now) {\n performanceNow = function performanceNow() {\n return performance.now();\n };\n} else {\n performanceNow = function performanceNow() {\n return Date.now();\n };\n}\n\nmodule.exports = performanceNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/performanceNow.js\n// module id = 72\n// module chunks = 7","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar performance;\n\nif (ExecutionEnvironment.canUseDOM) {\n performance = window.performance || window.msPerformance || window.webkitPerformance;\n}\n\nmodule.exports = performance || {};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/performance.js\n// module id = 73\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar OBSERVED_ERROR = {};\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n * <pre>\n * wrappers (injected at creation time)\n * + +\n * | |\n * +-----------------|--------|--------------+\n * | v | |\n * | +---------------+ | |\n * | +--| wrapper1 |---|----+ |\n * | | +---------------+ v | |\n * | | +-------------+ | |\n * | | +----| wrapper2 |--------+ |\n * | | | +-------------+ | | |\n * | | | | | |\n * | v v v v | wrapper\n * | +---+ +---+ +---------+ +---+ +---+ | invariants\n * perform(anyMethod) | | | | | | | | | | | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | +---+ +---+ +---------+ +---+ +---+ |\n * | initialize close |\n * +-----------------------------------------+\n * </pre>\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar TransactionImpl = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function () {\n this.transactionWrappers = this.getTransactionWrappers();\n if (this.wrapperInitData) {\n this.wrapperInitData.length = 0;\n } else {\n this.wrapperInitData = [];\n }\n this._isInTransaction = false;\n },\n\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array<TransactionWrapper>} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n\n isInTransaction: function () {\n return !!this._isInTransaction;\n },\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked. The optional arguments helps prevent the need\n * to bind in many cases.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} a Argument to pass to the method.\n * @param {Object?=} b Argument to pass to the method.\n * @param {Object?=} c Argument to pass to the method.\n * @param {Object?=} d Argument to pass to the method.\n * @param {Object?=} e Argument to pass to the method.\n * @param {Object?=} f Argument to pass to the method.\n *\n * @return {*} Return value from `method`.\n */\n perform: function (method, scope, a, b, c, d, e, f) {\n !!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0;\n var errorThrown;\n var ret;\n try {\n this._isInTransaction = true;\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {}\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n return ret;\n },\n\n initializeAll: function (startIndex) {\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;\n } finally {\n if (this.wrapperInitData[i] === OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {}\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function (startIndex) {\n !this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n if (initData !== OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {}\n }\n }\n }\n this.wrapperInitData.length = 0;\n }\n};\n\nmodule.exports = TransactionImpl;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/Transaction.js\n// module id = 74\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n\n // Normalize SVG <use> element events #4963\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n }\n\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/getEventTarget.js\n// module id = 75\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature = document.implementation && document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/isEventSupported.js\n// module id = 76\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n 'color': true,\n 'date': true,\n 'datetime': true,\n 'datetime-local': true,\n 'email': true,\n 'month': true,\n 'number': true,\n 'password': true,\n 'range': true,\n 'search': true,\n 'tel': true,\n 'text': true,\n 'time': true,\n 'url': true,\n 'week': true\n};\n\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n if (nodeName === 'input') {\n return !!supportedInputTypes[elem.type];\n }\n\n if (nodeName === 'textarea') {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isTextInputElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/isTextInputElement.js\n// module id = 77\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\nvar DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\nmodule.exports = DefaultEventPluginOrder;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/DefaultEventPluginOrder.js\n// module id = 78\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\nvar eventTypes = {\n mouseEnter: {\n registrationName: 'onMouseEnter',\n dependencies: ['topMouseOut', 'topMouseOver']\n },\n mouseLeave: {\n registrationName: 'onMouseLeave',\n dependencies: ['topMouseOut', 'topMouseOver']\n }\n};\n\nvar EnterLeaveEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n return null;\n }\n if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n // Must not be a mouse in or mouse out - ignoring.\n return null;\n }\n\n var win;\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = nativeEventTarget.ownerDocument;\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from;\n var to;\n if (topLevelType === 'topMouseOut') {\n from = targetInst;\n var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return null;\n }\n\n var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n\n var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n leave.type = 'mouseleave';\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n\n var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n enter.type = 'mouseenter';\n enter.target = toNode;\n enter.relatedTarget = fromNode;\n\n EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n return [leave, enter];\n }\n\n};\n\nmodule.exports = EnterLeaveEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/EnterLeaveEventPlugin.js\n// module id = 79\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar MouseEventInterface = {\n screenX: null,\n screenY: null,\n clientX: null,\n clientY: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n getModifierState: getEventModifierState,\n button: function (event) {\n // Webkit, Firefox, IE9+\n // which: 1 2 3\n // button: 0 1 2 (standard)\n var button = event.button;\n if ('which' in event) {\n return button;\n }\n // IE<9\n // which: undefined\n // button: 0 0 0\n // button: 1 4 2 (onmouseup)\n return button === 2 ? 2 : button === 4 ? 1 : 0;\n },\n buttons: null,\n relatedTarget: function (event) {\n return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n },\n // \"Proprietary\" Interface.\n pageX: function (event) {\n return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;\n },\n pageY: function (event) {\n return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);\n\nmodule.exports = SyntheticMouseEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SyntheticMouseEvent.js\n// module id = 80\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getEventTarget = require('./getEventTarget');\n\n/**\n * @interface UIEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar UIEventInterface = {\n view: function (event) {\n if (event.view) {\n return event.view;\n }\n\n var target = getEventTarget(event);\n if (target.window === target) {\n // target is a window object\n return target;\n }\n\n var doc = target.ownerDocument;\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n if (doc) {\n return doc.defaultView || doc.parentWindow;\n } else {\n return window;\n }\n },\n detail: function (event) {\n return event.detail || 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);\n\nmodule.exports = SyntheticUIEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SyntheticUIEvent.js\n// module id = 81\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ViewportMetrics = {\n\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function (scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n\n};\n\nmodule.exports = ViewportMetrics;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ViewportMetrics.js\n// module id = 82\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n 'Alt': 'altKey',\n 'Control': 'ctrlKey',\n 'Meta': 'metaKey',\n 'Shift': 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/getEventModifierState.js\n// module id = 83\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\n\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),\n Properties: {\n /**\n * Standard Properties\n */\n accept: 0,\n acceptCharset: 0,\n accessKey: 0,\n action: 0,\n allowFullScreen: HAS_BOOLEAN_VALUE,\n allowTransparency: 0,\n alt: 0,\n // specifies target context for links with `preload` type\n as: 0,\n async: HAS_BOOLEAN_VALUE,\n autoComplete: 0,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n capture: HAS_BOOLEAN_VALUE,\n cellPadding: 0,\n cellSpacing: 0,\n charSet: 0,\n challenge: 0,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n cite: 0,\n classID: 0,\n className: 0,\n cols: HAS_POSITIVE_NUMERIC_VALUE,\n colSpan: 0,\n content: 0,\n contentEditable: 0,\n contextMenu: 0,\n controls: HAS_BOOLEAN_VALUE,\n coords: 0,\n crossOrigin: 0,\n data: 0, // For `<object />` acts as `src`.\n dateTime: 0,\n 'default': HAS_BOOLEAN_VALUE,\n defer: HAS_BOOLEAN_VALUE,\n dir: 0,\n disabled: HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: 0,\n encType: 0,\n form: 0,\n formAction: 0,\n formEncType: 0,\n formMethod: 0,\n formNoValidate: HAS_BOOLEAN_VALUE,\n formTarget: 0,\n frameBorder: 0,\n headers: 0,\n height: 0,\n hidden: HAS_BOOLEAN_VALUE,\n high: 0,\n href: 0,\n hrefLang: 0,\n htmlFor: 0,\n httpEquiv: 0,\n icon: 0,\n id: 0,\n inputMode: 0,\n integrity: 0,\n is: 0,\n keyParams: 0,\n keyType: 0,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: HAS_BOOLEAN_VALUE,\n low: 0,\n manifest: 0,\n marginHeight: 0,\n marginWidth: 0,\n max: 0,\n maxLength: 0,\n media: 0,\n mediaGroup: 0,\n method: 0,\n min: 0,\n minLength: 0,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n name: 0,\n nonce: 0,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n playsInline: HAS_BOOLEAN_VALUE,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 0,\n readOnly: HAS_BOOLEAN_VALUE,\n referrerPolicy: 0,\n rel: 0,\n required: HAS_BOOLEAN_VALUE,\n reversed: HAS_BOOLEAN_VALUE,\n role: 0,\n rows: HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: HAS_NUMERIC_VALUE,\n sandbox: 0,\n scope: 0,\n scoped: HAS_BOOLEAN_VALUE,\n scrolling: 0,\n seamless: HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n shape: 0,\n size: HAS_POSITIVE_NUMERIC_VALUE,\n sizes: 0,\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: 0,\n src: 0,\n srcDoc: 0,\n srcLang: 0,\n srcSet: 0,\n start: HAS_NUMERIC_VALUE,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 0,\n target: 0,\n title: 0,\n // Setting .type throws on non-<input> tags\n type: 0,\n useMap: 0,\n value: 0,\n width: 0,\n wmode: 0,\n wrap: 0,\n\n /**\n * RDFa Properties\n */\n about: 0,\n datatype: 0,\n inlist: 0,\n prefix: 0,\n // property is also supported for OpenGraph in meta tags.\n property: 0,\n resource: 0,\n 'typeof': 0,\n vocab: 0,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: 0,\n autoCorrect: 0,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: 0,\n // color is for Safari mask-icon link\n color: 0,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: 0,\n itemScope: HAS_BOOLEAN_VALUE,\n itemType: 0,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: 0,\n itemRef: 0,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: 0,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: 0,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMPropertyNames: {},\n DOMMutationMethods: {\n value: function (node, value) {\n if (value == null) {\n return node.removeAttribute('value');\n }\n\n // Number inputs get special treatment due to some edge cases in\n // Chrome. Let everything else assign the value attribute as normal.\n // https://github.com/facebook/react/issues/7253#issuecomment-236074326\n if (node.type !== 'number' || node.hasAttribute('value') === false) {\n node.setAttribute('value', '' + value);\n } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) {\n // Don't assign an attribute if validation reports bad\n // input. Chrome will clear the value. Additionally, don't\n // operate on inputs that have focus, otherwise Chrome might\n // strip off trailing decimal places and cause the user's\n // cursor position to jump to the beginning of the input.\n //\n // In ReactDOMInput, we have an onBlur event that will trigger\n // this function again when focus is lost.\n node.setAttribute('value', '' + value);\n }\n }\n }\n};\n\nmodule.exports = HTMLDOMPropertyConfig;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/HTMLDOMPropertyConfig.js\n// module id = 84\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMIDOperations = require('./ReactDOMIDOperations');\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n\n processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup\n\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactComponentBrowserEnvironment.js\n// module id = 85\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar Danger = require('./Danger');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setInnerHTML = require('./setInnerHTML');\nvar setTextContent = require('./setTextContent');\n\nfunction getNodeAfter(parentNode, node) {\n // Special case for text components, which return [open, close] comments\n // from getHostNode.\n if (Array.isArray(node)) {\n node = node[1];\n }\n return node ? node.nextSibling : parentNode.firstChild;\n}\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n // We rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n // we are careful to use `null`.)\n parentNode.insertBefore(childNode, referenceNode);\n});\n\nfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n}\n\nfunction moveChild(parentNode, childNode, referenceNode) {\n if (Array.isArray(childNode)) {\n moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n } else {\n insertChildAt(parentNode, childNode, referenceNode);\n }\n}\n\nfunction removeChild(parentNode, childNode) {\n if (Array.isArray(childNode)) {\n var closingComment = childNode[1];\n childNode = childNode[0];\n removeDelimitedText(parentNode, childNode, closingComment);\n parentNode.removeChild(closingComment);\n }\n parentNode.removeChild(childNode);\n}\n\nfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n var node = openingComment;\n while (true) {\n var nextNode = node.nextSibling;\n insertChildAt(parentNode, node, referenceNode);\n if (node === closingComment) {\n break;\n }\n node = nextNode;\n }\n}\n\nfunction removeDelimitedText(parentNode, startNode, closingComment) {\n while (true) {\n var node = startNode.nextSibling;\n if (node === closingComment) {\n // The closing comment is removed by ReactMultiChild.\n break;\n } else {\n parentNode.removeChild(node);\n }\n }\n}\n\nfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n var parentNode = openingComment.parentNode;\n var nodeAfterComment = openingComment.nextSibling;\n if (nodeAfterComment === closingComment) {\n // There are no text nodes between the opening and closing comments; insert\n // a new one if stringText isn't empty.\n if (stringText) {\n insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n }\n } else {\n if (stringText) {\n // Set the text content of the first node after the opening comment, and\n // remove all following nodes up until the closing comment.\n setTextContent(nodeAfterComment, stringText);\n removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n } else {\n removeDelimitedText(parentNode, openingComment, closingComment);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,\n type: 'replace text',\n payload: stringText\n });\n }\n}\n\nvar dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;\nif (process.env.NODE_ENV !== 'production') {\n dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {\n Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);\n if (prevInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: prevInstance._debugID,\n type: 'replace with',\n payload: markup.toString()\n });\n } else {\n var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);\n if (nextInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: nextInstance._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n };\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n\n dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,\n\n replaceDelimitedText: replaceDelimitedText,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n processUpdates: function (parentNode, updates) {\n if (process.env.NODE_ENV !== 'production') {\n var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;\n }\n\n for (var k = 0; k < updates.length; k++) {\n var update = updates[k];\n switch (update.type) {\n case 'INSERT_MARKUP':\n insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'insert child',\n payload: { toIndex: update.toIndex, content: update.content.toString() }\n });\n }\n break;\n case 'MOVE_EXISTING':\n moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'move child',\n payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }\n });\n }\n break;\n case 'SET_MARKUP':\n setInnerHTML(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace children',\n payload: update.content.toString()\n });\n }\n break;\n case 'TEXT_CONTENT':\n setTextContent(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace text',\n payload: update.content.toString()\n });\n }\n break;\n case 'REMOVE_NODE':\n removeChild(parentNode, update.fromNode);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'remove child',\n payload: { fromIndex: update.fromIndex }\n });\n }\n break;\n }\n }\n }\n\n};\n\nmodule.exports = DOMChildrenOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/DOMChildrenOperations.js\n// module id = 86\n// module chunks = 7","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = require('./DOMNamespaces');\nvar setInnerHTML = require('./setInnerHTML');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setTextContent = require('./setTextContent');\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\n/**\n * In IE (8-11) and Edge, appending nodes with no children is dramatically\n * faster than appending a full subtree, so we essentially queue up the\n * .appendChild calls here and apply them so each node is added to its parent\n * before any children are added.\n *\n * In other browsers, doing so is slower or neutral compared to the other order\n * (in Firefox, twice as slow) so we only do this inversion in IE.\n *\n * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.\n */\nvar enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\\bEdge\\/\\d/.test(navigator.userAgent);\n\nfunction insertTreeChildren(tree) {\n if (!enableLazy) {\n return;\n }\n var node = tree.node;\n var children = tree.children;\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n insertTreeBefore(node, children[i], null);\n }\n } else if (tree.html != null) {\n setInnerHTML(node, tree.html);\n } else if (tree.text != null) {\n setTextContent(node, tree.text);\n }\n}\n\nvar insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {\n // DocumentFragments aren't actually part of the DOM after insertion so\n // appending children won't update the DOM. We need to ensure the fragment\n // is properly populated first, breaking out of our lazy approach for just\n // this level. Also, some <object> plugins (like Flash Player) will read\n // <param> nodes immediately upon insertion into the DOM, so <object>\n // must also be populated prior to insertion into the DOM.\n if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {\n insertTreeChildren(tree);\n parentNode.insertBefore(tree.node, referenceNode);\n } else {\n parentNode.insertBefore(tree.node, referenceNode);\n insertTreeChildren(tree);\n }\n});\n\nfunction replaceChildWithTree(oldNode, newTree) {\n oldNode.parentNode.replaceChild(newTree.node, oldNode);\n insertTreeChildren(newTree);\n}\n\nfunction queueChild(parentTree, childTree) {\n if (enableLazy) {\n parentTree.children.push(childTree);\n } else {\n parentTree.node.appendChild(childTree.node);\n }\n}\n\nfunction queueHTML(tree, html) {\n if (enableLazy) {\n tree.html = html;\n } else {\n setInnerHTML(tree.node, html);\n }\n}\n\nfunction queueText(tree, text) {\n if (enableLazy) {\n tree.text = text;\n } else {\n setTextContent(tree.node, text);\n }\n}\n\nfunction toString() {\n return this.node.nodeName;\n}\n\nfunction DOMLazyTree(node) {\n return {\n node: node,\n children: [],\n html: null,\n text: null,\n toString: toString\n };\n}\n\nDOMLazyTree.insertTreeBefore = insertTreeBefore;\nDOMLazyTree.replaceChildWithTree = replaceChildWithTree;\nDOMLazyTree.queueChild = queueChild;\nDOMLazyTree.queueHTML = queueHTML;\nDOMLazyTree.queueText = queueText;\n\nmodule.exports = DOMLazyTree;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/DOMLazyTree.js\n// module id = 87\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg'\n};\n\nmodule.exports = DOMNamespaces;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/DOMNamespaces.js\n// module id = 88\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar DOMNamespaces = require('./DOMNamespaces');\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\n\n// SVG temp container for IE lacking innerHTML\nvar reusableSVGContainer;\n\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n // IE does not have innerHTML for SVG nodes, so instead we inject the\n // new markup in a temp node and then move the child nodes across into\n // the target node\n if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {\n reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';\n var svgNode = reusableSVGContainer.firstChild;\n while (svgNode.firstChild) {\n node.appendChild(svgNode.firstChild);\n }\n } else {\n node.innerHTML = html;\n }\n});\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE8: When updating a just created node with innerHTML only leading\n // whitespace is removed. When updating an existing node with innerHTML\n // whitespace in root TextNodes is also collapsed.\n // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\n // Feature detection; only IE8 is known to behave improperly like this.\n var testElement = document.createElement('div');\n testElement.innerHTML = ' ';\n if (testElement.innerHTML === '') {\n setInnerHTML = function (node, html) {\n // Magic theory: IE8 supposedly differentiates between added and updated\n // nodes when processing innerHTML, innerHTML on updated nodes suffers\n // from worse whitespace behavior. Re-adding a node like this triggers\n // the initial and more favorable whitespace behavior.\n // TODO: What to do on a detached node?\n if (node.parentNode) {\n node.parentNode.replaceChild(node, node);\n }\n\n // We also implement a workaround for non-visible tags disappearing into\n // thin air on IE8, this only happens if there is no visible text\n // in-front of the non-visible tags. Piggyback on the whitespace fix\n // and simply check if any non-visible tags appear in the source.\n if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n // Recover leading whitespace by temporarily prepending any character.\n // \\uFEFF has the potential advantage of being zero-width/invisible.\n // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode\n // in hopes that this is preserved even if \"\\uFEFF\" is transformed to\n // the actual Unicode character (by Babel, for example).\n // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216\n node.innerHTML = String.fromCharCode(0xFEFF) + html;\n\n // deleteData leaves an empty `TextNode` which offsets the index of all\n // children. Definitely want to avoid this.\n var textNode = node.firstChild;\n if (textNode.data.length === 1) {\n node.removeChild(textNode);\n } else {\n textNode.deleteData(0, 1);\n }\n } else {\n node.innerHTML = html;\n }\n };\n }\n testElement = null;\n}\n\nmodule.exports = setInnerHTML;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/setInnerHTML.js\n// module id = 89\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals MSApp */\n\n'use strict';\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n return function (arg0, arg1, arg2, arg3) {\n MSApp.execUnsafeLocalFunction(function () {\n return func(arg0, arg1, arg2, arg3);\n });\n };\n } else {\n return func;\n }\n};\n\nmodule.exports = createMicrosoftUnsafeLocalFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/createMicrosoftUnsafeLocalFunction.js\n// module id = 90\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar setInnerHTML = require('./setInnerHTML');\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function (node, text) {\n if (text) {\n var firstChild = node.firstChild;\n\n if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n if (!('textContent' in document.documentElement)) {\n setTextContent = function (node, text) {\n if (node.nodeType === 3) {\n node.nodeValue = text;\n return;\n }\n setInnerHTML(node, escapeTextContentForBrowser(text));\n };\n }\n}\n\nmodule.exports = setTextContent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/setTextContent.js\n// module id = 91\n// module chunks = 7","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * Based on the escape-html library, which is used under the MIT License below:\n *\n * Copyright (c) 2012-2013 TJ Holowaychuk\n * Copyright (c) 2015 Andreas Lubbe\n * Copyright (c) 2015 Tiancheng \"Timothy\" Gu\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n */\n\n'use strict';\n\n// code copied and modified from escape-html\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n // \"\n escape = '"';\n break;\n case 38:\n // &\n escape = '&';\n break;\n case 39:\n // '\n escape = '''; // modified from escape-html; used to be '''\n break;\n case 60:\n // <\n escape = '<';\n break;\n case 62:\n // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n}\n// end code copied and modified from escape-html\n\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escapeTextContentForBrowser(text) {\n if (typeof text === 'boolean' || typeof text === 'number') {\n // this shortcircuit helps perf for types that we know will never have\n // special characters, especially given that this function is used often\n // for numeric dom ids.\n return '' + text;\n }\n return escapeHtml(text);\n}\n\nmodule.exports = escapeTextContentForBrowser;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/escapeTextContentForBrowser.js\n// module id = 92\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar createNodesFromMarkup = require('fbjs/lib/createNodesFromMarkup');\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\n\nvar Danger = {\n\n /**\n * Replaces a node with a string of markup at its current position within its\n * parent. The markup must render into a single root node.\n *\n * @param {DOMElement} oldChild Child node to replace.\n * @param {string} markup Markup to render in place of the child node.\n * @internal\n */\n dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {\n !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;\n !markup ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;\n !(oldChild.nodeName !== 'HTML') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> 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 ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;\n\n if (typeof markup === 'string') {\n var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n oldChild.parentNode.replaceChild(newChild, oldChild);\n } else {\n DOMLazyTree.replaceChildWithTree(oldChild, markup);\n }\n }\n\n};\n\nmodule.exports = Danger;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/Danger.js\n// module id = 93\n// module chunks = 7","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar createArrayFromMixed = require('./createArrayFromMixed');\nvar getMarkupWrap = require('./getMarkupWrap');\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * <script> element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any <script> elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered <script>.\n * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n */\nfunction createNodesFromMarkup(markup, handleScript) {\n var node = dummyNode;\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;\n var nodeName = getNodeName(markup);\n\n var wrap = nodeName && getMarkupWrap(nodeName);\n if (wrap) {\n node.innerHTML = wrap[1] + markup + wrap[2];\n\n var wrapDepth = wrap[0];\n while (wrapDepth--) {\n node = node.lastChild;\n }\n } else {\n node.innerHTML = markup;\n }\n\n var scripts = node.getElementsByTagName('script');\n if (scripts.length) {\n !handleScript ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;\n createArrayFromMixed(scripts).forEach(handleScript);\n }\n\n var nodes = Array.from(node.childNodes);\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/createNodesFromMarkup.js\n// module id = 94\n// module chunks = 7","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar invariant = require('./invariant');\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n\n !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n\n !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n\n !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;\n\n // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\n\n // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj && (\n // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') &&\n // quacks like an array\n 'length' in obj &&\n // not window\n !('setInterval' in obj) &&\n // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && (\n // a real array\n Array.isArray(obj) ||\n // arguments\n 'callee' in obj ||\n // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/createArrayFromMixed.js\n// module id = 95\n// module chunks = 7","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/*eslint-disable fb-www/unsafe-html */\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to detect which wraps are necessary.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n */\n\nvar shouldWrap = {};\n\nvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\nvar tableWrap = [1, '<table>', '</table>'];\nvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\nvar svgWrap = [1, '<svg xmlns=\"http://www.w3.org/2000/svg\">', '</svg>'];\n\nvar markupWrap = {\n '*': [1, '?<div>', '</div>'],\n\n 'area': [1, '<map>', '</map>'],\n 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n 'legend': [1, '<fieldset>', '</fieldset>'],\n 'param': [1, '<object>', '</object>'],\n 'tr': [2, '<table><tbody>', '</tbody></table>'],\n\n 'optgroup': selectWrap,\n 'option': selectWrap,\n\n 'caption': tableWrap,\n 'colgroup': tableWrap,\n 'tbody': tableWrap,\n 'tfoot': tableWrap,\n 'thead': tableWrap,\n\n 'td': trWrap,\n 'th': trWrap\n};\n\n// Initialize the SVG elements since we know they'll always need to be wrapped\n// consistently. If they are created inside a <div> they will be initialized in\n// the wrong namespace (and will not display).\nvar svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];\nsvgElements.forEach(function (nodeName) {\n markupWrap[nodeName] = svgWrap;\n shouldWrap[nodeName] = true;\n});\n\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\nfunction getMarkupWrap(nodeName) {\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;\n if (!markupWrap.hasOwnProperty(nodeName)) {\n nodeName = '*';\n }\n if (!shouldWrap.hasOwnProperty(nodeName)) {\n if (nodeName === '*') {\n dummyNode.innerHTML = '<link />';\n } else {\n dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n }\n shouldWrap[nodeName] = !dummyNode.firstChild;\n }\n return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\nmodule.exports = getMarkupWrap;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/getMarkupWrap.js\n// module id = 96\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\n/**\n * Operations used to process updates to DOM nodes.\n */\nvar ReactDOMIDOperations = {\n\n /**\n * Updates a component's children by processing a series of updates.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n dangerouslyProcessChildrenUpdates: function (parentInst, updates) {\n var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n DOMChildrenOperations.processUpdates(node, updates);\n }\n};\n\nmodule.exports = ReactDOMIDOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMIDOperations.js\n// module id = 97\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* global hasOwnProperty:true */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar AutoFocusUtils = require('./AutoFocusUtils');\nvar CSSPropertyOperations = require('./CSSPropertyOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMNamespaces = require('./DOMNamespaces');\nvar DOMProperty = require('./DOMProperty');\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMInput = require('./ReactDOMInput');\nvar ReactDOMOption = require('./ReactDOMOption');\nvar ReactDOMSelect = require('./ReactDOMSelect');\nvar ReactDOMTextarea = require('./ReactDOMTextarea');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMultiChild = require('./ReactMultiChild');\nvar ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar isEventSupported = require('./isEventSupported');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar validateDOMNesting = require('./validateDOMNesting');\nvar warning = require('fbjs/lib/warning');\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = { 'string': true, 'number': true };\n\nvar STYLE = 'style';\nvar HTML = '__html';\nvar RESERVED_PROPS = {\n children: null,\n dangerouslySetInnerHTML: null,\n suppressContentEditableWarning: null\n};\n\n// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\nvar DOC_FRAGMENT_TYPE = 11;\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n if (internalInstance) {\n var owner = internalInstance._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' This DOM node was rendered by `' + name + '`.';\n }\n }\n }\n return '';\n}\n\nfunction friendlyStringify(obj) {\n if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return '[' + obj.map(friendlyStringify).join(', ') + ']';\n } else {\n var pairs = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n }\n }\n return '{' + pairs.join(', ') + '}';\n }\n } else if (typeof obj === 'string') {\n return JSON.stringify(obj);\n } else if (typeof obj === 'function') {\n return '[function object]';\n }\n // Differs from JSON.stringify in that undefined because undefined and that\n // inf and nan don't become null\n return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n if (style1 == null || style2 == null) {\n return;\n }\n if (shallowEqual(style1, style2)) {\n return;\n }\n\n var componentName = component._tag;\n var owner = component._currentElement._owner;\n var ownerName;\n if (owner) {\n ownerName = owner.getName();\n }\n\n var hash = ownerName + '|' + componentName;\n\n if (styleMutationWarning.hasOwnProperty(hash)) {\n return;\n }\n\n styleMutationWarning[hash] = true;\n\n process.env.NODE_ENV !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n}\n\n/**\n * @param {object} component\n * @param {?object} props\n */\nfunction assertValidProps(component, props) {\n if (!props) {\n return;\n }\n // Note the use of `==` which checks for null or undefined.\n if (voidElementTags[component._tag]) {\n !(props.children == null && props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;\n }\n if (props.dangerouslySetInnerHTML != null) {\n !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;\n !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;\n }\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;\n }\n !(props.style == null || typeof props.style === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n if (transaction instanceof ReactServerRenderingTransaction) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // IE8 has no API for event capturing and the `onScroll` event doesn't\n // bubble.\n process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\\'t support the `onScroll` event') : void 0;\n }\n var containerInfo = inst._hostContainerInfo;\n var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n listenTo(registrationName, doc);\n transaction.getReactMountReady().enqueue(putListener, {\n inst: inst,\n registrationName: registrationName,\n listener: listener\n });\n}\n\nfunction putListener() {\n var listenerToPut = this;\n EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction inputPostMount() {\n var inst = this;\n ReactDOMInput.postMountWrapper(inst);\n}\n\nfunction textareaPostMount() {\n var inst = this;\n ReactDOMTextarea.postMountWrapper(inst);\n}\n\nfunction optionPostMount() {\n var inst = this;\n ReactDOMOption.postMountWrapper(inst);\n}\n\nvar setAndValidateContentChildDev = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev = function (content) {\n var hasExistingContent = this._contentDebugID != null;\n var debugID = this._debugID;\n // This ID represents the inlined child that has no backing instance:\n var contentDebugID = -debugID;\n\n if (content == null) {\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n }\n this._contentDebugID = null;\n return;\n }\n\n validateDOMNesting(null, String(content), this, this._ancestorInfo);\n this._contentDebugID = contentDebugID;\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n } else {\n ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n }\n };\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n topAbort: 'abort',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTimeUpdate: 'timeupdate',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting'\n};\n\nfunction trapBubbledEventsLocal() {\n var inst = this;\n // If a component renders to null or if another component fatals and causes\n // the state of the tree to be corrupted, `node` here can be null.\n !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;\n var node = getNode(inst);\n !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;\n\n switch (inst._tag) {\n case 'iframe':\n case 'object':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'video':\n case 'audio':\n\n inst._wrapperState.listeners = [];\n // Create listener for each media event\n for (var event in mediaEvents) {\n if (mediaEvents.hasOwnProperty(event)) {\n inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n }\n }\n break;\n case 'source':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];\n break;\n case 'img':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'form':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];\n break;\n case 'input':\n case 'select':\n case 'textarea':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];\n break;\n }\n}\n\nfunction postUpdateSelectWrapper() {\n ReactDOMSelect.postUpdateWrapper(this);\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n 'area': true,\n 'base': true,\n 'br': true,\n 'col': true,\n 'embed': true,\n 'hr': true,\n 'img': true,\n 'input': true,\n 'keygen': true,\n 'link': true,\n 'meta': true,\n 'param': true,\n 'source': true,\n 'track': true,\n 'wbr': true\n};\n\nvar newlineEatingTags = {\n 'listing': true,\n 'pre': true,\n 'textarea': true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n 'menuitem': true\n}, omittedCloseTags);\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n if (!hasOwnProperty.call(validatedTagCache, tag)) {\n !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;\n validatedTagCache[tag] = true;\n }\n}\n\nfunction isCustomComponent(tagName, props) {\n return tagName.indexOf('-') >= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n * - Event listeners: `onClick`, `onMouseDown`, etc.\n * - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(element) {\n var tag = element.type;\n validateDangerousTag(tag);\n this._currentElement = element;\n this._tag = tag.toLowerCase();\n this._namespaceURI = null;\n this._renderedChildren = null;\n this._previousStyle = null;\n this._previousStyleCopy = null;\n this._hostNode = null;\n this._hostParent = null;\n this._rootNodeID = 0;\n this._domID = 0;\n this._hostContainerInfo = null;\n this._wrapperState = null;\n this._topLevelWrapper = null;\n this._flags = 0;\n if (process.env.NODE_ENV !== 'production') {\n this._ancestorInfo = null;\n setAndValidateContentChildDev.call(this, null);\n }\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\n\nReactDOMComponent.Mixin = {\n\n /**\n * Generates root tag markup then recurses. This method has side effects and\n * is not idempotent.\n *\n * @internal\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?ReactDOMComponent} the parent component instance\n * @param {?object} info about the host container\n * @param {object} context\n * @return {string} The computed markup.\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n this._rootNodeID = globalIdCounter++;\n this._domID = hostContainerInfo._idCounter++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var props = this._currentElement.props;\n\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n this._wrapperState = {\n listeners: null\n };\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'input':\n ReactDOMInput.mountWrapper(this, props, hostParent);\n props = ReactDOMInput.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'option':\n ReactDOMOption.mountWrapper(this, props, hostParent);\n props = ReactDOMOption.getHostProps(this, props);\n break;\n case 'select':\n ReactDOMSelect.mountWrapper(this, props, hostParent);\n props = ReactDOMSelect.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'textarea':\n ReactDOMTextarea.mountWrapper(this, props, hostParent);\n props = ReactDOMTextarea.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n }\n\n assertValidProps(this, props);\n\n // We create tags in the namespace of their parent container, except HTML\n // tags get no namespace.\n var namespaceURI;\n var parentTag;\n if (hostParent != null) {\n namespaceURI = hostParent._namespaceURI;\n parentTag = hostParent._tag;\n } else if (hostContainerInfo._tag) {\n namespaceURI = hostContainerInfo._namespaceURI;\n parentTag = hostContainerInfo._tag;\n }\n if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n namespaceURI = DOMNamespaces.html;\n }\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'svg') {\n namespaceURI = DOMNamespaces.svg;\n } else if (this._tag === 'math') {\n namespaceURI = DOMNamespaces.mathml;\n }\n }\n this._namespaceURI = namespaceURI;\n\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo._tag) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(this._tag, null, this, parentInfo);\n }\n this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n }\n\n var mountImage;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var el;\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'script') {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n var div = ownerDocument.createElement('div');\n var type = this._currentElement.type;\n div.innerHTML = '<' + type + '></' + type + '>';\n el = div.removeChild(div.firstChild);\n } else if (props.is) {\n el = ownerDocument.createElement(this._currentElement.type, props.is);\n } else {\n // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n el = ownerDocument.createElement(this._currentElement.type);\n }\n } else {\n el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n }\n ReactDOMComponentTree.precacheNode(this, el);\n this._flags |= Flags.hasCachedChildNodes;\n if (!this._hostParent) {\n DOMPropertyOperations.setAttributeForRoot(el);\n }\n this._updateDOMProperties(null, props, transaction);\n var lazyTree = DOMLazyTree(el);\n this._createInitialChildren(transaction, props, context, lazyTree);\n mountImage = lazyTree;\n } else {\n var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n var tagContent = this._createContentMarkup(transaction, props, context);\n if (!tagContent && omittedCloseTags[this._tag]) {\n mountImage = tagOpen + '/>';\n } else {\n mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n }\n }\n\n switch (this._tag) {\n case 'input':\n transaction.getReactMountReady().enqueue(inputPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'textarea':\n transaction.getReactMountReady().enqueue(textareaPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'select':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'button':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'option':\n transaction.getReactMountReady().enqueue(optionPostMount, this);\n break;\n }\n\n return mountImage;\n },\n\n /**\n * Creates markup for the open tag and all attributes.\n *\n * This method has side effects because events get registered.\n *\n * Iterating over object properties is faster than iterating over arrays.\n * @see http://jsperf.com/obj-vs-arr-iteration\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @return {string} Markup of opening tag.\n */\n _createOpenTagMarkupAndPutListeners: function (transaction, props) {\n var ret = '<' + this._currentElement.type;\n\n for (var propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n var propValue = props[propKey];\n if (propValue == null) {\n continue;\n }\n if (registrationNameModules.hasOwnProperty(propKey)) {\n if (propValue) {\n enqueuePutListener(this, propKey, propValue, transaction);\n }\n } else {\n if (propKey === STYLE) {\n if (propValue) {\n if (process.env.NODE_ENV !== 'production') {\n // See `_updateDOMProperties`. style block\n this._previousStyle = propValue;\n }\n propValue = this._previousStyleCopy = _assign({}, props.style);\n }\n propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n }\n var markup = null;\n if (this._tag != null && isCustomComponent(this._tag, props)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n }\n } else {\n markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n }\n if (markup) {\n ret += ' ' + markup;\n }\n }\n }\n\n // For static pages, no need to put React ID and checksum. Saves lots of\n // bytes.\n if (transaction.renderToStaticMarkup) {\n return ret;\n }\n\n if (!this._hostParent) {\n ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n }\n ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n return ret;\n },\n\n /**\n * Creates markup for the content between the tags.\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @param {object} context\n * @return {string} Content markup.\n */\n _createContentMarkup: function (transaction, props, context) {\n var ret = '';\n\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n ret = innerHTML.__html;\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n ret = escapeTextContentForBrowser(contentToUse);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n ret = mountImages.join('');\n }\n }\n if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n // text/html ignores the first character in these tags if it's a newline\n // Prefer to break application/xml over text/html (for now) by adding\n // a newline specifically to get eaten by the parser. (Alternately for\n // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n // \\r is normalized out by HTMLTextAreaElement#value.)\n // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n return '\\n' + ret;\n } else {\n return ret;\n }\n },\n\n _createInitialChildren: function (transaction, props, context, lazyTree) {\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n // TODO: Validate that text is allowed as a child of this node\n if (contentToUse != null) {\n // Avoid setting textContent when the text is empty. In IE11 setting\n // textContent on a text area will cause the placeholder to not\n // show within the textarea until it has been focused and blurred again.\n // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n if (contentToUse !== '') {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n DOMLazyTree.queueText(lazyTree, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n for (var i = 0; i < mountImages.length; i++) {\n DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n }\n }\n }\n },\n\n /**\n * Receives a next element and updates the component.\n *\n * @internal\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} context\n */\n receiveComponent: function (nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n this.updateComponent(transaction, prevElement, nextElement, context);\n },\n\n /**\n * Updates a DOM component after it has already been allocated and\n * attached to the DOM. Reconciles the root DOM node, then recurses.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @param {ReactElement} nextElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevElement, nextElement, context) {\n var lastProps = prevElement.props;\n var nextProps = this._currentElement.props;\n\n switch (this._tag) {\n case 'input':\n lastProps = ReactDOMInput.getHostProps(this, lastProps);\n nextProps = ReactDOMInput.getHostProps(this, nextProps);\n break;\n case 'option':\n lastProps = ReactDOMOption.getHostProps(this, lastProps);\n nextProps = ReactDOMOption.getHostProps(this, nextProps);\n break;\n case 'select':\n lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n break;\n case 'textarea':\n lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n break;\n }\n\n assertValidProps(this, nextProps);\n this._updateDOMProperties(lastProps, nextProps, transaction);\n this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n switch (this._tag) {\n case 'input':\n // Update the wrapper around inputs *after* updating props. This has to\n // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n // raise warnings and prevent the new value from being assigned.\n ReactDOMInput.updateWrapper(this);\n break;\n case 'textarea':\n ReactDOMTextarea.updateWrapper(this);\n break;\n case 'select':\n // <select> value update needs to occur after <option> children\n // reconciliation\n transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n break;\n }\n },\n\n /**\n * Reconciles the properties by detecting differences in property values and\n * updating the DOM as necessary. This function is probably the single most\n * critical path for performance optimization.\n *\n * TODO: Benchmark whether checking for changed values in memory actually\n * improves performance (especially statically positioned elements).\n * TODO: Benchmark the effects of putting this at the top since 99% of props\n * do not change for a given reconciliation.\n * TODO: Benchmark areas that can be improved with caching.\n *\n * @private\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {?DOMElement} node\n */\n _updateDOMProperties: function (lastProps, nextProps, transaction) {\n var propKey;\n var styleName;\n var styleUpdates;\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n continue;\n }\n if (propKey === STYLE) {\n var lastStyle = this._previousStyleCopy;\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n this._previousStyleCopy = null;\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (lastProps[propKey]) {\n // Only call deleteListener if there was a listener previously or\n // else willDeleteListener gets called when there wasn't actually a\n // listener (e.g., onClick={null})\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, lastProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n }\n }\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n continue;\n }\n if (propKey === STYLE) {\n if (nextProp) {\n if (process.env.NODE_ENV !== 'production') {\n checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n this._previousStyle = nextProp;\n }\n nextProp = this._previousStyleCopy = _assign({}, nextProp);\n } else {\n this._previousStyleCopy = null;\n }\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n // Update styles that changed since `lastProp`.\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n styleUpdates = nextProp;\n }\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (nextProp) {\n enqueuePutListener(this, propKey, nextProp, transaction);\n } else if (lastProp) {\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, nextProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n var node = getNode(this);\n // If we're updating to null or undefined, we should remove the property\n // from the DOM node instead of inadvertently setting to a string. This\n // brings us in line with the same behavior we have on initial render.\n if (nextProp != null) {\n DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n } else {\n DOMPropertyOperations.deleteValueForProperty(node, propKey);\n }\n }\n }\n if (styleUpdates) {\n CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n }\n },\n\n /**\n * Reconciles the children with the various properties that affect the\n * children content.\n *\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n */\n _updateDOMChildren: function (lastProps, nextProps, transaction, context) {\n var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;\n var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;\n\n var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;\n\n // Note the use of `!=` which checks for null or undefined.\n var lastChildren = lastContent != null ? null : lastProps.children;\n var nextChildren = nextContent != null ? null : nextProps.children;\n\n // If we're switching from children to content/html or vice versa, remove\n // the old content\n var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n if (lastChildren != null && nextChildren == null) {\n this.updateChildren(null, transaction, context);\n } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n this.updateTextContent('');\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n }\n\n if (nextContent != null) {\n if (lastContent !== nextContent) {\n this.updateTextContent('' + nextContent);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, nextContent);\n }\n }\n } else if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n this.updateMarkup('' + nextHtml);\n }\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n } else if (nextChildren != null) {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n\n this.updateChildren(nextChildren, transaction, context);\n }\n },\n\n getHostNode: function () {\n return getNode(this);\n },\n\n /**\n * Destroys all event registrations for this instance. Does not remove from\n * the DOM. That must be done by the parent.\n *\n * @internal\n */\n unmountComponent: function (safely) {\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n var listeners = this._wrapperState.listeners;\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].remove();\n }\n }\n break;\n case 'html':\n case 'head':\n case 'body':\n /**\n * Components like <html> <head> and <body> can't be removed or added\n * easily in a cross-browser way, however it's valuable to be able to\n * take advantage of React's reconciliation for styling and <title>\n * management. So we just document it and throw in dangerous cases.\n */\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;\n break;\n }\n\n this.unmountChildren(safely);\n ReactDOMComponentTree.uncacheNode(this);\n EventPluginHub.deleteAllListeners(this);\n this._rootNodeID = 0;\n this._domID = 0;\n this._wrapperState = null;\n\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n },\n\n getPublicInstance: function () {\n return getNode(this);\n }\n\n};\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMComponent.js\n// module id = 98\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar focusNode = require('fbjs/lib/focusNode');\n\nvar AutoFocusUtils = {\n focusDOMComponent: function () {\n focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n }\n};\n\nmodule.exports = AutoFocusUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/AutoFocusUtils.js\n// module id = 99\n// module chunks = 7","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n // IE8 can throw \"Can't move focus to the control because it is invisible,\n // not enabled, or of a type that does not accept the focus.\" for all kinds of\n // reasons that are too expensive and fragile to test.\n try {\n node.focus();\n } catch (e) {}\n}\n\nmodule.exports = focusNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/focusNode.js\n// module id = 100\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar camelizeStyleName = require('fbjs/lib/camelizeStyleName');\nvar dangerousStyleValue = require('./dangerousStyleValue');\nvar hyphenateStyleName = require('fbjs/lib/hyphenateStyleName');\nvar memoizeStringOnly = require('fbjs/lib/memoizeStringOnly');\nvar warning = require('fbjs/lib/warning');\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar hasShorthandPropertyBug = false;\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n var tempStyle = document.createElement('div').style;\n try {\n // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n tempStyle.font = '';\n } catch (e) {\n hasShorthandPropertyBug = true;\n }\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n\n var warnHyphenatedStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n };\n\n var warnBadVendoredStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n };\n\n var warnStyleValueWithSemicolon = function (name, value, owner) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Style property values shouldn\\'t contain a semicolon.%s ' + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;\n };\n\n var warnStyleValueIsNaN = function (name, value, owner) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;\n };\n\n var checkRenderMessage = function (owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n };\n\n /**\n * @param {string} name\n * @param {*} value\n * @param {ReactDOMComponent} component\n */\n var warnValidStyle = function (name, value, component) {\n var owner;\n if (component) {\n owner = component._currentElement._owner;\n }\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name, owner);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name, owner);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value, owner);\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n warnStyleValueIsNaN(name, value, owner);\n }\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @param {ReactDOMComponent} component\n * @return {?string}\n */\n createMarkupForStyles: function (styles, component) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var styleValue = styles[styleName];\n if (process.env.NODE_ENV !== 'production') {\n warnValidStyle(styleName, styleValue, component);\n }\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, component) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n * @param {ReactDOMComponent} component\n */\n setValueForStyles: function (node, styles, component) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: component._debugID,\n type: 'update styles',\n payload: styles\n });\n }\n\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n if (process.env.NODE_ENV !== 'production') {\n warnValidStyle(styleName, styles[styleName], component);\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName], component);\n if (styleName === 'float' || styleName === 'cssFloat') {\n styleName = styleFloatAccessor;\n }\n if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n\n};\n\nmodule.exports = CSSPropertyOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/CSSPropertyOperations.js\n// module id = 101\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundAttachment: true,\n backgroundColor: true,\n backgroundImage: true,\n backgroundPositionX: true,\n backgroundPositionY: true,\n backgroundRepeat: true\n },\n backgroundPosition: {\n backgroundPositionX: true,\n backgroundPositionY: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n },\n outline: {\n outlineWidth: true,\n outlineStyle: true,\n outlineColor: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/CSSProperty.js\n// module id = 102\n// module chunks = 7","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar camelize = require('./camelize');\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/camelizeStyleName.js\n// module id = 103\n// module chunks = 7","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/camelize.js\n// module id = 104\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar warning = require('fbjs/lib/warning');\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\nvar styleWarnings = {};\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @param {ReactDOMComponent} component\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, component) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n if (isEmpty) {\n return '';\n }\n\n var isNonNumeric = isNaN(value);\n if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n return '' + value; // cast to string\n }\n\n if (typeof value === 'string') {\n if (process.env.NODE_ENV !== 'production') {\n // Allow '0' to pass through without warning. 0 is already special and\n // doesn't require units, so we don't need to warn about it.\n if (component && value !== '0') {\n var owner = component._currentElement._owner;\n var ownerName = owner ? owner.getName() : null;\n if (ownerName && !styleWarnings[ownerName]) {\n styleWarnings[ownerName] = {};\n }\n var warned = false;\n if (ownerName) {\n var warnings = styleWarnings[ownerName];\n warned = warnings[name];\n if (!warned) {\n warnings[name] = true;\n }\n }\n if (!warned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;\n }\n }\n }\n value = value.trim();\n }\n return value + 'px';\n}\n\nmodule.exports = dangerousStyleValue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/dangerousStyleValue.js\n// module id = 105\n// module chunks = 7","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar hyphenate = require('./hyphenate');\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/hyphenateStyleName.js\n// module id = 106\n// module chunks = 7","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/hyphenate.js\n// module id = 107\n// module chunks = 7","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/memoizeStringOnly.js\n// module id = 108\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar quoteAttributeValueForBrowser = require('./quoteAttributeValueForBrowser');\nvar warning = require('fbjs/lib/warning');\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n return true;\n }\n if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;\n return false;\n}\n\nfunction shouldIgnoreValue(propertyInfo, value) {\n return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function (id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);\n },\n\n setAttributeForID: function (node, id) {\n node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n },\n\n createMarkupForRoot: function () {\n return DOMProperty.ROOT_ATTRIBUTE_NAME + '=\"\"';\n },\n\n setAttributeForRoot: function (node) {\n node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function (name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n if (shouldIgnoreValue(propertyInfo, value)) {\n return '';\n }\n var attributeName = propertyInfo.attributeName;\n if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n return attributeName + '=\"\"';\n }\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n }\n return null;\n },\n\n /**\n * Creates markup for a custom property.\n *\n * @param {string} name\n * @param {*} value\n * @return {string} Markup string, or empty string if the property was invalid.\n */\n createMarkupForCustomAttribute: function (name, value) {\n if (!isAttributeNameSafe(name) || value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function (node, name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(propertyInfo, value)) {\n this.deleteValueForProperty(node, name);\n return;\n } else if (propertyInfo.mustUseProperty) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propertyInfo.propertyName] = value;\n } else {\n var attributeName = propertyInfo.attributeName;\n var namespace = propertyInfo.attributeNamespace;\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n if (namespace) {\n node.setAttributeNS(namespace, attributeName, '' + value);\n } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n node.setAttribute(attributeName, '');\n } else {\n node.setAttribute(attributeName, '' + value);\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n DOMPropertyOperations.setValueForAttribute(node, name, value);\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n setValueForAttribute: function (node, name, value) {\n if (!isAttributeNameSafe(name)) {\n return;\n }\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n /**\n * Deletes an attributes from a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForAttribute: function (node, name) {\n node.removeAttribute(name);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function (node, name) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (propertyInfo.mustUseProperty) {\n var propName = propertyInfo.propertyName;\n if (propertyInfo.hasBooleanValue) {\n node[propName] = false;\n } else {\n node[propName] = '';\n }\n } else {\n node.removeAttribute(propertyInfo.attributeName);\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n }\n\n};\n\nmodule.exports = DOMPropertyOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/DOMPropertyOperations.js\n// module id = 109\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextContentForBrowser(value) + '\"';\n}\n\nmodule.exports = quoteAttributeValueForBrowser;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/quoteAttributeValueForBrowser.js\n// module id = 110\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactEventEmitterMixin = require('./ReactEventEmitterMixin');\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getVendorPrefixedEventName = require('./getVendorPrefixedEventName');\nvar isEventSupported = require('./isEventSupported');\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\nvar hasEventPageXY;\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\nvar topEventMapping = {\n topAbort: 'abort',\n topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',\n topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',\n topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',\n topBlur: 'blur',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topScroll: 'scroll',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topSelectionChange: 'selectionchange',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTextInput: 'textInput',\n topTimeUpdate: 'timeupdate',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting',\n topWheel: 'wheel'\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * EventPluginHub.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {\n\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function (ReactEventListener) {\n ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function (enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function () {\n return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function (registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];\n\n for (var i = 0; i < dependencies.length; i++) {\n var dependency = dependencies[i];\n if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n if (dependency === 'topWheel') {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);\n }\n } else if (dependency === 'topScroll') {\n\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);\n }\n } else if (dependency === 'topFocus' || dependency === 'topBlur') {\n\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);\n }\n\n // to make sure blur and focus event listeners are only attached once\n isListening.topBlur = true;\n isListening.topFocus = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);\n }\n\n isListening[dependency] = true;\n }\n }\n },\n\n trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);\n },\n\n trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);\n },\n\n /**\n * Protect against document.createEvent() returning null\n * Some popup blocker extensions appear to do this:\n * https://github.com/facebook/react/issues/6887\n */\n supportsEventPageXY: function () {\n if (!document.createEvent) {\n return false;\n }\n var ev = document.createEvent('MouseEvent');\n return ev != null && 'pageX' in ev;\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when\n * pageX/pageY isn't supported (legacy browsers).\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function () {\n if (hasEventPageXY === undefined) {\n hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();\n }\n if (!hasEventPageXY && !isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n }\n\n});\n\nmodule.exports = ReactBrowserEventEmitter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactBrowserEventEmitter.js\n// module id = 111\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n */\n handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactEventEmitterMixin.js\n// module id = 112\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n prefixes['ms' + styleProp] = 'MS' + eventName;\n prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\n return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n style = document.createElement('div').style;\n\n // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n }\n\n // Same as above\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n for (var styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return '';\n}\n\nmodule.exports = getVendorPrefixedEventName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/getVendorPrefixedEventName.js\n// module id = 113\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnCheckedLink = false;\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMInput.updateWrapper(this);\n }\n}\n\nfunction isControlled(props) {\n var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = {\n getHostProps: function (inst, props) {\n var value = LinkedValueUtils.getValue(props);\n var checked = LinkedValueUtils.getChecked(props);\n\n var hostProps = _assign({\n // Make sure we set .type before any other properties (setting .value\n // before .type means .value is lost in IE11 and below)\n type: undefined,\n // Make sure we set .step before .value (setting .value before .step\n // means .value is rounded on mount, based upon step precision)\n step: undefined,\n // Make sure we set .min & .max before .value (to ensure proper order\n // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n min: undefined,\n max: undefined\n }, props, {\n defaultChecked: undefined,\n defaultValue: undefined,\n value: value != null ? value : inst._wrapperState.initialValue,\n checked: checked != null ? checked : inst._wrapperState.initialChecked,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);\n\n var owner = inst._currentElement._owner;\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.checkedLink !== undefined && !didWarnCheckedLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnCheckedLink = true;\n }\n if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnCheckedDefaultChecked = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnValueDefaultValue = true;\n }\n }\n\n var defaultValue = props.defaultValue;\n inst._wrapperState = {\n initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n initialValue: props.value != null ? props.value : defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n controlled: isControlled(props)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n if (process.env.NODE_ENV !== 'production') {\n var controlled = isControlled(props);\n var owner = inst._currentElement._owner;\n\n if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnUncontrolledToControlled = true;\n }\n if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnControlledToUncontrolled = true;\n }\n }\n\n // TODO: Shouldn't this be getChecked(props)?\n var checked = props.checked;\n if (checked != null) {\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n if (value === 0 && node.value === '') {\n node.value = '0';\n // Note: IE9 reports a number inputs as 'text', so check props instead.\n } else if (props.type === 'number') {\n // Simulate `input.valueAsNumber`. IE9 does not support it\n var valueAsNumber = parseFloat(node.value, 10) || 0;\n\n // eslint-disable-next-line\n if (value != valueAsNumber) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n // eslint-disable-next-line\n } else if (value != node.value) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n } else {\n if (props.value == null && props.defaultValue != null) {\n // In Chrome, assigning defaultValue to certain input types triggers input validation.\n // For number inputs, the display value loses trailing decimal points. For email inputs,\n // Chrome raises \"The specified value <x> is not a valid email address\".\n //\n // Here we check to see if the defaultValue has actually changed, avoiding these problems\n // when the user is inputting text\n //\n // https://github.com/facebook/react/issues/7253\n if (node.defaultValue !== '' + props.defaultValue) {\n node.defaultValue = '' + props.defaultValue;\n }\n }\n if (props.checked == null && props.defaultChecked != null) {\n node.defaultChecked = !!props.defaultChecked;\n }\n }\n },\n\n postMountWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n // Detach value from defaultValue. We won't do anything if we're working on\n // submit or reset inputs as those values & defaultValues are linked. They\n // are not resetable nodes so this operation doesn't matter and actually\n // removes browser-default values (eg \"Submit Query\") when no value is\n // provided.\n\n switch (props.type) {\n case 'submit':\n case 'reset':\n break;\n case 'color':\n case 'date':\n case 'datetime':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n // This fixes the no-show issue on iOS Safari and Android Chrome:\n // https://github.com/facebook/react/issues/7233\n node.value = '';\n node.value = node.defaultValue;\n break;\n default:\n node.value = node.value;\n break;\n }\n\n // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n // this is needed to work around a chrome bug where setting defaultChecked\n // will sometimes influence the value of checked (even after detachment).\n // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n // We need to temporarily unset name to avoid disrupting radio button groups.\n var name = node.name;\n if (name !== '') {\n node.name = '';\n }\n node.defaultChecked = !node.defaultChecked;\n node.defaultChecked = !node.defaultChecked;\n if (name !== '') {\n node.name = name;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n // Here we use asap to wait until all updates have propagated, which\n // is important when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n ReactUpdates.asap(forceUpdateIfMounted, this);\n\n var name = props.name;\n if (props.type === 'radio' && name != null) {\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n }\n\n // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form, let's just use the global\n // `querySelectorAll` to ensure we don't miss anything.\n var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0; i < group.length; i++) {\n var otherNode = group[i];\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n }\n // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n !otherInstance ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;\n // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n }\n }\n\n return returnValue;\n}\n\nmodule.exports = ReactDOMInput;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMInput.js\n// module id = 114\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactPropTypesSecret = require('./ReactPropTypesSecret');\nvar propTypesFactory = require('prop-types/factory');\n\nvar React = require('react/lib/React');\nvar PropTypes = propTypesFactory(React.isValidElement);\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar hasReadOnlyValue = {\n 'button': true,\n 'checkbox': true,\n 'image': true,\n 'hidden': true,\n 'radio': true,\n 'reset': true,\n 'submit': true\n};\n\nfunction _assertSingleLink(inputProps) {\n !(inputProps.checkedLink == null || inputProps.valueLink == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;\n}\nfunction _assertValueLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.value == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '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.') : _prodInvariant('88') : void 0;\n}\n\nfunction _assertCheckedLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.checked == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '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') : _prodInvariant('89') : void 0;\n}\n\nvar propTypes = {\n value: function (props, propName, componentName) {\n if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return 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`.');\n },\n checked: function (props, propName, componentName) {\n if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return 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`.');\n },\n onChange: PropTypes.func\n};\n\nvar loggedTypeFailures = {};\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\nvar LinkedValueUtils = {\n checkPropTypes: function (tagName, props, owner) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(owner);\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;\n }\n }\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current value of the input either from value prop or link.\n */\n getValue: function (inputProps) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.value;\n }\n return inputProps.value;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current checked status of the input either from checked prop\n * or link.\n */\n getChecked: function (inputProps) {\n if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.value;\n }\n return inputProps.checked;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @param {SyntheticEvent} event change event to handle\n */\n executeOnChange: function (inputProps, event) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.requestChange(event.target.value);\n } else if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.requestChange(event.target.checked);\n } else if (inputProps.onChange) {\n return inputProps.onChange.call(undefined, event);\n }\n }\n};\n\nmodule.exports = LinkedValueUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/LinkedValueUtils.js\n// module id = 115\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMSelect = require('./ReactDOMSelect');\n\nvar warning = require('fbjs/lib/warning');\nvar didWarnInvalidOptionChildren = false;\n\nfunction flattenChildren(children) {\n var content = '';\n\n // Flatten children and warn if they aren't strings or numbers;\n // invalid types are ignored.\n React.Children.forEach(children, function (child) {\n if (child == null) {\n return;\n }\n if (typeof child === 'string' || typeof child === 'number') {\n content += child;\n } else if (!didWarnInvalidOptionChildren) {\n didWarnInvalidOptionChildren = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;\n }\n });\n\n return content;\n}\n\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\nvar ReactDOMOption = {\n mountWrapper: function (inst, props, hostParent) {\n // TODO (yungsters): Remove support for `selected` in <option>.\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;\n }\n\n // Look up whether this option is 'selected'\n var selectValue = null;\n if (hostParent != null) {\n var selectParent = hostParent;\n\n if (selectParent._tag === 'optgroup') {\n selectParent = selectParent._hostParent;\n }\n\n if (selectParent != null && selectParent._tag === 'select') {\n selectValue = ReactDOMSelect.getSelectValueContext(selectParent);\n }\n }\n\n // If the value is null (e.g., no specified value or after initial mount)\n // or missing (e.g., for <datalist>), we don't change props.selected\n var selected = null;\n if (selectValue != null) {\n var value;\n if (props.value != null) {\n value = props.value + '';\n } else {\n value = flattenChildren(props.children);\n }\n selected = false;\n if (Array.isArray(selectValue)) {\n // multiple\n for (var i = 0; i < selectValue.length; i++) {\n if ('' + selectValue[i] === value) {\n selected = true;\n break;\n }\n }\n } else {\n selected = '' + selectValue === value;\n }\n }\n\n inst._wrapperState = { selected: selected };\n },\n\n postMountWrapper: function (inst) {\n // value=\"\" should make a value attribute (#6219)\n var props = inst._currentElement.props;\n if (props.value != null) {\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n node.setAttribute('value', props.value);\n }\n },\n\n getHostProps: function (inst, props) {\n var hostProps = _assign({ selected: undefined, children: undefined }, props);\n\n // Read state only from initial mount because <select> updates value\n // manually; we need the initial state only for server rendering\n if (inst._wrapperState.selected != null) {\n hostProps.selected = inst._wrapperState.selected;\n }\n\n var content = flattenChildren(props.children);\n\n if (content) {\n hostProps.children = content;\n }\n\n return hostProps;\n }\n\n};\n\nmodule.exports = ReactDOMOption;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMOption.js\n// module id = 117\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValueDefaultValue = false;\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n if (this._rootNodeID && this._wrapperState.pendingUpdate) {\n this._wrapperState.pendingUpdate = false;\n\n var props = this._currentElement.props;\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n updateOptions(this, Boolean(props.multiple), value);\n }\n }\n}\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\nfunction checkSelectPropTypes(inst, props) {\n var owner = inst._currentElement._owner;\n LinkedValueUtils.checkPropTypes('select', props, owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n for (var i = 0; i < valuePropNames.length; i++) {\n var propName = valuePropNames[i];\n if (props[propName] == null) {\n continue;\n }\n var isArray = Array.isArray(props[propName]);\n if (props.multiple && !isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n } else if (!props.multiple && isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n }\n }\n}\n\n/**\n * @param {ReactDOMComponent} inst\n * @param {boolean} multiple\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\nfunction updateOptions(inst, multiple, propValue) {\n var selectedValue, i;\n var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\n if (multiple) {\n selectedValue = {};\n for (i = 0; i < propValue.length; i++) {\n selectedValue['' + propValue[i]] = true;\n }\n for (i = 0; i < options.length; i++) {\n var selected = selectedValue.hasOwnProperty(options[i].value);\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n selectedValue = '' + propValue;\n for (i = 0; i < options.length; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n return;\n }\n }\n if (options.length) {\n options[0].selected = true;\n }\n }\n}\n\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = {\n getHostProps: function (inst, props) {\n return _assign({}, props, {\n onChange: inst._wrapperState.onChange,\n value: undefined\n });\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n checkSelectPropTypes(inst, props);\n }\n\n var value = LinkedValueUtils.getValue(props);\n inst._wrapperState = {\n pendingUpdate: false,\n initialValue: value != null ? value : props.defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n wasMultiple: Boolean(props.multiple)\n };\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValueDefaultValue = true;\n }\n },\n\n getSelectValueContext: function (inst) {\n // ReactDOMOption looks at this initial value so the initial generated\n // markup has correct `selected` attributes\n return inst._wrapperState.initialValue;\n },\n\n postUpdateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // After the initial mount, we control selected-ness manually so don't pass\n // this value down\n inst._wrapperState.initialValue = undefined;\n\n var wasMultiple = inst._wrapperState.wasMultiple;\n inst._wrapperState.wasMultiple = Boolean(props.multiple);\n\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n inst._wrapperState.pendingUpdate = false;\n updateOptions(inst, Boolean(props.multiple), value);\n } else if (wasMultiple !== Boolean(props.multiple)) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (props.defaultValue != null) {\n updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');\n }\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n if (this._rootNodeID) {\n this._wrapperState.pendingUpdate = true;\n }\n ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMSelect;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMSelect.js\n// module id = 118\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValDefaultVal = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMTextarea.updateWrapper(this);\n }\n}\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = {\n getHostProps: function (inst, props) {\n !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;\n\n // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated. We could add a check in setTextContent\n // to only set the value if/when the value differs from the node value (which would\n // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.\n // The value can be a boolean or object so that's why it's forced to be a string.\n var hostProps = _assign({}, props, {\n value: undefined,\n defaultValue: undefined,\n children: '' + inst._wrapperState.initialValue,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValDefaultVal = true;\n }\n }\n\n var value = LinkedValueUtils.getValue(props);\n var initialValue = value;\n\n // Only bother fetching default value if we're going to use it\n if (value == null) {\n var defaultValue = props.defaultValue;\n // TODO (yungsters): Remove support for children content in <textarea>.\n var children = props.children;\n if (children != null) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;\n }\n !(defaultValue == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;\n if (Array.isArray(children)) {\n !(children.length <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;\n children = children[0];\n }\n\n defaultValue = '' + children;\n }\n if (defaultValue == null) {\n defaultValue = '';\n }\n initialValue = defaultValue;\n }\n\n inst._wrapperState = {\n initialValue: '' + initialValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n if (props.defaultValue == null) {\n node.defaultValue = newValue;\n }\n }\n if (props.defaultValue != null) {\n node.defaultValue = props.defaultValue;\n }\n },\n\n postMountWrapper: function (inst) {\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var textContent = node.textContent;\n\n // Only set node.value if textContent is equal to the expected\n // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n // will populate textContent as well.\n // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n if (textContent === inst._wrapperState.initialValue) {\n node.value = textContent;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n ReactUpdates.asap(forceUpdateIfMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMTextarea;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMTextarea.js\n// module id = 119\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactChildReconciler = require('./ReactChildReconciler');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar flattenChildren = require('./flattenChildren');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'INSERT_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction makeMove(child, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'MOVE_EXISTING',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: ReactReconciler.getHostNode(child),\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction makeRemove(child, node) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'REMOVE_NODE',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: node,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\nfunction makeSetMarkup(markup) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'SET_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction makeTextContent(textContent) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'TEXT_CONTENT',\n content: textContent,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\nfunction enqueue(queue, update) {\n if (update) {\n queue = queue || [];\n queue.push(update);\n }\n return queue;\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue(inst, updateQueue) {\n ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n\nvar setChildrenForInstrumentation = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n var getDebugID = function (inst) {\n if (!inst._debugID) {\n // Check for ART-like instances. TODO: This is silly/gross.\n var internal;\n if (internal = ReactInstanceMap.get(inst)) {\n inst = internal;\n }\n }\n return inst._debugID;\n };\n setChildrenForInstrumentation = function (children) {\n var debugID = getDebugID(this);\n // TODO: React Native empty components are also multichild.\n // This means they still get into this method but don't have _debugID.\n if (debugID !== 0) {\n ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n return children[key]._debugID;\n }) : []);\n }\n };\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n\n _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {\n if (process.env.NODE_ENV !== 'production') {\n var selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n }\n }\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n },\n\n _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n var nextChildren;\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n }\n }\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n },\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function (nestedChildren, transaction, context) {\n var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n this._renderedChildren = children;\n\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n }\n var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n child._mountIndex = index++;\n mountImages.push(mountImage);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, children);\n }\n\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function (nextContent) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n // Set new text content.\n var updates = [makeTextContent(nextContent)];\n processQueue(this, updates);\n },\n\n /**\n * Replaces any rendered children with a markup string.\n *\n * @param {string} nextMarkup String of markup.\n * @internal\n */\n updateMarkup: function (nextMarkup) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n var updates = [makeSetMarkup(nextMarkup)];\n processQueue(this, updates);\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function (nextNestedChildrenElements, transaction, context) {\n // Hook used by React ART\n this._updateChildren(nextNestedChildrenElements, transaction, context);\n },\n\n /**\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function (nextNestedChildrenElements, transaction, context) {\n var prevChildren = this._renderedChildren;\n var removedNodes = {};\n var mountImages = [];\n var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n if (!nextChildren && !prevChildren) {\n return;\n }\n var updates = null;\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var nextIndex = 0;\n var lastIndex = 0;\n // `nextMountIndex` will increment for each newly mounted child.\n var nextMountIndex = 0;\n var lastPlacedNode = null;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n // The `removedNodes` loop below will actually remove the child.\n }\n // The child must be instantiated before it's mounted.\n updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n nextMountIndex++;\n }\n nextIndex++;\n lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n }\n // Remove children that are no longer present.\n for (name in removedNodes) {\n if (removedNodes.hasOwnProperty(name)) {\n updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n }\n }\n if (updates) {\n processQueue(this, updates);\n }\n this._renderedChildren = nextChildren;\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, nextChildren);\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted. It does not actually perform any\n * backend operations.\n *\n * @internal\n */\n unmountChildren: function (safely) {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren, safely);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function (child, afterNode, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n return makeMove(child, afterNode, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function (child, afterNode, mountImage) {\n return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function (child, node) {\n return makeRemove(child, node);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {\n child._mountIndex = index;\n return this.createChild(child, afterNode, mountImage);\n },\n\n /**\n * Unmounts a rendered child.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @private\n */\n _unmountChild: function (child, node) {\n var update = this.removeChild(child, node);\n child._mountIndex = null;\n return update;\n }\n\n }\n\n};\n\nmodule.exports = ReactMultiChild;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactMultiChild.js\n// module id = 120\n// module chunks = 7","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkup: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function (environment) {\n !!injected ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;\n ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n injected = true;\n }\n }\n\n};\n\nmodule.exports = ReactComponentEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactComponentEnvironment.js\n// module id = 121\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\n\nvar ReactInstanceMap = {\n\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function (key) {\n key._reactInternalInstance = undefined;\n },\n\n get: function (key) {\n return key._reactInternalInstance;\n },\n\n has: function (key) {\n return key._reactInternalInstance !== undefined;\n },\n\n set: function (key, value) {\n key._reactInternalInstance = value;\n }\n\n};\n\nmodule.exports = ReactInstanceMap;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactInstanceMap.js\n// module id = 122\n// module chunks = 7","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactReconciler = require('./ReactReconciler');\n\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\nfunction instantiateChild(childInstances, child, name, selfDebugID) {\n // We found a component instance.\n var keyUnique = childInstances[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): 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.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (child != null && keyUnique) {\n childInstances[name] = instantiateReactComponent(child, true);\n }\n}\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots\n ) {\n if (nestedChildNodes == null) {\n return null;\n }\n var childInstances = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {\n return instantiateChild(childInsts, child, name, selfDebugID);\n }, childInstances);\n } else {\n traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n }\n return childInstances;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextChildren Flat child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots\n ) {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n var prevChild;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(nextElement, true);\n nextChildren[name] = nextChildInstance;\n // Creating mount image now ensures refs are resolved in right order\n // (see https://github.com/facebook/react/pull/7101 for explanation).\n var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);\n mountImages.push(nextChildMountImage);\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {\n prevChild = prevChildren[name];\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function (renderedChildren, safely) {\n for (var name in renderedChildren) {\n if (renderedChildren.hasOwnProperty(name)) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild, safely);\n }\n }\n }\n\n};\n\nmodule.exports = ReactChildReconciler;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactChildReconciler.js\n// module id = 123\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactCompositeComponent = require('./ReactCompositeComponent');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactHostComponent = require('./ReactHostComponent');\n\nvar getNextDebugID = require('react/lib/getNextDebugID');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function (element) {\n this.construct(element);\n};\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {boolean} shouldHaveDebugID\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, shouldHaveDebugID) {\n var instance;\n\n if (node === null || node === false) {\n instance = ReactEmptyComponent.create(instantiateReactComponent);\n } else if (typeof node === 'object') {\n var element = node;\n var type = element.type;\n if (typeof type !== 'function' && typeof type !== 'string') {\n var info = '';\n if (process.env.NODE_ENV !== 'production') {\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + 'it\\'s defined in.';\n }\n }\n info += getDeclarationErrorAddendum(element._owner);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info) : _prodInvariant('130', type == null ? type : typeof type, info) : void 0;\n }\n\n // Special case string values\n if (typeof element.type === 'string') {\n instance = ReactHostComponent.createInternalComponent(element);\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // representations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n\n // We renamed this. Allow the old name for compat. :(\n if (!instance.getHostNode) {\n instance.getHostNode = instance.getNativeNode;\n }\n } else {\n instance = new ReactCompositeComponentWrapper(element);\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactHostComponent.createInstanceForText(node);\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;\n }\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (process.env.NODE_ENV !== 'production') {\n instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (process.env.NODE_ENV !== 'production') {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\n_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {\n _instantiateReactComponent: instantiateReactComponent\n});\n\nmodule.exports = instantiateReactComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/instantiateReactComponent.js\n// module id = 124\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactErrorUtils = require('./ReactErrorUtils');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactNodeTypes = require('./ReactNodeTypes');\nvar ReactReconciler = require('./ReactReconciler');\n\nif (process.env.NODE_ENV !== 'production') {\n var checkReactTypeSpec = require('./checkReactTypeSpec');\n}\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar CompositeTypes = {\n ImpureClass: 0,\n PureClass: 1,\n StatelessFunctional: 2\n};\n\nfunction StatelessComponent(Component) {}\nStatelessComponent.prototype.render = function () {\n var Component = ReactInstanceMap.get(this)._currentElement.type;\n var element = Component(this.props, this.context, this.updater);\n warnIfInvalidElement(Component, element);\n return element;\n};\n\nfunction warnIfInvalidElement(Component, element) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;\n }\n}\n\nfunction shouldConstruct(Component) {\n return !!(Component.prototype && Component.prototype.isReactComponent);\n}\n\nfunction isPureComponent(Component) {\n return !!(Component.prototype && Component.prototype.isPureReactComponent);\n}\n\n// Separated into a function to contain deoptimizations caused by try/finally.\nfunction measureLifeCyclePerf(fn, debugID, timerType) {\n if (debugID === 0) {\n // Top-level wrappers (see ReactMount) and empty components (see\n // ReactDOMEmptyComponent) are invisible to hooks and devtools.\n // Both are implementation details that should go away in the future.\n return fn();\n }\n\n ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);\n try {\n return fn();\n } finally {\n ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);\n }\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponent = {\n\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function (element) {\n this._currentElement = element;\n this._rootNodeID = 0;\n this._compositeType = null;\n this._instance = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n\n // See ReactUpdateQueue\n this._updateBatchNumber = null;\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._context = null;\n this._mountOrder = 0;\n this._topLevelWrapper = null;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n\n // ComponentWillUnmount shall only be called once\n this._calledComponentWillUnmount = false;\n\n if (process.env.NODE_ENV !== 'production') {\n this._warnedAboutRefsInRender = false;\n }\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} hostParent\n * @param {?object} hostContainerInfo\n * @param {?object} context\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var _this = this;\n\n this._context = context;\n this._mountOrder = nextMountID++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var publicProps = this._currentElement.props;\n var publicContext = this._processContext(context);\n\n var Component = this._currentElement.type;\n\n var updateQueue = transaction.getUpdateQueue();\n\n // Initialize the public class\n var doConstruct = shouldConstruct(Component);\n var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);\n var renderedElement;\n\n // Support functional components\n if (!doConstruct && (inst == null || inst.render == null)) {\n renderedElement = inst;\n warnIfInvalidElement(Component, renderedElement);\n !(inst === null || inst === false || React.isValidElement(inst)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;\n inst = new StatelessComponent(Component);\n this._compositeType = CompositeTypes.StatelessFunctional;\n } else {\n if (isPureComponent(Component)) {\n this._compositeType = CompositeTypes.PureClass;\n } else {\n this._compositeType = CompositeTypes.ImpureClass;\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n if (inst.render == null) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;\n }\n\n var propsMutated = inst.props !== publicProps;\n var componentName = Component.displayName || Component.name || 'Component';\n\n process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\\'s constructor was passed.', componentName, componentName) : void 0;\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n inst.updater = updateQueue;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (process.env.NODE_ENV !== 'production') {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var markup;\n if (inst.unstable_handleError) {\n markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } else {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n\n if (inst.componentDidMount) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(function () {\n return inst.componentDidMount();\n }, _this._debugID, 'componentDidMount');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n }\n\n return markup;\n },\n\n _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {\n if (process.env.NODE_ENV !== 'production') {\n ReactCurrentOwner.current = this;\n try {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n }\n },\n\n _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {\n var Component = this._currentElement.type;\n\n if (doConstruct) {\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return new Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'ctor');\n } else {\n return new Component(publicProps, publicContext, updateQueue);\n }\n }\n\n // This can still be an instance in case of factory components\n // but we'll count this as time spent rendering as the more common case.\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'render');\n } else {\n return Component(publicProps, publicContext, updateQueue);\n }\n },\n\n performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var markup;\n var checkpoint = transaction.checkpoint();\n try {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } catch (e) {\n // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n transaction.rollback(checkpoint);\n this._instance.unstable_handleError(e);\n if (this._pendingStateQueue) {\n this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n }\n checkpoint = transaction.checkpoint();\n\n this._renderedComponent.unmountComponent(true);\n transaction.rollback(checkpoint);\n\n // Try again - we've informed the component about the error, so they can render an error message this time.\n // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n return markup;\n },\n\n performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var inst = this._instance;\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (inst.componentWillMount) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillMount();\n }, debugID, 'componentWillMount');\n } else {\n inst.componentWillMount();\n }\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n // If not a stateless component, we now render\n if (renderedElement === undefined) {\n renderedElement = this._renderValidatedComponent();\n }\n\n var nodeType = ReactNodeTypes.getType(renderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n return markup;\n },\n\n getHostNode: function () {\n return ReactReconciler.getHostNode(this._renderedComponent);\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (safely) {\n if (!this._renderedComponent) {\n return;\n }\n\n var inst = this._instance;\n\n if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {\n inst._calledComponentWillUnmount = true;\n\n if (safely) {\n var name = this.getName() + '.componentWillUnmount()';\n ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n } else {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUnmount();\n }, this._debugID, 'componentWillUnmount');\n } else {\n inst.componentWillUnmount();\n }\n }\n }\n\n if (this._renderedComponent) {\n ReactReconciler.unmountComponent(this._renderedComponent, safely);\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._instance = null;\n }\n\n // Reset pending fields\n // Even if this component is scheduled for another update in ReactUpdates,\n // it would still be ignored because these fields are reset.\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = 0;\n this._topLevelWrapper = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function (context) {\n var Component = this._currentElement.type;\n var contextTypes = Component.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n var maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function (context) {\n var maskedContext = this._maskContext(context);\n if (process.env.NODE_ENV !== 'production') {\n var Component = this._currentElement.type;\n if (Component.contextTypes) {\n this._checkContextTypes(Component.contextTypes, maskedContext, 'context');\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function (currentContext) {\n var Component = this._currentElement.type;\n var inst = this._instance;\n var childContext;\n\n if (inst.getChildContext) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n try {\n childContext = inst.getChildContext();\n } finally {\n ReactInstrumentation.debugTool.onEndProcessingChildContext();\n }\n } else {\n childContext = inst.getChildContext();\n }\n }\n\n if (childContext) {\n !(typeof Component.childContextTypes === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;\n if (process.env.NODE_ENV !== 'production') {\n this._checkContextTypes(Component.childContextTypes, childContext, 'child context');\n }\n for (var name in childContext) {\n !(name in Component.childContextTypes) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;\n }\n return _assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Assert that the context types are valid\n *\n * @param {object} typeSpecs Map of context field to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkContextTypes: function (typeSpecs, values, location) {\n if (process.env.NODE_ENV !== 'production') {\n checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);\n }\n },\n\n receiveComponent: function (nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n } else {\n this._updateBatchNumber = null;\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n var inst = this._instance;\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;\n\n var willReceive = false;\n var nextContext;\n\n // Determine if the context has changed or not\n if (this._context === nextUnmaskedContext) {\n nextContext = inst.context;\n } else {\n nextContext = this._processContext(nextUnmaskedContext);\n willReceive = true;\n }\n\n var prevProps = prevParentElement.props;\n var nextProps = nextParentElement.props;\n\n // Not a simple state update but a props update\n if (prevParentElement !== nextParentElement) {\n willReceive = true;\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n if (willReceive && inst.componentWillReceiveProps) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillReceiveProps(nextProps, nextContext);\n }, this._debugID, 'componentWillReceiveProps');\n } else {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n var shouldUpdate = true;\n\n if (!this._pendingForceUpdate) {\n if (inst.shouldComponentUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n shouldUpdate = measureLifeCyclePerf(function () {\n return inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'shouldComponentUpdate');\n } else {\n shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }\n } else {\n if (this._compositeType === CompositeTypes.PureClass) {\n shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);\n }\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;\n }\n\n this._updateBatchNumber = null;\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function (props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = _assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n var _this2 = this;\n\n var inst = this._instance;\n\n var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n var prevProps;\n var prevState;\n var prevContext;\n if (hasComponentDidUpdate) {\n prevProps = inst.props;\n prevState = inst.state;\n prevContext = inst.context;\n }\n\n if (inst.componentWillUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'componentWillUpdate');\n } else {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (hasComponentDidUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n }\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function (transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n } else {\n var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);\n ReactReconciler.unmountComponent(prevComponentInstance, false);\n\n var nodeType = ReactNodeTypes.getType(nextRenderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);\n }\n },\n\n /**\n * Overridden in shallow rendering.\n *\n * @protected\n */\n _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {\n ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function () {\n var inst = this._instance;\n var renderedElement;\n\n if (process.env.NODE_ENV !== 'production') {\n renderedElement = measureLifeCyclePerf(function () {\n return inst.render();\n }, this._debugID, 'render');\n } else {\n renderedElement = inst.render();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (renderedElement === undefined && inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedElement = null;\n }\n }\n\n return renderedElement;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function () {\n var renderedElement;\n if (process.env.NODE_ENV !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {\n ReactCurrentOwner.current = this;\n try {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n }\n !(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;\n\n return renderedElement;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function (ref, component) {\n var inst = this.getPublicInstance();\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;\n var publicComponentInstance = component.getPublicInstance();\n if (process.env.NODE_ENV !== 'production') {\n var componentName = component && component.getName ? component.getName() : 'a component';\n process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref \"%s\" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;\n }\n var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n refs[ref] = publicComponentInstance;\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function (ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function () {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function () {\n var inst = this._instance;\n if (this._compositeType === CompositeTypes.StatelessFunctional) {\n return null;\n }\n return inst;\n },\n\n // Stub\n _instantiateReactComponent: null\n\n};\n\nmodule.exports = ReactCompositeComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactCompositeComponent.js\n// module id = 125\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar React = require('react/lib/React');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ReactNodeTypes = {\n HOST: 0,\n COMPOSITE: 1,\n EMPTY: 2,\n\n getType: function (node) {\n if (node === null || node === false) {\n return ReactNodeTypes.EMPTY;\n } else if (React.isValidElement(node)) {\n if (typeof node.type === 'function') {\n return ReactNodeTypes.COMPOSITE;\n } else {\n return ReactNodeTypes.HOST;\n }\n }\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;\n }\n};\n\nmodule.exports = ReactNodeTypes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactNodeTypes.js\n// module id = 126\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');\nvar ReactPropTypesSecret = require('./ReactPropTypesSecret');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\nvar loggedTypeFailures = {};\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?object} element The React element that is being type-checked\n * @param {?number} debugID The React component instance that is being type-checked\n * @private\n */\nfunction checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n !(typeof typeSpecs[typeSpecName] === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant('84', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : void 0;\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n process.env.NODE_ENV !== 'production' ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0;\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var componentStackInfo = '';\n\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (debugID !== null) {\n componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID);\n } else if (element !== null) {\n componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element);\n }\n }\n\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0;\n }\n }\n }\n}\n\nmodule.exports = checkReactTypeSpec;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/checkReactTypeSpec.js\n// module id = 127\n// module chunks = 7","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/shallowEqual.js\n// module id = 129\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\n\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n var prevEmpty = prevElement === null || prevElement === false;\n var nextEmpty = nextElement === null || nextElement === false;\n if (prevEmpty || nextEmpty) {\n return prevEmpty === nextEmpty;\n }\n\n var prevType = typeof prevElement;\n var nextType = typeof nextElement;\n if (prevType === 'string' || prevType === 'number') {\n return nextType === 'string' || nextType === 'number';\n } else {\n return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n }\n}\n\nmodule.exports = shouldUpdateReactComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/shouldUpdateReactComponent.js\n// module id = 130\n// module chunks = 7","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyComponentFactory;\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponentFactory: function (factory) {\n emptyComponentFactory = factory;\n }\n};\n\nvar ReactEmptyComponent = {\n create: function (instantiate) {\n return emptyComponentFactory(instantiate);\n }\n};\n\nReactEmptyComponent.injection = ReactEmptyComponentInjection;\n\nmodule.exports = ReactEmptyComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactEmptyComponent.js\n// module id = 131\n// module chunks = 7","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar genericComponentClass = null;\nvar textComponentClass = null;\n\nvar ReactHostComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function (componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function (componentClass) {\n textComponentClass = componentClass;\n }\n};\n\n/**\n * Get a host internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n !genericComponentClass ? process.env.NODE_ENV !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;\n return new genericComponentClass(element);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactHostComponent = {\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactHostComponentInjection\n};\n\nmodule.exports = ReactHostComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactHostComponent.js\n// module id = 132\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar nextDebugID = 1;\n\nfunction getNextDebugID() {\n return nextDebugID++;\n}\n\nmodule.exports = getNextDebugID;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/getNextDebugID.js\n// module id = 133\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/traverseAllChildren.js\n// module id = 135\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n * @param {number=} selfDebugID Optional debugID of the current internal instance.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {\n // We found a component instance.\n if (traverseContext && typeof traverseContext === 'object') {\n var result = traverseContext;\n var keyUnique = result[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): 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.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children, selfDebugID) {\n if (children == null) {\n return children;\n }\n var result = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(children, function (traverseContext, child, name) {\n return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);\n }, result);\n } else {\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n }\n return result;\n}\n\nmodule.exports = flattenChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/flattenChildren.js\n// module id = 138\n// module chunks = 7","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\nvar Transaction = require('./Transaction');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactServerUpdateQueue = require('./ReactServerUpdateQueue');\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\nvar noopCallbackQueue = {\n enqueue: function () {}\n};\n\n/**\n * @class ReactServerRenderingTransaction\n * @param {boolean} renderToStaticMarkup\n */\nfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n this.reinitializeTransaction();\n this.renderToStaticMarkup = renderToStaticMarkup;\n this.useCreateElement = false;\n this.updateQueue = new ReactServerUpdateQueue(this);\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array} Empty list of operation wrap procedures.\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return noopCallbackQueue;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return this.updateQueue;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {},\n\n checkpoint: function () {},\n\n rollback: function () {}\n};\n\n_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\nmodule.exports = ReactServerRenderingTransaction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactServerRenderingTransaction.js\n// module id = 139\n// module chunks = 7","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the update queue used for server rendering.\n * It delegates to ReactUpdateQueue while server rendering is in progress and\n * switches to ReactNoopUpdateQueue after the transaction has completed.\n * @class ReactServerUpdateQueue\n * @param {Transaction} transaction\n */\n\nvar ReactServerUpdateQueue = function () {\n function ReactServerUpdateQueue(transaction) {\n _classCallCheck(this, ReactServerUpdateQueue);\n\n this.transaction = transaction;\n }\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n\n\n ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {\n return false;\n };\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);\n }\n };\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueForceUpdate(publicInstance);\n } else {\n warnNoop(publicInstance, 'forceUpdate');\n }\n };\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} completeState Next state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);\n } else {\n warnNoop(publicInstance, 'replaceState');\n }\n };\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} partialState Next partial state to be merged with state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueSetState(publicInstance, partialState);\n } else {\n warnNoop(publicInstance, 'setState');\n }\n };\n\n return ReactServerUpdateQueue;\n}();\n\nmodule.exports = ReactServerUpdateQueue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactServerUpdateQueue.js\n// module id = 140\n// module chunks = 7","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction enqueueUpdate(internalInstance) {\n ReactUpdates.enqueueUpdate(internalInstance);\n}\n\nfunction formatUnexpectedArgument(arg) {\n var type = typeof arg;\n if (type !== 'object') {\n return type;\n }\n var displayName = arg.constructor && arg.constructor.name || type;\n var keys = Object.keys(arg);\n if (keys.length > 0 && keys.length < 20) {\n return displayName + ' (keys: ' + keys.join(', ') + ')';\n }\n return displayName;\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var ctor = publicInstance.constructor;\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n process.env.NODE_ENV !== 'production' ? warning(!callerName, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;\n }\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + 'within `render` or another component\\'s constructor). Render methods ' + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (internalInstance) {\n // During componentWillMount and render this will still be null but after\n // that will always render to something. At least for now. So we can use\n // this hack.\n return !!internalInstance._renderedComponent;\n } else {\n return false;\n }\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @param {string} callerName Name of the calling function in the public API.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback, callerName) {\n ReactUpdateQueue.validateCallback(callback, callerName);\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function (internalInstance, callback) {\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n // Future-proof 15.5\n if (callback !== undefined && callback !== null) {\n ReactUpdateQueue.validateCallback(callback, 'replaceState');\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n }\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetState();\n process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;\n }\n\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');\n\n if (!internalInstance) {\n return;\n }\n\n var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function (internalInstance, nextElement, nextContext) {\n internalInstance._pendingElement = nextElement;\n // TODO: introduce _pendingContext instead of setting it directly.\n internalInstance._context = nextContext;\n enqueueUpdate(internalInstance);\n },\n\n validateCallback: function (callback, callerName) {\n !(!callback || typeof callback === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;\n }\n\n};\n\nmodule.exports = ReactUpdateQueue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactUpdateQueue.js\n// module id = 141\n// module chunks = 7","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar validateDOMNesting = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n // This validation code was written based on the HTML5 parsing spec:\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n //\n // Note: this does not catch all invalid nesting, nor does it try to (as it's\n // not clear what practical benefit doing so provides); instead, we warn only\n // for cases where the parser will give a parse tree differing from what React\n // intended. For example, <b><div></div></b> is invalid but we don't warn\n // because it still parses correctly; we do warn for other cases like nested\n // <p> tags where the beginning of the second element implicitly closes the\n // first, causing a confusing mess.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#special\n var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\n // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n // TODO: Distinguish by namespace here -- for <title>, including it here\n // errs on the side of fewer warnings\n 'foreignObject', 'desc', 'title'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n var buttonScopeTags = inScopeTags.concat(['button']);\n\n // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\n var emptyAncestorInfo = {\n current: null,\n\n formTag: null,\n aTagInScope: null,\n buttonTagInScope: null,\n nobrTagInScope: null,\n pTagInButtonScope: null,\n\n listItemTagAutoclosing: null,\n dlItemTagAutoclosing: null\n };\n\n var updatedAncestorInfo = function (oldInfo, tag, instance) {\n var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n var info = { tag: tag, instance: instance };\n\n if (inScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.aTagInScope = null;\n ancestorInfo.buttonTagInScope = null;\n ancestorInfo.nobrTagInScope = null;\n }\n if (buttonScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.pTagInButtonScope = null;\n }\n\n // See rules for 'li', 'dd', 'dt' start tags in\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n ancestorInfo.listItemTagAutoclosing = null;\n ancestorInfo.dlItemTagAutoclosing = null;\n }\n\n ancestorInfo.current = info;\n\n if (tag === 'form') {\n ancestorInfo.formTag = info;\n }\n if (tag === 'a') {\n ancestorInfo.aTagInScope = info;\n }\n if (tag === 'button') {\n ancestorInfo.buttonTagInScope = info;\n }\n if (tag === 'nobr') {\n ancestorInfo.nobrTagInScope = info;\n }\n if (tag === 'p') {\n ancestorInfo.pTagInButtonScope = info;\n }\n if (tag === 'li') {\n ancestorInfo.listItemTagAutoclosing = info;\n }\n if (tag === 'dd' || tag === 'dt') {\n ancestorInfo.dlItemTagAutoclosing = info;\n }\n\n return ancestorInfo;\n };\n\n /**\n * Returns whether\n */\n var isTagValidWithParent = function (tag, parentTag) {\n // First, let's check if we're in an unusual parsing mode...\n switch (parentTag) {\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n case 'select':\n return tag === 'option' || tag === 'optgroup' || tag === '#text';\n case 'optgroup':\n return tag === 'option' || tag === '#text';\n // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n // but\n case 'option':\n return tag === '#text';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n // No special behavior since these rules fall back to \"in body\" mode for\n // all except special table nodes which cause bad parsing behavior anyway.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n case 'tr':\n return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n case 'tbody':\n case 'thead':\n case 'tfoot':\n return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n case 'colgroup':\n return tag === 'col' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n case 'table':\n return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n case 'head':\n return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n case 'html':\n return tag === 'head' || tag === 'body';\n case '#document':\n return tag === 'html';\n }\n\n // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n // where the parsing rules cause implicit opens or closes to be added.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n case 'rp':\n case 'rt':\n return impliedEndTags.indexOf(parentTag) === -1;\n\n case 'body':\n case 'caption':\n case 'col':\n case 'colgroup':\n case 'frame':\n case 'head':\n case 'html':\n case 'tbody':\n case 'td':\n case 'tfoot':\n case 'th':\n case 'thead':\n case 'tr':\n // These tags are only valid with a few parents that have special child\n // parsing rules -- if we're down here, then none of those matched and\n // so we allow it only if we don't know what the parent is, as all other\n // cases are invalid.\n return parentTag == null;\n }\n\n return true;\n };\n\n /**\n * Returns whether\n */\n var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n switch (tag) {\n case 'address':\n case 'article':\n case 'aside':\n case 'blockquote':\n case 'center':\n case 'details':\n case 'dialog':\n case 'dir':\n case 'div':\n case 'dl':\n case 'fieldset':\n case 'figcaption':\n case 'figure':\n case 'footer':\n case 'header':\n case 'hgroup':\n case 'main':\n case 'menu':\n case 'nav':\n case 'ol':\n case 'p':\n case 'section':\n case 'summary':\n case 'ul':\n case 'pre':\n case 'listing':\n case 'table':\n case 'hr':\n case 'xmp':\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return ancestorInfo.pTagInButtonScope;\n\n case 'form':\n return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n case 'li':\n return ancestorInfo.listItemTagAutoclosing;\n\n case 'dd':\n case 'dt':\n return ancestorInfo.dlItemTagAutoclosing;\n\n case 'button':\n return ancestorInfo.buttonTagInScope;\n\n case 'a':\n // Spec says something about storing a list of markers, but it sounds\n // equivalent to this check.\n return ancestorInfo.aTagInScope;\n\n case 'nobr':\n return ancestorInfo.nobrTagInScope;\n }\n\n return null;\n };\n\n /**\n * Given a ReactCompositeComponent instance, return a list of its recursive\n * owners, starting at the root and ending with the instance itself.\n */\n var findOwnerStack = function (instance) {\n if (!instance) {\n return [];\n }\n\n var stack = [];\n do {\n stack.push(instance);\n } while (instance = instance._currentElement._owner);\n stack.reverse();\n return stack;\n };\n\n var didWarn = {};\n\n validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n\n if (childText != null) {\n process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;\n childTag = '#text';\n }\n\n var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n var problematic = invalidParent || invalidAncestor;\n\n if (problematic) {\n var ancestorTag = problematic.tag;\n var ancestorInstance = problematic.instance;\n\n var childOwner = childInstance && childInstance._currentElement._owner;\n var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n\n var childOwners = findOwnerStack(childOwner);\n var ancestorOwners = findOwnerStack(ancestorOwner);\n\n var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n var i;\n\n var deepestCommon = -1;\n for (i = 0; i < minStackLen; i++) {\n if (childOwners[i] === ancestorOwners[i]) {\n deepestCommon = i;\n } else {\n break;\n }\n }\n\n var UNKNOWN = '(unknown)';\n var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ownerInfo = [].concat(\n // If the parent and child instances have a common owner ancestor, start\n // with that -- otherwise we just start with the parent's owners.\n deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n // If we're warning about an invalid (non-parent) ancestry, add '...'\n invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');\n\n var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;\n if (didWarn[warnKey]) {\n return;\n }\n didWarn[warnKey] = true;\n\n var tagDisplayName = childTag;\n var whitespaceInfo = '';\n if (childTag === '#text') {\n if (/\\S/.test(childText)) {\n tagDisplayName = 'Text nodes';\n } else {\n tagDisplayName = 'Whitespace text nodes';\n whitespaceInfo = ' Make sure you don\\'t have any extra whitespace between tags on ' + 'each line of your source code.';\n }\n } else {\n tagDisplayName = '<' + childTag + '>';\n }\n\n if (invalidParent) {\n var info = '';\n if (ancestorTag === 'table' && childTag === 'tr') {\n info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n }\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;\n }\n }\n };\n\n validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;\n\n // For testing\n validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n };\n}\n\nmodule.exports = validateDOMNesting;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/validateDOMNesting.js\n// module id = 142\n// module chunks = 7","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactDOMEmptyComponent = function (instantiate) {\n // ReactCompositeComponent uses this:\n this._currentElement = null;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n this._domID = 0;\n};\n_assign(ReactDOMEmptyComponent.prototype, {\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var domID = hostContainerInfo._idCounter++;\n this._domID = domID;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var nodeValue = ' react-empty: ' + this._domID + ' ';\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var node = ownerDocument.createComment(nodeValue);\n ReactDOMComponentTree.precacheNode(this, node);\n return DOMLazyTree(node);\n } else {\n if (transaction.renderToStaticMarkup) {\n // Normally we'd insert a comment node, but since this is a situation\n // where React won't take over (static pages), we can simply return\n // nothing.\n return '';\n }\n return '<!--' + nodeValue + '-->';\n }\n },\n receiveComponent: function () {},\n getHostNode: function () {\n return ReactDOMComponentTree.getNodeFromInstance(this);\n },\n unmountComponent: function () {\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMEmptyComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMEmptyComponent.js\n// module id = 143\n// module chunks = 7","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n var depthA = 0;\n for (var tempA = instA; tempA; tempA = tempA._hostParent) {\n depthA++;\n }\n var depthB = 0;\n for (var tempB = instB; tempB; tempB = tempB._hostParent) {\n depthB++;\n }\n\n // If A is deeper, crawl up.\n while (depthA - depthB > 0) {\n instA = instA._hostParent;\n depthA--;\n }\n\n // If B is deeper, crawl up.\n while (depthB - depthA > 0) {\n instB = instB._hostParent;\n depthB--;\n }\n\n // Walk in lockstep until we find a match.\n var depth = depthA;\n while (depth--) {\n if (instA === instB) {\n return instA;\n }\n instA = instA._hostParent;\n instB = instB._hostParent;\n }\n return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\nfunction isAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n\n while (instB) {\n if (instB === instA) {\n return true;\n }\n instB = instB._hostParent;\n }\n return false;\n}\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n !('_hostNode' in inst) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;\n\n return inst._hostParent;\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n var path = [];\n while (inst) {\n path.push(inst);\n inst = inst._hostParent;\n }\n var i;\n for (i = path.length; i-- > 0;) {\n fn(path[i], 'captured', arg);\n }\n for (i = 0; i < path.length; i++) {\n fn(path[i], 'bubbled', arg);\n }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n var common = from && to ? getLowestCommonAncestor(from, to) : null;\n var pathFrom = [];\n while (from && from !== common) {\n pathFrom.push(from);\n from = from._hostParent;\n }\n var pathTo = [];\n while (to && to !== common) {\n pathTo.push(to);\n to = to._hostParent;\n }\n var i;\n for (i = 0; i < pathFrom.length; i++) {\n fn(pathFrom[i], 'bubbled', argFrom);\n }\n for (i = pathTo.length; i-- > 0;) {\n fn(pathTo[i], 'captured', argTo);\n }\n}\n\nmodule.exports = {\n isAncestor: isAncestor,\n getLowestCommonAncestor: getLowestCommonAncestor,\n getParentInstance: getParentInstance,\n traverseTwoPhase: traverseTwoPhase,\n traverseEnterLeave: traverseEnterLeave\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMTreeTraversal.js\n// module id = 144\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar validateDOMNesting = require('./validateDOMNesting');\n\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n * - When mounting text into the DOM, adjacent text nodes are merged.\n * - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings between comment nodes so that they\n * can undergo the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\nvar ReactDOMTextComponent = function (text) {\n // TODO: This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n\n // Properties\n this._domID = 0;\n this._mountIndex = 0;\n this._closingComment = null;\n this._commentNodes = null;\n};\n\n_assign(ReactDOMTextComponent.prototype, {\n\n /**\n * Creates the markup for this text node. This node is not intended to have\n * any features besides containing text content.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup for this text node.\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo != null) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(null, this._stringText, this, parentInfo);\n }\n }\n\n var domID = hostContainerInfo._idCounter++;\n var openingValue = ' react-text: ' + domID + ' ';\n var closingValue = ' /react-text ';\n this._domID = domID;\n this._hostParent = hostParent;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var openingComment = ownerDocument.createComment(openingValue);\n var closingComment = ownerDocument.createComment(closingValue);\n var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n if (this._stringText) {\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n }\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n ReactDOMComponentTree.precacheNode(this, openingComment);\n this._closingComment = closingComment;\n return lazyTree;\n } else {\n var escapedText = escapeTextContentForBrowser(this._stringText);\n\n if (transaction.renderToStaticMarkup) {\n // Normally we'd wrap this between comment nodes for the reasons stated\n // above, but since this is a situation where React won't take over\n // (static pages), we can simply return the text as it is.\n return escapedText;\n }\n\n return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';\n }\n },\n\n /**\n * Updates this component by updating the text content.\n *\n * @param {ReactText} nextText The next text content\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n receiveComponent: function (nextText, transaction) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n // TODO: Save this as pending props and use performUpdateIfNecessary\n // and/or updateComponent to do the actual update for consistency with\n // other component types?\n this._stringText = nextStringText;\n var commentNodes = this.getHostNode();\n DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n }\n }\n },\n\n getHostNode: function () {\n var hostNode = this._commentNodes;\n if (hostNode) {\n return hostNode;\n }\n if (!this._closingComment) {\n var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n var node = openingComment.nextSibling;\n while (true) {\n !(node != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;\n if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {\n this._closingComment = node;\n break;\n }\n node = node.nextSibling;\n }\n }\n hostNode = [this._hostNode, this._closingComment];\n this._commentNodes = hostNode;\n return hostNode;\n },\n\n unmountComponent: function () {\n this._closingComment = null;\n this._commentNodes = null;\n ReactDOMComponentTree.uncacheNode(this);\n }\n\n});\n\nmodule.exports = ReactDOMTextComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMTextComponent.js\n// module id = 145\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactUpdates = require('./ReactUpdates');\nvar Transaction = require('./Transaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function () {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\n_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n }\n});\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function (callback, a, b, c, d, e) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n return callback(a, b, c, d, e);\n } else {\n return transaction.perform(callback, null, a, b, c, d, e);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDefaultBatchingStrategy.js\n// module id = 146\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar PooledClass = require('./PooledClass');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar getEventTarget = require('./getEventTarget');\nvar getUnboundedScrollPosition = require('fbjs/lib/getUnboundedScrollPosition');\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findParent(inst) {\n // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n // traversal, but caching is difficult to do correctly without using a\n // mutation observer to listen for all DOM changes.\n while (inst._hostParent) {\n inst = inst._hostParent;\n }\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n var container = rootNode.parentNode;\n return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n this.topLevelType = topLevelType;\n this.nativeEvent = nativeEvent;\n this.ancestors = [];\n}\n_assign(TopLevelCallbackBookKeeping.prototype, {\n destructor: function () {\n this.topLevelType = null;\n this.nativeEvent = null;\n this.ancestors.length = 0;\n }\n});\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\n // Loop through the hierarchy, in case there's any nested components.\n // It's important that we build the array of ancestors before calling any\n // event handlers, because event handlers can modify the DOM, leading to\n // inconsistencies with ReactMount's node cache. See #1105.\n var ancestor = targetInst;\n do {\n bookKeeping.ancestors.push(ancestor);\n ancestor = ancestor && findParent(ancestor);\n } while (ancestor);\n\n for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n targetInst = bookKeeping.ancestors[i];\n ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n }\n}\n\nfunction scrollValueMonitor(cb) {\n var scrollPosition = getUnboundedScrollPosition(window);\n cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n _enabled: true,\n _handleTopLevel: null,\n\n WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n setHandleTopLevel: function (handleTopLevel) {\n ReactEventListener._handleTopLevel = handleTopLevel;\n },\n\n setEnabled: function (enabled) {\n ReactEventListener._enabled = !!enabled;\n },\n\n isEnabled: function () {\n return ReactEventListener._enabled;\n },\n\n /**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapBubbledEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n /**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapCapturedEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n monitorScrollValue: function (refresh) {\n var callback = scrollValueMonitor.bind(null, refresh);\n EventListener.listen(window, 'scroll', callback);\n },\n\n dispatchEvent: function (topLevelType, nativeEvent) {\n if (!ReactEventListener._enabled) {\n return;\n }\n\n var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n try {\n // Event queue being processed in the same cycle allows\n // `preventDefault`.\n ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n } finally {\n TopLevelCallbackBookKeeping.release(bookKeeping);\n }\n }\n};\n\nmodule.exports = ReactEventListener;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactEventListener.js\n// module id = 147\n// module chunks = 7","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @typechecks\n */\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function listen(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function capture(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n } else {\n if (process.env.NODE_ENV !== 'production') {\n 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.');\n }\n return {\n remove: emptyFunction\n };\n }\n },\n\n registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/EventListener.js\n// module id = 148\n// module chunks = 7","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n'use strict';\n\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/getUnboundedScrollPosition.js\n// module id = 149\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactHostComponent = require('./ReactHostComponent');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar ReactInjection = {\n Component: ReactComponentEnvironment.injection,\n DOMProperty: DOMProperty.injection,\n EmptyComponent: ReactEmptyComponent.injection,\n EventPluginHub: EventPluginHub.injection,\n EventPluginUtils: EventPluginUtils.injection,\n EventEmitter: ReactBrowserEventEmitter.injection,\n HostComponent: ReactHostComponent.injection,\n Updates: ReactUpdates.injection\n};\n\nmodule.exports = ReactInjection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactInjection.js\n// module id = 150\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar Transaction = require('./Transaction');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\nvar SELECTION_RESTORATION = {\n /**\n * @return {Selection} Selection information.\n */\n initialize: ReactInputSelection.getSelectionInformation,\n /**\n * @param {Selection} sel Selection information returned from `initialize`.\n */\n close: ReactInputSelection.restoreSelection\n};\n\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\nvar EVENT_SUPPRESSION = {\n /**\n * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n * the reconciliation.\n */\n initialize: function () {\n var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n ReactBrowserEventEmitter.setEnabled(false);\n return currentlyEnabled;\n },\n\n /**\n * @param {boolean} previouslyEnabled Enabled status of\n * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n * restores the previous value.\n */\n close: function (previouslyEnabled) {\n ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n }\n};\n\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function () {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function () {\n this.reactMountReady.notifyAll();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\nfunction ReactReconcileTransaction(useCreateElement) {\n this.reinitializeTransaction();\n // Only server-side rendering really needs this option (see\n // `ReactServerRendering`), but server-side uses\n // `ReactServerRenderingTransaction` instead. This option is here so that it's\n // accessible and defaults to false when `ReactDOMComponent` and\n // `ReactDOMTextComponent` checks it in `mountComponent`.`\n this.renderToStaticMarkup = false;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.useCreateElement = useCreateElement;\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap procedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return this.reactMountReady;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return ReactUpdateQueue;\n },\n\n /**\n * Save current transaction state -- if the return value from this method is\n * passed to `rollback`, the transaction will be reset to that state.\n */\n checkpoint: function () {\n // reactMountReady is the our only stateful wrapper\n return this.reactMountReady.checkpoint();\n },\n\n rollback: function (checkpoint) {\n this.reactMountReady.rollback(checkpoint);\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\n_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\n\nmodule.exports = ReactReconcileTransaction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactReconcileTransaction.js\n// module id = 151\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMSelection = require('./ReactDOMSelection');\n\nvar containsNode = require('fbjs/lib/containsNode');\nvar focusNode = require('fbjs/lib/focusNode');\nvar getActiveElement = require('fbjs/lib/getActiveElement');\n\nfunction isInDocument(node) {\n return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n\n hasSelectionCapabilities: function (elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n },\n\n getSelectionInformation: function () {\n var focusedElem = getActiveElement();\n return {\n focusedElem: focusedElem,\n selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n };\n },\n\n /**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n restoreSelection: function (priorSelectionInformation) {\n var curFocusedElem = getActiveElement();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n }\n focusNode(priorFocusedElem);\n }\n },\n\n /**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n getSelection: function (input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n // IE8 input.\n var range = document.selection.createRange();\n // There can only be one selection per document in IE, so it must\n // be in our element.\n if (range.parentElement() === input) {\n selection = {\n start: -range.moveStart('character', -input.value.length),\n end: -range.moveEnd('character', -input.value.length)\n };\n }\n } else {\n // Content editable or old IE textarea.\n selection = ReactDOMSelection.getOffsets(input);\n }\n\n return selection || { start: 0, end: 0 };\n },\n\n /**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n setSelection: function (input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveStart('character', start);\n range.moveEnd('character', end - start);\n range.select();\n } else {\n ReactDOMSelection.setOffsets(input, offsets);\n }\n }\n};\n\nmodule.exports = ReactInputSelection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactInputSelection.js\n// module id = 152\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar getNodeForCharacterOffset = require('./getNodeForCharacterOffset');\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n return anchorNode === focusNode && anchorOffset === focusOffset;\n}\n\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE's selection API doesn't provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it's always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getIEOffsets(node) {\n var selection = document.selection;\n var selectedRange = selection.createRange();\n var selectedLength = selectedRange.text.length;\n\n // Duplicate selection so we can move range without breaking user selection.\n var fromStart = selectedRange.duplicate();\n fromStart.moveToElementText(node);\n fromStart.setEndPoint('EndToStart', selectedRange);\n\n var startOffset = fromStart.text.length;\n var endOffset = startOffset + selectedLength;\n\n return {\n start: startOffset,\n end: endOffset\n };\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n var selection = window.getSelection && window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode;\n var anchorOffset = selection.anchorOffset;\n var focusNode = selection.focusNode;\n var focusOffset = selection.focusOffset;\n\n var currentRange = selection.getRangeAt(0);\n\n // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n // divs do not seem to expose properties, triggering a \"Permission denied\n // error\" if any of its properties are accessed. The only seemingly possible\n // way to avoid erroring is to access a property that typically works for\n // non-anonymous divs and catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n try {\n /* eslint-disable no-unused-expressions */\n currentRange.startContainer.nodeType;\n currentRange.endContainer.nodeType;\n /* eslint-enable no-unused-expressions */\n } catch (e) {\n return null;\n }\n\n // If the node and offset values are the same, the selection is collapsed.\n // `Selection.isCollapsed` is available natively, but IE sometimes gets\n // this value wrong.\n var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\n var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n var tempRange = currentRange.cloneRange();\n tempRange.selectNodeContents(node);\n tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\n var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n var end = start + rangeLength;\n\n // Detect whether the selection is backward.\n var detectionRange = document.createRange();\n detectionRange.setStart(anchorNode, anchorOffset);\n detectionRange.setEnd(focusNode, focusOffset);\n var isBackward = detectionRange.collapsed;\n\n return {\n start: isBackward ? end : start,\n end: isBackward ? start : end\n };\n}\n\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setIEOffsets(node, offsets) {\n var range = document.selection.createRange().duplicate();\n var start, end;\n\n if (offsets.end === undefined) {\n start = offsets.start;\n end = start;\n } else if (offsets.start > offsets.end) {\n start = offsets.end;\n end = offsets.start;\n } else {\n start = offsets.start;\n end = offsets.end;\n }\n\n range.moveToElementText(node);\n range.moveStart('character', start);\n range.setEndPoint('EndToStart', range);\n range.moveEnd('character', end - start);\n range.select();\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n if (!window.getSelection) {\n return;\n }\n\n var selection = window.getSelection();\n var length = node[getTextContentAccessor()].length;\n var start = Math.min(offsets.start, length);\n var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n var range = document.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nvar useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);\n\nvar ReactDOMSelection = {\n /**\n * @param {DOMElement} node\n */\n getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n /**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\n\nmodule.exports = ReactDOMSelection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMSelection.js\n// module id = 153\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n node = node.parentNode;\n }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === 3) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\nmodule.exports = getNodeForCharacterOffset;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/getNodeForCharacterOffset.js\n// module id = 154\n// module chunks = 7","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nvar isTextNode = require('./isTextNode');\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/containsNode.js\n// module id = 155\n// module chunks = 7","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar isNode = require('./isNode');\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/isTextNode.js\n// module id = 156\n// module chunks = 7","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/isNode.js\n// module id = 157\n// module chunks = 7","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc) /*?DOMElement*/{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._fbjs@0.8.12@fbjs/lib/getActiveElement.js\n// module id = 158\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar NS = {\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace'\n};\n\n// We use attributes for everything SVG so let's avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\nvar ATTRS = {\n accentHeight: 'accent-height',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 'alignment-baseline',\n allowReorder: 'allowReorder',\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 'arabic-form',\n ascent: 0,\n attributeName: 'attributeName',\n attributeType: 'attributeType',\n autoReverse: 'autoReverse',\n azimuth: 0,\n baseFrequency: 'baseFrequency',\n baseProfile: 'baseProfile',\n baselineShift: 'baseline-shift',\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 'calcMode',\n capHeight: 'cap-height',\n clip: 0,\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n clipPathUnits: 'clipPathUnits',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n contentScriptType: 'contentScriptType',\n contentStyleType: 'contentStyleType',\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 'diffuseConstant',\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 'dominant-baseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 'edgeMode',\n elevation: 0,\n enableBackground: 'enable-background',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 'externalResourcesRequired',\n fill: 0,\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n filter: 0,\n filterRes: 'filterRes',\n filterUnits: 'filterUnits',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n focusable: 0,\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n glyphRef: 'glyphRef',\n gradientTransform: 'gradientTransform',\n gradientUnits: 'gradientUnits',\n hanging: 0,\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n ideographic: 0,\n imageRendering: 'image-rendering',\n 'in': 0,\n in2: 0,\n intercept: 0,\n k: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n kernelMatrix: 'kernelMatrix',\n kernelUnitLength: 'kernelUnitLength',\n kerning: 0,\n keyPoints: 'keyPoints',\n keySplines: 'keySplines',\n keyTimes: 'keyTimes',\n lengthAdjust: 'lengthAdjust',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n limitingConeAngle: 'limitingConeAngle',\n local: 0,\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n markerHeight: 'markerHeight',\n markerUnits: 'markerUnits',\n markerWidth: 'markerWidth',\n mask: 0,\n maskContentUnits: 'maskContentUnits',\n maskUnits: 'maskUnits',\n mathematical: 0,\n mode: 0,\n numOctaves: 'numOctaves',\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pathLength: 'pathLength',\n patternContentUnits: 'patternContentUnits',\n patternTransform: 'patternTransform',\n patternUnits: 'patternUnits',\n pointerEvents: 'pointer-events',\n points: 0,\n pointsAtX: 'pointsAtX',\n pointsAtY: 'pointsAtY',\n pointsAtZ: 'pointsAtZ',\n preserveAlpha: 'preserveAlpha',\n preserveAspectRatio: 'preserveAspectRatio',\n primitiveUnits: 'primitiveUnits',\n r: 0,\n radius: 0,\n refX: 'refX',\n refY: 'refY',\n renderingIntent: 'rendering-intent',\n repeatCount: 'repeatCount',\n repeatDur: 'repeatDur',\n requiredExtensions: 'requiredExtensions',\n requiredFeatures: 'requiredFeatures',\n restart: 0,\n result: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n seed: 0,\n shapeRendering: 'shape-rendering',\n slope: 0,\n spacing: 0,\n specularConstant: 'specularConstant',\n specularExponent: 'specularExponent',\n speed: 0,\n spreadMethod: 'spreadMethod',\n startOffset: 'startOffset',\n stdDeviation: 'stdDeviation',\n stemh: 0,\n stemv: 0,\n stitchTiles: 'stitchTiles',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n surfaceScale: 'surfaceScale',\n systemLanguage: 'systemLanguage',\n tableValues: 'tableValues',\n targetX: 'targetX',\n targetY: 'targetY',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n textLength: 'textLength',\n to: 0,\n transform: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicode: 0,\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n values: 0,\n vectorEffect: 'vector-effect',\n version: 0,\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n viewBox: 'viewBox',\n viewTarget: 'viewTarget',\n visibility: 0,\n widths: 0,\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n x: 0,\n xHeight: 'x-height',\n x1: 0,\n x2: 0,\n xChannelSelector: 'xChannelSelector',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlns: 0,\n xmlnsXlink: 'xmlns:xlink',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n y: 0,\n y1: 0,\n y2: 0,\n yChannelSelector: 'yChannelSelector',\n z: 0,\n zoomAndPan: 'zoomAndPan'\n};\n\nvar SVGDOMPropertyConfig = {\n Properties: {},\n DOMAttributeNamespaces: {\n xlinkActuate: NS.xlink,\n xlinkArcrole: NS.xlink,\n xlinkHref: NS.xlink,\n xlinkRole: NS.xlink,\n xlinkShow: NS.xlink,\n xlinkTitle: NS.xlink,\n xlinkType: NS.xlink,\n xmlBase: NS.xml,\n xmlLang: NS.xml,\n xmlSpace: NS.xml\n },\n DOMAttributeNames: {}\n};\n\nObject.keys(ATTRS).forEach(function (key) {\n SVGDOMPropertyConfig.Properties[key] = 0;\n if (ATTRS[key]) {\n SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n }\n});\n\nmodule.exports = SVGDOMPropertyConfig;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SVGDOMPropertyConfig.js\n// module id = 159\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getActiveElement = require('fbjs/lib/getActiveElement');\nvar isTextInputElement = require('./isTextInputElement');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nvar eventTypes = {\n select: {\n phasedRegistrationNames: {\n bubbled: 'onSelect',\n captured: 'onSelectCapture'\n },\n dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n }\n};\n\nvar activeElement = null;\nvar activeElementInst = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n// Track whether a listener exists for this plugin. If none exist, we do\n// not extract events. See #3639.\nvar hasListener = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else if (window.getSelection) {\n var selection = window.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n } else if (document.selection) {\n var range = document.selection.createRange();\n return {\n parentElement: range.parentElement(),\n text: range.text,\n top: range.boundingTop,\n left: range.boundingLeft\n };\n }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n return null;\n }\n\n // Only fire when selection has actually changed.\n var currentSelection = getSelection(activeElement);\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n\n var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n\n syntheticEvent.type = 'select';\n syntheticEvent.target = activeElement;\n\n EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\n return syntheticEvent;\n }\n\n return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (!hasListener) {\n return null;\n }\n\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n switch (topLevelType) {\n // Track the input node that has focus.\n case 'topFocus':\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement = targetNode;\n activeElementInst = targetInst;\n lastSelection = null;\n }\n break;\n case 'topBlur':\n activeElement = null;\n activeElementInst = null;\n lastSelection = null;\n break;\n\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n case 'topMouseDown':\n mouseDown = true;\n break;\n case 'topContextMenu':\n case 'topMouseUp':\n mouseDown = false;\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n case 'topSelectionChange':\n if (skipSelectionChangeEvent) {\n break;\n }\n // falls through\n case 'topKeyDown':\n case 'topKeyUp':\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n }\n\n return null;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n if (registrationName === 'onSelect') {\n hasListener = true;\n }\n }\n};\n\nmodule.exports = SelectEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SelectEventPlugin.js\n// module id = 160\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticAnimationEvent = require('./SyntheticAnimationEvent');\nvar SyntheticClipboardEvent = require('./SyntheticClipboardEvent');\nvar SyntheticEvent = require('./SyntheticEvent');\nvar SyntheticFocusEvent = require('./SyntheticFocusEvent');\nvar SyntheticKeyboardEvent = require('./SyntheticKeyboardEvent');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\nvar SyntheticDragEvent = require('./SyntheticDragEvent');\nvar SyntheticTouchEvent = require('./SyntheticTouchEvent');\nvar SyntheticTransitionEvent = require('./SyntheticTransitionEvent');\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar SyntheticWheelEvent = require('./SyntheticWheelEvent');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar getEventCharCode = require('./getEventCharCode');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Turns\n * ['abort', ...]\n * into\n * eventTypes = {\n * 'abort': {\n * phasedRegistrationNames: {\n * bubbled: 'onAbort',\n * captured: 'onAbortCapture',\n * },\n * dependencies: ['topAbort'],\n * },\n * ...\n * };\n * topLevelEventsToDispatchConfig = {\n * 'topAbort': { sameConfig }\n * };\n */\nvar eventTypes = {};\nvar topLevelEventsToDispatchConfig = {};\n['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) {\n var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n var onEvent = 'on' + capitalizedEvent;\n var topEvent = 'top' + capitalizedEvent;\n\n var type = {\n phasedRegistrationNames: {\n bubbled: onEvent,\n captured: onEvent + 'Capture'\n },\n dependencies: [topEvent]\n };\n eventTypes[event] = type;\n topLevelEventsToDispatchConfig[topEvent] = type;\n});\n\nvar onClickListeners = {};\n\nfunction getDictionaryKey(inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n}\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nvar SimpleEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n if (!dispatchConfig) {\n return null;\n }\n var EventConstructor;\n switch (topLevelType) {\n case 'topAbort':\n case 'topCanPlay':\n case 'topCanPlayThrough':\n case 'topDurationChange':\n case 'topEmptied':\n case 'topEncrypted':\n case 'topEnded':\n case 'topError':\n case 'topInput':\n case 'topInvalid':\n case 'topLoad':\n case 'topLoadedData':\n case 'topLoadedMetadata':\n case 'topLoadStart':\n case 'topPause':\n case 'topPlay':\n case 'topPlaying':\n case 'topProgress':\n case 'topRateChange':\n case 'topReset':\n case 'topSeeked':\n case 'topSeeking':\n case 'topStalled':\n case 'topSubmit':\n case 'topSuspend':\n case 'topTimeUpdate':\n case 'topVolumeChange':\n case 'topWaiting':\n // HTML Events\n // @see http://www.w3.org/TR/html5/index.html#events-0\n EventConstructor = SyntheticEvent;\n break;\n case 'topKeyPress':\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return null;\n }\n /* falls through */\n case 'topKeyDown':\n case 'topKeyUp':\n EventConstructor = SyntheticKeyboardEvent;\n break;\n case 'topBlur':\n case 'topFocus':\n EventConstructor = SyntheticFocusEvent;\n break;\n case 'topClick':\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return null;\n }\n /* falls through */\n case 'topDoubleClick':\n case 'topMouseDown':\n case 'topMouseMove':\n case 'topMouseUp':\n // TODO: Disabled elements should not respond to mouse events\n /* falls through */\n case 'topMouseOut':\n case 'topMouseOver':\n case 'topContextMenu':\n EventConstructor = SyntheticMouseEvent;\n break;\n case 'topDrag':\n case 'topDragEnd':\n case 'topDragEnter':\n case 'topDragExit':\n case 'topDragLeave':\n case 'topDragOver':\n case 'topDragStart':\n case 'topDrop':\n EventConstructor = SyntheticDragEvent;\n break;\n case 'topTouchCancel':\n case 'topTouchEnd':\n case 'topTouchMove':\n case 'topTouchStart':\n EventConstructor = SyntheticTouchEvent;\n break;\n case 'topAnimationEnd':\n case 'topAnimationIteration':\n case 'topAnimationStart':\n EventConstructor = SyntheticAnimationEvent;\n break;\n case 'topTransitionEnd':\n EventConstructor = SyntheticTransitionEvent;\n break;\n case 'topScroll':\n EventConstructor = SyntheticUIEvent;\n break;\n case 'topWheel':\n EventConstructor = SyntheticWheelEvent;\n break;\n case 'topCopy':\n case 'topCut':\n case 'topPaste':\n EventConstructor = SyntheticClipboardEvent;\n break;\n }\n !EventConstructor ? process.env.NODE_ENV !== 'production' ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;\n var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n if (!onClickListeners[key]) {\n onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);\n }\n }\n },\n\n willDeleteListener: function (inst, registrationName) {\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n onClickListeners[key].remove();\n delete onClickListeners[key];\n }\n }\n\n};\n\nmodule.exports = SimpleEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SimpleEventPlugin.js\n// module id = 161\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar AnimationEventInterface = {\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\nmodule.exports = SyntheticAnimationEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SyntheticAnimationEvent.js\n// module id = 162\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n clipboardData: function (event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nmodule.exports = SyntheticClipboardEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SyntheticClipboardEvent.js\n// module id = 163\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nmodule.exports = SyntheticFocusEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SyntheticFocusEvent.js\n// module id = 164\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventCharCode = require('./getEventCharCode');\nvar getEventKey = require('./getEventKey');\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n key: getEventKey,\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function (event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n return 0;\n },\n keyCode: function (event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n },\n which: function (event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nmodule.exports = SyntheticKeyboardEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SyntheticKeyboardEvent.js\n// module id = 165\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode;\n\n // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n }\n\n // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nmodule.exports = getEventCharCode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/getEventCharCode.js\n// module id = 166\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar getEventCharCode = require('./getEventCharCode');\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n 'Esc': 'Escape',\n 'Spacebar': ' ',\n 'Left': 'ArrowLeft',\n 'Up': 'ArrowUp',\n 'Right': 'ArrowRight',\n 'Down': 'ArrowDown',\n 'Del': 'Delete',\n 'Win': 'OS',\n 'Menu': 'ContextMenu',\n 'Apps': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'MozPrintableKey': 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 112: 'F1', 113: 'F2', 114: 'F3', 115: 'F4', 116: 'F5', 117: 'F6',\n 118: 'F7', 119: 'F8', 120: 'F9', 121: 'F10', 122: 'F11', 123: 'F12',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 224: 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (key !== 'Unidentified') {\n return key;\n }\n }\n\n // Browser does not implement `key`, polyfill as much of it as we can.\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent);\n\n // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n return '';\n}\n\nmodule.exports = getEventKey;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/getEventKey.js\n// module id = 167\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nmodule.exports = SyntheticDragEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SyntheticDragEvent.js\n// module id = 168\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: getEventModifierState\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nmodule.exports = SyntheticTouchEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SyntheticTouchEvent.js\n// module id = 169\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar TransitionEventInterface = {\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\nmodule.exports = SyntheticTransitionEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SyntheticTransitionEvent.js\n// module id = 170\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n deltaX: function (event) {\n return 'deltaX' in event ? event.deltaX :\n // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n },\n deltaY: function (event) {\n return 'deltaY' in event ? event.deltaY :\n // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY :\n // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0;\n },\n deltaZ: null,\n\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nmodule.exports = SyntheticWheelEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/SyntheticWheelEvent.js\n// module id = 171\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMProperty = require('./DOMProperty');\nvar React = require('react/lib/React');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMContainerInfo = require('./ReactDOMContainerInfo');\nvar ReactDOMFeatureFlags = require('./ReactDOMFeatureFlags');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMarkupChecksum = require('./ReactMarkupChecksum');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar invariant = require('fbjs/lib/invariant');\nvar setInnerHTML = require('./setInnerHTML');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\nvar instancesByReactRootID = {};\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var wrappedElement = wrapperInstance._currentElement.props.child;\n var type = wrappedElement.type;\n markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);\n console.time(markerName);\n }\n\n var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */\n );\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */\n !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);\n transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\nfunction unmountComponentFromNode(instance, container, safely) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginFlush();\n }\n ReactReconciler.unmountComponent(instance, safely);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onEndFlush();\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n}\n\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\nfunction hasNonRootReactChild(container) {\n var rootEl = getReactRootElementInContainer(container);\n if (rootEl) {\n var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return !!(inst && inst._hostParent);\n }\n}\n\n/**\n * True if the supplied DOM node is a React DOM element and\n * it has been rendered by another copy of React.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM has been rendered by another copy of React\n * @internal\n */\nfunction nodeIsRenderedByOtherInstance(container) {\n var rootEl = getReactRootElementInContainer(container);\n return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));\n}\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n}\n\n/**\n * True if the supplied DOM node is a valid React node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid React DOM node.\n * @internal\n */\nfunction isReactNode(node) {\n return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));\n}\n\nfunction getHostRootInstanceInContainer(container) {\n var rootEl = getReactRootElementInContainer(container);\n var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;\n}\n\nfunction getTopLevelWrapperInContainer(container) {\n var root = getHostRootInstanceInContainer(container);\n return root ? root._hostContainerInfo._topLevelWrapper : null;\n}\n\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\nvar topLevelRootCounter = 1;\nvar TopLevelWrapper = function () {\n this.rootID = topLevelRootCounter++;\n};\nTopLevelWrapper.prototype.isReactComponent = {};\nif (process.env.NODE_ENV !== 'production') {\n TopLevelWrapper.displayName = 'TopLevelWrapper';\n}\nTopLevelWrapper.prototype.render = function () {\n return this.props.child;\n};\nTopLevelWrapper.isReactTopLevelWrapper = true;\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n\n TopLevelWrapper: TopLevelWrapper,\n\n /**\n * Used by devtools. The keys are not important.\n */\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function (container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {\n ReactMount.scrollMonitor(container, function () {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n return prevComponent;\n },\n\n /**\n * Render a new component into the DOM. Hooked by hooks!\n *\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n var componentInstance = instantiateReactComponent(nextElement, false);\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n\n var wrapperID = componentInstance._instance.rootID;\n instancesByReactRootID[wrapperID] = componentInstance;\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;\n return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n },\n\n _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');\n !React.isValidElement(nextElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' :\n // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;\n\n process.env.NODE_ENV !== 'production' ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n\n var nextWrappedElement = React.createElement(TopLevelWrapper, { child: nextElement });\n\n var nextContext;\n if (parentComponent) {\n var parentInst = ReactInstanceMap.get(parentComponent);\n nextContext = parentInst._processChildContext(parentInst._context);\n } else {\n nextContext = emptyObject;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n\n if (prevComponent) {\n var prevWrappedElement = prevComponent._currentElement;\n var prevElement = prevWrappedElement.props.child;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n var publicInst = prevComponent._renderedComponent.getPublicInstance();\n var updatedCallback = callback && function () {\n callback.call(publicInst);\n };\n ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);\n return publicInst;\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (internalGetID(rootElementSibling)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;\n break;\n }\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function (nextElement, container, callback) {\n return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function (container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by another copy of React.') : void 0;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n if (!prevComponent) {\n // Check if the node being unmounted was rendered by React, but isn't a\n // root node.\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n // Check if the container itself is a React root node.\n var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n }\n\n return false;\n }\n delete instancesByReactRootID[prevComponent._instance.rootID];\n ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n return true;\n },\n\n _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n ReactDOMComponentTree.precacheNode(instance, rootElement);\n return;\n } else {\n var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\n var normalizedMarkup = markup;\n if (process.env.NODE_ENV !== 'production') {\n // because rootMarkup is retrieved from the DOM, various normalizations\n // will have occurred which will not be present in `markup`. Here,\n // insert markup into a <div> or <iframe> depending on the container\n // type to perform the same normalizations before comparing.\n var normalizer;\n if (container.nodeType === ELEMENT_NODE_TYPE) {\n normalizer = document.createElement('div');\n normalizer.innerHTML = markup;\n normalizedMarkup = normalizer.innerHTML;\n } else {\n normalizer = document.createElement('iframe');\n document.body.appendChild(normalizer);\n normalizer.contentDocument.write(markup);\n normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n document.body.removeChild(normalizer);\n }\n }\n\n var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\\n%s', difference) : _prodInvariant('42', difference) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\\n%s', difference) : void 0;\n }\n }\n }\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document but you didn\\'t use server rendering. We can\\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;\n\n if (transaction.useCreateElement) {\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n DOMLazyTree.insertTreeBefore(container, markup, null);\n } else {\n setInnerHTML(container, markup);\n ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);\n if (hostNode._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: hostNode._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n }\n};\n\nmodule.exports = ReactMount;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactMount.js\n// module id = 172\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar validateDOMNesting = require('./validateDOMNesting');\n\nvar DOC_NODE_TYPE = 9;\n\nfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n var info = {\n _topLevelWrapper: topLevelWrapper,\n _idCounter: 1,\n _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n _node: node,\n _tag: node ? node.nodeName.toLowerCase() : null,\n _namespaceURI: node ? node.namespaceURI : null\n };\n if (process.env.NODE_ENV !== 'production') {\n info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n }\n return info;\n}\n\nmodule.exports = ReactDOMContainerInfo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMContainerInfo.js\n// module id = 173\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMFeatureFlags = {\n useCreateElement: true,\n useFiber: false\n};\n\nmodule.exports = ReactDOMFeatureFlags;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMFeatureFlags.js\n// module id = 174\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar adler32 = require('./adler32');\n\nvar TAG_END = /\\/?>/;\nvar COMMENT_START = /^<\\!\\-\\-/;\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function (markup) {\n var checksum = adler32(markup);\n\n // Add checksum (handle both parent tags, comments and self-closing tags)\n if (COMMENT_START.test(markup)) {\n return markup;\n } else {\n return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\"$&');\n }\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function (markup, element) {\n var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactMarkupChecksum.js\n// module id = 175\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar MOD = 65521;\n\n// adler32 is not cryptographically strong, and is only used to sanity check that\n// markup generated on the server matches the markup generated on the client.\n// This implementation (a modified version of the SheetJS version) has been optimized\n// for our use case, at the expense of conforming to the adler32 specification\n// for non-ascii inputs.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n var i = 0;\n var l = data.length;\n var m = l & ~0x3;\n while (i < m) {\n var n = Math.min(i + 4096, m);\n for (; i < n; i += 4) {\n b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n }\n a %= MOD;\n b %= MOD;\n }\n for (; i < l; i++) {\n b += a += data.charCodeAt(i);\n }\n a %= MOD;\n b %= MOD;\n return a | b << 16;\n}\n\nmodule.exports = adler32;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/adler32.js\n// module id = 176\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstanceMap = require('./ReactInstanceMap');\n\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Returns the DOM node rendered by this element.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {?DOMElement} The root node of this element.\n */\nfunction findDOMNode(componentOrElement) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrElement == null) {\n return null;\n }\n if (componentOrElement.nodeType === 1) {\n return componentOrElement;\n }\n\n var inst = ReactInstanceMap.get(componentOrElement);\n if (inst) {\n inst = getHostComponentFromComposite(inst);\n return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n }\n\n if (typeof componentOrElement.render === 'function') {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;\n }\n}\n\nmodule.exports = findDOMNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/findDOMNode.js\n// module id = 178\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactNodeTypes = require('./ReactNodeTypes');\n\nfunction getHostComponentFromComposite(inst) {\n var type;\n\n while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n inst = inst._renderedComponent;\n }\n\n if (type === ReactNodeTypes.HOST) {\n return inst._renderedComponent;\n } else if (type === ReactNodeTypes.EMPTY) {\n return null;\n }\n}\n\nmodule.exports = getHostComponentFromComposite;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/getHostComponentFromComposite.js\n// module id = 179\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactMount = require('./ReactMount');\n\nmodule.exports = ReactMount.renderSubtreeIntoContainer;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/renderSubtreeIntoContainer.js\n// module id = 180\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n\nvar warning = require('fbjs/lib/warning');\n\nif (process.env.NODE_ENV !== 'production') {\n var reactProps = {\n children: true,\n dangerouslySetInnerHTML: true,\n key: true,\n ref: true,\n\n autoFocus: true,\n defaultValue: true,\n valueLink: true,\n defaultChecked: true,\n checkedLink: true,\n innerHTML: true,\n suppressContentEditableWarning: true,\n onFocusIn: true,\n onFocusOut: true\n };\n var warnedProperties = {};\n\n var validateProperty = function (tagName, name, debugID) {\n if (DOMProperty.properties.hasOwnProperty(name) || DOMProperty.isCustomAttribute(name)) {\n return true;\n }\n if (reactProps.hasOwnProperty(name) && reactProps[name] || warnedProperties.hasOwnProperty(name) && warnedProperties[name]) {\n return true;\n }\n if (EventPluginRegistry.registrationNameModules.hasOwnProperty(name)) {\n return true;\n }\n warnedProperties[name] = true;\n var lowerCasedName = name.toLowerCase();\n\n // data-* attributes should be lowercase; suggest the lowercase version\n var standardName = DOMProperty.isCustomAttribute(lowerCasedName) ? lowerCasedName : DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null;\n\n var registrationName = EventPluginRegistry.possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? EventPluginRegistry.possibleRegistrationNames[lowerCasedName] : null;\n\n if (standardName != null) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown DOM property %s. Did you mean %s?%s', name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n return true;\n } else if (registrationName != null) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown event handler property %s. Did you mean `%s`?%s', name, registrationName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n return true;\n } else {\n // We were unable to guess which prop the user intended.\n // It is likely that the user was just blindly spreading/forwarding props\n // Components should be careful to only render valid props/attributes.\n // Warning will be invoked in warnUnknownProperties to allow grouping.\n return false;\n }\n };\n}\n\nvar warnUnknownProperties = function (debugID, element) {\n var unknownProps = [];\n for (var key in element.props) {\n var isValid = validateProperty(element.type, key, debugID);\n if (!isValid) {\n unknownProps.push(key);\n }\n }\n\n var unknownPropString = unknownProps.map(function (prop) {\n return '`' + prop + '`';\n }).join(', ');\n\n if (unknownProps.length === 1) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown prop %s on <%s> tag. Remove this prop from the element. ' + 'For details, see https://fb.me/react-unknown-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n } else if (unknownProps.length > 1) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown props %s on <%s> tag. Remove these props from the element. ' + 'For details, see https://fb.me/react-unknown-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n }\n};\n\nfunction handleElement(debugID, element) {\n if (element == null || typeof element.type !== 'string') {\n return;\n }\n if (element.type.indexOf('-') >= 0 || element.props.is) {\n return;\n }\n warnUnknownProperties(debugID, element);\n}\n\nvar ReactDOMUnknownPropertyHook = {\n onBeforeMountComponent: function (debugID, element) {\n handleElement(debugID, element);\n },\n onBeforeUpdateComponent: function (debugID, element) {\n handleElement(debugID, element);\n }\n};\n\nmodule.exports = ReactDOMUnknownPropertyHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMUnknownPropertyHook.js\n// module id = 181\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueNull = false;\n\nfunction handleElement(debugID, element) {\n if (element == null) {\n return;\n }\n if (element.type !== 'input' && element.type !== 'textarea' && element.type !== 'select') {\n return;\n }\n if (element.props != null && element.props.value === null && !didWarnValueNull) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`value` prop on `%s` should not be null. ' + 'Consider using the empty string to clear the component or `undefined` ' + 'for uncontrolled components.%s', element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n\n didWarnValueNull = true;\n }\n}\n\nvar ReactDOMNullInputValuePropHook = {\n onBeforeMountComponent: function (debugID, element) {\n handleElement(debugID, element);\n },\n onBeforeUpdateComponent: function (debugID, element) {\n handleElement(debugID, element);\n }\n};\n\nmodule.exports = ReactDOMNullInputValuePropHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMNullInputValuePropHook.js\n// module id = 182\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n\nvar warning = require('fbjs/lib/warning');\n\nvar warnedProperties = {};\nvar rARIA = new RegExp('^(aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\n\nfunction validateProperty(tagName, name, debugID) {\n if (warnedProperties.hasOwnProperty(name) && warnedProperties[name]) {\n return true;\n }\n\n if (rARIA.test(name)) {\n var lowerCasedName = name.toLowerCase();\n var standardName = DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null;\n\n // If this is an aria-* attribute, but is not listed in the known DOM\n // DOM properties, then it is an invalid aria-* attribute.\n if (standardName == null) {\n warnedProperties[name] = true;\n return false;\n }\n // aria-* attributes should be lowercase; suggest the lowercase version.\n if (name !== standardName) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown ARIA attribute %s. Did you mean %s?%s', name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n warnedProperties[name] = true;\n return true;\n }\n }\n\n return true;\n}\n\nfunction warnInvalidARIAProps(debugID, element) {\n var invalidProps = [];\n\n for (var key in element.props) {\n var isValid = validateProperty(element.type, key, debugID);\n if (!isValid) {\n invalidProps.push(key);\n }\n }\n\n var unknownPropString = invalidProps.map(function (prop) {\n return '`' + prop + '`';\n }).join(', ');\n\n if (invalidProps.length === 1) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid aria prop %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n } else if (invalidProps.length > 1) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid aria props %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n }\n}\n\nfunction handleElement(debugID, element) {\n if (element == null || typeof element.type !== 'string') {\n return;\n }\n if (element.type.indexOf('-') >= 0 || element.props.is) {\n return;\n }\n\n warnInvalidARIAProps(debugID, element);\n}\n\nvar ReactDOMInvalidARIAHook = {\n onBeforeMountComponent: function (debugID, element) {\n if (process.env.NODE_ENV !== 'production') {\n handleElement(debugID, element);\n }\n },\n onBeforeUpdateComponent: function (debugID, element) {\n if (process.env.NODE_ENV !== 'production') {\n handleElement(debugID, element);\n }\n }\n};\n\nmodule.exports = ReactDOMInvalidARIAHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react-dom@15.5.4@react-dom/lib/ReactDOMInvalidARIAHook.js\n// module id = 183\n// module chunks = 7","//! moment.js\n//! version : 2.18.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\nvar hookCallback;\n\nfunction hooks () {\n return hookCallback.apply(null, arguments);\n}\n\n// This is done to register the method called with moment()\n// without creating circular dependencies.\nfunction setHookCallback (callback) {\n hookCallback = callback;\n}\n\nfunction isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n}\n\nfunction isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n}\n\nfunction isObjectEmpty(obj) {\n var k;\n for (k in obj) {\n // even if its not own property I'd still call it non-empty\n return false;\n }\n return true;\n}\n\nfunction isUndefined(input) {\n return input === void 0;\n}\n\nfunction isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n}\n\nfunction isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n}\n\nfunction map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n}\n\nfunction hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\n\nfunction extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n}\n\nfunction createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n}\n\nfunction defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n}\n\nfunction getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n}\n\nvar some;\nif (Array.prototype.some) {\n some = Array.prototype.some;\n} else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n}\n\nvar some$1 = some;\n\nfunction isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some$1.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n}\n\nfunction createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n}\n\n// Plugins that add properties should also add the key here (null value),\n// so we can properly clone ourselves.\nvar momentProperties = hooks.momentProperties = [];\n\nfunction copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n}\n\nvar updateInProgress = false;\n\n// Moment prototype object\nfunction Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n}\n\nfunction isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n}\n\nfunction absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n}\n\nfunction toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n}\n\n// compare two arrays, return the number of differences\nfunction compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n}\n\nfunction warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n}\n\nfunction deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n}\n\nvar deprecations = {};\n\nfunction deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n}\n\nhooks.suppressDeprecationWarnings = false;\nhooks.deprecationHandler = null;\n\nfunction isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n}\n\nfunction set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n}\n\nfunction mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n}\n\nfunction Locale(config) {\n if (config != null) {\n this.set(config);\n }\n}\n\nvar keys;\n\nif (Object.keys) {\n keys = Object.keys;\n} else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n}\n\nvar keys$1 = keys;\n\nvar defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n};\n\nfunction calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n}\n\nvar defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n};\n\nfunction longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n}\n\nvar defaultInvalidDate = 'Invalid date';\n\nfunction invalidDate () {\n return this._invalidDate;\n}\n\nvar defaultOrdinal = '%d';\nvar defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\nfunction ordinal (number) {\n return this._ordinal.replace('%d', number);\n}\n\nvar defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n};\n\nfunction relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n}\n\nfunction pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n}\n\nvar aliases = {};\n\nfunction addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n}\n\nfunction normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n}\n\nfunction normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n}\n\nvar priorities = {};\n\nfunction addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n}\n\nfunction getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n}\n\nfunction makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n}\n\nfunction get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n}\n\nfunction set$1 (mom, unit, value) {\n if (mom.isValid()) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n}\n\n// MOMENTS\n\nfunction stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n}\n\n\nfunction stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n}\n\nfunction zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n}\n\nvar formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\nvar localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\nvar formatFunctions = {};\n\nvar formatTokenFunctions = {};\n\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nfunction addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n}\n\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n\nfunction makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n}\n\n// format date using native date object\nfunction formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n}\n\nfunction expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n}\n\nvar match1 = /\\d/; // 0 - 9\nvar match2 = /\\d\\d/; // 00 - 99\nvar match3 = /\\d{3}/; // 000 - 999\nvar match4 = /\\d{4}/; // 0000 - 9999\nvar match6 = /[+-]?\\d{6}/; // -999999 - 999999\nvar match1to2 = /\\d\\d?/; // 0 - 99\nvar match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\nvar match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\nvar match1to3 = /\\d{1,3}/; // 0 - 999\nvar match1to4 = /\\d{1,4}/; // 0 - 9999\nvar match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\nvar matchUnsigned = /\\d+/; // 0 - inf\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\nvar matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\nvar matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n// any word (or two) characters or numbers including two/three word month in arabic.\n// includes scottish gaelic two word and hyphenated months\nvar matchWord = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\n\nvar regexes = {};\n\nfunction addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n}\n\nfunction getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n}\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n}\n\nfunction regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nvar tokens = {};\n\nfunction addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n}\n\nfunction addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n}\n\nfunction addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n}\n\nvar YEAR = 0;\nvar MONTH = 1;\nvar DATE = 2;\nvar HOUR = 3;\nvar MINUTE = 4;\nvar SECOND = 5;\nvar MILLISECOND = 6;\nvar WEEK = 7;\nvar WEEKDAY = 8;\n\nvar indexOf;\n\nif (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n} else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n}\n\nvar indexOf$1 = indexOf;\n\nfunction daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n}\n\n// FORMATTING\n\naddFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n});\n\naddFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n});\n\naddFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n});\n\n// ALIASES\n\naddUnitAlias('month', 'M');\n\n// PRIORITY\n\naddUnitPriority('month', 8);\n\n// PARSING\n\naddRegexToken('M', match1to2);\naddRegexToken('MM', match1to2, match2);\naddRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n});\naddRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n});\n\naddParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n});\n\naddParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n});\n\n// LOCALES\n\nvar MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\nvar defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\nfunction localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nvar defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\nfunction localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nfunction handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n}\n\nfunction getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n}\n\nfunction getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n}\n\nvar defaultMonthsShortRegex = matchWord;\nfunction monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n}\n\nvar defaultMonthsRegex = matchWord;\nfunction monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n}\n\nfunction computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\naddFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n});\n\naddFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n});\n\naddFormatToken(0, ['YYYY', 4], 0, 'year');\naddFormatToken(0, ['YYYYY', 5], 0, 'year');\naddFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n// ALIASES\n\naddUnitAlias('year', 'y');\n\n// PRIORITIES\n\naddUnitPriority('year', 1);\n\n// PARSING\n\naddRegexToken('Y', matchSigned);\naddRegexToken('YY', match1to2, match2);\naddRegexToken('YYYY', match1to4, match4);\naddRegexToken('YYYYY', match1to6, match6);\naddRegexToken('YYYYYY', match1to6, match6);\n\naddParseToken(['YYYYY', 'YYYYYY'], YEAR);\naddParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n});\naddParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n});\naddParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n});\n\n// HELPERS\n\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nfunction isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\n// HOOKS\n\nhooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n};\n\n// MOMENTS\n\nvar getSetYear = makeGetSet('FullYear', true);\n\nfunction getIsLeapYear () {\n return isLeapYear(this.year());\n}\n\nfunction createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n}\n\nfunction createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n}\n\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n}\n\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n}\n\nfunction weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n}\n\nfunction weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n\n// FORMATTING\n\naddFormatToken('w', ['ww', 2], 'wo', 'week');\naddFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n// ALIASES\n\naddUnitAlias('week', 'w');\naddUnitAlias('isoWeek', 'W');\n\n// PRIORITIES\n\naddUnitPriority('week', 5);\naddUnitPriority('isoWeek', 5);\n\n// PARSING\n\naddRegexToken('w', match1to2);\naddRegexToken('ww', match1to2, match2);\naddRegexToken('W', match1to2);\naddRegexToken('WW', match1to2, match2);\n\naddWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n});\n\n// HELPERS\n\n// LOCALES\n\nfunction localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n}\n\nvar defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n};\n\nfunction localeFirstDayOfWeek () {\n return this._week.dow;\n}\n\nfunction localeFirstDayOfYear () {\n return this._week.doy;\n}\n\n// MOMENTS\n\nfunction getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\nfunction getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('d', 0, 'do', 'day');\n\naddFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n});\n\naddFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n});\n\naddFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n});\n\naddFormatToken('e', 0, 0, 'weekday');\naddFormatToken('E', 0, 0, 'isoWeekday');\n\n// ALIASES\n\naddUnitAlias('day', 'd');\naddUnitAlias('weekday', 'e');\naddUnitAlias('isoWeekday', 'E');\n\n// PRIORITY\naddUnitPriority('day', 11);\naddUnitPriority('weekday', 11);\naddUnitPriority('isoWeekday', 11);\n\n// PARSING\n\naddRegexToken('d', match1to2);\naddRegexToken('e', match1to2);\naddRegexToken('E', match1to2);\naddRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n});\naddRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n});\naddRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n});\n\naddWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n});\n\naddWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n});\n\n// HELPERS\n\nfunction parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n}\n\nfunction parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n}\n\n// LOCALES\n\nvar defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\nfunction localeWeekdays (m, format) {\n if (!m) {\n return isArray(this._weekdays) ? this._weekdays :\n this._weekdays['standalone'];\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n}\n\nvar defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\nfunction localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n}\n\nvar defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\nfunction localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n}\n\nfunction handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n}\n\nfunction getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n}\n\nfunction getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n}\n\nvar defaultWeekdaysRegex = matchWord;\nfunction weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n}\n\nvar defaultWeekdaysShortRegex = matchWord;\nfunction weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n}\n\nvar defaultWeekdaysMinRegex = matchWord;\nfunction weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n}\n\n\nfunction computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\nfunction hFormat() {\n return this.hours() % 12 || 12;\n}\n\nfunction kFormat() {\n return this.hours() || 24;\n}\n\naddFormatToken('H', ['HH', 2], 0, 'hour');\naddFormatToken('h', ['hh', 2], 0, hFormat);\naddFormatToken('k', ['kk', 2], 0, kFormat);\n\naddFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\naddFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\nfunction meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n}\n\nmeridiem('a', true);\nmeridiem('A', false);\n\n// ALIASES\n\naddUnitAlias('hour', 'h');\n\n// PRIORITY\naddUnitPriority('hour', 13);\n\n// PARSING\n\nfunction matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n}\n\naddRegexToken('a', matchMeridiem);\naddRegexToken('A', matchMeridiem);\naddRegexToken('H', match1to2);\naddRegexToken('h', match1to2);\naddRegexToken('k', match1to2);\naddRegexToken('HH', match1to2, match2);\naddRegexToken('hh', match1to2, match2);\naddRegexToken('kk', match1to2, match2);\n\naddRegexToken('hmm', match3to4);\naddRegexToken('hmmss', match5to6);\naddRegexToken('Hmm', match3to4);\naddRegexToken('Hmmss', match5to6);\n\naddParseToken(['H', 'HH'], HOUR);\naddParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n});\naddParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n});\naddParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n});\naddParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n});\n\n// LOCALES\n\nfunction localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n}\n\nvar defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\nfunction localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n}\n\n\n// MOMENTS\n\n// Setting the hour should keep the time, because the user explicitly\n// specified which hour he wants. So trying to maintain the same hour (in\n// a new timezone) makes sense. Adding/subtracting hours does not follow\n// this rule.\nvar getSetHour = makeGetSet('Hours', true);\n\n// months\n// week\n// weekdays\n// meridiem\nvar baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n};\n\n// internal storage for locale config files\nvar locales = {};\nvar localeFamilies = {};\nvar globalLocale;\n\nfunction normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return null;\n}\n\nfunction loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n require('./locale/' + name);\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n getSetGlobalLocale(oldLocale);\n } catch (e) { }\n }\n return locales[name];\n}\n\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nfunction getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n }\n\n return globalLocale._abbr;\n}\n\nfunction defineLocale (name, config) {\n if (config !== null) {\n var parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n}\n\nfunction updateLocale(name, config) {\n if (config != null) {\n var locale, parentConfig = baseConfig;\n // MERGE\n if (locales[name] != null) {\n parentConfig = locales[name]._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n}\n\n// returns locale data\nfunction getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n}\n\nfunction listLocales() {\n return keys$1(locales);\n}\n\nfunction checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n}\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\nvar extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\nvar basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\nvar tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\nvar isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n];\n\n// iso time formats and regexes\nvar isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n];\n\nvar aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n// date from iso format\nfunction configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n}\n\n// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\nvar basicRfcRegex = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d?\\d\\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(?:\\d\\d)?\\d\\d\\s)(\\d\\d:\\d\\d)(\\:\\d\\d)?(\\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\\d{4}))$/;\n\n// date and time from ref 2822 format\nfunction configFromRFC2822(config) {\n var string, match, dayFormat,\n dateFormat, timeFormat, tzFormat;\n var timezones = {\n ' GMT': ' +0000',\n ' EDT': ' -0400',\n ' EST': ' -0500',\n ' CDT': ' -0500',\n ' CST': ' -0600',\n ' MDT': ' -0600',\n ' MST': ' -0700',\n ' PDT': ' -0700',\n ' PST': ' -0800'\n };\n var military = 'YXWVUTSRQPONZABCDEFGHIKLM';\n var timezone, timezoneIndex;\n\n string = config._i\n .replace(/\\([^\\)]*\\)|[\\n\\t]/g, ' ') // Remove comments and folding whitespace\n .replace(/(\\s\\s+)/g, ' ') // Replace multiple-spaces with a single space\n .replace(/^\\s|\\s$/g, ''); // Remove leading and trailing spaces\n match = basicRfcRegex.exec(string);\n\n if (match) {\n dayFormat = match[1] ? 'ddd' + ((match[1].length === 5) ? ', ' : ' ') : '';\n dateFormat = 'D MMM ' + ((match[2].length > 10) ? 'YYYY ' : 'YY ');\n timeFormat = 'HH:mm' + (match[4] ? ':ss' : '');\n\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n if (match[1]) { // day of week given\n var momentDate = new Date(match[2]);\n var momentDay = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][momentDate.getDay()];\n\n if (match[1].substr(0,3) !== momentDay) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return;\n }\n }\n\n switch (match[5].length) {\n case 2: // military\n if (timezoneIndex === 0) {\n timezone = ' +0000';\n } else {\n timezoneIndex = military.indexOf(match[5][1].toUpperCase()) - 12;\n timezone = ((timezoneIndex < 0) ? ' -' : ' +') +\n (('' + timezoneIndex).replace(/^-?/, '0')).match(/..$/)[0] + '00';\n }\n break;\n case 4: // Zone\n timezone = timezones[match[5]];\n break;\n default: // UT or +/-9999\n timezone = timezones[' GMT'];\n }\n match[5] = timezone;\n config._i = match.splice(1).join('');\n tzFormat = ' ZZ';\n config._f = dayFormat + dateFormat + timeFormat + tzFormat;\n configFromStringAndFormat(config);\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n}\n\n// date from iso format or fallback\nfunction configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n}\n\nhooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n);\n\n// Pick the first defined of two or three arguments.\nfunction defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n}\n\nfunction currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nfunction configFromArray (config) {\n var i, date, input = [], currentDate, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n}\n\nfunction dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n}\n\n// constant that refers to the ISO standard\nhooks.ISO_8601 = function () {};\n\n// constant that refers to the RFC 2822 form\nhooks.RFC_2822 = function () {};\n\n// date from string and format string\nfunction configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n}\n\n\nfunction meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n}\n\n// date from string and array of format strings\nfunction configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n}\n\nfunction configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n}\n\nfunction createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n}\n\nfunction prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n}\n\nfunction configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n}\n\nfunction createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n}\n\nfunction createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n}\n\nvar prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\nvar prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\n// Pick a moment m from moments so that m[fn](other) is true for all\n// other. This relies on the function fn to be transitive.\n//\n// moments should either be an array of moment objects or an array, whose\n// first element is an array of moment objects.\nfunction pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n}\n\n// TODO: Use [].sort instead?\nfunction min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n}\n\nfunction max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n}\n\nvar now = function () {\n return Date.now ? Date.now() : +(new Date());\n};\n\nvar ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\nfunction isDurationValid(m) {\n for (var key in m) {\n if (!(ordering.indexOf(key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n}\n\nfunction isValid$1() {\n return this._isValid;\n}\n\nfunction createInvalid$1() {\n return createDuration(NaN);\n}\n\nfunction Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n}\n\nfunction isDuration (obj) {\n return obj instanceof Duration;\n}\n\nfunction absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n}\n\n// FORMATTING\n\nfunction offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n}\n\noffset('Z', ':');\noffset('ZZ', '');\n\n// PARSING\n\naddRegexToken('Z', matchShortOffset);\naddRegexToken('ZZ', matchShortOffset);\naddParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n});\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nvar chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\nfunction offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n}\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\nfunction cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n}\n\nfunction getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n}\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\nhooks.updateOffset = function () {};\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nfunction getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n}\n\nfunction getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n\nfunction setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n}\n\nfunction setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}\n\nfunction setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n}\n\nfunction hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n}\n\nfunction isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n}\n\nfunction isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}\n\nfunction isLocal () {\n return this.isValid() ? !this._isUTC : false;\n}\n\nfunction isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n}\n\nfunction isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}\n\n// ASP.NET json date format regex\nvar aspNetRegex = /^(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n// and further modified to allow for strings containing both week and day\nvar isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;\n\nfunction createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n}\n\ncreateDuration.fn = Duration.prototype;\ncreateDuration.invalid = createInvalid$1;\n\nfunction parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n}\n\nfunction positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n}\n\nfunction momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n}\n\n// TODO: remove 'name' arg after deprecation is removed\nfunction createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n}\n\nfunction addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n}\n\nvar add = createAdder(1, 'add');\nvar subtract = createAdder(-1, 'subtract');\n\nfunction getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n}\n\nfunction calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n}\n\nfunction clone () {\n return new Moment(this);\n}\n\nfunction isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n}\n\nfunction isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n}\n\nfunction isBetween (from, to, units, inclusivity) {\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n}\n\nfunction isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n}\n\nfunction isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input,units);\n}\n\nfunction isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input,units);\n}\n\nfunction diff (input, units, asFloat) {\n var that,\n zoneDelta,\n delta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\n }\n return asFloat ? output : absFloor(output);\n}\n\nfunction monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n}\n\nhooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\nhooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\nfunction toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n}\n\nfunction toISOString() {\n if (!this.isValid()) {\n return null;\n }\n var m = this.clone().utc();\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n }\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n}\n\n/**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\nfunction inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n}\n\nfunction format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n}\n\nfunction from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n}\n\nfunction to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n}\n\n// If passed a locale key, it will set the locale for this\n// instance. Otherwise, it will return the locale configuration\n// variables for this instance.\nfunction locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n}\n\nvar lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n);\n\nfunction localeData () {\n return this._locale;\n}\n\nfunction startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n}\n\nfunction endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n}\n\nfunction valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n}\n\nfunction unix () {\n return Math.floor(this.valueOf() / 1000);\n}\n\nfunction toDate () {\n return new Date(this.valueOf());\n}\n\nfunction toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n}\n\nfunction toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n}\n\nfunction toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n}\n\nfunction isValid$2 () {\n return isValid(this);\n}\n\nfunction parsingFlags () {\n return extend({}, getParsingFlags(this));\n}\n\nfunction invalidAt () {\n return getParsingFlags(this).overflow;\n}\n\nfunction creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n}\n\n// FORMATTING\n\naddFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n});\n\naddFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n});\n\nfunction addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n}\n\naddWeekYearFormatToken('gggg', 'weekYear');\naddWeekYearFormatToken('ggggg', 'weekYear');\naddWeekYearFormatToken('GGGG', 'isoWeekYear');\naddWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n// ALIASES\n\naddUnitAlias('weekYear', 'gg');\naddUnitAlias('isoWeekYear', 'GG');\n\n// PRIORITY\n\naddUnitPriority('weekYear', 1);\naddUnitPriority('isoWeekYear', 1);\n\n\n// PARSING\n\naddRegexToken('G', matchSigned);\naddRegexToken('g', matchSigned);\naddRegexToken('GG', match1to2, match2);\naddRegexToken('gg', match1to2, match2);\naddRegexToken('GGGG', match1to4, match4);\naddRegexToken('gggg', match1to4, match4);\naddRegexToken('GGGGG', match1to6, match6);\naddRegexToken('ggggg', match1to6, match6);\n\naddWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n});\n\naddWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n});\n\n// MOMENTS\n\nfunction getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n}\n\nfunction getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n}\n\nfunction getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n}\n\nfunction getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n}\n\nfunction setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n}\n\n// FORMATTING\n\naddFormatToken('Q', 0, 'Qo', 'quarter');\n\n// ALIASES\n\naddUnitAlias('quarter', 'Q');\n\n// PRIORITY\n\naddUnitPriority('quarter', 7);\n\n// PARSING\n\naddRegexToken('Q', match1);\naddParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n});\n\n// MOMENTS\n\nfunction getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n}\n\n// FORMATTING\n\naddFormatToken('D', ['DD', 2], 'Do', 'date');\n\n// ALIASES\n\naddUnitAlias('date', 'D');\n\n// PRIOROITY\naddUnitPriority('date', 9);\n\n// PARSING\n\naddRegexToken('D', match1to2);\naddRegexToken('DD', match1to2, match2);\naddRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n});\n\naddParseToken(['D', 'DD'], DATE);\naddParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\n});\n\n// MOMENTS\n\nvar getSetDayOfMonth = makeGetSet('Date', true);\n\n// FORMATTING\n\naddFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n// ALIASES\n\naddUnitAlias('dayOfYear', 'DDD');\n\n// PRIORITY\naddUnitPriority('dayOfYear', 4);\n\n// PARSING\n\naddRegexToken('DDD', match1to3);\naddRegexToken('DDDD', match3);\naddParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n});\n\n// HELPERS\n\n// MOMENTS\n\nfunction getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n}\n\n// FORMATTING\n\naddFormatToken('m', ['mm', 2], 0, 'minute');\n\n// ALIASES\n\naddUnitAlias('minute', 'm');\n\n// PRIORITY\n\naddUnitPriority('minute', 14);\n\n// PARSING\n\naddRegexToken('m', match1to2);\naddRegexToken('mm', match1to2, match2);\naddParseToken(['m', 'mm'], MINUTE);\n\n// MOMENTS\n\nvar getSetMinute = makeGetSet('Minutes', false);\n\n// FORMATTING\n\naddFormatToken('s', ['ss', 2], 0, 'second');\n\n// ALIASES\n\naddUnitAlias('second', 's');\n\n// PRIORITY\n\naddUnitPriority('second', 15);\n\n// PARSING\n\naddRegexToken('s', match1to2);\naddRegexToken('ss', match1to2, match2);\naddParseToken(['s', 'ss'], SECOND);\n\n// MOMENTS\n\nvar getSetSecond = makeGetSet('Seconds', false);\n\n// FORMATTING\n\naddFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n});\n\naddFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n});\n\naddFormatToken(0, ['SSS', 3], 0, 'millisecond');\naddFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n});\naddFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n});\naddFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n});\naddFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n});\naddFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n});\naddFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n});\n\n\n// ALIASES\n\naddUnitAlias('millisecond', 'ms');\n\n// PRIORITY\n\naddUnitPriority('millisecond', 16);\n\n// PARSING\n\naddRegexToken('S', match1to3, match1);\naddRegexToken('SS', match1to3, match2);\naddRegexToken('SSS', match1to3, match3);\n\nvar token;\nfor (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n}\n\nfunction parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n}\n\nfor (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n}\n// MOMENTS\n\nvar getSetMillisecond = makeGetSet('Milliseconds', false);\n\n// FORMATTING\n\naddFormatToken('z', 0, 0, 'zoneAbbr');\naddFormatToken('zz', 0, 0, 'zoneName');\n\n// MOMENTS\n\nfunction getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n}\n\nfunction getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n}\n\nvar proto = Moment.prototype;\n\nproto.add = add;\nproto.calendar = calendar$1;\nproto.clone = clone;\nproto.diff = diff;\nproto.endOf = endOf;\nproto.format = format;\nproto.from = from;\nproto.fromNow = fromNow;\nproto.to = to;\nproto.toNow = toNow;\nproto.get = stringGet;\nproto.invalidAt = invalidAt;\nproto.isAfter = isAfter;\nproto.isBefore = isBefore;\nproto.isBetween = isBetween;\nproto.isSame = isSame;\nproto.isSameOrAfter = isSameOrAfter;\nproto.isSameOrBefore = isSameOrBefore;\nproto.isValid = isValid$2;\nproto.lang = lang;\nproto.locale = locale;\nproto.localeData = localeData;\nproto.max = prototypeMax;\nproto.min = prototypeMin;\nproto.parsingFlags = parsingFlags;\nproto.set = stringSet;\nproto.startOf = startOf;\nproto.subtract = subtract;\nproto.toArray = toArray;\nproto.toObject = toObject;\nproto.toDate = toDate;\nproto.toISOString = toISOString;\nproto.inspect = inspect;\nproto.toJSON = toJSON;\nproto.toString = toString;\nproto.unix = unix;\nproto.valueOf = valueOf;\nproto.creationData = creationData;\n\n// Year\nproto.year = getSetYear;\nproto.isLeapYear = getIsLeapYear;\n\n// Week Year\nproto.weekYear = getSetWeekYear;\nproto.isoWeekYear = getSetISOWeekYear;\n\n// Quarter\nproto.quarter = proto.quarters = getSetQuarter;\n\n// Month\nproto.month = getSetMonth;\nproto.daysInMonth = getDaysInMonth;\n\n// Week\nproto.week = proto.weeks = getSetWeek;\nproto.isoWeek = proto.isoWeeks = getSetISOWeek;\nproto.weeksInYear = getWeeksInYear;\nproto.isoWeeksInYear = getISOWeeksInYear;\n\n// Day\nproto.date = getSetDayOfMonth;\nproto.day = proto.days = getSetDayOfWeek;\nproto.weekday = getSetLocaleDayOfWeek;\nproto.isoWeekday = getSetISODayOfWeek;\nproto.dayOfYear = getSetDayOfYear;\n\n// Hour\nproto.hour = proto.hours = getSetHour;\n\n// Minute\nproto.minute = proto.minutes = getSetMinute;\n\n// Second\nproto.second = proto.seconds = getSetSecond;\n\n// Millisecond\nproto.millisecond = proto.milliseconds = getSetMillisecond;\n\n// Offset\nproto.utcOffset = getSetOffset;\nproto.utc = setOffsetToUTC;\nproto.local = setOffsetToLocal;\nproto.parseZone = setOffsetToParsedOffset;\nproto.hasAlignedHourOffset = hasAlignedHourOffset;\nproto.isDST = isDaylightSavingTime;\nproto.isLocal = isLocal;\nproto.isUtcOffset = isUtcOffset;\nproto.isUtc = isUtc;\nproto.isUTC = isUtc;\n\n// Timezone\nproto.zoneAbbr = getZoneAbbr;\nproto.zoneName = getZoneName;\n\n// Deprecations\nproto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\nproto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\nproto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\nproto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\nproto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\nfunction createUnix (input) {\n return createLocal(input * 1000);\n}\n\nfunction createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n}\n\nfunction preParsePostFormat (string) {\n return string;\n}\n\nvar proto$1 = Locale.prototype;\n\nproto$1.calendar = calendar;\nproto$1.longDateFormat = longDateFormat;\nproto$1.invalidDate = invalidDate;\nproto$1.ordinal = ordinal;\nproto$1.preparse = preParsePostFormat;\nproto$1.postformat = preParsePostFormat;\nproto$1.relativeTime = relativeTime;\nproto$1.pastFuture = pastFuture;\nproto$1.set = set;\n\n// Month\nproto$1.months = localeMonths;\nproto$1.monthsShort = localeMonthsShort;\nproto$1.monthsParse = localeMonthsParse;\nproto$1.monthsRegex = monthsRegex;\nproto$1.monthsShortRegex = monthsShortRegex;\n\n// Week\nproto$1.week = localeWeek;\nproto$1.firstDayOfYear = localeFirstDayOfYear;\nproto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n// Day of Week\nproto$1.weekdays = localeWeekdays;\nproto$1.weekdaysMin = localeWeekdaysMin;\nproto$1.weekdaysShort = localeWeekdaysShort;\nproto$1.weekdaysParse = localeWeekdaysParse;\n\nproto$1.weekdaysRegex = weekdaysRegex;\nproto$1.weekdaysShortRegex = weekdaysShortRegex;\nproto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n// Hours\nproto$1.isPM = localeIsPM;\nproto$1.meridiem = localeMeridiem;\n\nfunction get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n}\n\nfunction listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n}\n\n// ()\n// (5)\n// (fmt, 5)\n// (fmt)\n// (true)\n// (true, 5)\n// (true, fmt, 5)\n// (true, fmt)\nfunction listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n}\n\nfunction listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n}\n\nfunction listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n}\n\nfunction listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n}\n\nfunction listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n}\n\nfunction listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n}\n\ngetSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n});\n\n// Side effect imports\nhooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\nhooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\nvar mathAbs = Math.abs;\n\nfunction abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n}\n\nfunction addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n}\n\n// supports only 2.0-style add(1, 's') or add(duration)\nfunction add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n}\n\n// supports only 2.0-style subtract(1, 's') or subtract(duration)\nfunction subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n}\n\nfunction absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n}\n\nfunction bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n}\n\nfunction daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n}\n\nfunction monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n}\n\nfunction as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n}\n\n// TODO: Use this.as('ms')?\nfunction valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n}\n\nfunction makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n}\n\nvar asMilliseconds = makeAs('ms');\nvar asSeconds = makeAs('s');\nvar asMinutes = makeAs('m');\nvar asHours = makeAs('h');\nvar asDays = makeAs('d');\nvar asWeeks = makeAs('w');\nvar asMonths = makeAs('M');\nvar asYears = makeAs('y');\n\nfunction get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n}\n\nfunction makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n}\n\nvar milliseconds = makeGetter('milliseconds');\nvar seconds = makeGetter('seconds');\nvar minutes = makeGetter('minutes');\nvar hours = makeGetter('hours');\nvar days = makeGetter('days');\nvar months = makeGetter('months');\nvar years = makeGetter('years');\n\nfunction weeks () {\n return absFloor(this.days() / 7);\n}\n\nvar round = Math.round;\nvar thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n};\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n}\n\nfunction relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n}\n\n// This function allows you to set the rounding function for relative time strings\nfunction getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n}\n\n// This function allows you to set a threshold for relative time strings\nfunction getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n}\n\nfunction humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n}\n\nvar abs$1 = Math.abs;\n\nfunction toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds;\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n}\n\nvar proto$2 = Duration.prototype;\n\nproto$2.isValid = isValid$1;\nproto$2.abs = abs;\nproto$2.add = add$1;\nproto$2.subtract = subtract$1;\nproto$2.as = as;\nproto$2.asMilliseconds = asMilliseconds;\nproto$2.asSeconds = asSeconds;\nproto$2.asMinutes = asMinutes;\nproto$2.asHours = asHours;\nproto$2.asDays = asDays;\nproto$2.asWeeks = asWeeks;\nproto$2.asMonths = asMonths;\nproto$2.asYears = asYears;\nproto$2.valueOf = valueOf$1;\nproto$2._bubble = bubble;\nproto$2.get = get$2;\nproto$2.milliseconds = milliseconds;\nproto$2.seconds = seconds;\nproto$2.minutes = minutes;\nproto$2.hours = hours;\nproto$2.days = days;\nproto$2.weeks = weeks;\nproto$2.months = months;\nproto$2.years = years;\nproto$2.humanize = humanize;\nproto$2.toISOString = toISOString$1;\nproto$2.toString = toISOString$1;\nproto$2.toJSON = toISOString$1;\nproto$2.locale = locale;\nproto$2.localeData = localeData;\n\n// Deprecations\nproto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\nproto$2.lang = lang;\n\n// Side effect imports\n\n// FORMATTING\n\naddFormatToken('X', 0, 0, 'unix');\naddFormatToken('x', 0, 0, 'valueOf');\n\n// PARSING\n\naddRegexToken('x', matchSigned);\naddRegexToken('X', matchTimestamp);\naddParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n});\naddParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n});\n\n// Side effect imports\n\n\nhooks.version = '2.18.1';\n\nsetHookCallback(createLocal);\n\nhooks.fn = proto;\nhooks.min = min;\nhooks.max = max;\nhooks.now = now;\nhooks.utc = createUTC;\nhooks.unix = createUnix;\nhooks.months = listMonths;\nhooks.isDate = isDate;\nhooks.locale = getSetGlobalLocale;\nhooks.invalid = createInvalid;\nhooks.duration = createDuration;\nhooks.isMoment = isMoment;\nhooks.weekdays = listWeekdays;\nhooks.parseZone = createInZone;\nhooks.localeData = getLocale;\nhooks.isDuration = isDuration;\nhooks.monthsShort = listMonthsShort;\nhooks.weekdaysMin = listWeekdaysMin;\nhooks.defineLocale = defineLocale;\nhooks.updateLocale = updateLocale;\nhooks.locales = listLocales;\nhooks.weekdaysShort = listWeekdaysShort;\nhooks.normalizeUnits = normalizeUnits;\nhooks.relativeTimeRounding = getSetRelativeTimeRounding;\nhooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\nhooks.calendarFormat = getCalendarFormat;\nhooks.prototype = proto;\n\nreturn hooks;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._moment@2.18.1@moment/moment.js\n// module id = 184\n// module chunks = 7","import TimePanel from './src/';\nexport default TimePanel;\n\n\n\n// WEBPACK FOOTER //\n// ./index.js","import TimePicker from './TimePicker';\nexport default TimePicker;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Trigger from 'rc-trigger';\nimport Panel from './Panel';\nimport placements from './placements';\nimport moment from 'moment';\n\nfunction noop() {\n}\n\nfunction refFn(field, component) {\n this[field] = component;\n}\n\nclass Picker extends Component {\n static propTypes = {\n prefixCls: PropTypes.string,\n clearText: PropTypes.string,\n value: PropTypes.object,\n defaultOpenValue: PropTypes.object,\n disabled: PropTypes.bool,\n allowEmpty: PropTypes.bool,\n defaultValue: PropTypes.object,\n open: PropTypes.bool,\n defaultOpen: PropTypes.bool,\n align: PropTypes.object,\n placement: PropTypes.any,\n transitionName: PropTypes.string,\n getPopupContainer: PropTypes.func,\n placeholder: PropTypes.string,\n format: PropTypes.string,\n showHour: PropTypes.bool,\n showMinute: PropTypes.bool,\n showSecond: PropTypes.bool,\n style: PropTypes.object,\n className: PropTypes.string,\n popupClassName: PropTypes.string,\n disabledHours: PropTypes.func,\n disabledMinutes: PropTypes.func,\n disabledSeconds: PropTypes.func,\n hideDisabledOptions: PropTypes.bool,\n onChange: PropTypes.func,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n addon: PropTypes.func,\n name: PropTypes.string,\n autoComplete: PropTypes.string,\n use12Hours: PropTypes.bool,\n };\n\n static defaultProps = {\n clearText: 'clear',\n prefixCls: 'rc-time-picker',\n defaultOpen: false,\n style: {},\n className: '',\n popupClassName: '',\n align: {},\n defaultOpenValue: moment(),\n allowEmpty: true,\n showHour: true,\n showMinute: true,\n showSecond: true,\n disabledHours: noop,\n disabledMinutes: noop,\n disabledSeconds: noop,\n hideDisabledOptions: false,\n placement: 'bottomLeft',\n onChange: noop,\n onOpen: noop,\n onClose: noop,\n addon: noop,\n use12Hours: false,\n };\n\n constructor(props) {\n super(props);\n this.saveInputRef = refFn.bind(this, 'picker');\n this.savePanelRef = refFn.bind(this, 'panelInstance');\n const { defaultOpen, defaultValue, open = defaultOpen, value = defaultValue } = props;\n this.state = {\n open,\n value,\n };\n }\n\n componentWillReceiveProps(nextProps) {\n const { value, open } = nextProps;\n if ('value' in nextProps) {\n this.setState({\n value,\n });\n }\n if (open !== undefined) {\n this.setState({ open });\n }\n }\n\n onPanelChange = (value) => {\n this.setValue(value);\n }\n\n onPanelClear = () => {\n this.setValue(null);\n this.setOpen(false);\n }\n\n onVisibleChange = (open) => {\n this.setOpen(open);\n }\n\n onEsc = () => {\n this.setOpen(false);\n this.focus();\n }\n\n onKeyDown = (e) => {\n if (e.keyCode === 40) {\n this.setOpen(true);\n }\n }\n\n setValue(value) {\n if (!('value' in this.props)) {\n this.setState({\n value,\n });\n }\n this.props.onChange(value);\n }\n\n getFormat() {\n const { format, showHour, showMinute, showSecond, use12Hours } = this.props;\n if (format) {\n return format;\n }\n\n if (use12Hours) {\n const fmtString = ([\n showHour ? 'h' : '',\n showMinute ? 'mm' : '',\n showSecond ? 'ss' : '',\n ].filter(item => !!item).join(':'));\n\n return fmtString.concat(' a');\n }\n\n return [\n showHour ? 'HH' : '',\n showMinute ? 'mm' : '',\n showSecond ? 'ss' : '',\n ].filter(item => !!item).join(':');\n }\n\n getPanelElement() {\n const {\n prefixCls, placeholder, disabledHours,\n disabledMinutes, disabledSeconds, hideDisabledOptions,\n allowEmpty, showHour, showMinute, showSecond, defaultOpenValue, clearText,\n addon, use12Hours,\n } = this.props;\n return (\n <Panel\n clearText={clearText}\n prefixCls={`${prefixCls}-panel`}\n ref={this.savePanelRef}\n value={this.state.value}\n onChange={this.onPanelChange}\n onClear={this.onPanelClear}\n defaultOpenValue={defaultOpenValue}\n showHour={showHour}\n showMinute={showMinute}\n showSecond={showSecond}\n onEsc={this.onEsc}\n allowEmpty={allowEmpty}\n format={this.getFormat()}\n placeholder={placeholder}\n disabledHours={disabledHours}\n disabledMinutes={disabledMinutes}\n disabledSeconds={disabledSeconds}\n hideDisabledOptions={hideDisabledOptions}\n use12Hours={use12Hours}\n addon={addon}\n />\n );\n }\n\n getPopupClassName() {\n const { showHour, showMinute, showSecond, use12Hours, prefixCls } = this.props;\n let popupClassName = this.props.popupClassName;\n // Keep it for old compatibility\n if ((!showHour || !showMinute || !showSecond) && !use12Hours) {\n popupClassName += ` ${prefixCls}-panel-narrow`;\n }\n let selectColumnCount = 0;\n if (showHour) {\n selectColumnCount += 1;\n }\n if (showMinute) {\n selectColumnCount += 1;\n }\n if (showSecond) {\n selectColumnCount += 1;\n }\n if (use12Hours) {\n selectColumnCount += 1;\n }\n popupClassName += ` ${prefixCls}-panel-column-${selectColumnCount}`;\n return popupClassName;\n }\n\n setOpen(open) {\n const { onOpen, onClose } = this.props;\n if (this.state.open !== open) {\n if (!('open' in this.props)) {\n this.setState({ open });\n }\n if (open) {\n onOpen({ open });\n } else {\n onClose({ open });\n }\n }\n }\n\n focus() {\n this.picker.focus();\n }\n\n render() {\n const {\n prefixCls, placeholder, placement, align,\n disabled, transitionName, style, className, getPopupContainer, name, autoComplete,\n } = this.props;\n const { open, value } = this.state;\n const popupClassName = this.getPopupClassName();\n return (\n <Trigger\n prefixCls={`${prefixCls}-panel`}\n popupClassName={popupClassName}\n popup={this.getPanelElement()}\n popupAlign={align}\n builtinPlacements={placements}\n popupPlacement={placement}\n action={disabled ? [] : ['click']}\n destroyPopupOnHide\n getPopupContainer={getPopupContainer}\n popupTransitionName={transitionName}\n popupVisible={open}\n onPopupVisibleChange={this.onVisibleChange}\n >\n <span className={`${prefixCls} ${className}`} style={style}>\n <input\n className={`${prefixCls}-input`}\n ref={this.saveInputRef}\n type=\"text\"\n placeholder={placeholder}\n name={name}\n readOnly\n onKeyDown={this.onKeyDown}\n disabled={disabled} value={value && value.format(this.getFormat()) || ''}\n autoComplete={autoComplete}\n />\n <span className={`${prefixCls}-icon`}/>\n </span>\n </Trigger>\n );\n }\n}\n\nexport default Picker;\n\n\n\n// WEBPACK FOOTER //\n// ./src/TimePicker.jsx","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._babel-runtime@6.23.0@babel-runtime/helpers/classCallCheck.js\n// module id = 188\n// module chunks = 7","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._babel-runtime@6.23.0@babel-runtime/helpers/possibleConstructorReturn.js\n// module id = 189\n// module chunks = 7","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._babel-runtime@6.23.0@babel-runtime/helpers/typeof.js\n// module id = 190\n// module chunks = 7","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._babel-runtime@6.23.0@babel-runtime/core-js/symbol/iterator.js\n// module id = 191\n// module chunks = 7","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/fn/symbol/iterator.js\n// module id = 192\n// module chunks = 7","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function(iterated){\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function(){\n var O = this._t\n , index = this._i\n , point;\n if(index >= O.length)return {value: undefined, done: true};\n point = $at(O, index);\n this._i += point.length;\n return {value: point, done: false};\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/es6.string.iterator.js\n// module id = 193\n// module chunks = 7","var toInteger = require('./_to-integer')\n , defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function(TO_STRING){\n return function(that, pos){\n var s = String(defined(that))\n , i = toInteger(pos)\n , l = s.length\n , a, b;\n if(i < 0 || i >= l)return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_string-at.js\n// module id = 194\n// module chunks = 7","// 7.1.4 ToInteger\nvar ceil = Math.ceil\n , floor = Math.floor;\nmodule.exports = function(it){\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_to-integer.js\n// module id = 195\n// module chunks = 7","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function(it){\n if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_defined.js\n// module id = 196\n// module chunks = 7","'use strict';\nvar LIBRARY = require('./_library')\n , $export = require('./_export')\n , redefine = require('./_redefine')\n , hide = require('./_hide')\n , has = require('./_has')\n , Iterators = require('./_iterators')\n , $iterCreate = require('./_iter-create')\n , setToStringTag = require('./_set-to-string-tag')\n , getPrototypeOf = require('./_object-gpo')\n , ITERATOR = require('./_wks')('iterator')\n , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`\n , FF_ITERATOR = '@@iterator'\n , KEYS = 'keys'\n , VALUES = 'values';\n\nvar returnThis = function(){ return this; };\n\nmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){\n $iterCreate(Constructor, NAME, next);\n var getMethod = function(kind){\n if(!BUGGY && kind in proto)return proto[kind];\n switch(kind){\n case KEYS: return function keys(){ return new Constructor(this, kind); };\n case VALUES: return function values(){ return new Constructor(this, kind); };\n } return function entries(){ return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator'\n , DEF_VALUES = DEFAULT == VALUES\n , VALUES_BUG = false\n , proto = Base.prototype\n , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]\n , $default = $native || getMethod(DEFAULT)\n , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined\n , $anyNative = NAME == 'Array' ? proto.entries || $native : $native\n , methods, key, IteratorPrototype;\n // Fix native\n if($anyNative){\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base));\n if(IteratorPrototype !== Object.prototype){\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if(DEF_VALUES && $native && $native.name !== VALUES){\n VALUES_BUG = true;\n $default = function values(){ return $native.call(this); };\n }\n // Define iterator\n if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if(DEFAULT){\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if(FORCED)for(key in methods){\n if(!(key in proto))redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_iter-define.js\n// module id = 197\n// module chunks = 7","module.exports = true;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_library.js\n// module id = 198\n// module chunks = 7","var global = require('./_global')\n , core = require('./_core')\n , ctx = require('./_ctx')\n , hide = require('./_hide')\n , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n var IS_FORCED = type & $export.F\n , IS_GLOBAL = type & $export.G\n , IS_STATIC = type & $export.S\n , IS_PROTO = type & $export.P\n , IS_BIND = type & $export.B\n , IS_WRAP = type & $export.W\n , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n , expProto = exports[PROTOTYPE]\n , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]\n , key, own, out;\n if(IS_GLOBAL)source = name;\n for(key in source){\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if(own && key in exports)continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C){\n var F = function(a, b, c){\n if(this instanceof C){\n switch(arguments.length){\n case 0: return new C;\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if(IS_PROTO){\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library` \nmodule.exports = $export;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_export.js\n// module id = 199\n// module chunks = 7","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_global.js\n// module id = 200\n// module chunks = 7","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_core.js\n// module id = 201\n// module chunks = 7","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function(fn, that, length){\n aFunction(fn);\n if(that === undefined)return fn;\n switch(length){\n case 1: return function(a){\n return fn.call(that, a);\n };\n case 2: return function(a, b){\n return fn.call(that, a, b);\n };\n case 3: return function(a, b, c){\n return fn.call(that, a, b, c);\n };\n }\n return function(/* ...args */){\n return fn.apply(that, arguments);\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_ctx.js\n// module id = 202\n// module chunks = 7","module.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_a-function.js\n// module id = 203\n// module chunks = 7","var dP = require('./_object-dp')\n , createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function(object, key, value){\n return dP.f(object, key, createDesc(1, value));\n} : function(object, key, value){\n object[key] = value;\n return object;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_hide.js\n// module id = 204\n// module chunks = 7","var anObject = require('./_an-object')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , toPrimitive = require('./_to-primitive')\n , dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if(IE8_DOM_DEFINE)try {\n return dP(O, P, Attributes);\n } catch(e){ /* empty */ }\n if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n if('value' in Attributes)O[P] = Attributes.value;\n return O;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_object-dp.js\n// module id = 205\n// module chunks = 7","var isObject = require('./_is-object');\nmodule.exports = function(it){\n if(!isObject(it))throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_an-object.js\n// module id = 206\n// module chunks = 7","module.exports = function(it){\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_is-object.js\n// module id = 207\n// module chunks = 7","module.exports = !require('./_descriptors') && !require('./_fails')(function(){\n return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_ie8-dom-define.js\n// module id = 208\n// module chunks = 7","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function(){\n return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_descriptors.js\n// module id = 209\n// module chunks = 7","module.exports = function(exec){\n try {\n return !!exec();\n } catch(e){\n return true;\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_fails.js\n// module id = 210\n// module chunks = 7","var isObject = require('./_is-object')\n , document = require('./_global').document\n // in old IE typeof document.createElement is 'object'\n , is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it){\n return is ? document.createElement(it) : {};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_dom-create.js\n// module id = 211\n// module chunks = 7","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function(it, S){\n if(!isObject(it))return it;\n var fn, val;\n if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_to-primitive.js\n// module id = 212\n// module chunks = 7","module.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_property-desc.js\n// module id = 213\n// module chunks = 7","module.exports = require('./_hide');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_redefine.js\n// module id = 214\n// module chunks = 7","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function(it, key){\n return hasOwnProperty.call(it, key);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_has.js\n// module id = 215\n// module chunks = 7","module.exports = {};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_iterators.js\n// module id = 216\n// module chunks = 7","'use strict';\nvar create = require('./_object-create')\n , descriptor = require('./_property-desc')\n , setToStringTag = require('./_set-to-string-tag')\n , IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function(){ return this; });\n\nmodule.exports = function(Constructor, NAME, next){\n Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_iter-create.js\n// module id = 217\n// module chunks = 7","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object')\n , dPs = require('./_object-dps')\n , enumBugKeys = require('./_enum-bug-keys')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , Empty = function(){ /* empty */ }\n , PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function(){\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe')\n , i = enumBugKeys.length\n , lt = '<'\n , gt = '>'\n , iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties){\n var result;\n if(O !== null){\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty;\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_object-create.js\n// module id = 218\n// module chunks = 7","var dP = require('./_object-dp')\n , anObject = require('./_an-object')\n , getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties){\n anObject(O);\n var keys = getKeys(Properties)\n , length = keys.length\n , i = 0\n , P;\n while(length > i)dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_object-dps.js\n// module id = 219\n// module chunks = 7","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal')\n , enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O){\n return $keys(O, enumBugKeys);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_object-keys.js\n// module id = 220\n// module chunks = 7","var has = require('./_has')\n , toIObject = require('./_to-iobject')\n , arrayIndexOf = require('./_array-includes')(false)\n , IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function(object, names){\n var O = toIObject(object)\n , i = 0\n , result = []\n , key;\n for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while(names.length > i)if(has(O, key = names[i++])){\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_object-keys-internal.js\n// module id = 221\n// module chunks = 7","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject')\n , defined = require('./_defined');\nmodule.exports = function(it){\n return IObject(defined(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_to-iobject.js\n// module id = 222\n// module chunks = 7","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_iobject.js\n// module id = 223\n// module chunks = 7","var toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_cof.js\n// module id = 224\n// module chunks = 7","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject')\n , toLength = require('./_to-length')\n , toIndex = require('./_to-index');\nmodule.exports = function(IS_INCLUDES){\n return function($this, el, fromIndex){\n var O = toIObject($this)\n , length = toLength(O.length)\n , index = toIndex(fromIndex, length)\n , value;\n // Array#includes uses SameValueZero equality algorithm\n if(IS_INCLUDES && el != el)while(length > index){\n value = O[index++];\n if(value != value)return true;\n // Array#toIndex ignores holes, Array#includes - not\n } else for(;length > index; index++)if(IS_INCLUDES || index in O){\n if(O[index] === el)return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_array-includes.js\n// module id = 225\n// module chunks = 7","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer')\n , min = Math.min;\nmodule.exports = function(it){\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_to-length.js\n// module id = 226\n// module chunks = 7","var toInteger = require('./_to-integer')\n , max = Math.max\n , min = Math.min;\nmodule.exports = function(index, length){\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_to-index.js\n// module id = 227\n// module chunks = 7","var shared = require('./_shared')('keys')\n , uid = require('./_uid');\nmodule.exports = function(key){\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_shared-key.js\n// module id = 228\n// module chunks = 7","var global = require('./_global')\n , SHARED = '__core-js_shared__'\n , store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function(key){\n return store[key] || (store[key] = {});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_shared.js\n// module id = 229\n// module chunks = 7","var id = 0\n , px = Math.random();\nmodule.exports = function(key){\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_uid.js\n// module id = 230\n// module chunks = 7","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_enum-bug-keys.js\n// module id = 231\n// module chunks = 7","module.exports = require('./_global').document && document.documentElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_html.js\n// module id = 232\n// module chunks = 7","var def = require('./_object-dp').f\n , has = require('./_has')\n , TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function(it, tag, stat){\n if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_set-to-string-tag.js\n// module id = 233\n// module chunks = 7","var store = require('./_shared')('wks')\n , uid = require('./_uid')\n , Symbol = require('./_global').Symbol\n , USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function(name){\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_wks.js\n// module id = 234\n// module chunks = 7","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has')\n , toObject = require('./_to-object')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function(O){\n O = toObject(O);\n if(has(O, IE_PROTO))return O[IE_PROTO];\n if(typeof O.constructor == 'function' && O instanceof O.constructor){\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_object-gpo.js\n// module id = 235\n// module chunks = 7","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function(it){\n return Object(defined(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_to-object.js\n// module id = 236\n// module chunks = 7","require('./es6.array.iterator');\nvar global = require('./_global')\n , hide = require('./_hide')\n , Iterators = require('./_iterators')\n , TO_STRING_TAG = require('./_wks')('toStringTag');\n\nfor(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){\n var NAME = collections[i]\n , Collection = global[NAME]\n , proto = Collection && Collection.prototype;\n if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/web.dom.iterable.js\n// module id = 237\n// module chunks = 7","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables')\n , step = require('./_iter-step')\n , Iterators = require('./_iterators')\n , toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function(iterated, kind){\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function(){\n var O = this._t\n , kind = this._k\n , index = this._i++;\n if(!O || index >= O.length){\n this._t = undefined;\n return step(1);\n }\n if(kind == 'keys' )return step(0, index);\n if(kind == 'values')return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/es6.array.iterator.js\n// module id = 238\n// module chunks = 7","module.exports = function(){ /* empty */ };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_add-to-unscopables.js\n// module id = 239\n// module chunks = 7","module.exports = function(done, value){\n return {value: value, done: !!done};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_iter-step.js\n// module id = 240\n// module chunks = 7","exports.f = require('./_wks');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_wks-ext.js\n// module id = 241\n// module chunks = 7","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._babel-runtime@6.23.0@babel-runtime/core-js/symbol.js\n// module id = 242\n// module chunks = 7","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/fn/symbol/index.js\n// module id = 243\n// module chunks = 7","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global')\n , has = require('./_has')\n , DESCRIPTORS = require('./_descriptors')\n , $export = require('./_export')\n , redefine = require('./_redefine')\n , META = require('./_meta').KEY\n , $fails = require('./_fails')\n , shared = require('./_shared')\n , setToStringTag = require('./_set-to-string-tag')\n , uid = require('./_uid')\n , wks = require('./_wks')\n , wksExt = require('./_wks-ext')\n , wksDefine = require('./_wks-define')\n , keyOf = require('./_keyof')\n , enumKeys = require('./_enum-keys')\n , isArray = require('./_is-array')\n , anObject = require('./_an-object')\n , toIObject = require('./_to-iobject')\n , toPrimitive = require('./_to-primitive')\n , createDesc = require('./_property-desc')\n , _create = require('./_object-create')\n , gOPNExt = require('./_object-gopn-ext')\n , $GOPD = require('./_object-gopd')\n , $DP = require('./_object-dp')\n , $keys = require('./_object-keys')\n , gOPD = $GOPD.f\n , dP = $DP.f\n , gOPN = gOPNExt.f\n , $Symbol = global.Symbol\n , $JSON = global.JSON\n , _stringify = $JSON && $JSON.stringify\n , PROTOTYPE = 'prototype'\n , HIDDEN = wks('_hidden')\n , TO_PRIMITIVE = wks('toPrimitive')\n , isEnum = {}.propertyIsEnumerable\n , SymbolRegistry = shared('symbol-registry')\n , AllSymbols = shared('symbols')\n , OPSymbols = shared('op-symbols')\n , ObjectProto = Object[PROTOTYPE]\n , USE_NATIVE = typeof $Symbol == 'function'\n , QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function(){\n return _create(dP({}, 'a', {\n get: function(){ return dP(this, 'a', {value: 7}).a; }\n })).a != 7;\n}) ? function(it, key, D){\n var protoDesc = gOPD(ObjectProto, key);\n if(protoDesc)delete ObjectProto[key];\n dP(it, key, D);\n if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function(tag){\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){\n return typeof it == 'symbol';\n} : function(it){\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D){\n if(it === ObjectProto)$defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if(has(AllSymbols, key)){\n if(!D.enumerable){\n if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;\n D = _create(D, {enumerable: createDesc(0, false)});\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P){\n anObject(it);\n var keys = enumKeys(P = toIObject(P))\n , i = 0\n , l = keys.length\n , key;\n while(l > i)$defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P){\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key){\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){\n it = toIObject(it);\n key = toPrimitive(key, true);\n if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return;\n var D = gOPD(it, key);\n if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it){\n var names = gOPN(toIObject(it))\n , result = []\n , i = 0\n , key;\n while(names.length > i){\n if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it){\n var IS_OP = it === ObjectProto\n , names = gOPN(IS_OP ? OPSymbols : toIObject(it))\n , result = []\n , i = 0\n , key;\n while(names.length > i){\n if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif(!USE_NATIVE){\n $Symbol = function Symbol(){\n if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function(value){\n if(this === ObjectProto)$set.call(OPSymbols, value);\n if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set});\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString(){\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if(DESCRIPTORS && !require('./_library')){\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function(name){\n return wrap(wks(name));\n }\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});\n\nfor(var symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);\n\nfor(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function(key){\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(key){\n if(isSymbol(key))return keyOf(SymbolRegistry, key);\n throw TypeError(key + ' is not a symbol!');\n },\n useSetter: function(){ setter = true; },\n useSimple: function(){ setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it){\n if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined\n var args = [it]\n , i = 1\n , replacer, $replacer;\n while(arguments.length > i)args.push(arguments[i++]);\n replacer = args[1];\n if(typeof replacer == 'function')$replacer = replacer;\n if($replacer || !isArray(replacer))replacer = function(key, value){\n if($replacer)value = $replacer.call(this, key, value);\n if(!isSymbol(value))return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/es6.symbol.js\n// module id = 244\n// module chunks = 7","var META = require('./_uid')('meta')\n , isObject = require('./_is-object')\n , has = require('./_has')\n , setDesc = require('./_object-dp').f\n , id = 0;\nvar isExtensible = Object.isExtensible || function(){\n return true;\n};\nvar FREEZE = !require('./_fails')(function(){\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function(it){\n setDesc(it, META, {value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n }});\n};\nvar fastKey = function(it, create){\n // return primitive with prefix\n if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if(!has(it, META)){\n // can't set metadata to uncaught frozen object\n if(!isExtensible(it))return 'F';\n // not necessary to add metadata\n if(!create)return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function(it, create){\n if(!has(it, META)){\n // can't set metadata to uncaught frozen object\n if(!isExtensible(it))return true;\n // not necessary to add metadata\n if(!create)return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function(it){\n if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_meta.js\n// module id = 245\n// module chunks = 7","var global = require('./_global')\n , core = require('./_core')\n , LIBRARY = require('./_library')\n , wksExt = require('./_wks-ext')\n , defineProperty = require('./_object-dp').f;\nmodule.exports = function(name){\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_wks-define.js\n// module id = 246\n// module chunks = 7","var getKeys = require('./_object-keys')\n , toIObject = require('./_to-iobject');\nmodule.exports = function(object, el){\n var O = toIObject(object)\n , keys = getKeys(O)\n , length = keys.length\n , index = 0\n , key;\n while(length > index)if(O[key = keys[index++]] === el)return key;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_keyof.js\n// module id = 247\n// module chunks = 7","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys')\n , gOPS = require('./_object-gops')\n , pIE = require('./_object-pie');\nmodule.exports = function(it){\n var result = getKeys(it)\n , getSymbols = gOPS.f;\n if(getSymbols){\n var symbols = getSymbols(it)\n , isEnum = pIE.f\n , i = 0\n , key;\n while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);\n } return result;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_enum-keys.js\n// module id = 248\n// module chunks = 7","exports.f = Object.getOwnPropertySymbols;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_object-gops.js\n// module id = 249\n// module chunks = 7","exports.f = {}.propertyIsEnumerable;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_object-pie.js\n// module id = 250\n// module chunks = 7","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg){\n return cof(arg) == 'Array';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_is-array.js\n// module id = 251\n// module chunks = 7","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject')\n , gOPN = require('./_object-gopn').f\n , toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function(it){\n try {\n return gOPN(it);\n } catch(e){\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it){\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_object-gopn-ext.js\n// module id = 252\n// module chunks = 7","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal')\n , hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){\n return $keys(O, hiddenKeys);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_object-gopn.js\n// module id = 253\n// module chunks = 7","var pIE = require('./_object-pie')\n , createDesc = require('./_property-desc')\n , toIObject = require('./_to-iobject')\n , toPrimitive = require('./_to-primitive')\n , has = require('./_has')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P){\n O = toIObject(O);\n P = toPrimitive(P, true);\n if(IE8_DOM_DEFINE)try {\n return gOPD(O, P);\n } catch(e){ /* empty */ }\n if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_object-gopd.js\n// module id = 254\n// module chunks = 7","require('./_wks-define')('asyncIterator');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/es7.symbol.async-iterator.js\n// module id = 256\n// module chunks = 7","require('./_wks-define')('observable');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/es7.symbol.observable.js\n// module id = 257\n// module chunks = 7","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._babel-runtime@6.23.0@babel-runtime/helpers/inherits.js\n// module id = 258\n// module chunks = 7","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._babel-runtime@6.23.0@babel-runtime/core-js/object/set-prototype-of.js\n// module id = 259\n// module chunks = 7","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/fn/object/set-prototype-of.js\n// module id = 260\n// module chunks = 7","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', {setPrototypeOf: require('./_set-proto').set});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/es6.object.set-prototype-of.js\n// module id = 261\n// module chunks = 7","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object')\n , anObject = require('./_an-object');\nvar check = function(O, proto){\n anObject(O);\n if(!isObject(proto) && proto !== null)throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function(test, buggy, set){\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch(e){ buggy = true; }\n return function setPrototypeOf(O, proto){\n check(O, proto);\n if(buggy)O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_set-proto.js\n// module id = 262\n// module chunks = 7","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._babel-runtime@6.23.0@babel-runtime/core-js/object/create.js\n// module id = 263\n// module chunks = 7","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D){\n return $Object.create(P, D);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/fn/object/create.js\n// module id = 264\n// module chunks = 7","var $export = require('./_export')\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', {create: require('./_object-create')});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/es6.object.create.js\n// module id = 265\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._prop-types@15.5.8@prop-types/index.js\n// module id = 266\n// module chunks = 7","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\n\nmodule.exports = function() {\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n function shim() {\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._prop-types@15.5.8@prop-types/factoryWithThrowingShims.js\n// module id = 267\n// module chunks = 7","'use strict';\n\nmodule.exports = require('./Trigger');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-trigger@1.10.0@rc-trigger/lib/index.js\n// module id = 268\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _contains = require('rc-util/lib/Dom/contains');\n\nvar _contains2 = _interopRequireDefault(_contains);\n\nvar _addEventListener = require('rc-util/lib/Dom/addEventListener');\n\nvar _addEventListener2 = _interopRequireDefault(_addEventListener);\n\nvar _Popup = require('./Popup');\n\nvar _Popup2 = _interopRequireDefault(_Popup);\n\nvar _utils = require('./utils');\n\nvar _getContainerRenderMixin = require('rc-util/lib/getContainerRenderMixin');\n\nvar _getContainerRenderMixin2 = _interopRequireDefault(_getContainerRenderMixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction noop() {}\n\nfunction returnEmptyString() {\n return '';\n}\n\nfunction returnDocument() {\n return window.document;\n}\n\n// use fastclick for mobile touch\nvar ALL_HANDLERS = ['onClick', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur'];\n\nvar Trigger = _react2[\"default\"].createClass({\n displayName: 'Trigger',\n\n propTypes: {\n children: _react.PropTypes.any,\n action: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.arrayOf(_react.PropTypes.string)]),\n showAction: _react.PropTypes.any,\n hideAction: _react.PropTypes.any,\n getPopupClassNameFromAlign: _react.PropTypes.any,\n onPopupVisibleChange: _react.PropTypes.func,\n afterPopupVisibleChange: _react.PropTypes.func,\n popup: _react.PropTypes.oneOfType([_react.PropTypes.node, _react.PropTypes.func]).isRequired,\n popupStyle: _react.PropTypes.object,\n prefixCls: _react.PropTypes.string,\n popupClassName: _react.PropTypes.string,\n popupPlacement: _react.PropTypes.string,\n builtinPlacements: _react.PropTypes.object,\n popupTransitionName: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.object]),\n popupAnimation: _react.PropTypes.any,\n mouseEnterDelay: _react.PropTypes.number,\n mouseLeaveDelay: _react.PropTypes.number,\n zIndex: _react.PropTypes.number,\n focusDelay: _react.PropTypes.number,\n blurDelay: _react.PropTypes.number,\n getPopupContainer: _react.PropTypes.func,\n getDocument: _react.PropTypes.func,\n destroyPopupOnHide: _react.PropTypes.bool,\n mask: _react.PropTypes.bool,\n maskClosable: _react.PropTypes.bool,\n onPopupAlign: _react.PropTypes.func,\n popupAlign: _react.PropTypes.object,\n popupVisible: _react.PropTypes.bool,\n maskTransitionName: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.object]),\n maskAnimation: _react.PropTypes.string\n },\n\n mixins: [(0, _getContainerRenderMixin2[\"default\"])({\n autoMount: false,\n\n isVisible: function isVisible(instance) {\n return instance.state.popupVisible;\n },\n getContainer: function getContainer(instance) {\n var props = instance.props;\n\n var popupContainer = document.createElement('div');\n // Make sure default popup container will never cause scrollbar appearing\n // https://github.com/react-component/trigger/issues/41\n popupContainer.style.position = 'absolute';\n popupContainer.style.top = '0';\n popupContainer.style.left = '0';\n popupContainer.style.width = '100%';\n var mountNode = props.getPopupContainer ? props.getPopupContainer((0, _reactDom.findDOMNode)(instance)) : props.getDocument().body;\n mountNode.appendChild(popupContainer);\n return popupContainer;\n }\n })],\n\n getDefaultProps: function getDefaultProps() {\n return {\n prefixCls: 'rc-trigger-popup',\n getPopupClassNameFromAlign: returnEmptyString,\n getDocument: returnDocument,\n onPopupVisibleChange: noop,\n afterPopupVisibleChange: noop,\n onPopupAlign: noop,\n popupClassName: '',\n mouseEnterDelay: 0,\n mouseLeaveDelay: 0.1,\n focusDelay: 0,\n blurDelay: 0.15,\n popupStyle: {},\n destroyPopupOnHide: false,\n popupAlign: {},\n defaultPopupVisible: false,\n mask: false,\n maskClosable: true,\n action: [],\n showAction: [],\n hideAction: []\n };\n },\n getInitialState: function getInitialState() {\n var props = this.props;\n var popupVisible = void 0;\n if ('popupVisible' in props) {\n popupVisible = !!props.popupVisible;\n } else {\n popupVisible = !!props.defaultPopupVisible;\n }\n return {\n popupVisible: popupVisible\n };\n },\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n ALL_HANDLERS.forEach(function (h) {\n _this['fire' + h] = function (e) {\n _this.fireEvents(h, e);\n };\n });\n },\n componentDidMount: function componentDidMount() {\n this.componentDidUpdate({}, {\n popupVisible: this.state.popupVisible\n });\n },\n componentWillReceiveProps: function componentWillReceiveProps(_ref) {\n var popupVisible = _ref.popupVisible;\n\n if (popupVisible !== undefined) {\n this.setState({\n popupVisible: popupVisible\n });\n }\n },\n componentDidUpdate: function componentDidUpdate(_, prevState) {\n var props = this.props;\n var state = this.state;\n this.renderComponent(null, function () {\n if (prevState.popupVisible !== state.popupVisible) {\n props.afterPopupVisibleChange(state.popupVisible);\n }\n });\n\n if (state.popupVisible) {\n var currentDocument = void 0;\n if (!this.clickOutsideHandler && this.isClickToHide()) {\n currentDocument = props.getDocument();\n this.clickOutsideHandler = (0, _addEventListener2[\"default\"])(currentDocument, 'click', this.onDocumentClick);\n }\n return;\n }\n\n this.clearOutsideHandler();\n },\n componentWillUnmount: function componentWillUnmount() {\n this.clearDelayTimer();\n this.clearOutsideHandler();\n },\n onMouseEnter: function onMouseEnter(e) {\n this.fireEvents('onMouseEnter', e);\n this.delaySetPopupVisible(true, this.props.mouseEnterDelay);\n },\n onMouseLeave: function onMouseLeave(e) {\n this.fireEvents('onMouseLeave', e);\n this.delaySetPopupVisible(false, this.props.mouseLeaveDelay);\n },\n onPopupMouseEnter: function onPopupMouseEnter() {\n this.clearDelayTimer();\n },\n onPopupMouseLeave: function onPopupMouseLeave(e) {\n // https://github.com/react-component/trigger/pull/13\n // react bug?\n if (e.relatedTarget && !e.relatedTarget.setTimeout && this._component && (0, _contains2[\"default\"])(this._component.getPopupDomNode(), e.relatedTarget)) {\n return;\n }\n this.delaySetPopupVisible(false, this.props.mouseLeaveDelay);\n },\n onFocus: function onFocus(e) {\n this.fireEvents('onFocus', e);\n // incase focusin and focusout\n this.clearDelayTimer();\n if (this.isFocusToShow()) {\n this.focusTime = Date.now();\n this.delaySetPopupVisible(true, this.props.focusDelay);\n }\n },\n onMouseDown: function onMouseDown(e) {\n this.fireEvents('onMouseDown', e);\n this.preClickTime = Date.now();\n },\n onBlur: function onBlur(e) {\n this.fireEvents('onBlur', e);\n this.clearDelayTimer();\n if (this.isBlurToHide()) {\n this.delaySetPopupVisible(false, this.props.blurDelay);\n }\n },\n onClick: function onClick(event) {\n this.fireEvents('onClick', event);\n // focus will trigger click\n if (this.focusTime) {\n var preTime = void 0;\n if (this.preClickTime) {\n preTime = this.preClickTime;\n }\n if (Math.abs(preTime - this.focusTime) < 20) {\n return;\n }\n this.focusTime = 0;\n }\n this.preClickTime = 0;\n event.preventDefault();\n var nextVisible = !this.state.popupVisible;\n if (this.isClickToHide() && !nextVisible || nextVisible && this.isClickToShow()) {\n this.setPopupVisible(!this.state.popupVisible);\n }\n },\n onDocumentClick: function onDocumentClick(event) {\n if (this.props.mask && !this.props.maskClosable) {\n return;\n }\n var target = event.target;\n var root = (0, _reactDom.findDOMNode)(this);\n var popupNode = this.getPopupDomNode();\n if (!(0, _contains2[\"default\"])(root, target) && !(0, _contains2[\"default\"])(popupNode, target)) {\n this.close();\n }\n },\n getPopupDomNode: function getPopupDomNode() {\n // for test\n if (this._component) {\n return this._component.isMounted() ? this._component.getPopupDomNode() : null;\n }\n return null;\n },\n getRootDomNode: function getRootDomNode() {\n return _reactDom2[\"default\"].findDOMNode(this);\n },\n getPopupClassNameFromAlign: function getPopupClassNameFromAlign(align) {\n var className = [];\n var props = this.props;\n var popupPlacement = props.popupPlacement,\n builtinPlacements = props.builtinPlacements,\n prefixCls = props.prefixCls;\n\n if (popupPlacement && builtinPlacements) {\n className.push((0, _utils.getPopupClassNameFromAlign)(builtinPlacements, prefixCls, align));\n }\n if (props.getPopupClassNameFromAlign) {\n className.push(props.getPopupClassNameFromAlign(align));\n }\n return className.join(' ');\n },\n getPopupAlign: function getPopupAlign() {\n var props = this.props;\n var popupPlacement = props.popupPlacement,\n popupAlign = props.popupAlign,\n builtinPlacements = props.builtinPlacements;\n\n if (popupPlacement && builtinPlacements) {\n return (0, _utils.getAlignFromPlacement)(builtinPlacements, popupPlacement, popupAlign);\n }\n return popupAlign;\n },\n getComponent: function getComponent() {\n var props = this.props,\n state = this.state;\n\n var mouseProps = {};\n if (this.isMouseEnterToShow()) {\n mouseProps.onMouseEnter = this.onPopupMouseEnter;\n }\n if (this.isMouseLeaveToHide()) {\n mouseProps.onMouseLeave = this.onPopupMouseLeave;\n }\n return _react2[\"default\"].createElement(\n _Popup2[\"default\"],\n (0, _extends3[\"default\"])({\n prefixCls: props.prefixCls,\n destroyPopupOnHide: props.destroyPopupOnHide,\n visible: state.popupVisible,\n className: props.popupClassName,\n action: props.action,\n align: this.getPopupAlign(),\n onAlign: props.onPopupAlign,\n animation: props.popupAnimation,\n getClassNameFromAlign: this.getPopupClassNameFromAlign\n }, mouseProps, {\n getRootDomNode: this.getRootDomNode,\n style: props.popupStyle,\n mask: props.mask,\n zIndex: props.zIndex,\n transitionName: props.popupTransitionName,\n maskAnimation: props.maskAnimation,\n maskTransitionName: props.maskTransitionName\n }),\n typeof props.popup === 'function' ? props.popup() : props.popup\n );\n },\n setPopupVisible: function setPopupVisible(popupVisible) {\n this.clearDelayTimer();\n if (this.state.popupVisible !== popupVisible) {\n if (!('popupVisible' in this.props)) {\n this.setState({\n popupVisible: popupVisible\n });\n }\n this.props.onPopupVisibleChange(popupVisible);\n }\n },\n delaySetPopupVisible: function delaySetPopupVisible(visible, delayS) {\n var _this2 = this;\n\n var delay = delayS * 1000;\n this.clearDelayTimer();\n if (delay) {\n this.delayTimer = setTimeout(function () {\n _this2.setPopupVisible(visible);\n _this2.clearDelayTimer();\n }, delay);\n } else {\n this.setPopupVisible(visible);\n }\n },\n clearDelayTimer: function clearDelayTimer() {\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n }\n },\n clearOutsideHandler: function clearOutsideHandler() {\n if (this.clickOutsideHandler) {\n this.clickOutsideHandler.remove();\n this.clickOutsideHandler = null;\n }\n },\n createTwoChains: function createTwoChains(event) {\n var childPros = this.props.children.props;\n var props = this.props;\n if (childPros[event] && props[event]) {\n return this['fire' + event];\n }\n return childPros[event] || props[event];\n },\n isClickToShow: function isClickToShow() {\n var _props = this.props,\n action = _props.action,\n showAction = _props.showAction;\n\n return action.indexOf('click') !== -1 || showAction.indexOf('click') !== -1;\n },\n isClickToHide: function isClickToHide() {\n var _props2 = this.props,\n action = _props2.action,\n hideAction = _props2.hideAction;\n\n return action.indexOf('click') !== -1 || hideAction.indexOf('click') !== -1;\n },\n isMouseEnterToShow: function isMouseEnterToShow() {\n var _props3 = this.props,\n action = _props3.action,\n showAction = _props3.showAction;\n\n return action.indexOf('hover') !== -1 || showAction.indexOf('mouseEnter') !== -1;\n },\n isMouseLeaveToHide: function isMouseLeaveToHide() {\n var _props4 = this.props,\n action = _props4.action,\n hideAction = _props4.hideAction;\n\n return action.indexOf('hover') !== -1 || hideAction.indexOf('mouseLeave') !== -1;\n },\n isFocusToShow: function isFocusToShow() {\n var _props5 = this.props,\n action = _props5.action,\n showAction = _props5.showAction;\n\n return action.indexOf('focus') !== -1 || showAction.indexOf('focus') !== -1;\n },\n isBlurToHide: function isBlurToHide() {\n var _props6 = this.props,\n action = _props6.action,\n hideAction = _props6.hideAction;\n\n return action.indexOf('focus') !== -1 || hideAction.indexOf('blur') !== -1;\n },\n forcePopupAlign: function forcePopupAlign() {\n if (this.state.popupVisible && this.popupInstance && this.popupInstance.alignInstance) {\n this.popupInstance.alignInstance.forceAlign();\n }\n },\n fireEvents: function fireEvents(type, e) {\n var childCallback = this.props.children.props[type];\n if (childCallback) {\n childCallback(e);\n }\n var callback = this.props[type];\n if (callback) {\n callback(e);\n }\n },\n close: function close() {\n this.setPopupVisible(false);\n },\n render: function render() {\n var props = this.props;\n var children = props.children;\n var child = _react2[\"default\"].Children.only(children);\n var newChildProps = {};\n if (this.isClickToHide() || this.isClickToShow()) {\n newChildProps.onClick = this.onClick;\n newChildProps.onMouseDown = this.onMouseDown;\n } else {\n newChildProps.onClick = this.createTwoChains('onClick');\n newChildProps.onMouseDown = this.createTwoChains('onMouseDown');\n }\n if (this.isMouseEnterToShow()) {\n newChildProps.onMouseEnter = this.onMouseEnter;\n } else {\n newChildProps.onMouseEnter = this.createTwoChains('onMouseEnter');\n }\n if (this.isMouseLeaveToHide()) {\n newChildProps.onMouseLeave = this.onMouseLeave;\n } else {\n newChildProps.onMouseLeave = this.createTwoChains('onMouseLeave');\n }\n if (this.isFocusToShow() || this.isBlurToHide()) {\n newChildProps.onFocus = this.onFocus;\n newChildProps.onBlur = this.onBlur;\n } else {\n newChildProps.onFocus = this.createTwoChains('onFocus');\n newChildProps.onBlur = this.createTwoChains('onBlur');\n }\n\n return _react2[\"default\"].cloneElement(child, newChildProps);\n }\n});\n\nexports[\"default\"] = Trigger;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-trigger@1.10.0@rc-trigger/lib/Trigger.js\n// module id = 269\n// module chunks = 7","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._babel-runtime@6.23.0@babel-runtime/helpers/extends.js\n// module id = 270\n// module chunks = 7","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._babel-runtime@6.23.0@babel-runtime/core-js/object/assign.js\n// module id = 271\n// module chunks = 7","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/fn/object/assign.js\n// module id = 272\n// module chunks = 7","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', {assign: require('./_object-assign')});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/es6.object.assign.js\n// module id = 273\n// module chunks = 7","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys')\n , gOPS = require('./_object-gops')\n , pIE = require('./_object-pie')\n , toObject = require('./_to-object')\n , IObject = require('./_iobject')\n , $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function(){\n var A = {}\n , B = {}\n , S = Symbol()\n , K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function(k){ B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source){ // eslint-disable-line no-unused-vars\n var T = toObject(target)\n , aLen = arguments.length\n , index = 1\n , getSymbols = gOPS.f\n , isEnum = pIE.f;\n while(aLen > index){\n var S = IObject(arguments[index++])\n , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)\n , length = keys.length\n , j = 0\n , key;\n while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];\n } return T;\n} : $assign;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/_object-assign.js\n// module id = 274\n// module chunks = 7","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = contains;\nfunction contains(root, n) {\n var node = n;\n while (node) {\n if (node === root) {\n return true;\n }\n node = node.parentNode;\n }\n\n return false;\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-util@4.0.2@rc-util/lib/Dom/contains.js\n// module id = 275\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = addEventListenerWrap;\n\nvar _addDomEventListener = require('add-dom-event-listener');\n\nvar _addDomEventListener2 = _interopRequireDefault(_addDomEventListener);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction addEventListenerWrap(target, eventType, cb) {\n /* eslint camelcase: 2 */\n var callback = _reactDom2[\"default\"].unstable_batchedUpdates ? function run(e) {\n _reactDom2[\"default\"].unstable_batchedUpdates(cb, e);\n } : cb;\n return (0, _addDomEventListener2[\"default\"])(target, eventType, callback);\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-util@4.0.2@rc-util/lib/Dom/addEventListener.js\n// module id = 276\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = addEventListener;\n\nvar _EventObject = require('./EventObject');\n\nvar _EventObject2 = _interopRequireDefault(_EventObject);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction addEventListener(target, eventType, callback) {\n function wrapCallback(e) {\n var ne = new _EventObject2[\"default\"](e);\n callback.call(target, ne);\n }\n\n if (target.addEventListener) {\n target.addEventListener(eventType, wrapCallback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, wrapCallback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, wrapCallback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, wrapCallback);\n }\n };\n }\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._add-dom-event-listener@1.0.2@add-dom-event-listener/lib/index.js\n// module id = 277\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _EventBaseObject = require('./EventBaseObject');\n\nvar _EventBaseObject2 = _interopRequireDefault(_EventBaseObject);\n\nvar _objectAssign = require('object-assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n * @ignore\n * event object for dom\n * @author yiminghe@gmail.com\n */\n\nvar TRUE = true;\nvar FALSE = false;\nvar commonProps = ['altKey', 'bubbles', 'cancelable', 'ctrlKey', 'currentTarget', 'eventPhase', 'metaKey', 'shiftKey', 'target', 'timeStamp', 'view', 'type'];\n\nfunction isNullOrUndefined(w) {\n return w === null || w === undefined;\n}\n\nvar eventNormalizers = [{\n reg: /^key/,\n props: ['char', 'charCode', 'key', 'keyCode', 'which'],\n fix: function fix(event, nativeEvent) {\n if (isNullOrUndefined(event.which)) {\n event.which = !isNullOrUndefined(nativeEvent.charCode) ? nativeEvent.charCode : nativeEvent.keyCode;\n }\n\n // add metaKey to non-Mac browsers (use ctrl for PC 's and Meta for Macs)\n if (event.metaKey === undefined) {\n event.metaKey = event.ctrlKey;\n }\n }\n}, {\n reg: /^touch/,\n props: ['touches', 'changedTouches', 'targetTouches']\n}, {\n reg: /^hashchange$/,\n props: ['newURL', 'oldURL']\n}, {\n reg: /^gesturechange$/i,\n props: ['rotation', 'scale']\n}, {\n reg: /^(mousewheel|DOMMouseScroll)$/,\n props: [],\n fix: function fix(event, nativeEvent) {\n var deltaX = void 0;\n var deltaY = void 0;\n var delta = void 0;\n var wheelDelta = nativeEvent.wheelDelta;\n var axis = nativeEvent.axis;\n var wheelDeltaY = nativeEvent.wheelDeltaY;\n var wheelDeltaX = nativeEvent.wheelDeltaX;\n var detail = nativeEvent.detail;\n\n // ie/webkit\n if (wheelDelta) {\n delta = wheelDelta / 120;\n }\n\n // gecko\n if (detail) {\n // press control e.detail == 1 else e.detail == 3\n delta = 0 - (detail % 3 === 0 ? detail / 3 : detail);\n }\n\n // Gecko\n if (axis !== undefined) {\n if (axis === event.HORIZONTAL_AXIS) {\n deltaY = 0;\n deltaX = 0 - delta;\n } else if (axis === event.VERTICAL_AXIS) {\n deltaX = 0;\n deltaY = delta;\n }\n }\n\n // Webkit\n if (wheelDeltaY !== undefined) {\n deltaY = wheelDeltaY / 120;\n }\n if (wheelDeltaX !== undefined) {\n deltaX = -1 * wheelDeltaX / 120;\n }\n\n // 默认 deltaY (ie)\n if (!deltaX && !deltaY) {\n deltaY = delta;\n }\n\n if (deltaX !== undefined) {\n /**\n * deltaX of mousewheel event\n * @property deltaX\n * @member Event.DomEvent.Object\n */\n event.deltaX = deltaX;\n }\n\n if (deltaY !== undefined) {\n /**\n * deltaY of mousewheel event\n * @property deltaY\n * @member Event.DomEvent.Object\n */\n event.deltaY = deltaY;\n }\n\n if (delta !== undefined) {\n /**\n * delta of mousewheel event\n * @property delta\n * @member Event.DomEvent.Object\n */\n event.delta = delta;\n }\n }\n}, {\n reg: /^mouse|contextmenu|click|mspointer|(^DOMMouseScroll$)/i,\n props: ['buttons', 'clientX', 'clientY', 'button', 'offsetX', 'relatedTarget', 'which', 'fromElement', 'toElement', 'offsetY', 'pageX', 'pageY', 'screenX', 'screenY'],\n fix: function fix(event, nativeEvent) {\n var eventDoc = void 0;\n var doc = void 0;\n var body = void 0;\n var target = event.target;\n var button = nativeEvent.button;\n\n // Calculate pageX/Y if missing and clientX/Y available\n if (target && isNullOrUndefined(event.pageX) && !isNullOrUndefined(nativeEvent.clientX)) {\n eventDoc = target.ownerDocument || document;\n doc = eventDoc.documentElement;\n body = eventDoc.body;\n event.pageX = nativeEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = nativeEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // which for click: 1 === left; 2 === middle; 3 === right\n // do not use button\n if (!event.which && button !== undefined) {\n if (button & 1) {\n event.which = 1;\n } else if (button & 2) {\n event.which = 3;\n } else if (button & 4) {\n event.which = 2;\n } else {\n event.which = 0;\n }\n }\n\n // add relatedTarget, if necessary\n if (!event.relatedTarget && event.fromElement) {\n event.relatedTarget = event.fromElement === target ? event.toElement : event.fromElement;\n }\n\n return event;\n }\n}];\n\nfunction retTrue() {\n return TRUE;\n}\n\nfunction retFalse() {\n return FALSE;\n}\n\nfunction DomEventObject(nativeEvent) {\n var type = nativeEvent.type;\n\n var isNative = typeof nativeEvent.stopPropagation === 'function' || typeof nativeEvent.cancelBubble === 'boolean';\n\n _EventBaseObject2[\"default\"].call(this);\n\n this.nativeEvent = nativeEvent;\n\n // in case dom event has been mark as default prevented by lower dom node\n var isDefaultPrevented = retFalse;\n if ('defaultPrevented' in nativeEvent) {\n isDefaultPrevented = nativeEvent.defaultPrevented ? retTrue : retFalse;\n } else if ('getPreventDefault' in nativeEvent) {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=691151\n isDefaultPrevented = nativeEvent.getPreventDefault() ? retTrue : retFalse;\n } else if ('returnValue' in nativeEvent) {\n isDefaultPrevented = nativeEvent.returnValue === FALSE ? retTrue : retFalse;\n }\n\n this.isDefaultPrevented = isDefaultPrevented;\n\n var fixFns = [];\n var fixFn = void 0;\n var l = void 0;\n var prop = void 0;\n var props = commonProps.concat();\n\n eventNormalizers.forEach(function (normalizer) {\n if (type.match(normalizer.reg)) {\n props = props.concat(normalizer.props);\n if (normalizer.fix) {\n fixFns.push(normalizer.fix);\n }\n }\n });\n\n l = props.length;\n\n // clone properties of the original event object\n while (l) {\n prop = props[--l];\n this[prop] = nativeEvent[prop];\n }\n\n // fix target property, if necessary\n if (!this.target && isNative) {\n this.target = nativeEvent.srcElement || document; // srcElement might not be defined either\n }\n\n // check if target is a text node (safari)\n if (this.target && this.target.nodeType === 3) {\n this.target = this.target.parentNode;\n }\n\n l = fixFns.length;\n\n while (l) {\n fixFn = fixFns[--l];\n fixFn(this, nativeEvent);\n }\n\n this.timeStamp = nativeEvent.timeStamp || Date.now();\n}\n\nvar EventBaseObjectProto = _EventBaseObject2[\"default\"].prototype;\n\n(0, _objectAssign2[\"default\"])(DomEventObject.prototype, EventBaseObjectProto, {\n constructor: DomEventObject,\n\n preventDefault: function preventDefault() {\n var e = this.nativeEvent;\n\n // if preventDefault exists run it on the original event\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n // otherwise set the returnValue property of the original event to FALSE (IE)\n e.returnValue = FALSE;\n }\n\n EventBaseObjectProto.preventDefault.call(this);\n },\n stopPropagation: function stopPropagation() {\n var e = this.nativeEvent;\n\n // if stopPropagation exists run it on the original event\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n // otherwise set the cancelBubble property of the original event to TRUE (IE)\n e.cancelBubble = TRUE;\n }\n\n EventBaseObjectProto.stopPropagation.call(this);\n }\n});\n\nexports[\"default\"] = DomEventObject;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._add-dom-event-listener@1.0.2@add-dom-event-listener/lib/EventObject.js\n// module id = 278\n// module chunks = 7","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * @ignore\n * base event object for custom and dom event.\n * @author yiminghe@gmail.com\n */\n\nfunction returnFalse() {\n return false;\n}\n\nfunction returnTrue() {\n return true;\n}\n\nfunction EventBaseObject() {\n this.timeStamp = Date.now();\n this.target = undefined;\n this.currentTarget = undefined;\n}\n\nEventBaseObject.prototype = {\n isEventObject: 1,\n\n constructor: EventBaseObject,\n\n isDefaultPrevented: returnFalse,\n\n isPropagationStopped: returnFalse,\n\n isImmediatePropagationStopped: returnFalse,\n\n preventDefault: function preventDefault() {\n this.isDefaultPrevented = returnTrue;\n },\n stopPropagation: function stopPropagation() {\n this.isPropagationStopped = returnTrue;\n },\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.isImmediatePropagationStopped = returnTrue;\n // fixed 1.2\n // call stopPropagation implicitly\n this.stopPropagation();\n },\n halt: function halt(immediate) {\n if (immediate) {\n this.stopImmediatePropagation();\n } else {\n this.stopPropagation();\n }\n this.preventDefault();\n }\n};\n\nexports[\"default\"] = EventBaseObject;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._add-dom-event-listener@1.0.2@add-dom-event-listener/lib/EventBaseObject.js\n// module id = 279\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _rcAlign = require('rc-align');\n\nvar _rcAlign2 = _interopRequireDefault(_rcAlign);\n\nvar _rcAnimate = require('rc-animate');\n\nvar _rcAnimate2 = _interopRequireDefault(_rcAnimate);\n\nvar _PopupInner = require('./PopupInner');\n\nvar _PopupInner2 = _interopRequireDefault(_PopupInner);\n\nvar _LazyRenderBox = require('./LazyRenderBox');\n\nvar _LazyRenderBox2 = _interopRequireDefault(_LazyRenderBox);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Popup = _react2[\"default\"].createClass({\n displayName: 'Popup',\n\n propTypes: {\n visible: _react.PropTypes.bool,\n style: _react.PropTypes.object,\n getClassNameFromAlign: _react.PropTypes.func,\n onAlign: _react.PropTypes.func,\n getRootDomNode: _react.PropTypes.func,\n onMouseEnter: _react.PropTypes.func,\n align: _react.PropTypes.any,\n destroyPopupOnHide: _react.PropTypes.bool,\n className: _react.PropTypes.string,\n prefixCls: _react.PropTypes.string,\n onMouseLeave: _react.PropTypes.func\n },\n\n componentDidMount: function componentDidMount() {\n this.rootNode = this.getPopupDomNode();\n },\n onAlign: function onAlign(popupDomNode, align) {\n var props = this.props;\n var alignClassName = props.getClassNameFromAlign(props.align);\n var currentAlignClassName = props.getClassNameFromAlign(align);\n if (alignClassName !== currentAlignClassName) {\n this.currentAlignClassName = currentAlignClassName;\n popupDomNode.className = this.getClassName(currentAlignClassName);\n }\n props.onAlign(popupDomNode, align);\n },\n getPopupDomNode: function getPopupDomNode() {\n return _reactDom2[\"default\"].findDOMNode(this.refs.popup);\n },\n getTarget: function getTarget() {\n return this.props.getRootDomNode();\n },\n getMaskTransitionName: function getMaskTransitionName() {\n var props = this.props;\n var transitionName = props.maskTransitionName;\n var animation = props.maskAnimation;\n if (!transitionName && animation) {\n transitionName = props.prefixCls + '-' + animation;\n }\n return transitionName;\n },\n getTransitionName: function getTransitionName() {\n var props = this.props;\n var transitionName = props.transitionName;\n if (!transitionName && props.animation) {\n transitionName = props.prefixCls + '-' + props.animation;\n }\n return transitionName;\n },\n getClassName: function getClassName(currentAlignClassName) {\n return this.props.prefixCls + ' ' + this.props.className + ' ' + currentAlignClassName;\n },\n getPopupElement: function getPopupElement() {\n var props = this.props;\n var align = props.align,\n style = props.style,\n visible = props.visible,\n prefixCls = props.prefixCls,\n destroyPopupOnHide = props.destroyPopupOnHide;\n\n var className = this.getClassName(this.currentAlignClassName || props.getClassNameFromAlign(align));\n var hiddenClassName = prefixCls + '-hidden';\n if (!visible) {\n this.currentAlignClassName = null;\n }\n var newStyle = (0, _extends3[\"default\"])({}, style, this.getZIndexStyle());\n var popupInnerProps = {\n className: className,\n prefixCls: prefixCls,\n ref: 'popup',\n onMouseEnter: props.onMouseEnter,\n onMouseLeave: props.onMouseLeave,\n style: newStyle\n };\n if (destroyPopupOnHide) {\n return _react2[\"default\"].createElement(\n _rcAnimate2[\"default\"],\n {\n component: '',\n exclusive: true,\n transitionAppear: true,\n transitionName: this.getTransitionName()\n },\n visible ? _react2[\"default\"].createElement(\n _rcAlign2[\"default\"],\n {\n target: this.getTarget,\n key: 'popup',\n ref: this.saveAlign,\n monitorWindowResize: true,\n align: align,\n onAlign: this.onAlign\n },\n _react2[\"default\"].createElement(\n _PopupInner2[\"default\"],\n (0, _extends3[\"default\"])({\n visible: true\n }, popupInnerProps),\n props.children\n )\n ) : null\n );\n }\n return _react2[\"default\"].createElement(\n _rcAnimate2[\"default\"],\n {\n component: '',\n exclusive: true,\n transitionAppear: true,\n transitionName: this.getTransitionName(),\n showProp: 'xVisible'\n },\n _react2[\"default\"].createElement(\n _rcAlign2[\"default\"],\n {\n target: this.getTarget,\n key: 'popup',\n ref: this.saveAlign,\n monitorWindowResize: true,\n xVisible: visible,\n childrenProps: { visible: 'xVisible' },\n disabled: !visible,\n align: align,\n onAlign: this.onAlign\n },\n _react2[\"default\"].createElement(\n _PopupInner2[\"default\"],\n (0, _extends3[\"default\"])({\n hiddenClassName: hiddenClassName\n }, popupInnerProps),\n props.children\n )\n )\n );\n },\n getZIndexStyle: function getZIndexStyle() {\n var style = {};\n var props = this.props;\n if (props.zIndex !== undefined) {\n style.zIndex = props.zIndex;\n }\n return style;\n },\n getMaskElement: function getMaskElement() {\n var props = this.props;\n var maskElement = void 0;\n if (props.mask) {\n var maskTransition = this.getMaskTransitionName();\n maskElement = _react2[\"default\"].createElement(_LazyRenderBox2[\"default\"], {\n style: this.getZIndexStyle(),\n key: 'mask',\n className: props.prefixCls + '-mask',\n hiddenClassName: props.prefixCls + '-mask-hidden',\n visible: props.visible\n });\n if (maskTransition) {\n maskElement = _react2[\"default\"].createElement(\n _rcAnimate2[\"default\"],\n {\n key: 'mask',\n showProp: 'visible',\n transitionAppear: true,\n component: '',\n transitionName: maskTransition\n },\n maskElement\n );\n }\n }\n return maskElement;\n },\n saveAlign: function saveAlign(align) {\n this.alignInstance = align;\n },\n render: function render() {\n return _react2[\"default\"].createElement(\n 'div',\n null,\n this.getMaskElement(),\n this.getPopupElement()\n );\n }\n});\n\nexports[\"default\"] = Popup;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-trigger@1.10.0@rc-trigger/lib/Popup.js\n// module id = 280\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Align = require('./Align');\n\nvar _Align2 = _interopRequireDefault(_Align);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nexports[\"default\"] = _Align2[\"default\"]; // export this package's api\n\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-align@2.3.3@rc-align/lib/index.js\n// module id = 281\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _domAlign = require('dom-align');\n\nvar _domAlign2 = _interopRequireDefault(_domAlign);\n\nvar _addEventListener = require('rc-util/lib/Dom/addEventListener');\n\nvar _addEventListener2 = _interopRequireDefault(_addEventListener);\n\nvar _isWindow = require('./isWindow');\n\nvar _isWindow2 = _interopRequireDefault(_isWindow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction buffer(fn, ms) {\n var timer = void 0;\n\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n\n function bufferFn() {\n clear();\n timer = setTimeout(fn, ms);\n }\n\n bufferFn.clear = clear;\n\n return bufferFn;\n}\n\nvar Align = _react2[\"default\"].createClass({\n displayName: 'Align',\n\n propTypes: {\n childrenProps: _react.PropTypes.object,\n align: _react.PropTypes.object.isRequired,\n target: _react.PropTypes.func,\n onAlign: _react.PropTypes.func,\n monitorBufferTime: _react.PropTypes.number,\n monitorWindowResize: _react.PropTypes.bool,\n disabled: _react.PropTypes.bool,\n children: _react.PropTypes.any\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n target: function target() {\n return window;\n },\n onAlign: function onAlign() {},\n\n monitorBufferTime: 50,\n monitorWindowResize: false,\n disabled: false\n };\n },\n componentDidMount: function componentDidMount() {\n var props = this.props;\n // if parent ref not attached .... use document.getElementById\n this.forceAlign();\n if (!props.disabled && props.monitorWindowResize) {\n this.startMonitorWindowResize();\n }\n },\n componentDidUpdate: function componentDidUpdate(prevProps) {\n var reAlign = false;\n var props = this.props;\n\n if (!props.disabled) {\n if (prevProps.disabled || prevProps.align !== props.align) {\n reAlign = true;\n } else {\n var lastTarget = prevProps.target();\n var currentTarget = props.target();\n if ((0, _isWindow2[\"default\"])(lastTarget) && (0, _isWindow2[\"default\"])(currentTarget)) {\n reAlign = false;\n } else if (lastTarget !== currentTarget) {\n reAlign = true;\n }\n }\n }\n\n if (reAlign) {\n this.forceAlign();\n }\n\n if (props.monitorWindowResize && !props.disabled) {\n this.startMonitorWindowResize();\n } else {\n this.stopMonitorWindowResize();\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n this.stopMonitorWindowResize();\n },\n startMonitorWindowResize: function startMonitorWindowResize() {\n if (!this.resizeHandler) {\n this.bufferMonitor = buffer(this.forceAlign, this.props.monitorBufferTime);\n this.resizeHandler = (0, _addEventListener2[\"default\"])(window, 'resize', this.bufferMonitor);\n }\n },\n stopMonitorWindowResize: function stopMonitorWindowResize() {\n if (this.resizeHandler) {\n this.bufferMonitor.clear();\n this.resizeHandler.remove();\n this.resizeHandler = null;\n }\n },\n forceAlign: function forceAlign() {\n var props = this.props;\n if (!props.disabled) {\n var source = _reactDom2[\"default\"].findDOMNode(this);\n props.onAlign(source, (0, _domAlign2[\"default\"])(source, props.target(), props.align));\n }\n },\n render: function render() {\n var _props = this.props,\n childrenProps = _props.childrenProps,\n children = _props.children;\n\n var child = _react2[\"default\"].Children.only(children);\n if (childrenProps) {\n var newProps = {};\n for (var prop in childrenProps) {\n if (childrenProps.hasOwnProperty(prop)) {\n newProps[prop] = this.props[childrenProps[prop]];\n }\n }\n return _react2[\"default\"].cloneElement(child, newProps);\n }\n return child;\n }\n});\n\nexports[\"default\"] = Align;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-align@2.3.3@rc-align/lib/Align.js\n// module id = 282\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _getOffsetParent = require('./getOffsetParent');\n\nvar _getOffsetParent2 = _interopRequireDefault(_getOffsetParent);\n\nvar _getVisibleRectForElement = require('./getVisibleRectForElement');\n\nvar _getVisibleRectForElement2 = _interopRequireDefault(_getVisibleRectForElement);\n\nvar _adjustForViewport = require('./adjustForViewport');\n\nvar _adjustForViewport2 = _interopRequireDefault(_adjustForViewport);\n\nvar _getRegion = require('./getRegion');\n\nvar _getRegion2 = _interopRequireDefault(_getRegion);\n\nvar _getElFuturePos = require('./getElFuturePos');\n\nvar _getElFuturePos2 = _interopRequireDefault(_getElFuturePos);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n// http://yiminghe.iteye.com/blog/1124720\n\n/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\n\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.left < visibleRect.left || elFuturePos.left + elRegion.width > visibleRect.right;\n}\n\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top < visibleRect.top || elFuturePos.top + elRegion.height > visibleRect.bottom;\n}\n\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.left > visibleRect.right || elFuturePos.left + elRegion.width < visibleRect.left;\n}\n\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top > visibleRect.bottom || elFuturePos.top + elRegion.height < visibleRect.top;\n}\n\nfunction flip(points, reg, map) {\n var ret = [];\n _utils2[\"default\"].each(points, function (p) {\n ret.push(p.replace(reg, function (m) {\n return map[m];\n }));\n });\n return ret;\n}\n\nfunction flipOffset(offset, index) {\n offset[index] = -offset[index];\n return offset;\n}\n\nfunction convertOffset(str, offsetLen) {\n var n = void 0;\n if (/%$/.test(str)) {\n n = parseInt(str.substring(0, str.length - 1), 10) / 100 * offsetLen;\n } else {\n n = parseInt(str, 10);\n }\n return n || 0;\n}\n\nfunction normalizeOffset(offset, el) {\n offset[0] = convertOffset(offset[0], el.width);\n offset[1] = convertOffset(offset[1], el.height);\n}\n\nfunction domAlign(el, refNode, align) {\n var points = align.points;\n var offset = align.offset || [0, 0];\n var targetOffset = align.targetOffset || [0, 0];\n var overflow = align.overflow;\n var target = align.target || refNode;\n var source = align.source || el;\n offset = [].concat(offset);\n targetOffset = [].concat(targetOffset);\n overflow = overflow || {};\n var newOverflowCfg = {};\n\n var fail = 0;\n // 当前节点可以被放置的显示区域\n var visibleRect = (0, _getVisibleRectForElement2[\"default\"])(source);\n // 当前节点所占的区域, left/top/width/height\n var elRegion = (0, _getRegion2[\"default\"])(source);\n // 参照节点所占的区域, left/top/width/height\n var refNodeRegion = (0, _getRegion2[\"default\"])(target);\n // 将 offset 转换成数值,支持百分比\n normalizeOffset(offset, elRegion);\n normalizeOffset(targetOffset, refNodeRegion);\n // 当前节点将要被放置的位置\n var elFuturePos = (0, _getElFuturePos2[\"default\"])(elRegion, refNodeRegion, points, offset, targetOffset);\n // 当前节点将要所处的区域\n var newElRegion = _utils2[\"default\"].merge(elRegion, elFuturePos);\n\n // 如果可视区域不能完全放置当前节点时允许调整\n if (visibleRect && (overflow.adjustX || overflow.adjustY)) {\n if (overflow.adjustX) {\n // 如果横向不能放下\n if (isFailX(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n var newPoints = flip(points, /[lr]/ig, {\n l: 'r',\n r: 'l'\n });\n // 偏移量也反下\n var newOffset = flipOffset(offset, 0);\n var newTargetOffset = flipOffset(targetOffset, 0);\n var newElFuturePos = (0, _getElFuturePos2[\"default\"])(elRegion, refNodeRegion, newPoints, newOffset, newTargetOffset);\n if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n if (overflow.adjustY) {\n // 如果纵向不能放下\n if (isFailY(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n var _newPoints = flip(points, /[tb]/ig, {\n t: 'b',\n b: 't'\n });\n // 偏移量也反下\n var _newOffset = flipOffset(offset, 1);\n var _newTargetOffset = flipOffset(targetOffset, 1);\n var _newElFuturePos = (0, _getElFuturePos2[\"default\"])(elRegion, refNodeRegion, _newPoints, _newOffset, _newTargetOffset);\n if (!isCompleteFailY(_newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = _newPoints;\n offset = _newOffset;\n targetOffset = _newTargetOffset;\n }\n }\n }\n\n // 如果失败,重新计算当前节点将要被放置的位置\n if (fail) {\n elFuturePos = (0, _getElFuturePos2[\"default\"])(elRegion, refNodeRegion, points, offset, targetOffset);\n _utils2[\"default\"].mix(newElRegion, elFuturePos);\n }\n\n // 检查反下后的位置是否可以放下了\n // 如果仍然放不下只有指定了可以调整当前方向才调整\n newOverflowCfg.adjustX = overflow.adjustX && isFailX(elFuturePos, elRegion, visibleRect);\n\n newOverflowCfg.adjustY = overflow.adjustY && isFailY(elFuturePos, elRegion, visibleRect);\n\n // 确实要调整,甚至可能会调整高度宽度\n if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n newElRegion = (0, _adjustForViewport2[\"default\"])(elFuturePos, elRegion, visibleRect, newOverflowCfg);\n }\n }\n\n // need judge to in case set fixed with in css on height auto element\n if (newElRegion.width !== elRegion.width) {\n _utils2[\"default\"].css(source, 'width', _utils2[\"default\"].width(source) + newElRegion.width - elRegion.width);\n }\n\n if (newElRegion.height !== elRegion.height) {\n _utils2[\"default\"].css(source, 'height', _utils2[\"default\"].height(source) + newElRegion.height - elRegion.height);\n }\n\n // https://github.com/kissyteam/kissy/issues/190\n // 相对于屏幕位置没变,而 left/top 变了\n // 例如 <div 'relative'><el absolute></div>\n _utils2[\"default\"].offset(source, {\n left: newElRegion.left,\n top: newElRegion.top\n }, {\n useCssRight: align.useCssRight,\n useCssBottom: align.useCssBottom,\n useCssTransform: align.useCssTransform\n });\n\n return {\n points: points,\n offset: offset,\n targetOffset: targetOffset,\n overflow: newOverflowCfg\n };\n}\n\ndomAlign.__getOffsetParent = _getOffsetParent2[\"default\"];\n\ndomAlign.__getVisibleRectForElement = _getVisibleRectForElement2[\"default\"];\n\nexports[\"default\"] = domAlign;\n/**\n * 2012-04-26 yiminghe@gmail.com\n * - 优化智能对齐算法\n * - 慎用 resizeXX\n *\n * 2011-07-13 yiminghe@gmail.com note:\n * - 增加智能对齐,以及大小调整选项\n **/\n\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._dom-align@1.5.3@dom-align/lib/index.js\n// module id = 283\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _propertyUtils = require('./propertyUtils');\n\nvar RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\n\nvar getComputedStyleX = void 0;\n\nfunction force(x, y) {\n return x + y;\n}\n\nfunction css(el, name, v) {\n var value = v;\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n for (var i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n return undefined;\n }\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value = value + 'px';\n }\n el.style[name] = value;\n return undefined;\n }\n return getComputedStyleX(el, name);\n}\n\nfunction getClientPosition(elem) {\n var box = void 0;\n var x = void 0;\n var y = void 0;\n var doc = elem.ownerDocument;\n var body = doc.body;\n var docElem = doc && doc.documentElement;\n // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n box = elem.getBoundingClientRect();\n\n // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = box.left;\n y = box.top;\n\n // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n\n return {\n left: x,\n top: y\n };\n}\n\nfunction getScroll(w, top) {\n var ret = w['page' + (top ? 'Y' : 'X') + 'Offset'];\n var method = 'scroll' + (top ? 'Top' : 'Left');\n if (typeof ret !== 'number') {\n var d = w.document;\n // ie6,7,8 standard mode\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n var pos = getClientPosition(el);\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\nfunction _getComputedStyle(elem, name, cs) {\n var computedStyle = cs;\n var val = '';\n var d = elem.ownerDocument;\n computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null);\n\n // https://github.com/kissyteam/kissy/issues/61\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nvar _RE_NUM_NO_PX = new RegExp('^(' + RE_NUM + ')(?!px)[a-z%]+$', 'i');\nvar RE_POS = /^(top|right|bottom|left)$/;\nvar CURRENT_STYLE = 'currentStyle';\nvar RUNTIME_STYLE = 'runtimeStyle';\nvar LEFT = 'left';\nvar PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];\n\n // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n var style = elem.style;\n var left = style[LEFT];\n var rsLeft = elem[RUNTIME_STYLE][LEFT];\n\n // prevent flashing of content\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];\n\n // Put in the new values to get a computed value out\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX;\n\n // Revert the changed values\n style[LEFT] = left;\n\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n return ret === '' ? 'auto' : ret;\n}\n\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\n\nfunction getOffsetDirection(dir, option) {\n if (dir === 'left') {\n return option.useCssRight ? 'right' : dir;\n }\n return option.useCssBottom ? 'bottom' : dir;\n}\n\nfunction oppositeOffsetDirection(dir) {\n if (dir === 'left') {\n return 'right';\n } else if (dir === 'right') {\n return 'left';\n } else if (dir === 'top') {\n return 'bottom';\n } else if (dir === 'bottom') {\n return 'top';\n }\n}\n\n// 设置 elem 相对 elem.ownerDocument 的坐标\nfunction setLeftTop(elem, offset, option) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n var presetH = -999;\n var presetV = -999;\n var horizontalProperty = getOffsetDirection('left', option);\n var verticalProperty = getOffsetDirection('top', option);\n var oppositeHorizontalProperty = oppositeOffsetDirection(horizontalProperty);\n var oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);\n\n if (horizontalProperty !== 'left') {\n presetH = 999;\n }\n\n if (verticalProperty !== 'top') {\n presetV = 999;\n }\n var originalTransition = '';\n var originalOffset = getOffset(elem);\n if ('left' in offset || 'top' in offset) {\n originalTransition = (0, _propertyUtils.getTransitionProperty)(elem) || '';\n (0, _propertyUtils.setTransitionProperty)(elem, 'none');\n }\n if ('left' in offset) {\n elem.style[oppositeHorizontalProperty] = '';\n elem.style[horizontalProperty] = presetH + 'px';\n }\n if ('top' in offset) {\n elem.style[oppositeVerticalProperty] = '';\n elem.style[verticalProperty] = presetV + 'px';\n }\n var old = getOffset(elem);\n var originalStyle = {};\n for (var key in offset) {\n if (offset.hasOwnProperty(key)) {\n var dir = getOffsetDirection(key, option);\n var preset = key === 'left' ? presetH : presetV;\n var off = originalOffset[key] - old[key];\n if (dir === key) {\n originalStyle[dir] = preset + off;\n } else {\n originalStyle[dir] = preset - off;\n }\n }\n }\n css(elem, originalStyle);\n // force relayout\n force(elem.offsetTop, elem.offsetLeft);\n if ('left' in offset || 'top' in offset) {\n (0, _propertyUtils.setTransitionProperty)(elem, originalTransition);\n }\n var ret = {};\n for (var _key in offset) {\n if (offset.hasOwnProperty(_key)) {\n var _dir = getOffsetDirection(_key, option);\n var _off = offset[_key] - originalOffset[_key];\n if (_key === _dir) {\n ret[_dir] = originalStyle[_dir] + _off;\n } else {\n ret[_dir] = originalStyle[_dir] - _off;\n }\n }\n }\n css(elem, ret);\n}\n\nfunction setTransform(elem, offset) {\n var originalOffset = getOffset(elem);\n var originalXY = (0, _propertyUtils.getTransformXY)(elem);\n var resultXY = { x: originalXY.x, y: originalXY.y };\n if ('left' in offset) {\n resultXY.x = originalXY.x + offset.left - originalOffset.left;\n }\n if ('top' in offset) {\n resultXY.y = originalXY.y + offset.top - originalOffset.top;\n }\n (0, _propertyUtils.setTransformXY)(elem, resultXY);\n}\n\nfunction setOffset(elem, offset, option) {\n if (option.useCssRight || option.useCssBottom) {\n setLeftTop(elem, offset, option);\n } else if (option.useCssTransform && (0, _propertyUtils.getTransformName)() in document.body.style) {\n setTransform(elem, offset, option);\n } else {\n setLeftTop(elem, offset, option);\n }\n}\n\nfunction each(arr, fn) {\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nvar BOX_MODELS = ['margin', 'border', 'padding'];\nvar CONTENT_INDEX = -1;\nvar PADDING_INDEX = 2;\nvar BORDER_INDEX = 1;\nvar MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n var old = {};\n var style = elem.style;\n var name = void 0;\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n var value = 0;\n var prop = void 0;\n var j = void 0;\n var i = void 0;\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n if (prop) {\n for (i = 0; i < which.length; i++) {\n var cssProp = void 0;\n if (prop === 'border') {\n cssProp = '' + prop + which[i] + 'Width';\n } else {\n cssProp = prop + which[i];\n }\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n return value;\n}\n\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\nfunction isWindow(obj) {\n // must use == for ie8\n /* eslint eqeqeq:0 */\n return obj !== null && obj !== undefined && obj == obj.window;\n}\n\nvar domUtils = {};\n\neach(['Width', 'Height'], function (name) {\n domUtils['doc' + name] = function (refWin) {\n var d = refWin.document;\n return Math.max(\n // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement['scroll' + name],\n // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body['scroll' + name], domUtils['viewport' + name](d));\n };\n\n domUtils['viewport' + name] = function (win) {\n // pc browser includes scrollbar in window.innerWidth\n var prop = 'client' + name;\n var doc = win.document;\n var body = doc.body;\n var documentElement = doc.documentElement;\n var documentElementProp = documentElement[prop];\n // 标准模式取 documentElement\n // backcompat 取 body\n return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;\n };\n});\n\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\nfunction getWH(elem, name, ex) {\n var extra = ex;\n if (isWindow(elem)) {\n return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);\n }\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n var borderBoxValue = name === 'width' ? elem.offsetWidth : elem.offsetHeight;\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem, computedStyle);\n var cssBoxValue = 0;\n if (borderBoxValue === null || borderBoxValue === undefined || borderBoxValue <= 0) {\n borderBoxValue = undefined;\n // Fall back to computed then un computed css if necessary\n cssBoxValue = getComputedStyleX(elem, name);\n if (cssBoxValue === null || cssBoxValue === undefined || Number(cssBoxValue) < 0) {\n cssBoxValue = elem.style[name] || 0;\n }\n // Normalize '', auto, and prepare for extra\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n var val = borderBoxValue || cssBoxValue;\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which, computedStyle);\n }\n return cssBoxValue;\n } else if (borderBoxValueOrIsBorderBox) {\n if (extra === BORDER_INDEX) {\n return val;\n }\n return val + (extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which, computedStyle) : getPBMWidth(elem, ['margin'], which, computedStyle));\n }\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which, computedStyle);\n}\n\nvar cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block'\n};\n\n// fix #119 : https://github.com/kissyteam/kissy/issues/119\nfunction getWHIgnoreDisplay() {\n for (var _len = arguments.length, args = Array(_len), _key2 = 0; _key2 < _len; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var val = void 0;\n var elem = args[0];\n // in case elem is window\n // elem.offsetWidth === undefined\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, function () {\n val = getWH.apply(undefined, args);\n });\n }\n return val;\n}\n\neach(['width', 'height'], function (name) {\n var first = name.charAt(0).toUpperCase() + name.slice(1);\n domUtils['outer' + first] = function (el, includeMargin) {\n return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n };\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = function (elem, v) {\n var val = v;\n if (val !== undefined) {\n if (elem) {\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem);\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which, computedStyle);\n }\n return css(elem, name, val);\n }\n return undefined;\n }\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\nfunction mix(to, from) {\n for (var i in from) {\n if (from.hasOwnProperty(i)) {\n to[i] = from[i];\n }\n }\n return to;\n}\n\nvar utils = {\n getWindow: function getWindow(node) {\n if (node && node.document && node.setTimeout) {\n return node;\n }\n var doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n offset: function offset(el, value, option) {\n if (typeof value !== 'undefined') {\n setOffset(el, value, option || {});\n } else {\n return getOffset(el);\n }\n },\n\n isWindow: isWindow,\n each: each,\n css: css,\n clone: function clone(obj) {\n var i = void 0;\n var ret = {};\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n var overflow = obj.overflow;\n if (overflow) {\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n return ret;\n },\n\n mix: mix,\n getWindowScrollLeft: function getWindowScrollLeft(w) {\n return getScrollLeft(w);\n },\n getWindowScrollTop: function getWindowScrollTop(w) {\n return getScrollTop(w);\n },\n merge: function merge() {\n var ret = {};\n\n for (var _len2 = arguments.length, args = Array(_len2), _key3 = 0; _key3 < _len2; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n for (var i = 0; i < args.length; i++) {\n utils.mix(ret, args[i]);\n }\n return ret;\n },\n\n viewportWidth: 0,\n viewportHeight: 0\n};\n\nmix(utils, domUtils);\n\nexports[\"default\"] = utils;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._dom-align@1.5.3@dom-align/lib/utils.js\n// module id = 284\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getTransformName = getTransformName;\nexports.setTransitionProperty = setTransitionProperty;\nexports.getTransitionProperty = getTransitionProperty;\nexports.getTransformXY = getTransformXY;\nexports.setTransformXY = setTransformXY;\nvar vendorPrefix = void 0;\n\nvar jsCssMap = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n // IE did it wrong again ...\n ms: '-ms-',\n O: '-o-'\n};\n\nfunction getVendorPrefix() {\n if (vendorPrefix !== undefined) {\n return vendorPrefix;\n }\n vendorPrefix = '';\n var style = document.createElement('p').style;\n var testProp = 'Transform';\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n vendorPrefix = key;\n }\n }\n return vendorPrefix;\n}\n\nfunction getTransitionName() {\n return getVendorPrefix() ? getVendorPrefix() + 'TransitionProperty' : 'transitionProperty';\n}\n\nfunction getTransformName() {\n return getVendorPrefix() ? getVendorPrefix() + 'Transform' : 'transform';\n}\n\nfunction setTransitionProperty(node, value) {\n var name = getTransitionName();\n if (name) {\n node.style[name] = value;\n if (name !== 'transitionProperty') {\n node.style.transitionProperty = value;\n }\n }\n}\n\nfunction setTransform(node, value) {\n var name = getTransformName();\n if (name) {\n node.style[name] = value;\n if (name !== 'transform') {\n node.style.transform = value;\n }\n }\n}\n\nfunction getTransitionProperty(node) {\n return node.style.transitionProperty || node.style[getTransitionName()];\n}\n\nfunction getTransformXY(node) {\n var style = window.getComputedStyle(node, null);\n var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n if (transform && transform !== 'none') {\n var matrix = transform.replace(/[^0-9\\-.,]/g, '').split(',');\n return { x: parseFloat(matrix[12] || matrix[4], 0), y: parseFloat(matrix[13] || matrix[5], 0) };\n }\n return {\n x: 0,\n y: 0\n };\n}\n\nvar matrix2d = /matrix\\((.*)\\)/;\nvar matrix3d = /matrix3d\\((.*)\\)/;\n\nfunction setTransformXY(node, xy) {\n var style = window.getComputedStyle(node, null);\n var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n if (transform && transform !== 'none') {\n var arr = void 0;\n var match2d = transform.match(matrix2d);\n if (match2d) {\n match2d = match2d[1];\n arr = match2d.split(',').map(function (item) {\n return parseFloat(item, 10);\n });\n arr[4] = xy.x;\n arr[5] = xy.y;\n setTransform(node, 'matrix(' + arr.join(',') + ')');\n } else {\n var match3d = transform.match(matrix3d)[1];\n arr = match3d.split(',').map(function (item) {\n return parseFloat(item, 10);\n });\n arr[12] = xy.x;\n arr[13] = xy.y;\n setTransform(node, 'matrix3d(' + arr.join(',') + ')');\n }\n } else {\n setTransform(node, 'translateX(' + xy.x + 'px) translateY(' + xy.y + 'px) translateZ(0)');\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._dom-align@1.5.3@dom-align/lib/propertyUtils.js\n// module id = 285\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n * 得到会导致元素显示不全的祖先元素\n */\n\nfunction getOffsetParent(element) {\n // ie 这个也不是完全可行\n /*\n <div style=\"width: 50px;height: 100px;overflow: hidden\">\n <div style=\"width: 50px;height: 100px;position: relative;\" id=\"d6\">\n 元素 6 高 100px 宽 50px<br/>\n </div>\n </div>\n */\n // element.offsetParent does the right thing in ie7 and below. Return parent with layout!\n // In other browsers it only includes elements with position absolute, relative or\n // fixed, not elements with overflow set to auto or scroll.\n // if (UA.ie && ieMode < 8) {\n // return element.offsetParent;\n // }\n // 统一的 offsetParent 方法\n var doc = element.ownerDocument;\n var body = doc.body;\n var parent = void 0;\n var positionStyle = _utils2[\"default\"].css(element, 'position');\n var skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';\n\n if (!skipStatic) {\n return element.nodeName.toLowerCase() === 'html' ? null : element.parentNode;\n }\n\n for (parent = element.parentNode; parent && parent !== body; parent = parent.parentNode) {\n positionStyle = _utils2[\"default\"].css(parent, 'position');\n if (positionStyle !== 'static') {\n return parent;\n }\n }\n return null;\n}\n\nexports[\"default\"] = getOffsetParent;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._dom-align@1.5.3@dom-align/lib/getOffsetParent.js\n// module id = 286\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _getOffsetParent = require('./getOffsetParent');\n\nvar _getOffsetParent2 = _interopRequireDefault(_getOffsetParent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n * 获得元素的显示部分的区域\n */\nfunction getVisibleRectForElement(element) {\n var visibleRect = {\n left: 0,\n right: Infinity,\n top: 0,\n bottom: Infinity\n };\n var el = (0, _getOffsetParent2[\"default\"])(element);\n var scrollX = void 0;\n var scrollY = void 0;\n var winSize = void 0;\n var doc = element.ownerDocument;\n var win = doc.defaultView || doc.parentWindow;\n var body = doc.body;\n var documentElement = doc.documentElement;\n\n // Determine the size of the visible rect by climbing the dom accounting for\n // all scrollable containers.\n while (el) {\n // clientWidth is zero for inline block elements in ie.\n if ((navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) &&\n // body may have overflow set on it, yet we still get the entire\n // viewport. In some browsers, el.offsetParent may be\n // document.documentElement, so check for that too.\n el !== body && el !== documentElement && _utils2[\"default\"].css(el, 'overflow') !== 'visible') {\n var pos = _utils2[\"default\"].offset(el);\n // add border\n pos.left += el.clientLeft;\n pos.top += el.clientTop;\n visibleRect.top = Math.max(visibleRect.top, pos.top);\n visibleRect.right = Math.min(visibleRect.right,\n // consider area without scrollBar\n pos.left + el.clientWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, pos.top + el.clientHeight);\n visibleRect.left = Math.max(visibleRect.left, pos.left);\n } else if (el === body || el === documentElement) {\n break;\n }\n el = (0, _getOffsetParent2[\"default\"])(el);\n }\n\n // Clip by window's viewport.\n scrollX = _utils2[\"default\"].getWindowScrollLeft(win);\n scrollY = _utils2[\"default\"].getWindowScrollTop(win);\n visibleRect.left = Math.max(visibleRect.left, scrollX);\n visibleRect.top = Math.max(visibleRect.top, scrollY);\n winSize = {\n width: _utils2[\"default\"].viewportWidth(win),\n height: _utils2[\"default\"].viewportHeight(win)\n };\n visibleRect.right = Math.min(visibleRect.right, scrollX + winSize.width);\n visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + winSize.height);\n return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null;\n}\n\nexports[\"default\"] = getVisibleRectForElement;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._dom-align@1.5.3@dom-align/lib/getVisibleRectForElement.js\n// module id = 287\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n var pos = _utils2[\"default\"].clone(elFuturePos);\n var size = {\n width: elRegion.width,\n height: elRegion.height\n };\n\n if (overflow.adjustX && pos.left < visibleRect.left) {\n pos.left = visibleRect.left;\n }\n\n // Left edge inside and right edge outside viewport, try to resize it.\n if (overflow.resizeWidth && pos.left >= visibleRect.left && pos.left + size.width > visibleRect.right) {\n size.width -= pos.left + size.width - visibleRect.right;\n }\n\n // Right edge outside viewport, try to move it.\n if (overflow.adjustX && pos.left + size.width > visibleRect.right) {\n // 保证左边界和可视区域左边界对齐\n pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);\n }\n\n // Top edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top < visibleRect.top) {\n pos.top = visibleRect.top;\n }\n\n // Top edge inside and bottom edge outside viewport, try to resize it.\n if (overflow.resizeHeight && pos.top >= visibleRect.top && pos.top + size.height > visibleRect.bottom) {\n size.height -= pos.top + size.height - visibleRect.bottom;\n }\n\n // Bottom edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n // 保证上边界和可视区域上边界对齐\n pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n }\n\n return _utils2[\"default\"].mix(pos, size);\n}\n\nexports[\"default\"] = adjustForViewport;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._dom-align@1.5.3@dom-align/lib/adjustForViewport.js\n// module id = 288\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction getRegion(node) {\n var offset = void 0;\n var w = void 0;\n var h = void 0;\n if (!_utils2[\"default\"].isWindow(node) && node.nodeType !== 9) {\n offset = _utils2[\"default\"].offset(node);\n w = _utils2[\"default\"].outerWidth(node);\n h = _utils2[\"default\"].outerHeight(node);\n } else {\n var win = _utils2[\"default\"].getWindow(node);\n offset = {\n left: _utils2[\"default\"].getWindowScrollLeft(win),\n top: _utils2[\"default\"].getWindowScrollTop(win)\n };\n w = _utils2[\"default\"].viewportWidth(win);\n h = _utils2[\"default\"].viewportHeight(win);\n }\n offset.width = w;\n offset.height = h;\n return offset;\n}\n\nexports[\"default\"] = getRegion;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._dom-align@1.5.3@dom-align/lib/getRegion.js\n// module id = 289\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getAlignOffset = require('./getAlignOffset');\n\nvar _getAlignOffset2 = _interopRequireDefault(_getAlignOffset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) {\n var xy = void 0;\n var diff = void 0;\n var p1 = void 0;\n var p2 = void 0;\n\n xy = {\n left: elRegion.left,\n top: elRegion.top\n };\n\n p1 = (0, _getAlignOffset2[\"default\"])(refNodeRegion, points[1]);\n p2 = (0, _getAlignOffset2[\"default\"])(elRegion, points[0]);\n\n diff = [p2.left - p1.left, p2.top - p1.top];\n\n return {\n left: xy.left - diff[0] + offset[0] - targetOffset[0],\n top: xy.top - diff[1] + offset[1] - targetOffset[1]\n };\n}\n\nexports[\"default\"] = getElFuturePos;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._dom-align@1.5.3@dom-align/lib/getElFuturePos.js\n// module id = 290\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\n\nfunction getAlignOffset(region, align) {\n var V = align.charAt(0);\n var H = align.charAt(1);\n var w = region.width;\n var h = region.height;\n var x = void 0;\n var y = void 0;\n\n x = region.left;\n y = region.top;\n\n if (V === 'c') {\n y += h / 2;\n } else if (V === 'b') {\n y += h;\n }\n\n if (H === 'c') {\n x += w / 2;\n } else if (H === 'r') {\n x += w;\n }\n\n return {\n left: x,\n top: y\n };\n}\n\nexports[\"default\"] = getAlignOffset;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._dom-align@1.5.3@dom-align/lib/getAlignOffset.js\n// module id = 291\n// module chunks = 7","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = isWindow;\nfunction isWindow(obj) {\n /* eslint no-eq-null: 0 */\n /* eslint eqeqeq: 0 */\n return obj != null && obj == obj.window;\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-align@2.3.3@rc-align/lib/isWindow.js\n// module id = 292\n// module chunks = 7","'use strict';\n\n// export this package's api\nmodule.exports = require('./Animate');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-animate@2.3.3@rc-animate/lib/index.js\n// module id = 293\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _ChildrenUtils = require('./ChildrenUtils');\n\nvar _AnimateChild = require('./AnimateChild');\n\nvar _AnimateChild2 = _interopRequireDefault(_AnimateChild);\n\nvar _util = require('./util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar defaultKey = 'rc_animate_' + Date.now();\n\n\nfunction getChildrenFromProps(props) {\n var children = props.children;\n if (_react2[\"default\"].isValidElement(children)) {\n if (!children.key) {\n return _react2[\"default\"].cloneElement(children, {\n key: defaultKey\n });\n }\n }\n return children;\n}\n\nfunction noop() {}\n\nvar Animate = _react2[\"default\"].createClass({\n displayName: 'Animate',\n\n propTypes: {\n component: _react2[\"default\"].PropTypes.any,\n componentProps: _react2[\"default\"].PropTypes.object,\n animation: _react2[\"default\"].PropTypes.object,\n transitionName: _react2[\"default\"].PropTypes.oneOfType([_react2[\"default\"].PropTypes.string, _react2[\"default\"].PropTypes.object]),\n transitionEnter: _react2[\"default\"].PropTypes.bool,\n transitionAppear: _react2[\"default\"].PropTypes.bool,\n exclusive: _react2[\"default\"].PropTypes.bool,\n transitionLeave: _react2[\"default\"].PropTypes.bool,\n onEnd: _react2[\"default\"].PropTypes.func,\n onEnter: _react2[\"default\"].PropTypes.func,\n onLeave: _react2[\"default\"].PropTypes.func,\n onAppear: _react2[\"default\"].PropTypes.func,\n showProp: _react2[\"default\"].PropTypes.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n animation: {},\n component: 'span',\n componentProps: {},\n transitionEnter: true,\n transitionLeave: true,\n transitionAppear: false,\n onEnd: noop,\n onEnter: noop,\n onLeave: noop,\n onAppear: noop\n };\n },\n getInitialState: function getInitialState() {\n this.currentlyAnimatingKeys = {};\n this.keysToEnter = [];\n this.keysToLeave = [];\n return {\n children: (0, _ChildrenUtils.toArrayChildren)(getChildrenFromProps(this.props))\n };\n },\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n var showProp = this.props.showProp;\n var children = this.state.children;\n if (showProp) {\n children = children.filter(function (child) {\n return !!child.props[showProp];\n });\n }\n children.forEach(function (child) {\n if (child) {\n _this.performAppear(child.key);\n }\n });\n },\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n var _this2 = this;\n\n this.nextProps = nextProps;\n var nextChildren = (0, _ChildrenUtils.toArrayChildren)(getChildrenFromProps(nextProps));\n var props = this.props;\n // exclusive needs immediate response\n if (props.exclusive) {\n Object.keys(this.currentlyAnimatingKeys).forEach(function (key) {\n _this2.stop(key);\n });\n }\n var showProp = props.showProp;\n var currentlyAnimatingKeys = this.currentlyAnimatingKeys;\n // last props children if exclusive\n var currentChildren = props.exclusive ? (0, _ChildrenUtils.toArrayChildren)(getChildrenFromProps(props)) : this.state.children;\n // in case destroy in showProp mode\n var newChildren = [];\n if (showProp) {\n currentChildren.forEach(function (currentChild) {\n var nextChild = currentChild && (0, _ChildrenUtils.findChildInChildrenByKey)(nextChildren, currentChild.key);\n var newChild = void 0;\n if ((!nextChild || !nextChild.props[showProp]) && currentChild.props[showProp]) {\n newChild = _react2[\"default\"].cloneElement(nextChild || currentChild, _defineProperty({}, showProp, true));\n } else {\n newChild = nextChild;\n }\n if (newChild) {\n newChildren.push(newChild);\n }\n });\n nextChildren.forEach(function (nextChild) {\n if (!nextChild || !(0, _ChildrenUtils.findChildInChildrenByKey)(currentChildren, nextChild.key)) {\n newChildren.push(nextChild);\n }\n });\n } else {\n newChildren = (0, _ChildrenUtils.mergeChildren)(currentChildren, nextChildren);\n }\n\n // need render to avoid update\n this.setState({\n children: newChildren\n });\n\n nextChildren.forEach(function (child) {\n var key = child && child.key;\n if (child && currentlyAnimatingKeys[key]) {\n return;\n }\n var hasPrev = child && (0, _ChildrenUtils.findChildInChildrenByKey)(currentChildren, key);\n if (showProp) {\n var showInNext = child.props[showProp];\n if (hasPrev) {\n var showInNow = (0, _ChildrenUtils.findShownChildInChildrenByKey)(currentChildren, key, showProp);\n if (!showInNow && showInNext) {\n _this2.keysToEnter.push(key);\n }\n } else if (showInNext) {\n _this2.keysToEnter.push(key);\n }\n } else if (!hasPrev) {\n _this2.keysToEnter.push(key);\n }\n });\n\n currentChildren.forEach(function (child) {\n var key = child && child.key;\n if (child && currentlyAnimatingKeys[key]) {\n return;\n }\n var hasNext = child && (0, _ChildrenUtils.findChildInChildrenByKey)(nextChildren, key);\n if (showProp) {\n var showInNow = child.props[showProp];\n if (hasNext) {\n var showInNext = (0, _ChildrenUtils.findShownChildInChildrenByKey)(nextChildren, key, showProp);\n if (!showInNext && showInNow) {\n _this2.keysToLeave.push(key);\n }\n } else if (showInNow) {\n _this2.keysToLeave.push(key);\n }\n } else if (!hasNext) {\n _this2.keysToLeave.push(key);\n }\n });\n },\n componentDidUpdate: function componentDidUpdate() {\n var keysToEnter = this.keysToEnter;\n this.keysToEnter = [];\n keysToEnter.forEach(this.performEnter);\n var keysToLeave = this.keysToLeave;\n this.keysToLeave = [];\n keysToLeave.forEach(this.performLeave);\n },\n performEnter: function performEnter(key) {\n // may already remove by exclusive\n if (this.refs[key]) {\n this.currentlyAnimatingKeys[key] = true;\n this.refs[key].componentWillEnter(this.handleDoneAdding.bind(this, key, 'enter'));\n }\n },\n performAppear: function performAppear(key) {\n if (this.refs[key]) {\n this.currentlyAnimatingKeys[key] = true;\n this.refs[key].componentWillAppear(this.handleDoneAdding.bind(this, key, 'appear'));\n }\n },\n handleDoneAdding: function handleDoneAdding(key, type) {\n var props = this.props;\n delete this.currentlyAnimatingKeys[key];\n // if update on exclusive mode, skip check\n if (props.exclusive && props !== this.nextProps) {\n return;\n }\n var currentChildren = (0, _ChildrenUtils.toArrayChildren)(getChildrenFromProps(props));\n if (!this.isValidChildByKey(currentChildren, key)) {\n // exclusive will not need this\n this.performLeave(key);\n } else {\n if (type === 'appear') {\n if (_util2[\"default\"].allowAppearCallback(props)) {\n props.onAppear(key);\n props.onEnd(key, true);\n }\n } else {\n if (_util2[\"default\"].allowEnterCallback(props)) {\n props.onEnter(key);\n props.onEnd(key, true);\n }\n }\n }\n },\n performLeave: function performLeave(key) {\n // may already remove by exclusive\n if (this.refs[key]) {\n this.currentlyAnimatingKeys[key] = true;\n this.refs[key].componentWillLeave(this.handleDoneLeaving.bind(this, key));\n }\n },\n handleDoneLeaving: function handleDoneLeaving(key) {\n var props = this.props;\n delete this.currentlyAnimatingKeys[key];\n // if update on exclusive mode, skip check\n if (props.exclusive && props !== this.nextProps) {\n return;\n }\n var currentChildren = (0, _ChildrenUtils.toArrayChildren)(getChildrenFromProps(props));\n // in case state change is too fast\n if (this.isValidChildByKey(currentChildren, key)) {\n this.performEnter(key);\n } else {\n var end = function end() {\n if (_util2[\"default\"].allowLeaveCallback(props)) {\n props.onLeave(key);\n props.onEnd(key, false);\n }\n };\n /* eslint react/no-is-mounted:0 */\n if (this.isMounted() && !(0, _ChildrenUtils.isSameChildren)(this.state.children, currentChildren, props.showProp)) {\n this.setState({\n children: currentChildren\n }, end);\n } else {\n end();\n }\n }\n },\n isValidChildByKey: function isValidChildByKey(currentChildren, key) {\n var showProp = this.props.showProp;\n if (showProp) {\n return (0, _ChildrenUtils.findShownChildInChildrenByKey)(currentChildren, key, showProp);\n }\n return (0, _ChildrenUtils.findChildInChildrenByKey)(currentChildren, key);\n },\n stop: function stop(key) {\n delete this.currentlyAnimatingKeys[key];\n var component = this.refs[key];\n if (component) {\n component.stop();\n }\n },\n render: function render() {\n var props = this.props;\n this.nextProps = props;\n var stateChildren = this.state.children;\n var children = null;\n if (stateChildren) {\n children = stateChildren.map(function (child) {\n if (child === null || child === undefined) {\n return child;\n }\n if (!child.key) {\n throw new Error('must set key for <rc-animate> children');\n }\n return _react2[\"default\"].createElement(\n _AnimateChild2[\"default\"],\n {\n key: child.key,\n ref: child.key,\n animation: props.animation,\n transitionName: props.transitionName,\n transitionEnter: props.transitionEnter,\n transitionAppear: props.transitionAppear,\n transitionLeave: props.transitionLeave\n },\n child\n );\n });\n }\n var Component = props.component;\n if (Component) {\n var passedProps = props;\n if (typeof Component === 'string') {\n passedProps = _extends({\n className: props.className,\n style: props.style\n }, props.componentProps);\n }\n return _react2[\"default\"].createElement(\n Component,\n passedProps,\n children\n );\n }\n return children[0] || null;\n }\n});\n\nexports[\"default\"] = Animate;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-animate@2.3.3@rc-animate/lib/Animate.js\n// module id = 294\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toArrayChildren = toArrayChildren;\nexports.findChildInChildrenByKey = findChildInChildrenByKey;\nexports.findShownChildInChildrenByKey = findShownChildInChildrenByKey;\nexports.findHiddenChildInChildrenByKey = findHiddenChildInChildrenByKey;\nexports.isSameChildren = isSameChildren;\nexports.mergeChildren = mergeChildren;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction toArrayChildren(children) {\n var ret = [];\n _react2[\"default\"].Children.forEach(children, function (child) {\n ret.push(child);\n });\n return ret;\n}\n\nfunction findChildInChildrenByKey(children, key) {\n var ret = null;\n if (children) {\n children.forEach(function (child) {\n if (ret) {\n return;\n }\n if (child && child.key === key) {\n ret = child;\n }\n });\n }\n return ret;\n}\n\nfunction findShownChildInChildrenByKey(children, key, showProp) {\n var ret = null;\n if (children) {\n children.forEach(function (child) {\n if (child && child.key === key && child.props[showProp]) {\n if (ret) {\n throw new Error('two child with same key for <rc-animate> children');\n }\n ret = child;\n }\n });\n }\n return ret;\n}\n\nfunction findHiddenChildInChildrenByKey(children, key, showProp) {\n var found = 0;\n if (children) {\n children.forEach(function (child) {\n if (found) {\n return;\n }\n found = child && child.key === key && !child.props[showProp];\n });\n }\n return found;\n}\n\nfunction isSameChildren(c1, c2, showProp) {\n var same = c1.length === c2.length;\n if (same) {\n c1.forEach(function (child, index) {\n var child2 = c2[index];\n if (child && child2) {\n if (child && !child2 || !child && child2) {\n same = false;\n } else if (child.key !== child2.key) {\n same = false;\n } else if (showProp && child.props[showProp] !== child2.props[showProp]) {\n same = false;\n }\n }\n });\n }\n return same;\n}\n\nfunction mergeChildren(prev, next) {\n var ret = [];\n\n // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n var nextChildrenPending = {};\n var pendingChildren = [];\n prev.forEach(function (child) {\n if (child && findChildInChildrenByKey(next, child.key)) {\n if (pendingChildren.length) {\n nextChildrenPending[child.key] = pendingChildren;\n pendingChildren = [];\n }\n } else {\n pendingChildren.push(child);\n }\n });\n\n next.forEach(function (child) {\n if (child && nextChildrenPending.hasOwnProperty(child.key)) {\n ret = ret.concat(nextChildrenPending[child.key]);\n }\n ret.push(child);\n });\n\n ret = ret.concat(pendingChildren);\n\n return ret;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-animate@2.3.3@rc-animate/lib/ChildrenUtils.js\n// module id = 295\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _cssAnimation = require('css-animation');\n\nvar _cssAnimation2 = _interopRequireDefault(_cssAnimation);\n\nvar _util = require('./util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar transitionMap = {\n enter: 'transitionEnter',\n appear: 'transitionAppear',\n leave: 'transitionLeave'\n};\n\nvar AnimateChild = _react2[\"default\"].createClass({\n displayName: 'AnimateChild',\n\n propTypes: {\n children: _react2[\"default\"].PropTypes.any\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this.stop();\n },\n componentWillEnter: function componentWillEnter(done) {\n if (_util2[\"default\"].isEnterSupported(this.props)) {\n this.transition('enter', done);\n } else {\n done();\n }\n },\n componentWillAppear: function componentWillAppear(done) {\n if (_util2[\"default\"].isAppearSupported(this.props)) {\n this.transition('appear', done);\n } else {\n done();\n }\n },\n componentWillLeave: function componentWillLeave(done) {\n if (_util2[\"default\"].isLeaveSupported(this.props)) {\n this.transition('leave', done);\n } else {\n // always sync, do not interupt with react component life cycle\n // update hidden -> animate hidden ->\n // didUpdate -> animate leave -> unmount (if animate is none)\n done();\n }\n },\n transition: function transition(animationType, finishCallback) {\n var _this = this;\n\n var node = _reactDom2[\"default\"].findDOMNode(this);\n var props = this.props;\n var transitionName = props.transitionName;\n var nameIsObj = (typeof transitionName === 'undefined' ? 'undefined' : _typeof(transitionName)) === 'object';\n this.stop();\n var end = function end() {\n _this.stopper = null;\n finishCallback();\n };\n if ((_cssAnimation.isCssAnimationSupported || !props.animation[animationType]) && transitionName && props[transitionMap[animationType]]) {\n var name = nameIsObj ? transitionName[animationType] : transitionName + '-' + animationType;\n var activeName = name + '-active';\n if (nameIsObj && transitionName[animationType + 'Active']) {\n activeName = transitionName[animationType + 'Active'];\n }\n this.stopper = (0, _cssAnimation2[\"default\"])(node, {\n name: name,\n active: activeName\n }, end);\n } else {\n this.stopper = props.animation[animationType](node, end);\n }\n },\n stop: function stop() {\n var stopper = this.stopper;\n if (stopper) {\n this.stopper = null;\n stopper.stop();\n }\n },\n render: function render() {\n return this.props.children;\n }\n});\n\nexports[\"default\"] = AnimateChild;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-animate@2.3.3@rc-animate/lib/AnimateChild.js\n// module id = 296\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _Event = require('./Event');\n\nvar _Event2 = _interopRequireDefault(_Event);\n\nvar _componentClasses = require('component-classes');\n\nvar _componentClasses2 = _interopRequireDefault(_componentClasses);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar isCssAnimationSupported = _Event2[\"default\"].endEvents.length !== 0;\n\n\nvar capitalPrefixes = ['Webkit', 'Moz', 'O',\n// ms is special .... !\n'ms'];\nvar prefixes = ['-webkit-', '-moz-', '-o-', 'ms-', ''];\n\nfunction getStyleProperty(node, name) {\n // old ff need null, https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle\n var style = window.getComputedStyle(node, null);\n var ret = '';\n for (var i = 0; i < prefixes.length; i++) {\n ret = style.getPropertyValue(prefixes[i] + name);\n if (ret) {\n break;\n }\n }\n return ret;\n}\n\nfunction fixBrowserByTimeout(node) {\n if (isCssAnimationSupported) {\n var transitionDelay = parseFloat(getStyleProperty(node, 'transition-delay')) || 0;\n var transitionDuration = parseFloat(getStyleProperty(node, 'transition-duration')) || 0;\n var animationDelay = parseFloat(getStyleProperty(node, 'animation-delay')) || 0;\n var animationDuration = parseFloat(getStyleProperty(node, 'animation-duration')) || 0;\n var time = Math.max(transitionDuration + transitionDelay, animationDuration + animationDelay);\n // sometimes, browser bug\n node.rcEndAnimTimeout = setTimeout(function () {\n node.rcEndAnimTimeout = null;\n if (node.rcEndListener) {\n node.rcEndListener();\n }\n }, time * 1000 + 200);\n }\n}\n\nfunction clearBrowserBugTimeout(node) {\n if (node.rcEndAnimTimeout) {\n clearTimeout(node.rcEndAnimTimeout);\n node.rcEndAnimTimeout = null;\n }\n}\n\nvar cssAnimation = function cssAnimation(node, transitionName, endCallback) {\n var nameIsObj = (typeof transitionName === 'undefined' ? 'undefined' : _typeof(transitionName)) === 'object';\n var className = nameIsObj ? transitionName.name : transitionName;\n var activeClassName = nameIsObj ? transitionName.active : transitionName + '-active';\n var end = endCallback;\n var start = void 0;\n var active = void 0;\n var nodeClasses = (0, _componentClasses2[\"default\"])(node);\n\n if (endCallback && Object.prototype.toString.call(endCallback) === '[object Object]') {\n end = endCallback.end;\n start = endCallback.start;\n active = endCallback.active;\n }\n\n if (node.rcEndListener) {\n node.rcEndListener();\n }\n\n node.rcEndListener = function (e) {\n if (e && e.target !== node) {\n return;\n }\n\n if (node.rcAnimTimeout) {\n clearTimeout(node.rcAnimTimeout);\n node.rcAnimTimeout = null;\n }\n\n clearBrowserBugTimeout(node);\n\n nodeClasses.remove(className);\n nodeClasses.remove(activeClassName);\n\n _Event2[\"default\"].removeEndEventListener(node, node.rcEndListener);\n node.rcEndListener = null;\n\n // Usually this optional end is used for informing an owner of\n // a leave animation and telling it to remove the child.\n if (end) {\n end();\n }\n };\n\n _Event2[\"default\"].addEndEventListener(node, node.rcEndListener);\n\n if (start) {\n start();\n }\n nodeClasses.add(className);\n\n node.rcAnimTimeout = setTimeout(function () {\n node.rcAnimTimeout = null;\n nodeClasses.add(activeClassName);\n if (active) {\n setTimeout(active, 0);\n }\n fixBrowserByTimeout(node);\n // 30ms for firefox\n }, 30);\n\n return {\n stop: function stop() {\n if (node.rcEndListener) {\n node.rcEndListener();\n }\n }\n };\n};\n\ncssAnimation.style = function (node, style, callback) {\n if (node.rcEndListener) {\n node.rcEndListener();\n }\n\n node.rcEndListener = function (e) {\n if (e && e.target !== node) {\n return;\n }\n\n if (node.rcAnimTimeout) {\n clearTimeout(node.rcAnimTimeout);\n node.rcAnimTimeout = null;\n }\n\n clearBrowserBugTimeout(node);\n\n _Event2[\"default\"].removeEndEventListener(node, node.rcEndListener);\n node.rcEndListener = null;\n\n // Usually this optional callback is used for informing an owner of\n // a leave animation and telling it to remove the child.\n if (callback) {\n callback();\n }\n };\n\n _Event2[\"default\"].addEndEventListener(node, node.rcEndListener);\n\n node.rcAnimTimeout = setTimeout(function () {\n for (var s in style) {\n if (style.hasOwnProperty(s)) {\n node.style[s] = style[s];\n }\n }\n node.rcAnimTimeout = null;\n fixBrowserByTimeout(node);\n }, 0);\n};\n\ncssAnimation.setTransition = function (node, p, value) {\n var property = p;\n var v = value;\n if (value === undefined) {\n v = property;\n property = '';\n }\n property = property || '';\n capitalPrefixes.forEach(function (prefix) {\n node.style[prefix + 'Transition' + property] = v;\n });\n};\n\ncssAnimation.isCssAnimationSupported = isCssAnimationSupported;\n\nexports[\"default\"] = cssAnimation;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._css-animation@1.3.2@css-animation/lib/index.js\n// module id = 297\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar EVENT_NAME_MAP = {\n transitionend: {\n transition: 'transitionend',\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'mozTransitionEnd',\n OTransition: 'oTransitionEnd',\n msTransition: 'MSTransitionEnd'\n },\n\n animationend: {\n animation: 'animationend',\n WebkitAnimation: 'webkitAnimationEnd',\n MozAnimation: 'mozAnimationEnd',\n OAnimation: 'oAnimationEnd',\n msAnimation: 'MSAnimationEnd'\n }\n};\n\nvar endEvents = [];\n\nfunction detectEvents() {\n var testEl = document.createElement('div');\n var style = testEl.style;\n\n if (!('AnimationEvent' in window)) {\n delete EVENT_NAME_MAP.animationend.animation;\n }\n\n if (!('TransitionEvent' in window)) {\n delete EVENT_NAME_MAP.transitionend.transition;\n }\n\n for (var baseEventName in EVENT_NAME_MAP) {\n if (EVENT_NAME_MAP.hasOwnProperty(baseEventName)) {\n var baseEvents = EVENT_NAME_MAP[baseEventName];\n for (var styleName in baseEvents) {\n if (styleName in style) {\n endEvents.push(baseEvents[styleName]);\n break;\n }\n }\n }\n }\n}\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n detectEvents();\n}\n\nfunction addEventListener(node, eventName, eventListener) {\n node.addEventListener(eventName, eventListener, false);\n}\n\nfunction removeEventListener(node, eventName, eventListener) {\n node.removeEventListener(eventName, eventListener, false);\n}\n\nvar TransitionEvents = {\n addEndEventListener: function addEndEventListener(node, eventListener) {\n if (endEvents.length === 0) {\n window.setTimeout(eventListener, 0);\n return;\n }\n endEvents.forEach(function (endEvent) {\n addEventListener(node, endEvent, eventListener);\n });\n },\n\n\n endEvents: endEvents,\n\n removeEndEventListener: function removeEndEventListener(node, eventListener) {\n if (endEvents.length === 0) {\n return;\n }\n endEvents.forEach(function (endEvent) {\n removeEventListener(node, endEvent, eventListener);\n });\n }\n};\n\nexports[\"default\"] = TransitionEvents;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._css-animation@1.3.2@css-animation/lib/Event.js\n// module id = 298\n// module chunks = 7","/**\n * Module dependencies.\n */\n\ntry {\n var index = require('indexof');\n} catch (err) {\n var index = require('component-indexof');\n}\n\n/**\n * Whitespace regexp.\n */\n\nvar re = /\\s+/;\n\n/**\n * toString reference.\n */\n\nvar toString = Object.prototype.toString;\n\n/**\n * Wrap `el` in a `ClassList`.\n *\n * @param {Element} el\n * @return {ClassList}\n * @api public\n */\n\nmodule.exports = function(el){\n return new ClassList(el);\n};\n\n/**\n * Initialize a new ClassList for `el`.\n *\n * @param {Element} el\n * @api private\n */\n\nfunction ClassList(el) {\n if (!el || !el.nodeType) {\n throw new Error('A DOM element reference is required');\n }\n this.el = el;\n this.list = el.classList;\n}\n\n/**\n * Add class `name` if not already present.\n *\n * @param {String} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.add = function(name){\n // classList\n if (this.list) {\n this.list.add(name);\n return this;\n }\n\n // fallback\n var arr = this.array();\n var i = index(arr, name);\n if (!~i) arr.push(name);\n this.el.className = arr.join(' ');\n return this;\n};\n\n/**\n * Remove class `name` when present, or\n * pass a regular expression to remove\n * any which match.\n *\n * @param {String|RegExp} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.remove = function(name){\n if ('[object RegExp]' == toString.call(name)) {\n return this.removeMatching(name);\n }\n\n // classList\n if (this.list) {\n this.list.remove(name);\n return this;\n }\n\n // fallback\n var arr = this.array();\n var i = index(arr, name);\n if (~i) arr.splice(i, 1);\n this.el.className = arr.join(' ');\n return this;\n};\n\n/**\n * Remove all classes matching `re`.\n *\n * @param {RegExp} re\n * @return {ClassList}\n * @api private\n */\n\nClassList.prototype.removeMatching = function(re){\n var arr = this.array();\n for (var i = 0; i < arr.length; i++) {\n if (re.test(arr[i])) {\n this.remove(arr[i]);\n }\n }\n return this;\n};\n\n/**\n * Toggle class `name`, can force state via `force`.\n *\n * For browsers that support classList, but do not support `force` yet,\n * the mistake will be detected and corrected.\n *\n * @param {String} name\n * @param {Boolean} force\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.toggle = function(name, force){\n // classList\n if (this.list) {\n if (\"undefined\" !== typeof force) {\n if (force !== this.list.toggle(name, force)) {\n this.list.toggle(name); // toggle again to correct\n }\n } else {\n this.list.toggle(name);\n }\n return this;\n }\n\n // fallback\n if (\"undefined\" !== typeof force) {\n if (!force) {\n this.remove(name);\n } else {\n this.add(name);\n }\n } else {\n if (this.has(name)) {\n this.remove(name);\n } else {\n this.add(name);\n }\n }\n\n return this;\n};\n\n/**\n * Return an array of classes.\n *\n * @return {Array}\n * @api public\n */\n\nClassList.prototype.array = function(){\n var className = this.el.getAttribute('class') || '';\n var str = className.replace(/^\\s+|\\s+$/g, '');\n var arr = str.split(re);\n if ('' === arr[0]) arr.shift();\n return arr;\n};\n\n/**\n * Check if class `name` is present.\n *\n * @param {String} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.has =\nClassList.prototype.contains = function(name){\n return this.list\n ? this.list.contains(name)\n : !! ~index(this.array(), name);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._component-classes@1.2.6@component-classes/index.js\n// module id = 299\n// module chunks = 7","module.exports = function(arr, obj){\n if (arr.indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._component-indexof@0.0.3@component-indexof/index.js\n// module id = 300\n// module chunks = 7","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar util = {\n isAppearSupported: function isAppearSupported(props) {\n return props.transitionName && props.transitionAppear || props.animation.appear;\n },\n isEnterSupported: function isEnterSupported(props) {\n return props.transitionName && props.transitionEnter || props.animation.enter;\n },\n isLeaveSupported: function isLeaveSupported(props) {\n return props.transitionName && props.transitionLeave || props.animation.leave;\n },\n allowAppearCallback: function allowAppearCallback(props) {\n return props.transitionAppear || props.animation.appear;\n },\n allowEnterCallback: function allowEnterCallback(props) {\n return props.transitionEnter || props.animation.enter;\n },\n allowLeaveCallback: function allowLeaveCallback(props) {\n return props.transitionLeave || props.animation.leave;\n }\n};\nexports[\"default\"] = util;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-animate@2.3.3@rc-animate/lib/util.js\n// module id = 301\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _LazyRenderBox = require('./LazyRenderBox');\n\nvar _LazyRenderBox2 = _interopRequireDefault(_LazyRenderBox);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar PopupInner = _react2[\"default\"].createClass({\n displayName: 'PopupInner',\n\n propTypes: {\n hiddenClassName: _react.PropTypes.string,\n className: _react.PropTypes.string,\n prefixCls: _react.PropTypes.string,\n onMouseEnter: _react.PropTypes.func,\n onMouseLeave: _react.PropTypes.func,\n children: _react.PropTypes.any\n },\n render: function render() {\n var props = this.props;\n var className = props.className;\n if (!props.visible) {\n className += ' ' + props.hiddenClassName;\n }\n return _react2[\"default\"].createElement(\n 'div',\n {\n className: className,\n onMouseEnter: props.onMouseEnter,\n onMouseLeave: props.onMouseLeave,\n style: props.style\n },\n _react2[\"default\"].createElement(\n _LazyRenderBox2[\"default\"],\n { className: props.prefixCls + '-content', visible: props.visible },\n props.children\n )\n );\n }\n});\n\nexports[\"default\"] = PopupInner;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-trigger@1.10.0@rc-trigger/lib/PopupInner.js\n// module id = 302\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar LazyRenderBox = _react2[\"default\"].createClass({\n displayName: 'LazyRenderBox',\n\n propTypes: {\n children: _react.PropTypes.any,\n className: _react.PropTypes.string,\n visible: _react.PropTypes.bool,\n hiddenClassName: _react.PropTypes.string\n },\n shouldComponentUpdate: function shouldComponentUpdate(nextProps) {\n return nextProps.hiddenClassName || nextProps.visible;\n },\n render: function render() {\n var _props = this.props,\n hiddenClassName = _props.hiddenClassName,\n visible = _props.visible,\n props = (0, _objectWithoutProperties3[\"default\"])(_props, ['hiddenClassName', 'visible']);\n\n\n if (hiddenClassName || _react2[\"default\"].Children.count(props.children) > 1) {\n if (!visible && hiddenClassName) {\n props.className += ' ' + hiddenClassName;\n }\n return _react2[\"default\"].createElement('div', props);\n }\n\n return _react2[\"default\"].Children.only(props.children);\n }\n});\n\nexports[\"default\"] = LazyRenderBox;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-trigger@1.10.0@rc-trigger/lib/LazyRenderBox.js\n// module id = 303\n// module chunks = 7","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._babel-runtime@6.23.0@babel-runtime/helpers/objectWithoutProperties.js\n// module id = 304\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.getAlignFromPlacement = getAlignFromPlacement;\nexports.getPopupClassNameFromAlign = getPopupClassNameFromAlign;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction isPointsEq(a1, a2) {\n return a1[0] === a2[0] && a1[1] === a2[1];\n}\n\nfunction getAlignFromPlacement(builtinPlacements, placementStr, align) {\n var baseAlign = builtinPlacements[placementStr] || {};\n return (0, _extends3[\"default\"])({}, baseAlign, align);\n}\n\nfunction getPopupClassNameFromAlign(builtinPlacements, prefixCls, align) {\n var points = align.points;\n for (var placement in builtinPlacements) {\n if (builtinPlacements.hasOwnProperty(placement)) {\n if (isPointsEq(builtinPlacements[placement].points, points)) {\n return prefixCls + '-placement-' + placement;\n }\n }\n }\n return '';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-trigger@1.10.0@rc-trigger/lib/utils.js\n// module id = 305\n// module chunks = 7","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports[\"default\"] = getContainerRenderMixin;\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction defaultGetContainer() {\n var container = document.createElement('div');\n document.body.appendChild(container);\n return container;\n}\n\nfunction getContainerRenderMixin(config) {\n var _config$autoMount = config.autoMount,\n autoMount = _config$autoMount === undefined ? true : _config$autoMount,\n _config$autoDestroy = config.autoDestroy,\n autoDestroy = _config$autoDestroy === undefined ? true : _config$autoDestroy,\n isVisible = config.isVisible,\n getComponent = config.getComponent,\n _config$getContainer = config.getContainer,\n getContainer = _config$getContainer === undefined ? defaultGetContainer : _config$getContainer;\n\n\n var mixin = void 0;\n\n function _renderComponent(instance, componentArg, ready) {\n if (!isVisible || instance._component || isVisible(instance)) {\n if (!instance._container) {\n instance._container = getContainer(instance);\n }\n var component = void 0;\n if (instance.getComponent) {\n component = instance.getComponent(componentArg);\n } else {\n component = getComponent(instance, componentArg);\n }\n _reactDom2[\"default\"].unstable_renderSubtreeIntoContainer(instance, component, instance._container, function callback() {\n instance._component = this;\n if (ready) {\n ready.call(this);\n }\n });\n }\n }\n\n if (autoMount) {\n mixin = _extends({}, mixin, {\n componentDidMount: function componentDidMount() {\n _renderComponent(this);\n },\n componentDidUpdate: function componentDidUpdate() {\n _renderComponent(this);\n }\n });\n }\n\n if (!autoMount || !autoDestroy) {\n mixin = _extends({}, mixin, {\n renderComponent: function renderComponent(componentArg, ready) {\n _renderComponent(this, componentArg, ready);\n }\n });\n }\n\n function _removeContainer(instance) {\n if (instance._container) {\n var container = instance._container;\n _reactDom2[\"default\"].unmountComponentAtNode(container);\n container.parentNode.removeChild(container);\n instance._container = null;\n }\n }\n\n if (autoDestroy) {\n mixin = _extends({}, mixin, {\n componentWillUnmount: function componentWillUnmount() {\n _removeContainer(this);\n }\n });\n } else {\n mixin = _extends({}, mixin, {\n removeContainer: function removeContainer() {\n _removeContainer(this);\n }\n });\n }\n\n return mixin;\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._rc-util@4.0.2@rc-util/lib/getContainerRenderMixin.js\n// module id = 306\n// module chunks = 7","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Header from './Header';\nimport Combobox from './Combobox';\nimport moment from 'moment';\nimport classNames from 'classnames';\n\nfunction noop() {\n}\n\nfunction generateOptions(length, disabledOptions, hideDisabledOptions) {\n const arr = [];\n for (let value = 0; value < length; value++) {\n if (!disabledOptions || disabledOptions.indexOf(value) < 0 || !hideDisabledOptions) {\n arr.push(value);\n }\n }\n return arr;\n}\n\nclass Panel extends Component {\n static propTypes = {\n clearText: PropTypes.string,\n prefixCls: PropTypes.string,\n className: PropTypes.string,\n defaultOpenValue: PropTypes.object,\n value: PropTypes.object,\n placeholder: PropTypes.string,\n format: PropTypes.string,\n disabledHours: PropTypes.func,\n disabledMinutes: PropTypes.func,\n disabledSeconds: PropTypes.func,\n hideDisabledOptions: PropTypes.bool,\n onChange: PropTypes.func,\n onEsc: PropTypes.func,\n allowEmpty: PropTypes.bool,\n showHour: PropTypes.bool,\n showMinute: PropTypes.bool,\n showSecond: PropTypes.bool,\n onClear: PropTypes.func,\n use12Hours: PropTypes.bool,\n addon: PropTypes.func,\n };\n\n static defaultProps = {\n prefixCls: 'rc-time-picker-panel',\n onChange: noop,\n onClear: noop,\n disabledHours: noop,\n disabledMinutes: noop,\n disabledSeconds: noop,\n defaultOpenValue: moment(),\n use12Hours: false,\n addon: noop,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n value: props.value,\n selectionRange: [],\n };\n }\n\n componentWillReceiveProps(nextProps) {\n const value = nextProps.value;\n if (value) {\n this.setState({\n value,\n });\n }\n }\n\n onChange = (newValue) => {\n this.setState({ value: newValue });\n this.props.onChange(newValue);\n }\n\n onCurrentSelectPanelChange = (currentSelectPanel) => {\n this.setState({ currentSelectPanel });\n }\n\n // https://github.com/ant-design/ant-design/issues/5829\n close() {\n this.props.onEsc();\n }\n\n render() {\n const {\n prefixCls, className, placeholder, disabledHours, disabledMinutes,\n disabledSeconds, hideDisabledOptions, allowEmpty, showHour, showMinute, showSecond,\n format, defaultOpenValue, clearText, onEsc, addon, use12Hours, onClear,\n } = this.props;\n const {\n value, currentSelectPanel,\n } = this.state;\n const disabledHourOptions = disabledHours();\n const disabledMinuteOptions = disabledMinutes(value ? value.hour() : null);\n const disabledSecondOptions = disabledSeconds(value ? value.hour() : null,\n value ? value.minute() : null);\n const hourOptions = generateOptions(24, disabledHourOptions, hideDisabledOptions);\n const minuteOptions = generateOptions(60, disabledMinuteOptions, hideDisabledOptions);\n const secondOptions = generateOptions(60, disabledSecondOptions, hideDisabledOptions);\n\n return (\n <div className={classNames({ [`${prefixCls}-inner`]: true, [className]: !!className })}>\n <Header\n clearText={clearText}\n prefixCls={prefixCls}\n defaultOpenValue={defaultOpenValue}\n value={value}\n currentSelectPanel={currentSelectPanel}\n onEsc={onEsc}\n format={format}\n placeholder={placeholder}\n hourOptions={hourOptions}\n minuteOptions={minuteOptions}\n secondOptions={secondOptions}\n disabledHours={disabledHours}\n disabledMinutes={disabledMinutes}\n disabledSeconds={disabledSeconds}\n onChange={this.onChange}\n onClear={onClear}\n allowEmpty={allowEmpty}\n />\n <Combobox\n prefixCls={prefixCls}\n value={value}\n defaultOpenValue={defaultOpenValue}\n format={format}\n onChange={this.onChange}\n showHour={showHour}\n showMinute={showMinute}\n showSecond={showSecond}\n hourOptions={hourOptions}\n minuteOptions={minuteOptions}\n secondOptions={secondOptions}\n disabledHours={disabledHours}\n disabledMinutes={disabledMinutes}\n disabledSeconds={disabledSeconds}\n onCurrentSelectPanelChange={this.onCurrentSelectPanelChange}\n use12Hours={use12Hours}\n />\n {addon(this)}\n </div>\n );\n }\n}\n\nexport default Panel;\n\n\n\n// WEBPACK FOOTER //\n// ./src/Panel.jsx","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._babel-runtime@6.23.0@babel-runtime/helpers/defineProperty.js\n// module id = 308\n// module chunks = 7","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._babel-runtime@6.23.0@babel-runtime/core-js/object/define-property.js\n// module id = 309\n// module chunks = 7","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc){\n return $Object.defineProperty(it, key, desc);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/fn/object/define-property.js\n// module id = 310\n// module chunks = 7","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperty: require('./_object-dp').f});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._core-js@2.4.1@core-js/library/modules/es6.object.define-property.js\n// module id = 311\n// module chunks = 7","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\n\nclass Header extends Component {\n static propTypes = {\n format: PropTypes.string,\n prefixCls: PropTypes.string,\n disabledDate: PropTypes.func,\n placeholder: PropTypes.string,\n clearText: PropTypes.string,\n value: PropTypes.object,\n hourOptions: PropTypes.array,\n minuteOptions: PropTypes.array,\n secondOptions: PropTypes.array,\n disabledHours: PropTypes.func,\n disabledMinutes: PropTypes.func,\n disabledSeconds: PropTypes.func,\n onChange: PropTypes.func,\n onClear: PropTypes.func,\n onEsc: PropTypes.func,\n allowEmpty: PropTypes.bool,\n defaultOpenValue: PropTypes.object,\n currentSelectPanel: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n const { value, format } = props;\n this.state = {\n str: value && value.format(format) || '',\n invalid: false,\n };\n }\n\n componentWillReceiveProps(nextProps) {\n const { value, format } = nextProps;\n this.setState({\n str: value && value.format(format) || '',\n invalid: false,\n });\n }\n\n onInputChange = (event) => {\n const str = event.target.value;\n this.setState({\n str,\n });\n const {\n format, hourOptions, minuteOptions, secondOptions,\n disabledHours, disabledMinutes,\n disabledSeconds, onChange, allowEmpty,\n } = this.props;\n\n if (str) {\n const originalValue = this.props.value;\n const value = this.getProtoValue().clone();\n const parsed = moment(str, format, true);\n if (!parsed.isValid()) {\n this.setState({\n invalid: true,\n });\n return;\n }\n value.hour(parsed.hour()).minute(parsed.minute()).second(parsed.second());\n\n // if time value not allowed, response warning.\n if (\n hourOptions.indexOf(value.hour()) < 0 ||\n minuteOptions.indexOf(value.minute()) < 0 ||\n secondOptions.indexOf(value.second()) < 0\n ) {\n this.setState({\n invalid: true,\n });\n return;\n }\n\n // if time value is disabled, response warning.\n const disabledHourOptions = disabledHours();\n const disabledMinuteOptions = disabledMinutes(value.hour());\n const disabledSecondOptions = disabledSeconds(value.hour(), value.minute());\n if (\n (disabledHourOptions && disabledHourOptions.indexOf(value.hour()) >= 0) ||\n (disabledMinuteOptions && disabledMinuteOptions.indexOf(value.minute()) >= 0) ||\n (disabledSecondOptions && disabledSecondOptions.indexOf(value.second()) >= 0)\n ) {\n this.setState({\n invalid: true,\n });\n return;\n }\n\n if (originalValue) {\n if (\n originalValue.hour() !== value.hour() ||\n originalValue.minute() !== value.minute() ||\n originalValue.second() !== value.second()\n ) {\n // keep other fields for rc-calendar\n const changedValue = originalValue.clone();\n changedValue.hour(value.hour());\n changedValue.minute(value.minute());\n changedValue.second(value.second());\n onChange(changedValue);\n }\n } else if (originalValue !== value) {\n onChange(value);\n }\n } else if (allowEmpty) {\n onChange(null);\n } else {\n this.setState({\n invalid: true,\n });\n return;\n }\n\n this.setState({\n invalid: false,\n });\n }\n\n onKeyDown = (e) => {\n if (e.keyCode === 27) {\n this.props.onEsc();\n }\n }\n\n onClear = () => {\n this.setState({ str: '' });\n this.props.onClear();\n }\n\n getClearButton() {\n const { prefixCls, allowEmpty } = this.props;\n if (!allowEmpty) {\n return null;\n }\n return (<a\n className={`${prefixCls}-clear-btn`}\n role=\"button\"\n title={this.props.clearText}\n onMouseDown={this.onClear}\n />);\n }\n\n getProtoValue() {\n return this.props.value || this.props.defaultOpenValue;\n }\n\n getInput() {\n const { prefixCls, placeholder } = this.props;\n const { invalid, str } = this.state;\n const invalidClass = invalid ? `${prefixCls}-input-invalid` : '';\n return (\n <input\n className={`${prefixCls}-input ${invalidClass}`}\n ref=\"input\"\n onKeyDown={this.onKeyDown}\n value={str}\n placeholder={placeholder}\n onChange={this.onInputChange}\n />\n );\n }\n\n render() {\n const { prefixCls } = this.props;\n return (\n <div className={`${prefixCls}-input-wrap`}>\n {this.getInput()}\n {this.getClearButton()}\n </div>\n );\n }\n}\n\nexport default Header;\n\n\n\n// WEBPACK FOOTER //\n// ./src/Header.jsx","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Select from './Select';\n\nconst formatOption = (option, disabledOptions) => {\n let value = `${option}`;\n if (option < 10) {\n value = `0${option}`;\n }\n\n let disabled = false;\n if (disabledOptions && disabledOptions.indexOf(option) >= 0) {\n disabled = true;\n }\n\n return {\n value,\n disabled,\n };\n};\n\nclass Combobox extends Component {\n static propTypes = {\n format: PropTypes.string,\n defaultOpenValue: PropTypes.object,\n prefixCls: PropTypes.string,\n value: PropTypes.object,\n onChange: PropTypes.func,\n showHour: PropTypes.bool,\n showMinute: PropTypes.bool,\n showSecond: PropTypes.bool,\n hourOptions: PropTypes.array,\n minuteOptions: PropTypes.array,\n secondOptions: PropTypes.array,\n disabledHours: PropTypes.func,\n disabledMinutes: PropTypes.func,\n disabledSeconds: PropTypes.func,\n onCurrentSelectPanelChange: PropTypes.func,\n use12Hours: PropTypes.bool,\n };\n\n onItemChange = (type, itemValue) => {\n const { onChange, defaultOpenValue, use12Hours } = this.props;\n const value = (this.props.value || defaultOpenValue).clone();\n\n if (type === 'hour') {\n if (use12Hours) {\n if (this.isAM()) {\n value.hour(+itemValue % 12);\n } else {\n value.hour((+itemValue % 12) + 12);\n }\n } else {\n value.hour(+itemValue);\n }\n } else if (type === 'minute') {\n value.minute(+itemValue);\n } else if (type === 'ampm') {\n const ampm = itemValue.toUpperCase();\n if (use12Hours) {\n if (ampm === 'PM' && value.hour() < 12) {\n value.hour((value.hour() % 12) + 12);\n }\n\n if (ampm === 'AM') {\n if (value.hour() >= 12) {\n value.hour(value.hour() - 12);\n }\n }\n }\n } else {\n value.second(+itemValue);\n }\n onChange(value);\n }\n\n onEnterSelectPanel = (range) => {\n this.props.onCurrentSelectPanelChange(range);\n }\n\n getHourSelect(hour) {\n const { prefixCls, hourOptions, disabledHours, showHour, use12Hours } = this.props;\n if (!showHour) {\n return null;\n }\n const disabledOptions = disabledHours();\n let hourOptionsAdj;\n let hourAdj;\n if (use12Hours) {\n hourOptionsAdj = [12].concat(hourOptions.filter(h => h < 12 && h > 0));\n hourAdj = (hour % 12) || 12;\n } else {\n hourOptionsAdj = hourOptions;\n hourAdj = hour;\n }\n\n return (\n <Select\n prefixCls={prefixCls}\n options={hourOptionsAdj.map(option => formatOption(option, disabledOptions))}\n selectedIndex={hourOptionsAdj.indexOf(hourAdj)}\n type=\"hour\"\n onSelect={this.onItemChange}\n onMouseEnter={this.onEnterSelectPanel.bind(this, 'hour')}\n />\n );\n }\n\n getMinuteSelect(minute) {\n const { prefixCls, minuteOptions, disabledMinutes, defaultOpenValue, showMinute } = this.props;\n if (!showMinute) {\n return null;\n }\n const value = this.props.value || defaultOpenValue;\n const disabledOptions = disabledMinutes(value.hour());\n\n return (\n <Select\n prefixCls={prefixCls}\n options={minuteOptions.map(option => formatOption(option, disabledOptions))}\n selectedIndex={minuteOptions.indexOf(minute)}\n type=\"minute\"\n onSelect={this.onItemChange}\n onMouseEnter={this.onEnterSelectPanel.bind(this, 'minute')}\n />\n );\n }\n\n getSecondSelect(second) {\n const { prefixCls, secondOptions, disabledSeconds, showSecond, defaultOpenValue } = this.props;\n if (!showSecond) {\n return null;\n }\n const value = this.props.value || defaultOpenValue;\n const disabledOptions = disabledSeconds(value.hour(), value.minute());\n\n return (\n <Select\n prefixCls={prefixCls}\n options={secondOptions.map(option => formatOption(option, disabledOptions))}\n selectedIndex={secondOptions.indexOf(second)}\n type=\"second\"\n onSelect={this.onItemChange}\n onMouseEnter={this.onEnterSelectPanel.bind(this, 'second')}\n />\n );\n }\n\n getAMPMSelect() {\n const { prefixCls, use12Hours, format } = this.props;\n if (!use12Hours) {\n return null;\n }\n\n const AMPMOptions = ['am', 'pm'] // If format has A char, then we should uppercase AM/PM\n .map(c => format.match(/\\sA/) ? c.toUpperCase() : c)\n .map(c => ({ value: c }));\n\n const selected = this.isAM() ? 0 : 1;\n\n return (\n <Select\n prefixCls={prefixCls}\n options={AMPMOptions}\n selectedIndex={selected}\n type=\"ampm\"\n onSelect={this.onItemChange}\n onMouseEnter={this.onEnterSelectPanel.bind(this, 'ampm')}\n />\n );\n }\n\n isAM() {\n const value = (this.props.value || this.props.defaultOpenValue);\n return value.hour() >= 0 && value.hour() < 12;\n }\n\n render() {\n const { prefixCls, defaultOpenValue } = this.props;\n const value = this.props.value || defaultOpenValue;\n return (\n <div className={`${prefixCls}-combobox`}>\n {this.getHourSelect(value.hour())}\n {this.getMinuteSelect(value.minute())}\n {this.getSecondSelect(value.second())}\n {this.getAMPMSelect(value.hour())}\n </div>\n );\n }\n}\n\nexport default Combobox;\n\n\n\n// WEBPACK FOOTER //\n// ./src/Combobox.jsx","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDom from 'react-dom';\nimport classnames from 'classnames';\n\nconst scrollTo = (element, to, duration) => {\n const requestAnimationFrame = window.requestAnimationFrame ||\n function requestAnimationFrameTimeout() {\n return setTimeout(arguments[0], 10);\n };\n // jump to target if duration zero\n if (duration <= 0) {\n element.scrollTop = to;\n return;\n }\n const difference = to - element.scrollTop;\n const perTick = difference / duration * 10;\n\n requestAnimationFrame(() => {\n element.scrollTop = element.scrollTop + perTick;\n if (element.scrollTop === to) return;\n scrollTo(element, to, duration - 10);\n });\n};\n\nclass Select extends Component {\n static propTypes = {\n prefixCls: PropTypes.string,\n options: PropTypes.array,\n selectedIndex: PropTypes.number,\n type: PropTypes.string,\n onSelect: PropTypes.func,\n onMouseEnter: PropTypes.func,\n };\n\n state = {\n active: false,\n };\n\n componentDidMount() {\n // jump to selected option\n this.scrollToSelected(0);\n }\n\n componentDidUpdate(prevProps) {\n // smooth scroll to selected option\n if (prevProps.selectedIndex !== this.props.selectedIndex) {\n this.scrollToSelected(120);\n }\n }\n\n onSelect = (value) => {\n const { onSelect, type } = this.props;\n onSelect(type, value);\n }\n\n getOptions() {\n const { options, selectedIndex, prefixCls } = this.props;\n return options.map((item, index) => {\n const cls = classnames({\n [`${prefixCls}-select-option-selected`]: selectedIndex === index,\n [`${prefixCls}-select-option-disabled`]: item.disabled,\n });\n let onclick = null;\n if (!item.disabled) {\n onclick = this.onSelect.bind(this, item.value);\n }\n return (<li\n className={cls}\n key={index}\n onClick={onclick}\n disabled={item.disabled}\n >\n {item.value}\n </li>);\n });\n }\n\n scrollToSelected(duration) {\n // move to selected item\n const select = ReactDom.findDOMNode(this);\n const list = ReactDom.findDOMNode(this.refs.list);\n if (!list) {\n return;\n }\n let index = this.props.selectedIndex;\n if (index < 0) {\n index = 0;\n }\n const topOption = list.children[index];\n const to = topOption.offsetTop;\n scrollTo(select, to, duration);\n }\n\n handleMouseEnter = (e) => {\n this.setState({ active: true });\n this.props.onMouseEnter(e);\n }\n\n handleMouseLeave = () => {\n this.setState({ active: false });\n }\n\n render() {\n if (this.props.options.length === 0) {\n return null;\n }\n\n const { prefixCls } = this.props;\n const cls = classnames({\n [`${prefixCls}-select`]: 1,\n [`${prefixCls}-select-active`]: this.state.active,\n });\n\n return (\n <div\n className={cls}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n <ul ref=\"list\">{this.getOptions()}</ul>\n </div>\n );\n }\n}\n\nexport default Select;\n\n\n\n// WEBPACK FOOTER //\n// ./src/Select.jsx","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._classnames@2.2.5@classnames/index.js\n// module id = 315\n// module chunks = 7","const autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1,\n};\n\nconst targetOffset = [0, 0];\n\nconst placements = {\n bottomLeft: {\n points: ['tl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -3],\n targetOffset,\n },\n bottomRight: {\n points: ['tr', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -3],\n targetOffset,\n },\n topRight: {\n points: ['br', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 3],\n targetOffset,\n },\n topLeft: {\n points: ['bl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 3],\n targetOffset,\n },\n};\n\nexport default placements;\n\n\n\n// WEBPACK FOOTER //\n// ./src/placements.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/._react@15.5.4@react/lib/PooledClass.js\n// module id = 8\n// module chunks = 7"],"sourceRoot":""} \ No newline at end of file | ||
diff --git a/examples/disabled.html b/examples/disabled.html index eac090a..985998f 100644 --- a/examples/disabled.html +++ b/examples/disabled.html | |||
@@ -2,7 +2,7 @@ | |||
2 | <html> | 2 | <html> |
3 | 3 | ||
4 | <head> | 4 | <head> |
5 | <title>disabled.js - example - rc-time-picker@2.4.0</title> | 5 | <title>disabled.js - example - rc-time-picker@2.4.1</title> |
6 | <meta name="viewport" | 6 | <meta name="viewport" |
7 | content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> | 7 | content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> |
8 | <meta charset="utf-8"/> | 8 | <meta charset="utf-8"/> |
@@ -257,13 +257,13 @@ Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-lic | |||
257 | document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>'); | 257 | document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>'); |
258 | } | 258 | } |
259 | </script> | 259 | </script> |
260 | <link rel="stylesheet" href="common.css" /> | 260 | <link rel="stylesheet" href="../common.css" /> |
261 | </head> | 261 | </head> |
262 | 262 | ||
263 | <body> | 263 | <body> |
264 | <div class="container"> | 264 | <div class="container"> |
265 | <div class="header"> | 265 | <div class="header"> |
266 | <h1>rc-time-picker@2.4.0</h1> | 266 | <h1>rc-time-picker@2.4.1</h1> |
267 | 267 | ||
268 | <p>React TimePicker</p> | 268 | <p>React TimePicker</p> |
269 | </div> | 269 | </div> |
@@ -339,7 +339,7 @@ ReactDom.render( | |||
339 | data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"> | 339 | data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"> |
340 | </a> | 340 | </a> |
341 | <script>FastClick.attach(document.body);</script> | 341 | <script>FastClick.attach(document.body);</script> |
342 | <script src="common.js?nowrap"></script> | 342 | <script src="../common.js?nowrap"></script> |
343 | <script src="disabled.js?nowrap"></script> | 343 | <script src="disabled.js?nowrap"></script> |
344 | </body> | 344 | </body> |
345 | 345 | ||
diff --git a/examples/disabled.js b/examples/disabled.js index 9e8e7c1..b7cd754 100644 --- a/examples/disabled.js +++ b/examples/disabled.js | |||
@@ -1,88 +1,87 @@ | |||
1 | webpackJsonp([1],{ | 1 | webpackJsonp([5],{ |
2 | |||
3 | /***/ 144: | ||
4 | /***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
5 | |||
6 | "use strict"; | ||
7 | Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); | ||
8 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_rc_time_picker_assets_index_less__ = __webpack_require__(29); | ||
9 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_rc_time_picker_assets_index_less___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_rc_time_picker_assets_index_less__); | ||
10 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react__ = __webpack_require__(5); | ||
11 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react__); | ||
12 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_dom__ = __webpack_require__(8); | ||
13 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_dom___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react_dom__); | ||
14 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_moment__ = __webpack_require__(18); | ||
15 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_moment___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_moment__); | ||
16 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_rc_time_picker__ = __webpack_require__(22); | ||
17 | /* eslint no-console:0 */ | ||
18 | |||
19 | |||
20 | |||
21 | |||
22 | |||
23 | |||
2 | 24 | ||
3 | /***/ 0: | ||
4 | /***/ (function(module, exports, __webpack_require__) { | ||
5 | 25 | ||
6 | module.exports = __webpack_require__(317); | ||
7 | 26 | ||
8 | 27 | ||
28 | var showSecond = true; | ||
29 | var str = showSecond ? 'HH:mm:ss' : 'HH:mm'; | ||
30 | |||
31 | var now = __WEBPACK_IMPORTED_MODULE_3_moment___default()().hour(14).minute(30); | ||
32 | |||
33 | function generateOptions(length, excludedOptions) { | ||
34 | var arr = []; | ||
35 | for (var value = 0; value < length; value++) { | ||
36 | if (excludedOptions.indexOf(value) < 0) { | ||
37 | arr.push(value); | ||
38 | } | ||
39 | } | ||
40 | return arr; | ||
41 | } | ||
42 | |||
43 | function onChange(value) { | ||
44 | console.log(value && value.format(str)); | ||
45 | } | ||
46 | |||
47 | function disabledHours() { | ||
48 | return [0, 1, 2, 3, 4, 5, 6, 7, 8, 22, 23]; | ||
49 | } | ||
50 | |||
51 | function disabledMinutes(h) { | ||
52 | switch (h) { | ||
53 | case 9: | ||
54 | return generateOptions(60, [30]); | ||
55 | case 21: | ||
56 | return generateOptions(60, [0]); | ||
57 | default: | ||
58 | return generateOptions(60, [0, 30]); | ||
59 | } | ||
60 | } | ||
61 | |||
62 | function disabledSeconds(h, m) { | ||
63 | return [h + m % 60]; | ||
64 | } | ||
65 | |||
66 | __WEBPACK_IMPORTED_MODULE_2_react_dom___default.a.render(__WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_4_rc_time_picker__["a" /* default */], { | ||
67 | showSecond: showSecond, | ||
68 | defaultValue: now, | ||
69 | className: 'xxx', | ||
70 | onChange: onChange, | ||
71 | disabledHours: disabledHours, | ||
72 | disabledMinutes: disabledMinutes, | ||
73 | disabledSeconds: disabledSeconds | ||
74 | }), document.getElementById('__react-content')); | ||
75 | |||
9 | /***/ }), | 76 | /***/ }), |
10 | 77 | ||
11 | /***/ 317: | 78 | /***/ 326: |
12 | /***/ (function(module, exports, __webpack_require__) { | 79 | /***/ (function(module, exports, __webpack_require__) { |
13 | 80 | ||
14 | 'use strict'; | 81 | module.exports = __webpack_require__(144); |
15 | 82 | ||
16 | __webpack_require__(2); | ||
17 | |||
18 | var _react = __webpack_require__(3); | ||
19 | |||
20 | var _react2 = _interopRequireDefault(_react); | ||
21 | |||
22 | var _reactDom = __webpack_require__(38); | ||
23 | |||
24 | var _reactDom2 = _interopRequireDefault(_reactDom); | ||
25 | |||
26 | var _moment = __webpack_require__(184); | ||
27 | |||
28 | var _moment2 = _interopRequireDefault(_moment); | ||
29 | |||
30 | var _rcTimePicker = __webpack_require__(185); | ||
31 | |||
32 | var _rcTimePicker2 = _interopRequireDefault(_rcTimePicker); | ||
33 | |||
34 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
35 | |||
36 | var showSecond = true; /* eslint no-console:0 */ | ||
37 | |||
38 | var str = showSecond ? 'HH:mm:ss' : 'HH:mm'; | ||
39 | |||
40 | var now = (0, _moment2.default)().hour(14).minute(30); | ||
41 | |||
42 | function generateOptions(length, excludedOptions) { | ||
43 | var arr = []; | ||
44 | for (var value = 0; value < length; value++) { | ||
45 | if (excludedOptions.indexOf(value) < 0) { | ||
46 | arr.push(value); | ||
47 | } | ||
48 | } | ||
49 | return arr; | ||
50 | } | ||
51 | |||
52 | function onChange(value) { | ||
53 | console.log(value && value.format(str)); | ||
54 | } | ||
55 | |||
56 | function disabledHours() { | ||
57 | return [0, 1, 2, 3, 4, 5, 6, 7, 8, 22, 23]; | ||
58 | } | ||
59 | |||
60 | function disabledMinutes(h) { | ||
61 | switch (h) { | ||
62 | case 9: | ||
63 | return generateOptions(60, [30]); | ||
64 | case 21: | ||
65 | return generateOptions(60, [0]); | ||
66 | default: | ||
67 | return generateOptions(60, [0, 30]); | ||
68 | } | ||
69 | } | ||
70 | |||
71 | function disabledSeconds(h, m) { | ||
72 | return [h + m % 60]; | ||
73 | } | ||
74 | |||
75 | _reactDom2.default.render(_react2.default.createElement(_rcTimePicker2.default, { | ||
76 | showSecond: showSecond, | ||
77 | defaultValue: now, | ||
78 | className: 'xxx', | ||
79 | onChange: onChange, | ||
80 | disabledHours: disabledHours, | ||
81 | disabledMinutes: disabledMinutes, | ||
82 | disabledSeconds: disabledSeconds | ||
83 | }), document.getElementById('__react-content')); | ||
84 | 83 | ||
85 | /***/ }) | 84 | /***/ }) |
86 | 85 | ||
87 | }); | 86 | },[326]); |
88 | //# sourceMappingURL=disabled.js.map \ No newline at end of file | 87 | //# sourceMappingURL=disabled.js.map \ No newline at end of file |
diff --git a/examples/disabled.js.map b/examples/disabled.js.map index be097f1..c37df32 100644 --- a/examples/disabled.js.map +++ b/examples/disabled.js.map | |||
@@ -1 +1 @@ | |||
{"version":3,"sources":["webpack:///./examples/disabled.js"],"names":["showSecond","str","now","hour","minute","generateOptions","length","excludedOptions","arr","value","indexOf","push","onChange","console","log","format","disabledHours","disabledMinutes","h","disabledSeconds","m","render","document","getElementById"],"mappings":";;;;;;;;;;;;;;;AAEA;;AAEA;;;;AACA;;;;AAEA;;;;AAEA;;;;;;AAEA,KAAMA,aAAa,IAAnB,C,CAXA;;AAYA,KAAMC,MAAMD,aAAa,UAAb,GAA0B,OAAtC;;AAEA,KAAME,MAAM,wBAASC,IAAT,CAAc,EAAd,EAAkBC,MAAlB,CAAyB,EAAzB,CAAZ;;AAEA,UAASC,eAAT,CAAyBC,MAAzB,EAAiCC,eAAjC,EAAkD;AAChD,OAAMC,MAAM,EAAZ;AACA,QAAK,IAAIC,QAAQ,CAAjB,EAAoBA,QAAQH,MAA5B,EAAoCG,OAApC,EAA6C;AAC3C,SAAIF,gBAAgBG,OAAhB,CAAwBD,KAAxB,IAAiC,CAArC,EAAwC;AACtCD,WAAIG,IAAJ,CAASF,KAAT;AACD;AACF;AACD,UAAOD,GAAP;AACD;;AAED,UAASI,QAAT,CAAkBH,KAAlB,EAAyB;AACvBI,WAAQC,GAAR,CAAYL,SAASA,MAAMM,MAAN,CAAad,GAAb,CAArB;AACD;;AAED,UAASe,aAAT,GAAyB;AACvB,UAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,EAA5B,EAAgC,EAAhC,CAAP;AACD;;AAED,UAASC,eAAT,CAAyBC,CAAzB,EAA4B;AAC1B,WAAQA,CAAR;AACE,UAAK,CAAL;AACE,cAAOb,gBAAgB,EAAhB,EAAoB,CAAC,EAAD,CAApB,CAAP;AACF,UAAK,EAAL;AACE,cAAOA,gBAAgB,EAAhB,EAAoB,CAAC,CAAD,CAApB,CAAP;AACF;AACE,cAAOA,gBAAgB,EAAhB,EAAoB,CAAC,CAAD,EAAI,EAAJ,CAApB,CAAP;AANJ;AAQD;;AAED,UAASc,eAAT,CAAyBD,CAAzB,EAA4BE,CAA5B,EAA+B;AAC7B,UAAO,CAACF,IAAIE,IAAI,EAAT,CAAP;AACD;;AAED,oBAASC,MAAT,CACE;AACE,eAAYrB,UADd;AAEE,iBAAcE,GAFhB;AAGE,cAAU,KAHZ;AAIE,aAAUU,QAJZ;AAKE,kBAAeI,aALjB;AAME,oBAAiBC,eANnB;AAOE,oBAAiBE;AAPnB,GADF,EAUEG,SAASC,cAAT,CAAwB,iBAAxB,CAVF,E","file":"disabled.js","sourcesContent":["/* eslint no-console:0 */\n\nimport 'rc-time-picker/assets/index.less';\n\nimport React from 'react';\nimport ReactDom from 'react-dom';\n\nimport moment from 'moment';\n\nimport TimePicker from 'rc-time-picker';\n\nconst showSecond = true;\nconst str = showSecond ? 'HH:mm:ss' : 'HH:mm';\n\nconst now = moment().hour(14).minute(30);\n\nfunction generateOptions(length, excludedOptions) {\n const arr = [];\n for (let value = 0; value < length; value++) {\n if (excludedOptions.indexOf(value) < 0) {\n arr.push(value);\n }\n }\n return arr;\n}\n\nfunction onChange(value) {\n console.log(value && value.format(str));\n}\n\nfunction disabledHours() {\n return [0, 1, 2, 3, 4, 5, 6, 7, 8, 22, 23];\n}\n\nfunction disabledMinutes(h) {\n switch (h) {\n case 9:\n return generateOptions(60, [30]);\n case 21:\n return generateOptions(60, [0]);\n default:\n return generateOptions(60, [0, 30]);\n }\n}\n\nfunction disabledSeconds(h, m) {\n return [h + m % 60];\n}\n\nReactDom.render(\n <TimePicker\n showSecond={showSecond}\n defaultValue={now}\n className=\"xxx\"\n onChange={onChange}\n disabledHours={disabledHours}\n disabledMinutes={disabledMinutes}\n disabledSeconds={disabledSeconds}\n />,\n document.getElementById('__react-content')\n);\n\n\n\n// WEBPACK FOOTER //\n// ./examples/disabled.js"],"sourceRoot":""} \ No newline at end of file | {"version":3,"sources":["webpack:///./examples/disabled.js"],"names":["showSecond","str","now","moment","hour","minute","generateOptions","length","excludedOptions","arr","value","indexOf","push","onChange","console","log","format","disabledHours","disabledMinutes","h","disabledSeconds","m","ReactDom","render","document","getElementById"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,IAAMA,aAAa,IAAnB;AACA,IAAMC,MAAMD,aAAa,UAAb,GAA0B,OAAtC;;AAEA,IAAME,MAAM,8CAAAC,GAASC,IAAT,CAAc,EAAd,EAAkBC,MAAlB,CAAyB,EAAzB,CAAZ;;AAEA,SAASC,eAAT,CAAyBC,MAAzB,EAAiCC,eAAjC,EAAkD;AAChD,MAAMC,MAAM,EAAZ;AACA,OAAK,IAAIC,QAAQ,CAAjB,EAAoBA,QAAQH,MAA5B,EAAoCG,OAApC,EAA6C;AAC3C,QAAIF,gBAAgBG,OAAhB,CAAwBD,KAAxB,IAAiC,CAArC,EAAwC;AACtCD,UAAIG,IAAJ,CAASF,KAAT;AACD;AACF;AACD,SAAOD,GAAP;AACD;;AAED,SAASI,QAAT,CAAkBH,KAAlB,EAAyB;AACvBI,UAAQC,GAAR,CAAYL,SAASA,MAAMM,MAAN,CAAaf,GAAb,CAArB;AACD;;AAED,SAASgB,aAAT,GAAyB;AACvB,SAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,EAA5B,EAAgC,EAAhC,CAAP;AACD;;AAED,SAASC,eAAT,CAAyBC,CAAzB,EAA4B;AAC1B,UAAQA,CAAR;AACE,SAAK,CAAL;AACE,aAAOb,gBAAgB,EAAhB,EAAoB,CAAC,EAAD,CAApB,CAAP;AACF,SAAK,EAAL;AACE,aAAOA,gBAAgB,EAAhB,EAAoB,CAAC,CAAD,CAApB,CAAP;AACF;AACE,aAAOA,gBAAgB,EAAhB,EAAoB,CAAC,CAAD,EAAI,EAAJ,CAApB,CAAP;AANJ;AAQD;;AAED,SAASc,eAAT,CAAyBD,CAAzB,EAA4BE,CAA5B,EAA+B;AAC7B,SAAO,CAACF,IAAIE,IAAI,EAAT,CAAP;AACD;;AAED,iDAAAC,CAASC,MAAT,CACE,4DAAC,+DAAD;AACE,cAAYvB,UADd;AAEE,gBAAcE,GAFhB;AAGE,aAAU,KAHZ;AAIE,YAAUW,QAJZ;AAKE,iBAAeI,aALjB;AAME,mBAAiBC,eANnB;AAOE,mBAAiBE;AAPnB,EADF,EAUEI,SAASC,cAAT,CAAwB,iBAAxB,CAVF,E","file":"examples/disabled.js","sourcesContent":["/* eslint no-console:0 */\n\nimport 'rc-time-picker/assets/index.less';\n\nimport React from 'react';\nimport ReactDom from 'react-dom';\n\nimport moment from 'moment';\n\nimport TimePicker from 'rc-time-picker';\n\nconst showSecond = true;\nconst str = showSecond ? 'HH:mm:ss' : 'HH:mm';\n\nconst now = moment().hour(14).minute(30);\n\nfunction generateOptions(length, excludedOptions) {\n const arr = [];\n for (let value = 0; value < length; value++) {\n if (excludedOptions.indexOf(value) < 0) {\n arr.push(value);\n }\n }\n return arr;\n}\n\nfunction onChange(value) {\n console.log(value && value.format(str));\n}\n\nfunction disabledHours() {\n return [0, 1, 2, 3, 4, 5, 6, 7, 8, 22, 23];\n}\n\nfunction disabledMinutes(h) {\n switch (h) {\n case 9:\n return generateOptions(60, [30]);\n case 21:\n return generateOptions(60, [0]);\n default:\n return generateOptions(60, [0, 30]);\n }\n}\n\nfunction disabledSeconds(h, m) {\n return [h + m % 60];\n}\n\nReactDom.render(\n <TimePicker\n showSecond={showSecond}\n defaultValue={now}\n className=\"xxx\"\n onChange={onChange}\n disabledHours={disabledHours}\n disabledMinutes={disabledMinutes}\n disabledSeconds={disabledSeconds}\n />,\n document.getElementById('__react-content')\n);\n\n\n\n// WEBPACK FOOTER //\n// ./examples/disabled.js"],"sourceRoot":""} \ No newline at end of file | ||
diff --git a/examples/format.html b/examples/format.html index 499c7cd..7d5603d 100644 --- a/examples/format.html +++ b/examples/format.html | |||
@@ -2,7 +2,7 @@ | |||
2 | <html> | 2 | <html> |
3 | 3 | ||
4 | <head> | 4 | <head> |
5 | <title>format.js - example - rc-time-picker@2.4.0</title> | 5 | <title>format.js - example - rc-time-picker@2.4.1</title> |
6 | <meta name="viewport" | 6 | <meta name="viewport" |
7 | content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> | 7 | content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> |
8 | <meta charset="utf-8"/> | 8 | <meta charset="utf-8"/> |
@@ -257,13 +257,13 @@ Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-lic | |||
257 | document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>'); | 257 | document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>'); |
258 | } | 258 | } |
259 | </script> | 259 | </script> |
260 | <link rel="stylesheet" href="common.css" /> | 260 | <link rel="stylesheet" href="../common.css" /> |
261 | </head> | 261 | </head> |
262 | 262 | ||
263 | <body> | 263 | <body> |
264 | <div class="container"> | 264 | <div class="container"> |
265 | <div class="header"> | 265 | <div class="header"> |
266 | <h1>rc-time-picker@2.4.0</h1> | 266 | <h1>rc-time-picker@2.4.1</h1> |
267 | 267 | ||
268 | <p>React TimePicker</p> | 268 | <p>React TimePicker</p> |
269 | </div> | 269 | </div> |
@@ -295,7 +295,7 @@ ReactDom.render( | |||
295 | data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"> | 295 | data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"> |
296 | </a> | 296 | </a> |
297 | <script>FastClick.attach(document.body);</script> | 297 | <script>FastClick.attach(document.body);</script> |
298 | <script src="common.js?nowrap"></script> | 298 | <script src="../common.js?nowrap"></script> |
299 | <script src="format.js?nowrap"></script> | 299 | <script src="format.js?nowrap"></script> |
300 | </body> | 300 | </body> |
301 | 301 | ||
diff --git a/examples/format.js b/examples/format.js index 50bbf2e..d25be45 100644 --- a/examples/format.js +++ b/examples/format.js | |||
@@ -1,50 +1,45 @@ | |||
1 | webpackJsonp([2],{ | 1 | webpackJsonp([4],{ |
2 | |||
3 | /***/ 145: | ||
4 | /***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
5 | |||
6 | "use strict"; | ||
7 | Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); | ||
8 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_rc_time_picker_assets_index_less__ = __webpack_require__(29); | ||
9 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_rc_time_picker_assets_index_less___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_rc_time_picker_assets_index_less__); | ||
10 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react__ = __webpack_require__(5); | ||
11 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react__); | ||
12 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_dom__ = __webpack_require__(8); | ||
13 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_dom___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react_dom__); | ||
14 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_moment__ = __webpack_require__(18); | ||
15 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_moment___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_moment__); | ||
16 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_rc_time_picker__ = __webpack_require__(22); | ||
17 | |||
2 | 18 | ||
3 | /***/ 0: | ||
4 | /***/ (function(module, exports, __webpack_require__) { | ||
5 | 19 | ||
6 | module.exports = __webpack_require__(318); | ||
7 | 20 | ||
8 | 21 | ||
22 | |||
23 | __WEBPACK_IMPORTED_MODULE_2_react_dom___default.a.render(__WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement( | ||
24 | 'div', | ||
25 | null, | ||
26 | __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_4_rc_time_picker__["a" /* default */], { defaultValue: __WEBPACK_IMPORTED_MODULE_3_moment___default()(), showHour: false }), | ||
27 | __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_4_rc_time_picker__["a" /* default */], { defaultValue: __WEBPACK_IMPORTED_MODULE_3_moment___default()(), showMinute: false }), | ||
28 | __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_4_rc_time_picker__["a" /* default */], { defaultValue: __WEBPACK_IMPORTED_MODULE_3_moment___default()(), showSecond: false }), | ||
29 | __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_4_rc_time_picker__["a" /* default */], { defaultValue: __WEBPACK_IMPORTED_MODULE_3_moment___default()(), showMinute: false, showSecond: false }), | ||
30 | __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_4_rc_time_picker__["a" /* default */], { defaultValue: __WEBPACK_IMPORTED_MODULE_3_moment___default()(), showHour: false, showSecond: false }), | ||
31 | __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_4_rc_time_picker__["a" /* default */], { defaultValue: __WEBPACK_IMPORTED_MODULE_3_moment___default()(), showHour: false, showMinute: false }) | ||
32 | ), document.getElementById('__react-content')); | ||
33 | |||
9 | /***/ }), | 34 | /***/ }), |
10 | 35 | ||
11 | /***/ 318: | 36 | /***/ 327: |
12 | /***/ (function(module, exports, __webpack_require__) { | 37 | /***/ (function(module, exports, __webpack_require__) { |
13 | 38 | ||
14 | 'use strict'; | 39 | module.exports = __webpack_require__(145); |
15 | 40 | ||
16 | __webpack_require__(2); | ||
17 | |||
18 | var _react = __webpack_require__(3); | ||
19 | |||
20 | var _react2 = _interopRequireDefault(_react); | ||
21 | |||
22 | var _reactDom = __webpack_require__(38); | ||
23 | |||
24 | var _reactDom2 = _interopRequireDefault(_reactDom); | ||
25 | |||
26 | var _moment = __webpack_require__(184); | ||
27 | |||
28 | var _moment2 = _interopRequireDefault(_moment); | ||
29 | |||
30 | var _rcTimePicker = __webpack_require__(185); | ||
31 | |||
32 | var _rcTimePicker2 = _interopRequireDefault(_rcTimePicker); | ||
33 | |||
34 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
35 | |||
36 | _reactDom2.default.render(_react2.default.createElement( | ||
37 | 'div', | ||
38 | null, | ||
39 | _react2.default.createElement(_rcTimePicker2.default, { defaultValue: (0, _moment2.default)(), showHour: false }), | ||
40 | _react2.default.createElement(_rcTimePicker2.default, { defaultValue: (0, _moment2.default)(), showMinute: false }), | ||
41 | _react2.default.createElement(_rcTimePicker2.default, { defaultValue: (0, _moment2.default)(), showSecond: false }), | ||
42 | _react2.default.createElement(_rcTimePicker2.default, { defaultValue: (0, _moment2.default)(), showMinute: false, showSecond: false }), | ||
43 | _react2.default.createElement(_rcTimePicker2.default, { defaultValue: (0, _moment2.default)(), showHour: false, showSecond: false }), | ||
44 | _react2.default.createElement(_rcTimePicker2.default, { defaultValue: (0, _moment2.default)(), showHour: false, showMinute: false }) | ||
45 | ), document.getElementById('__react-content')); | ||
46 | 41 | ||
47 | /***/ }) | 42 | /***/ }) |
48 | 43 | ||
49 | }); | 44 | },[327]); |
50 | //# sourceMappingURL=format.js.map \ No newline at end of file | 45 | //# sourceMappingURL=format.js.map \ No newline at end of file |
diff --git a/examples/format.js.map b/examples/format.js.map index 7afbc12..06dd1c3 100644 --- a/examples/format.js.map +++ b/examples/format.js.map | |||
@@ -1 +1 @@ | |||
{"version":3,"sources":["webpack:///./examples/format.js"],"names":["render","document","getElementById"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;AAEA,oBAASA,MAAT,CACE;AAAA;AAAA;AACE,2DAAY,cAAc,uBAA1B,EAAoC,UAAU,KAA9C,GADF;AAEE,2DAAY,cAAc,uBAA1B,EAAoC,YAAY,KAAhD,GAFF;AAGE,2DAAY,cAAc,uBAA1B,EAAoC,YAAY,KAAhD,GAHF;AAKE,2DAAY,cAAc,uBAA1B,EAAoC,YAAY,KAAhD,EAAuD,YAAY,KAAnE,GALF;AAME,2DAAY,cAAc,uBAA1B,EAAoC,UAAU,KAA9C,EAAqD,YAAY,KAAjE,GANF;AAOE,2DAAY,cAAc,uBAA1B,EAAoC,UAAU,KAA9C,EAAqD,YAAY,KAAjE;AAPF,EADF,EAUEC,SAASC,cAAT,CAAwB,iBAAxB,CAVF,E","file":"format.js","sourcesContent":["import 'rc-time-picker/assets/index.less';\nimport React from 'react';\nimport ReactDom from 'react-dom';\nimport moment from 'moment';\nimport TimePicker from 'rc-time-picker';\n\nReactDom.render(\n <div>\n <TimePicker defaultValue={moment()} showHour={false} />\n <TimePicker defaultValue={moment()} showMinute={false} />\n <TimePicker defaultValue={moment()} showSecond={false} />\n\n <TimePicker defaultValue={moment()} showMinute={false} showSecond={false} />\n <TimePicker defaultValue={moment()} showHour={false} showSecond={false}/>\n <TimePicker defaultValue={moment()} showHour={false} showMinute={false} />\n </div>\n, document.getElementById('__react-content'));\n\n\n\n// WEBPACK FOOTER //\n// ./examples/format.js"],"sourceRoot":""} \ No newline at end of file | {"version":3,"sources":["webpack:///./examples/format.js"],"names":["ReactDom","render","moment","document","getElementById"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;;AAEA,iDAAAA,CAASC,MAAT,CACE;AAAA;AAAA;AACE,8DAAC,+DAAD,IAAY,cAAc,8CAAAC,EAA1B,EAAoC,UAAU,KAA9C,GADF;AAEE,8DAAC,+DAAD,IAAY,cAAc,8CAAAA,EAA1B,EAAoC,YAAY,KAAhD,GAFF;AAGE,8DAAC,+DAAD,IAAY,cAAc,8CAAAA,EAA1B,EAAoC,YAAY,KAAhD,GAHF;AAKE,8DAAC,+DAAD,IAAY,cAAc,8CAAAA,EAA1B,EAAoC,YAAY,KAAhD,EAAuD,YAAY,KAAnE,GALF;AAME,8DAAC,+DAAD,IAAY,cAAc,8CAAAA,EAA1B,EAAoC,UAAU,KAA9C,EAAqD,YAAY,KAAjE,GANF;AAOE,8DAAC,+DAAD,IAAY,cAAc,8CAAAA,EAA1B,EAAoC,UAAU,KAA9C,EAAqD,YAAY,KAAjE;AAPF,CADF,EAUEC,SAASC,cAAT,CAAwB,iBAAxB,CAVF,E","file":"examples/format.js","sourcesContent":["import 'rc-time-picker/assets/index.less';\nimport React from 'react';\nimport ReactDom from 'react-dom';\nimport moment from 'moment';\nimport TimePicker from 'rc-time-picker';\n\nReactDom.render(\n <div>\n <TimePicker defaultValue={moment()} showHour={false} />\n <TimePicker defaultValue={moment()} showMinute={false} />\n <TimePicker defaultValue={moment()} showSecond={false} />\n\n <TimePicker defaultValue={moment()} showMinute={false} showSecond={false} />\n <TimePicker defaultValue={moment()} showHour={false} showSecond={false}/>\n <TimePicker defaultValue={moment()} showHour={false} showMinute={false} />\n </div>\n, document.getElementById('__react-content'));\n\n\n\n// WEBPACK FOOTER //\n// ./examples/format.js"],"sourceRoot":""} \ No newline at end of file | ||
diff --git a/examples/hidden.html b/examples/hidden.html index d2f3a4f..5083a01 100644 --- a/examples/hidden.html +++ b/examples/hidden.html | |||
@@ -2,7 +2,7 @@ | |||
2 | <html> | 2 | <html> |
3 | 3 | ||
4 | <head> | 4 | <head> |
5 | <title>hidden.js - example - rc-time-picker@2.4.0</title> | 5 | <title>hidden.js - example - rc-time-picker@2.4.1</title> |
6 | <meta name="viewport" | 6 | <meta name="viewport" |
7 | content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> | 7 | content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> |
8 | <meta charset="utf-8"/> | 8 | <meta charset="utf-8"/> |
@@ -257,13 +257,13 @@ Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-lic | |||
257 | document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>'); | 257 | document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>'); |
258 | } | 258 | } |
259 | </script> | 259 | </script> |
260 | <link rel="stylesheet" href="common.css" /> | 260 | <link rel="stylesheet" href="../common.css" /> |
261 | </head> | 261 | </head> |
262 | 262 | ||
263 | <body> | 263 | <body> |
264 | <div class="container"> | 264 | <div class="container"> |
265 | <div class="header"> | 265 | <div class="header"> |
266 | <h1>rc-time-picker@2.4.0</h1> | 266 | <h1>rc-time-picker@2.4.1</h1> |
267 | 267 | ||
268 | <p>React TimePicker</p> | 268 | <p>React TimePicker</p> |
269 | </div> | 269 | </div> |
@@ -310,7 +310,7 @@ ReactDom.render( | |||
310 | data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"> | 310 | data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"> |
311 | </a> | 311 | </a> |
312 | <script>FastClick.attach(document.body);</script> | 312 | <script>FastClick.attach(document.body);</script> |
313 | <script src="common.js?nowrap"></script> | 313 | <script src="../common.js?nowrap"></script> |
314 | <script src="hidden.js?nowrap"></script> | 314 | <script src="hidden.js?nowrap"></script> |
315 | </body> | 315 | </body> |
316 | 316 | ||
diff --git a/examples/hidden.js b/examples/hidden.js index c54be52..0c5b5c0 100644 --- a/examples/hidden.js +++ b/examples/hidden.js | |||
@@ -1,63 +1,62 @@ | |||
1 | webpackJsonp([3],{ | 1 | webpackJsonp([3],{ |
2 | 2 | ||
3 | /***/ 0: | 3 | /***/ 146: |
4 | /***/ (function(module, exports, __webpack_require__) { | 4 | /***/ (function(module, __webpack_exports__, __webpack_require__) { |
5 | |||
6 | "use strict"; | ||
7 | Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); | ||
8 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_rc_time_picker_assets_index_less__ = __webpack_require__(29); | ||
9 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_rc_time_picker_assets_index_less___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_rc_time_picker_assets_index_less__); | ||
10 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react__ = __webpack_require__(5); | ||
11 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react__); | ||
12 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_dom__ = __webpack_require__(8); | ||
13 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_dom___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react_dom__); | ||
14 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_moment__ = __webpack_require__(18); | ||
15 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_moment___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_moment__); | ||
16 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_rc_time_picker__ = __webpack_require__(22); | ||
17 | /* eslint no-console:0 */ | ||
18 | |||
19 | |||
20 | |||
21 | |||
22 | |||
5 | 23 | ||
6 | module.exports = __webpack_require__(319); | ||
7 | 24 | ||
8 | 25 | ||
26 | |||
27 | |||
28 | var showSecond = true; | ||
29 | var str = showSecond ? 'HH:mm:ss' : 'HH:mm'; | ||
30 | |||
31 | function onChange(value) { | ||
32 | console.log(value && value.format(str)); | ||
33 | } | ||
34 | |||
35 | __WEBPACK_IMPORTED_MODULE_2_react_dom___default.a.render(__WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_4_rc_time_picker__["a" /* default */], { | ||
36 | format: str, | ||
37 | showSecond: showSecond | ||
38 | // use to control utfOffset, locale, default open value | ||
39 | , defaultOpenValue: __WEBPACK_IMPORTED_MODULE_3_moment___default()(), | ||
40 | className: 'xxx', | ||
41 | onChange: onChange, | ||
42 | disabledHours: function disabledHours() { | ||
43 | return [0, 1, 2, 3, 4, 5, 6, 7, 8, 22, 23]; | ||
44 | }, | ||
45 | disabledMinutes: function disabledMinutes() { | ||
46 | return [0, 2, 4, 6, 8]; | ||
47 | }, | ||
48 | hideDisabledOptions: true | ||
49 | }), document.getElementById('__react-content')); | ||
50 | |||
9 | /***/ }), | 51 | /***/ }), |
10 | 52 | ||
11 | /***/ 319: | 53 | /***/ 328: |
12 | /***/ (function(module, exports, __webpack_require__) { | 54 | /***/ (function(module, exports, __webpack_require__) { |
13 | 55 | ||
14 | 'use strict'; | 56 | module.exports = __webpack_require__(146); |
15 | 57 | ||
16 | __webpack_require__(2); | ||
17 | |||
18 | var _react = __webpack_require__(3); | ||
19 | |||
20 | var _react2 = _interopRequireDefault(_react); | ||
21 | |||
22 | var _reactDom = __webpack_require__(38); | ||
23 | |||
24 | var _reactDom2 = _interopRequireDefault(_reactDom); | ||
25 | |||
26 | var _moment = __webpack_require__(184); | ||
27 | |||
28 | var _moment2 = _interopRequireDefault(_moment); | ||
29 | |||
30 | var _rcTimePicker = __webpack_require__(185); | ||
31 | |||
32 | var _rcTimePicker2 = _interopRequireDefault(_rcTimePicker); | ||
33 | |||
34 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
35 | |||
36 | var showSecond = true; /* eslint no-console:0 */ | ||
37 | |||
38 | var str = showSecond ? 'HH:mm:ss' : 'HH:mm'; | ||
39 | |||
40 | function onChange(value) { | ||
41 | console.log(value && value.format(str)); | ||
42 | } | ||
43 | |||
44 | _reactDom2.default.render(_react2.default.createElement(_rcTimePicker2.default, { | ||
45 | format: str, | ||
46 | showSecond: showSecond | ||
47 | // use to control utfOffset, locale, default open value | ||
48 | , defaultOpenValue: (0, _moment2.default)(), | ||
49 | className: 'xxx', | ||
50 | onChange: onChange, | ||
51 | disabledHours: function disabledHours() { | ||
52 | return [0, 1, 2, 3, 4, 5, 6, 7, 8, 22, 23]; | ||
53 | }, | ||
54 | disabledMinutes: function disabledMinutes() { | ||
55 | return [0, 2, 4, 6, 8]; | ||
56 | }, | ||
57 | hideDisabledOptions: true | ||
58 | }), document.getElementById('__react-content')); | ||
59 | 58 | ||
60 | /***/ }) | 59 | /***/ }) |
61 | 60 | ||
62 | }); | 61 | },[328]); |
63 | //# sourceMappingURL=hidden.js.map \ No newline at end of file | 62 | //# sourceMappingURL=hidden.js.map \ No newline at end of file |
diff --git a/examples/hidden.js.map b/examples/hidden.js.map index bb40719..172bb25 100644 --- a/examples/hidden.js.map +++ b/examples/hidden.js.map | |||
@@ -1 +1 @@ | |||
{"version":3,"sources":["webpack:///./examples/hidden.js"],"names":["showSecond","str","onChange","value","console","log","format","render","document","getElementById"],"mappings":";;;;;;;;;;;;;;;AAEA;;AAEA;;;;AACA;;;;AAEA;;;;AAEA;;;;;;AAEA,KAAMA,aAAa,IAAnB,C,CAXA;;AAYA,KAAMC,MAAMD,aAAa,UAAb,GAA0B,OAAtC;;AAEA,UAASE,QAAT,CAAkBC,KAAlB,EAAyB;AACvBC,WAAQC,GAAR,CAAYF,SAASA,MAAMG,MAAN,CAAaL,GAAb,CAArB;AACD;;AAED,oBAASM,MAAT,CACE;AACE,WAAQN,GADV;AAEE,eAAYD;AACZ;AAHF,KAIE,kBAAkB,uBAJpB;AAKE,cAAU,KALZ;AAME,aAAUE,QANZ;AAOE,kBAAe;AAAA,YAAM,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,EAA5B,EAAgC,EAAhC,CAAN;AAAA,IAPjB;AAQE,oBAAiB;AAAA,YAAM,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAN;AAAA,IARnB;AASE;AATF,GADF,EAYEM,SAASC,cAAT,CAAwB,iBAAxB,CAZF,E","file":"hidden.js","sourcesContent":["/* eslint no-console:0 */\n\nimport 'rc-time-picker/assets/index.less';\n\nimport React from 'react';\nimport ReactDom from 'react-dom';\n\nimport moment from 'moment';\n\nimport TimePicker from 'rc-time-picker';\n\nconst showSecond = true;\nconst str = showSecond ? 'HH:mm:ss' : 'HH:mm';\n\nfunction onChange(value) {\n console.log(value && value.format(str));\n}\n\nReactDom.render(\n <TimePicker\n format={str}\n showSecond={showSecond}\n // use to control utfOffset, locale, default open value\n defaultOpenValue={moment()}\n className=\"xxx\"\n onChange={onChange}\n disabledHours={() => [0, 1, 2, 3, 4, 5, 6, 7, 8, 22, 23]}\n disabledMinutes={() => [0, 2, 4, 6, 8]}\n hideDisabledOptions\n />,\n document.getElementById('__react-content')\n);\n\n\n\n// WEBPACK FOOTER //\n// ./examples/hidden.js"],"sourceRoot":""} \ No newline at end of file | {"version":3,"sources":["webpack:///./examples/hidden.js"],"names":["showSecond","str","onChange","value","console","log","format","ReactDom","render","moment","document","getElementById"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,IAAMA,aAAa,IAAnB;AACA,IAAMC,MAAMD,aAAa,UAAb,GAA0B,OAAtC;;AAEA,SAASE,QAAT,CAAkBC,KAAlB,EAAyB;AACvBC,UAAQC,GAAR,CAAYF,SAASA,MAAMG,MAAN,CAAaL,GAAb,CAArB;AACD;;AAED,iDAAAM,CAASC,MAAT,CACE,4DAAC,+DAAD;AACE,UAAQP,GADV;AAEE,cAAYD;AACZ;AAHF,IAIE,kBAAkB,8CAAAS,EAJpB;AAKE,aAAU,KALZ;AAME,YAAUP,QANZ;AAOE,iBAAe;AAAA,WAAM,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,EAA5B,EAAgC,EAAhC,CAAN;AAAA,GAPjB;AAQE,mBAAiB;AAAA,WAAM,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAN;AAAA,GARnB;AASE;AATF,EADF,EAYEQ,SAASC,cAAT,CAAwB,iBAAxB,CAZF,E","file":"examples/hidden.js","sourcesContent":["/* eslint no-console:0 */\n\nimport 'rc-time-picker/assets/index.less';\n\nimport React from 'react';\nimport ReactDom from 'react-dom';\n\nimport moment from 'moment';\n\nimport TimePicker from 'rc-time-picker';\n\nconst showSecond = true;\nconst str = showSecond ? 'HH:mm:ss' : 'HH:mm';\n\nfunction onChange(value) {\n console.log(value && value.format(str));\n}\n\nReactDom.render(\n <TimePicker\n format={str}\n showSecond={showSecond}\n // use to control utfOffset, locale, default open value\n defaultOpenValue={moment()}\n className=\"xxx\"\n onChange={onChange}\n disabledHours={() => [0, 1, 2, 3, 4, 5, 6, 7, 8, 22, 23]}\n disabledMinutes={() => [0, 2, 4, 6, 8]}\n hideDisabledOptions\n />,\n document.getElementById('__react-content')\n);\n\n\n\n// WEBPACK FOOTER //\n// ./examples/hidden.js"],"sourceRoot":""} \ No newline at end of file | ||
diff --git a/examples/open.html b/examples/open.html index 4f84526..964e0d3 100644 --- a/examples/open.html +++ b/examples/open.html | |||
@@ -2,7 +2,7 @@ | |||
2 | <html> | 2 | <html> |
3 | 3 | ||
4 | <head> | 4 | <head> |
5 | <title>open.js - example - rc-time-picker@2.4.0</title> | 5 | <title>open.js - example - rc-time-picker@2.4.1</title> |
6 | <meta name="viewport" | 6 | <meta name="viewport" |
7 | content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> | 7 | content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> |
8 | <meta charset="utf-8"/> | 8 | <meta charset="utf-8"/> |
@@ -257,13 +257,13 @@ Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-lic | |||
257 | document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>'); | 257 | document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>'); |
258 | } | 258 | } |
259 | </script> | 259 | </script> |
260 | <link rel="stylesheet" href="common.css" /> | 260 | <link rel="stylesheet" href="../common.css" /> |
261 | </head> | 261 | </head> |
262 | 262 | ||
263 | <body> | 263 | <body> |
264 | <div class="container"> | 264 | <div class="container"> |
265 | <div class="header"> | 265 | <div class="header"> |
266 | <h1>rc-time-picker@2.4.0</h1> | 266 | <h1>rc-time-picker@2.4.1</h1> |
267 | 267 | ||
268 | <p>React TimePicker</p> | 268 | <p>React TimePicker</p> |
269 | </div> | 269 | </div> |
@@ -312,7 +312,7 @@ ReactDom.render( | |||
312 | data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"> | 312 | data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"> |
313 | </a> | 313 | </a> |
314 | <script>FastClick.attach(document.body);</script> | 314 | <script>FastClick.attach(document.body);</script> |
315 | <script src="common.js?nowrap"></script> | 315 | <script src="../common.js?nowrap"></script> |
316 | <script src="open.js?nowrap"></script> | 316 | <script src="open.js?nowrap"></script> |
317 | </body> | 317 | </body> |
318 | 318 | ||
diff --git a/examples/open.js b/examples/open.js index 479e190..e991685 100644 --- a/examples/open.js +++ b/examples/open.js | |||
@@ -1,92 +1,94 @@ | |||
1 | webpackJsonp([4],{ | 1 | webpackJsonp([2],{ |
2 | |||
3 | /***/ 147: | ||
4 | /***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
5 | |||
6 | "use strict"; | ||
7 | Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); | ||
8 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__ = __webpack_require__(13); | ||
9 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__); | ||
10 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__ = __webpack_require__(23); | ||
11 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__); | ||
12 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(15); | ||
13 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__); | ||
14 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__ = __webpack_require__(14); | ||
15 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__); | ||
16 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_rc_time_picker_assets_index_less__ = __webpack_require__(29); | ||
17 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_rc_time_picker_assets_index_less___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_rc_time_picker_assets_index_less__); | ||
18 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react__ = __webpack_require__(5); | ||
19 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react__); | ||
20 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react_dom__ = __webpack_require__(8); | ||
21 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react_dom___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react_dom__); | ||
22 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_rc_time_picker__ = __webpack_require__(22); | ||
23 | |||
24 | |||
25 | |||
26 | |||
27 | /* eslint no-console:0 */ | ||
28 | |||
29 | |||
30 | |||
31 | |||
2 | 32 | ||
3 | /***/ 0: | ||
4 | /***/ (function(module, exports, __webpack_require__) { | ||
5 | 33 | ||
6 | module.exports = __webpack_require__(320); | ||
7 | 34 | ||
35 | var App = function (_React$Component) { | ||
36 | __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(App, _React$Component); | ||
37 | |||
38 | function App() { | ||
39 | var _ref; | ||
40 | |||
41 | var _temp, _this, _ret; | ||
42 | |||
43 | __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default()(this, App); | ||
44 | |||
45 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { | ||
46 | args[_key] = arguments[_key]; | ||
47 | } | ||
48 | |||
49 | return _ret = (_temp = (_this = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, (_ref = App.__proto__ || Object.getPrototypeOf(App)).call.apply(_ref, [this].concat(args))), _this), _this.state = { | ||
50 | open: false | ||
51 | }, _this.setOpen = function (_ref2) { | ||
52 | var open = _ref2.open; | ||
53 | |||
54 | _this.setState({ open: open }); | ||
55 | }, _this.toggleOpen = function () { | ||
56 | _this.setState({ | ||
57 | open: !_this.state.open | ||
58 | }); | ||
59 | }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret); | ||
60 | } | ||
61 | |||
62 | __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default()(App, [{ | ||
63 | key: 'render', | ||
64 | value: function render() { | ||
65 | return __WEBPACK_IMPORTED_MODULE_5_react___default.a.createElement( | ||
66 | 'div', | ||
67 | null, | ||
68 | __WEBPACK_IMPORTED_MODULE_5_react___default.a.createElement( | ||
69 | 'button', | ||
70 | { onClick: this.toggleOpen }, | ||
71 | 'Toggle open' | ||
72 | ), | ||
73 | __WEBPACK_IMPORTED_MODULE_5_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_7_rc_time_picker__["a" /* default */], { open: this.state.open, onOpen: this.setOpen, onClose: this.setOpen }) | ||
74 | ); | ||
75 | } | ||
76 | }]); | ||
77 | |||
78 | return App; | ||
79 | }(__WEBPACK_IMPORTED_MODULE_5_react___default.a.Component); | ||
80 | |||
81 | __WEBPACK_IMPORTED_MODULE_6_react_dom___default.a.render(__WEBPACK_IMPORTED_MODULE_5_react___default.a.createElement(App, null), document.getElementById('__react-content')); | ||
8 | 82 | ||
9 | /***/ }), | 83 | /***/ }), |
10 | 84 | ||
11 | /***/ 320: | 85 | /***/ 329: |
12 | /***/ (function(module, exports, __webpack_require__) { | 86 | /***/ (function(module, exports, __webpack_require__) { |
13 | 87 | ||
14 | 'use strict'; | 88 | module.exports = __webpack_require__(147); |
15 | 89 | ||
16 | var _classCallCheck2 = __webpack_require__(188); | ||
17 | |||
18 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | ||
19 | |||
20 | var _possibleConstructorReturn2 = __webpack_require__(189); | ||
21 | |||
22 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); | ||
23 | |||
24 | var _inherits2 = __webpack_require__(258); | ||
25 | |||
26 | var _inherits3 = _interopRequireDefault(_inherits2); | ||
27 | |||
28 | __webpack_require__(2); | ||
29 | |||
30 | var _react = __webpack_require__(3); | ||
31 | |||
32 | var _react2 = _interopRequireDefault(_react); | ||
33 | |||
34 | var _reactDom = __webpack_require__(38); | ||
35 | |||
36 | var _reactDom2 = _interopRequireDefault(_reactDom); | ||
37 | |||
38 | var _rcTimePicker = __webpack_require__(185); | ||
39 | |||
40 | var _rcTimePicker2 = _interopRequireDefault(_rcTimePicker); | ||
41 | |||
42 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
43 | |||
44 | /* eslint no-console:0 */ | ||
45 | |||
46 | var App = function (_React$Component) { | ||
47 | (0, _inherits3.default)(App, _React$Component); | ||
48 | |||
49 | function App() { | ||
50 | var _temp, _this, _ret; | ||
51 | |||
52 | (0, _classCallCheck3.default)(this, App); | ||
53 | |||
54 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { | ||
55 | args[_key] = arguments[_key]; | ||
56 | } | ||
57 | |||
58 | return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = { | ||
59 | open: false | ||
60 | }, _this.setOpen = function (_ref) { | ||
61 | var open = _ref.open; | ||
62 | |||
63 | _this.setState({ open: open }); | ||
64 | }, _this.toggleOpen = function () { | ||
65 | _this.setState({ | ||
66 | open: !_this.state.open | ||
67 | }); | ||
68 | }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret); | ||
69 | } | ||
70 | |||
71 | App.prototype.render = function render() { | ||
72 | return _react2.default.createElement( | ||
73 | 'div', | ||
74 | null, | ||
75 | _react2.default.createElement( | ||
76 | 'button', | ||
77 | { onClick: this.toggleOpen }, | ||
78 | 'Toggle open' | ||
79 | ), | ||
80 | _react2.default.createElement(_rcTimePicker2.default, { open: this.state.open, onOpen: this.setOpen, onClose: this.setOpen }) | ||
81 | ); | ||
82 | }; | ||
83 | |||
84 | return App; | ||
85 | }(_react2.default.Component); | ||
86 | |||
87 | _reactDom2.default.render(_react2.default.createElement(App, null), document.getElementById('__react-content')); | ||
88 | 90 | ||
89 | /***/ }) | 91 | /***/ }) |
90 | 92 | ||
91 | }); | 93 | },[329]); |
92 | //# sourceMappingURL=open.js.map \ No newline at end of file | 94 | //# sourceMappingURL=open.js.map \ No newline at end of file |
diff --git a/examples/open.js.map b/examples/open.js.map index d790d5b..d76e8e6 100644 --- a/examples/open.js.map +++ b/examples/open.js.map | |||
@@ -1 +1 @@ | |||
{"version":3,"sources":["webpack:///./examples/open.js"],"names":["App","state","open","setOpen","setState","toggleOpen","render","Component","document","getElementById"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;AAEA;;;;AACA;;;;AACA;;;;;;AANA;;KAQMA,G;;;;;;;;;;;;uKACJC,K,GAAQ;AACNC,aAAM;AADA,M,QAGRC,O,GAAU,gBAAc;AAAA,WAAXD,IAAW,QAAXA,IAAW;;AACtB,aAAKE,QAAL,CAAc,EAAEF,UAAF,EAAd;AACD,M,QACDG,U,GAAa,YAAM;AACjB,aAAKD,QAAL,CAAc;AACZF,eAAM,CAAC,MAAKD,KAAL,CAAWC;AADN,QAAd;AAGD,M;;;iBACDI,M,qBAAS;AACP,YACE;AAAA;AAAA;AACE;AAAA;AAAA,WAAQ,SAAS,KAAKD,UAAtB;AAAA;AAAA,QADF;AAEE,+DAAY,MAAM,KAAKJ,KAAL,CAAWC,IAA7B,EAAmC,QAAQ,KAAKC,OAAhD,EAAyD,SAAS,KAAKA,OAAvE;AAFF,MADF;AAMD,I;;;GAnBe,gBAAMI,S;;AAsBxB,oBAASD,MAAT,CACE,8BAAC,GAAD,OADF,EAEEE,SAASC,cAAT,CAAwB,iBAAxB,CAFF,E","file":"open.js","sourcesContent":["/* eslint no-console:0 */\n\nimport 'rc-time-picker/assets/index.less';\n\nimport React from 'react';\nimport ReactDom from 'react-dom';\nimport TimePicker from 'rc-time-picker';\n\nclass App extends React.Component {\n state = {\n open: false,\n };\n setOpen = ({ open }) => {\n this.setState({ open });\n }\n toggleOpen = () => {\n this.setState({\n open: !this.state.open,\n });\n }\n render() {\n return (\n <div>\n <button onClick={this.toggleOpen}>Toggle open</button>\n <TimePicker open={this.state.open} onOpen={this.setOpen} onClose={this.setOpen} />\n </div>\n );\n }\n}\n\nReactDom.render(\n <App />,\n document.getElementById('__react-content')\n);\n\n\n\n// WEBPACK FOOTER //\n// ./examples/open.js"],"sourceRoot":""} \ No newline at end of file | {"version":3,"sources":["webpack:///./examples/open.js"],"names":["App","state","open","setOpen","setState","toggleOpen","React","Component","ReactDom","render","document","getElementById"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AAEA;AACA;AACA;;IAEMA,G;;;;;;;;;;;;;;6OACJC,K,GAAQ;AACNC,YAAM;AADA,K,QAGRC,O,GAAU,iBAAc;AAAA,UAAXD,IAAW,SAAXA,IAAW;;AACtB,YAAKE,QAAL,CAAc,EAAEF,UAAF,EAAd;AACD,K,QACDG,U,GAAa,YAAM;AACjB,YAAKD,QAAL,CAAc;AACZF,cAAM,CAAC,MAAKD,KAAL,CAAWC;AADN,OAAd;AAGD,K;;;;;6BACQ;AACP,aACE;AAAA;AAAA;AACE;AAAA;AAAA,YAAQ,SAAS,KAAKG,UAAtB;AAAA;AAAA,SADF;AAEE,oEAAC,+DAAD,IAAY,MAAM,KAAKJ,KAAL,CAAWC,IAA7B,EAAmC,QAAQ,KAAKC,OAAhD,EAAyD,SAAS,KAAKA,OAAvE;AAFF,OADF;AAMD;;;;EAnBe,6CAAAG,CAAMC,S;;AAsBxB,iDAAAC,CAASC,MAAT,CACE,4DAAC,GAAD,OADF,EAEEC,SAASC,cAAT,CAAwB,iBAAxB,CAFF,E","file":"examples/open.js","sourcesContent":["/* eslint no-console:0 */\n\nimport 'rc-time-picker/assets/index.less';\n\nimport React from 'react';\nimport ReactDom from 'react-dom';\nimport TimePicker from 'rc-time-picker';\n\nclass App extends React.Component {\n state = {\n open: false,\n };\n setOpen = ({ open }) => {\n this.setState({ open });\n }\n toggleOpen = () => {\n this.setState({\n open: !this.state.open,\n });\n }\n render() {\n return (\n <div>\n <button onClick={this.toggleOpen}>Toggle open</button>\n <TimePicker open={this.state.open} onOpen={this.setOpen} onClose={this.setOpen} />\n </div>\n );\n }\n}\n\nReactDom.render(\n <App />,\n document.getElementById('__react-content')\n);\n\n\n\n// WEBPACK FOOTER //\n// ./examples/open.js"],"sourceRoot":""} \ No newline at end of file | ||
diff --git a/examples/pick-time.html b/examples/pick-time.html index 52ef569..027afe7 100644 --- a/examples/pick-time.html +++ b/examples/pick-time.html | |||
@@ -2,7 +2,7 @@ | |||
2 | <html> | 2 | <html> |
3 | 3 | ||
4 | <head> | 4 | <head> |
5 | <title>pick-time.js - example - rc-time-picker@2.4.0</title> | 5 | <title>pick-time.js - example - rc-time-picker@2.4.1</title> |
6 | <meta name="viewport" | 6 | <meta name="viewport" |
7 | content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> | 7 | content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> |
8 | <meta charset="utf-8"/> | 8 | <meta charset="utf-8"/> |
@@ -257,13 +257,13 @@ Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-lic | |||
257 | document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>'); | 257 | document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>'); |
258 | } | 258 | } |
259 | </script> | 259 | </script> |
260 | <link rel="stylesheet" href="common.css" /> | 260 | <link rel="stylesheet" href="../common.css" /> |
261 | </head> | 261 | </head> |
262 | 262 | ||
263 | <body> | 263 | <body> |
264 | <div class="container"> | 264 | <div class="container"> |
265 | <div class="header"> | 265 | <div class="header"> |
266 | <h1>rc-time-picker@2.4.0</h1> | 266 | <h1>rc-time-picker@2.4.1</h1> |
267 | 267 | ||
268 | <p>React TimePicker</p> | 268 | <p>React TimePicker</p> |
269 | </div> | 269 | </div> |
@@ -307,7 +307,7 @@ ReactDom.render( | |||
307 | data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"> | 307 | data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"> |
308 | </a> | 308 | </a> |
309 | <script>FastClick.attach(document.body);</script> | 309 | <script>FastClick.attach(document.body);</script> |
310 | <script src="common.js?nowrap"></script> | 310 | <script src="../common.js?nowrap"></script> |
311 | <script src="pick-time.js?nowrap"></script> | 311 | <script src="pick-time.js?nowrap"></script> |
312 | </body> | 312 | </body> |
313 | 313 | ||
diff --git a/examples/pick-time.js b/examples/pick-time.js index d5d7aad..c3a2541 100644 --- a/examples/pick-time.js +++ b/examples/pick-time.js | |||
@@ -1,55 +1,54 @@ | |||
1 | webpackJsonp([5],{ | 1 | webpackJsonp([1],{ |
2 | |||
3 | /***/ 148: | ||
4 | /***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
5 | |||
6 | "use strict"; | ||
7 | Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); | ||
8 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_rc_time_picker_assets_index_less__ = __webpack_require__(29); | ||
9 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_rc_time_picker_assets_index_less___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_rc_time_picker_assets_index_less__); | ||
10 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react__ = __webpack_require__(5); | ||
11 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react__); | ||
12 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_dom__ = __webpack_require__(8); | ||
13 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_dom___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react_dom__); | ||
14 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_moment__ = __webpack_require__(18); | ||
15 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_moment___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_moment__); | ||
16 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_rc_time_picker__ = __webpack_require__(22); | ||
17 | /* eslint no-console:0 */ | ||
18 | |||
19 | |||
20 | |||
21 | |||
2 | 22 | ||
3 | /***/ 0: | ||
4 | /***/ (function(module, exports, __webpack_require__) { | ||
5 | 23 | ||
6 | module.exports = __webpack_require__(321); | ||
7 | 24 | ||
8 | 25 | ||
26 | |||
27 | |||
28 | var showSecond = true; | ||
29 | var str = showSecond ? 'HH:mm:ss' : 'HH:mm'; | ||
30 | |||
31 | function onChange(value) { | ||
32 | console.log(value && value.format(str)); | ||
33 | } | ||
34 | |||
35 | __WEBPACK_IMPORTED_MODULE_2_react_dom___default.a.render(__WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_4_rc_time_picker__["a" /* default */], { | ||
36 | style: { width: 100 }, | ||
37 | showSecond: showSecond, | ||
38 | defaultValue: __WEBPACK_IMPORTED_MODULE_3_moment___default()(), | ||
39 | className: 'xxx', | ||
40 | onChange: onChange | ||
41 | }), document.getElementById('__react-content')); | ||
42 | |||
9 | /***/ }), | 43 | /***/ }), |
10 | 44 | ||
11 | /***/ 321: | 45 | /***/ 330: |
12 | /***/ (function(module, exports, __webpack_require__) { | 46 | /***/ (function(module, exports, __webpack_require__) { |
13 | 47 | ||
14 | 'use strict'; | 48 | module.exports = __webpack_require__(148); |
15 | 49 | ||
16 | __webpack_require__(2); | ||
17 | |||
18 | var _react = __webpack_require__(3); | ||
19 | |||
20 | var _react2 = _interopRequireDefault(_react); | ||
21 | |||
22 | var _reactDom = __webpack_require__(38); | ||
23 | |||
24 | var _reactDom2 = _interopRequireDefault(_reactDom); | ||
25 | |||
26 | var _moment = __webpack_require__(184); | ||
27 | |||
28 | var _moment2 = _interopRequireDefault(_moment); | ||
29 | |||
30 | var _rcTimePicker = __webpack_require__(185); | ||
31 | |||
32 | var _rcTimePicker2 = _interopRequireDefault(_rcTimePicker); | ||
33 | |||
34 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
35 | |||
36 | var showSecond = true; /* eslint no-console:0 */ | ||
37 | |||
38 | var str = showSecond ? 'HH:mm:ss' : 'HH:mm'; | ||
39 | |||
40 | function onChange(value) { | ||
41 | console.log(value && value.format(str)); | ||
42 | } | ||
43 | |||
44 | _reactDom2.default.render(_react2.default.createElement(_rcTimePicker2.default, { | ||
45 | style: { width: 100 }, | ||
46 | showSecond: showSecond, | ||
47 | defaultValue: (0, _moment2.default)(), | ||
48 | className: 'xxx', | ||
49 | onChange: onChange | ||
50 | }), document.getElementById('__react-content')); | ||
51 | 50 | ||
52 | /***/ }) | 51 | /***/ }) |
53 | 52 | ||
54 | }); | 53 | },[330]); |
55 | //# sourceMappingURL=pick-time.js.map \ No newline at end of file | 54 | //# sourceMappingURL=pick-time.js.map \ No newline at end of file |
diff --git a/examples/pick-time.js.map b/examples/pick-time.js.map index 15db4dd..26982ea 100644 --- a/examples/pick-time.js.map +++ b/examples/pick-time.js.map | |||
@@ -1 +1 @@ | |||
{"version":3,"sources":["webpack:///./examples/pick-time.js"],"names":["showSecond","str","onChange","value","console","log","format","render","width","document","getElementById"],"mappings":";;;;;;;;;;;;;;;AAEA;;AAEA;;;;AACA;;;;AAEA;;;;AAEA;;;;;;AAEA,KAAMA,aAAa,IAAnB,C,CAXA;;AAYA,KAAMC,MAAMD,aAAa,UAAb,GAA0B,OAAtC;;AAGA,UAASE,QAAT,CAAkBC,KAAlB,EAAyB;AACvBC,WAAQC,GAAR,CAAYF,SAASA,MAAMG,MAAN,CAAaL,GAAb,CAArB;AACD;;AAED,oBAASM,MAAT,CACE;AACE,UAAO,EAAEC,OAAO,GAAT,EADT;AAEE,eAAYR,UAFd;AAGE,iBAAc,uBAHhB;AAIE,cAAU,KAJZ;AAKE,aAAUE;AALZ,GADF,EAQEO,SAASC,cAAT,CAAwB,iBAAxB,CARF,E","file":"pick-time.js","sourcesContent":["/* eslint no-console:0 */\n\nimport 'rc-time-picker/assets/index.less';\n\nimport React from 'react';\nimport ReactDom from 'react-dom';\n\nimport moment from 'moment';\n\nimport TimePicker from 'rc-time-picker';\n\nconst showSecond = true;\nconst str = showSecond ? 'HH:mm:ss' : 'HH:mm';\n\n\nfunction onChange(value) {\n console.log(value && value.format(str));\n}\n\nReactDom.render(\n <TimePicker\n style={{ width: 100 }}\n showSecond={showSecond}\n defaultValue={moment()}\n className=\"xxx\"\n onChange={onChange}\n />,\n document.getElementById('__react-content')\n);\n\n\n\n// WEBPACK FOOTER //\n// ./examples/pick-time.js"],"sourceRoot":""} \ No newline at end of file | {"version":3,"sources":["webpack:///./examples/pick-time.js"],"names":["showSecond","str","onChange","value","console","log","format","ReactDom","render","width","moment","document","getElementById"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,IAAMA,aAAa,IAAnB;AACA,IAAMC,MAAMD,aAAa,UAAb,GAA0B,OAAtC;;AAGA,SAASE,QAAT,CAAkBC,KAAlB,EAAyB;AACvBC,UAAQC,GAAR,CAAYF,SAASA,MAAMG,MAAN,CAAaL,GAAb,CAArB;AACD;;AAED,iDAAAM,CAASC,MAAT,CACE,4DAAC,+DAAD;AACE,SAAO,EAAEC,OAAO,GAAT,EADT;AAEE,cAAYT,UAFd;AAGE,gBAAc,8CAAAU,EAHhB;AAIE,aAAU,KAJZ;AAKE,YAAUR;AALZ,EADF,EAQES,SAASC,cAAT,CAAwB,iBAAxB,CARF,E","file":"examples/pick-time.js","sourcesContent":["/* eslint no-console:0 */\n\nimport 'rc-time-picker/assets/index.less';\n\nimport React from 'react';\nimport ReactDom from 'react-dom';\n\nimport moment from 'moment';\n\nimport TimePicker from 'rc-time-picker';\n\nconst showSecond = true;\nconst str = showSecond ? 'HH:mm:ss' : 'HH:mm';\n\n\nfunction onChange(value) {\n console.log(value && value.format(str));\n}\n\nReactDom.render(\n <TimePicker\n style={{ width: 100 }}\n showSecond={showSecond}\n defaultValue={moment()}\n className=\"xxx\"\n onChange={onChange}\n />,\n document.getElementById('__react-content')\n);\n\n\n\n// WEBPACK FOOTER //\n// ./examples/pick-time.js"],"sourceRoot":""} \ No newline at end of file | ||
diff --git a/examples/value-and-defaultValue.html b/examples/value-and-defaultValue.html index a89ba31..ce0b44f 100644 --- a/examples/value-and-defaultValue.html +++ b/examples/value-and-defaultValue.html | |||
@@ -2,7 +2,7 @@ | |||
2 | <html> | 2 | <html> |
3 | 3 | ||
4 | <head> | 4 | <head> |
5 | <title>value-and-defaultValue.js - example - rc-time-picker@2.4.0</title> | 5 | <title>value-and-defaultValue.js - example - rc-time-picker@2.4.1</title> |
6 | <meta name="viewport" | 6 | <meta name="viewport" |
7 | content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> | 7 | content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> |
8 | <meta charset="utf-8"/> | 8 | <meta charset="utf-8"/> |
@@ -257,13 +257,13 @@ Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-lic | |||
257 | document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>'); | 257 | document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>'); |
258 | } | 258 | } |
259 | </script> | 259 | </script> |
260 | <link rel="stylesheet" href="common.css" /> | 260 | <link rel="stylesheet" href="../common.css" /> |
261 | </head> | 261 | </head> |
262 | 262 | ||
263 | <body> | 263 | <body> |
264 | <div class="container"> | 264 | <div class="container"> |
265 | <div class="header"> | 265 | <div class="header"> |
266 | <h1>rc-time-picker@2.4.0</h1> | 266 | <h1>rc-time-picker@2.4.1</h1> |
267 | 267 | ||
268 | <p>React TimePicker</p> | 268 | <p>React TimePicker</p> |
269 | </div> | 269 | </div> |
@@ -321,7 +321,7 @@ ReactDom.render( | |||
321 | data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"> | 321 | data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"> |
322 | </a> | 322 | </a> |
323 | <script>FastClick.attach(document.body);</script> | 323 | <script>FastClick.attach(document.body);</script> |
324 | <script src="common.js?nowrap"></script> | 324 | <script src="../common.js?nowrap"></script> |
325 | <script src="value-and-defaultValue.js?nowrap"></script> | 325 | <script src="value-and-defaultValue.js?nowrap"></script> |
326 | </body> | 326 | </body> |
327 | 327 | ||
diff --git a/examples/value-and-defaultValue.js b/examples/value-and-defaultValue.js index 48c85cf..4668310 100644 --- a/examples/value-and-defaultValue.js +++ b/examples/value-and-defaultValue.js | |||
@@ -1,100 +1,103 @@ | |||
1 | webpackJsonp([6],{ | 1 | webpackJsonp([0],{ |
2 | |||
3 | /***/ 149: | ||
4 | /***/ (function(module, __webpack_exports__, __webpack_require__) { | ||
5 | |||
6 | "use strict"; | ||
7 | Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); | ||
8 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__ = __webpack_require__(13); | ||
9 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__); | ||
10 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__ = __webpack_require__(23); | ||
11 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__); | ||
12 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(15); | ||
13 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__); | ||
14 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__ = __webpack_require__(14); | ||
15 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__); | ||
16 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_rc_time_picker_assets_index_less__ = __webpack_require__(29); | ||
17 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_rc_time_picker_assets_index_less___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_rc_time_picker_assets_index_less__); | ||
18 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react__ = __webpack_require__(5); | ||
19 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react__); | ||
20 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react_dom__ = __webpack_require__(8); | ||
21 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react_dom___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react_dom__); | ||
22 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_moment__ = __webpack_require__(18); | ||
23 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_moment___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_moment__); | ||
24 | /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_rc_time_picker__ = __webpack_require__(22); | ||
25 | |||
26 | |||
27 | |||
28 | |||
29 | /* eslint no-console:0 */ | ||
30 | |||
31 | |||
32 | |||
33 | |||
2 | 34 | ||
3 | /***/ 0: | ||
4 | /***/ (function(module, exports, __webpack_require__) { | ||
5 | 35 | ||
6 | module.exports = __webpack_require__(322); | ||
7 | 36 | ||
8 | 37 | ||
38 | var App = function (_React$Component) { | ||
39 | __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(App, _React$Component); | ||
40 | |||
41 | function App() { | ||
42 | var _ref; | ||
43 | |||
44 | var _temp, _this, _ret; | ||
45 | |||
46 | __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default()(this, App); | ||
47 | |||
48 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { | ||
49 | args[_key] = arguments[_key]; | ||
50 | } | ||
51 | |||
52 | return _ret = (_temp = (_this = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, (_ref = App.__proto__ || Object.getPrototypeOf(App)).call.apply(_ref, [this].concat(args))), _this), _this.state = { | ||
53 | value: __WEBPACK_IMPORTED_MODULE_7_moment___default()() | ||
54 | }, _this.handleValueChange = function (value) { | ||
55 | console.log(value && value.format('HH:mm:ss')); | ||
56 | _this.setState({ value: value }); | ||
57 | }, _this.clear = function () { | ||
58 | _this.setState({ | ||
59 | value: undefined | ||
60 | }); | ||
61 | }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret); | ||
62 | } | ||
63 | |||
64 | __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default()(App, [{ | ||
65 | key: 'render', | ||
66 | value: function render() { | ||
67 | return __WEBPACK_IMPORTED_MODULE_5_react___default.a.createElement( | ||
68 | 'div', | ||
69 | null, | ||
70 | __WEBPACK_IMPORTED_MODULE_5_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_8_rc_time_picker__["a" /* default */], { | ||
71 | defaultValue: this.state.value, | ||
72 | onChange: this.handleValueChange | ||
73 | }), | ||
74 | __WEBPACK_IMPORTED_MODULE_5_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_8_rc_time_picker__["a" /* default */], { | ||
75 | value: this.state.value, | ||
76 | onChange: this.handleValueChange | ||
77 | }), | ||
78 | __WEBPACK_IMPORTED_MODULE_5_react___default.a.createElement( | ||
79 | 'button', | ||
80 | { onClick: this.clear }, | ||
81 | 'clear' | ||
82 | ) | ||
83 | ); | ||
84 | } | ||
85 | }]); | ||
86 | |||
87 | return App; | ||
88 | }(__WEBPACK_IMPORTED_MODULE_5_react___default.a.Component); | ||
89 | |||
90 | __WEBPACK_IMPORTED_MODULE_6_react_dom___default.a.render(__WEBPACK_IMPORTED_MODULE_5_react___default.a.createElement(App, null), document.getElementById('__react-content')); | ||
91 | |||
9 | /***/ }), | 92 | /***/ }), |
10 | 93 | ||
11 | /***/ 322: | 94 | /***/ 331: |
12 | /***/ (function(module, exports, __webpack_require__) { | 95 | /***/ (function(module, exports, __webpack_require__) { |
13 | 96 | ||
14 | 'use strict'; | 97 | module.exports = __webpack_require__(149); |
15 | 98 | ||
16 | var _classCallCheck2 = __webpack_require__(188); | ||
17 | |||
18 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); | ||
19 | |||
20 | var _possibleConstructorReturn2 = __webpack_require__(189); | ||
21 | |||
22 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); | ||
23 | |||
24 | var _inherits2 = __webpack_require__(258); | ||
25 | |||
26 | var _inherits3 = _interopRequireDefault(_inherits2); | ||
27 | |||
28 | __webpack_require__(2); | ||
29 | |||
30 | var _react = __webpack_require__(3); | ||
31 | |||
32 | var _react2 = _interopRequireDefault(_react); | ||
33 | |||
34 | var _reactDom = __webpack_require__(38); | ||
35 | |||
36 | var _reactDom2 = _interopRequireDefault(_reactDom); | ||
37 | |||
38 | var _moment = __webpack_require__(184); | ||
39 | |||
40 | var _moment2 = _interopRequireDefault(_moment); | ||
41 | |||
42 | var _rcTimePicker = __webpack_require__(185); | ||
43 | |||
44 | var _rcTimePicker2 = _interopRequireDefault(_rcTimePicker); | ||
45 | |||
46 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
47 | |||
48 | var App = function (_React$Component) { | ||
49 | (0, _inherits3.default)(App, _React$Component); | ||
50 | |||
51 | function App() { | ||
52 | var _temp, _this, _ret; | ||
53 | |||
54 | (0, _classCallCheck3.default)(this, App); | ||
55 | |||
56 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { | ||
57 | args[_key] = arguments[_key]; | ||
58 | } | ||
59 | |||
60 | return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = { | ||
61 | value: (0, _moment2.default)() | ||
62 | }, _this.handleValueChange = function (value) { | ||
63 | console.log(value && value.format('HH:mm:ss')); | ||
64 | _this.setState({ value: value }); | ||
65 | }, _this.clear = function () { | ||
66 | _this.setState({ | ||
67 | value: undefined | ||
68 | }); | ||
69 | }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret); | ||
70 | } | ||
71 | |||
72 | App.prototype.render = function render() { | ||
73 | return _react2.default.createElement( | ||
74 | 'div', | ||
75 | null, | ||
76 | _react2.default.createElement(_rcTimePicker2.default, { | ||
77 | defaultValue: this.state.value, | ||
78 | onChange: this.handleValueChange | ||
79 | }), | ||
80 | _react2.default.createElement(_rcTimePicker2.default, { | ||
81 | value: this.state.value, | ||
82 | onChange: this.handleValueChange | ||
83 | }), | ||
84 | _react2.default.createElement( | ||
85 | 'button', | ||
86 | { onClick: this.clear }, | ||
87 | 'clear' | ||
88 | ) | ||
89 | ); | ||
90 | }; | ||
91 | |||
92 | return App; | ||
93 | }(_react2.default.Component); /* eslint no-console:0 */ | ||
94 | |||
95 | _reactDom2.default.render(_react2.default.createElement(App, null), document.getElementById('__react-content')); | ||
96 | 99 | ||
97 | /***/ }) | 100 | /***/ }) |
98 | 101 | ||
99 | }); | 102 | },[331]); |
100 | //# sourceMappingURL=value-and-defaultValue.js.map \ No newline at end of file | 103 | //# sourceMappingURL=value-and-defaultValue.js.map \ No newline at end of file |
diff --git a/examples/value-and-defaultValue.js.map b/examples/value-and-defaultValue.js.map index d69efbc..713796e 100644 --- a/examples/value-and-defaultValue.js.map +++ b/examples/value-and-defaultValue.js.map | |||
@@ -1 +1 @@ | |||
{"version":3,"sources":["webpack:///./examples/value-and-defaultValue.js"],"names":["App","state","value","handleValueChange","console","log","format","setState","clear","undefined","render","Component","document","getElementById"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;AAEA;;;;AACA;;;;AACA;;;;AACA;;;;;;KAEMA,G;;;;;;;;;;;;uKACJC,K,GAAQ;AACNC,cAAO;AADD,M,QAGRC,iB,GAAoB,UAACD,KAAD,EAAW;AAC7BE,eAAQC,GAAR,CAAYH,SAASA,MAAMI,MAAN,CAAa,UAAb,CAArB;AACA,aAAKC,QAAL,CAAc,EAAEL,YAAF,EAAd;AACD,M,QACDM,K,GAAQ,YAAM;AACZ,aAAKD,QAAL,CAAc;AACZL,gBAAOO;AADK,QAAd;AAGD,M;;;iBACDC,M,qBAAS;AACP,YACE;AAAA;AAAA;AACE;AACE,uBAAc,KAAKT,KAAL,CAAWC,KAD3B;AAEE,mBAAU,KAAKC;AAFjB,SADF;AAKE;AACE,gBAAO,KAAKF,KAAL,CAAWC,KADpB;AAEE,mBAAU,KAAKC;AAFjB,SALF;AASE;AAAA;AAAA,WAAQ,SAAS,KAAKK,KAAtB;AAAA;AAAA;AATF,MADF;AAaD,I;;;GA3Be,gBAAMG,S,GATxB;;AAuCA,oBAASD,MAAT,CACE,8BAAC,GAAD,OADF,EAEEE,SAASC,cAAT,CAAwB,iBAAxB,CAFF,E","file":"value-and-defaultValue.js","sourcesContent":["/* eslint no-console:0 */\n\nimport 'rc-time-picker/assets/index.less';\n\nimport React from 'react';\nimport ReactDom from 'react-dom';\nimport moment from 'moment';\nimport TimePicker from 'rc-time-picker';\n\nclass App extends React.Component {\n state = {\n value: moment(),\n };\n handleValueChange = (value) => {\n console.log(value && value.format('HH:mm:ss'));\n this.setState({ value });\n }\n clear = () => {\n this.setState({\n value: undefined,\n });\n }\n render() {\n return (\n <div>\n <TimePicker\n defaultValue={this.state.value}\n onChange={this.handleValueChange}\n />\n <TimePicker\n value={this.state.value}\n onChange={this.handleValueChange}\n />\n <button onClick={this.clear}>clear</button>\n </div>\n );\n }\n}\n\nReactDom.render(\n <App />,\n document.getElementById('__react-content')\n);\n\n\n\n// WEBPACK FOOTER //\n// ./examples/value-and-defaultValue.js"],"sourceRoot":""} \ No newline at end of file | {"version":3,"sources":["webpack:///./examples/value-and-defaultValue.js"],"names":["App","state","value","moment","handleValueChange","console","log","format","setState","clear","undefined","React","Component","ReactDom","render","document","getElementById"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AAEA;AACA;AACA;AACA;;IAEMA,G;;;;;;;;;;;;;;6OACJC,K,GAAQ;AACNC,aAAO,8CAAAC;AADD,K,QAGRC,iB,GAAoB,UAACF,KAAD,EAAW;AAC7BG,cAAQC,GAAR,CAAYJ,SAASA,MAAMK,MAAN,CAAa,UAAb,CAArB;AACA,YAAKC,QAAL,CAAc,EAAEN,YAAF,EAAd;AACD,K,QACDO,K,GAAQ,YAAM;AACZ,YAAKD,QAAL,CAAc;AACZN,eAAOQ;AADK,OAAd;AAGD,K;;;;;6BACQ;AACP,aACE;AAAA;AAAA;AACE,oEAAC,+DAAD;AACE,wBAAc,KAAKT,KAAL,CAAWC,KAD3B;AAEE,oBAAU,KAAKE;AAFjB,UADF;AAKE,oEAAC,+DAAD;AACE,iBAAO,KAAKH,KAAL,CAAWC,KADpB;AAEE,oBAAU,KAAKE;AAFjB,UALF;AASE;AAAA;AAAA,YAAQ,SAAS,KAAKK,KAAtB;AAAA;AAAA;AATF,OADF;AAaD;;;;EA3Be,6CAAAE,CAAMC,S;;AA8BxB,iDAAAC,CAASC,MAAT,CACE,4DAAC,GAAD,OADF,EAEEC,SAASC,cAAT,CAAwB,iBAAxB,CAFF,E","file":"examples/value-and-defaultValue.js","sourcesContent":["/* eslint no-console:0 */\n\nimport 'rc-time-picker/assets/index.less';\n\nimport React from 'react';\nimport ReactDom from 'react-dom';\nimport moment from 'moment';\nimport TimePicker from 'rc-time-picker';\n\nclass App extends React.Component {\n state = {\n value: moment(),\n };\n handleValueChange = (value) => {\n console.log(value && value.format('HH:mm:ss'));\n this.setState({ value });\n }\n clear = () => {\n this.setState({\n value: undefined,\n });\n }\n render() {\n return (\n <div>\n <TimePicker\n defaultValue={this.state.value}\n onChange={this.handleValueChange}\n />\n <TimePicker\n value={this.state.value}\n onChange={this.handleValueChange}\n />\n <button onClick={this.clear}>clear</button>\n </div>\n );\n }\n}\n\nReactDom.render(\n <App />,\n document.getElementById('__react-content')\n);\n\n\n\n// WEBPACK FOOTER //\n// ./examples/value-and-defaultValue.js"],"sourceRoot":""} \ No newline at end of file | ||