MailPoet Newsletters (New) - Version 3.0.0-beta.7

Version Description

  • 2016-12-06 =
  • Improved: allow user to restart sending after sending method failure;
  • Fixed: subscribers are not added to lists after import;
  • Fixed: sending should stop when newsletter is trashed;
  • Fixed: update database schema after an update which fixes an SQL error;
  • Fixed: status of sent newsletters is showing "paused" instead of "sent";
  • Fixed: dividers in Automatic Latest Posts posts are not displayed. Thx Gregor!;
  • Fixed: shortcodes (ie, first name) are not rendered when sending a preview;
  • Fixed: count of confirmed subscribers only in step 2 of import is erroneous.
Download this release

Release Info

Developer wysija
Plugin Icon 128x128 MailPoet Newsletters (New)
Version 3.0.0-beta.7
Comparing to
See all releases

Code changes from version 3.0.0-beta.6 to 3.0.0-beta.7

Files changed (234) hide show
  1. assets/js/admin.js +513 -423
  2. assets/js/form_editor.js +11 -11
  3. assets/js/mailpoet.js +491 -506
  4. assets/js/newsletter_editor.js +337 -330
  5. assets/js/vendor.js +5 -5
  6. lang/mailpoet.pot +198 -157
  7. lib/API/Endpoints/Mailer.php +12 -4
  8. lib/API/Endpoints/Newsletters.php +18 -6
  9. lib/Config/Activator.php +4 -7
  10. lib/Config/Initializer.php +15 -12
  11. lib/Config/Migrator.php +0 -1
  12. lib/Config/Populator.php +9 -4
  13. lib/Cron/CronHelper.php +4 -4
  14. lib/Cron/Daemon.php +1 -1
  15. lib/Cron/Workers/SendingQueue/SendingQueue.php +25 -22
  16. lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php +1 -1
  17. lib/Mailer/Mailer.php +23 -18
  18. lib/Mailer/MailerLog.php +71 -11
  19. lib/Mailer/Methods/AmazonSES.php +13 -4
  20. lib/Mailer/Methods/ElasticEmail.php +0 -56
  21. lib/Mailer/Methods/MailPoet.php +13 -5
  22. lib/Mailer/Methods/PHPMail.php +8 -2
  23. lib/Mailer/Methods/SMTP.php +8 -2
  24. lib/Mailer/Methods/SendGrid.php +13 -7
  25. lib/Models/Segment.php +1 -25
  26. lib/Models/SendingQueue.php +1 -22
  27. lib/Newsletter/Editor/PostListTransformer.php +1 -1
  28. lib/Newsletter/Editor/PostTransformer.php +3 -3
  29. lib/Newsletter/Shortcodes/Categories/Link.php +2 -2
  30. lib/Newsletter/Shortcodes/Categories/Newsletter.php +2 -2
  31. lib/Newsletter/Shortcodes/Categories/Subscriber.php +2 -1
  32. lib/Subscribers/ImportExport/Import/Import.php +1 -1
  33. mailpoet.php +2 -2
  34. readme.txt +10 -0
  35. trunk/assets/css/admin.css +2839 -0
  36. trunk/assets/css/importExport.css +70 -0
  37. trunk/assets/css/index.php +0 -0
  38. trunk/assets/css/newsletter_editor.css +2471 -0
  39. trunk/assets/css/public.css +55 -0
  40. trunk/assets/css/rtl.css +0 -0
  41. trunk/assets/img/blank_templates/fake-logo.png +0 -0
  42. trunk/assets/img/blank_templates/index.php +0 -0
  43. trunk/assets/img/datepicker/animated-overlay.gif +0 -0
  44. trunk/assets/img/datepicker/cal_logo.png +0 -0
  45. trunk/assets/img/datepicker/index.php +0 -0
  46. trunk/assets/img/datepicker/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  47. trunk/assets/img/datepicker/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  48. trunk/assets/img/datepicker/ui-bg_flat_10_000000_40x100.png +0 -0
  49. trunk/assets/img/datepicker/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  50. trunk/assets/img/datepicker/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  51. trunk/assets/img/datepicker/ui-bg_glass_65_ffffff_1x400.png +0 -0
  52. trunk/assets/img/datepicker/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  53. trunk/assets/img/datepicker/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  54. trunk/assets/img/datepicker/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  55. trunk/assets/img/datepicker/ui-icons_222222_256x240.png +0 -0
  56. trunk/assets/img/datepicker/ui-icons_228ef1_256x240.png +0 -0
  57. trunk/assets/img/datepicker/ui-icons_454545_256x240.png +0 -0
  58. trunk/assets/img/datepicker/ui-icons_ef8c08_256x240.png +0 -0
  59. trunk/assets/img/datepicker/ui-icons_ffd27a_256x240.png +0 -0
  60. trunk/assets/img/datepicker/ui-icons_ffffff_256x240.png +0 -0
  61. trunk/assets/img/form_editor_icons.png +0 -0
  62. trunk/assets/img/handle.png +0 -0
  63. trunk/assets/img/index.php +0 -0
  64. trunk/assets/img/mailpoet_logo.png +0 -0
  65. trunk/assets/img/menu_icon.png +0 -0
  66. trunk/assets/img/modal_close_button.png +0 -0
  67. trunk/assets/img/newsletter_editor/200x83.jpg +0 -0
  68. trunk/assets/img/newsletter_editor/300x125.jpg +0 -0
  69. trunk/assets/img/newsletter_editor/600x250.jpg +0 -0
  70. trunk/assets/img/newsletter_editor/block-icons/auto-post.svg +15 -0
  71. trunk/assets/img/newsletter_editor/block-icons/button.svg +13 -0
  72. trunk/assets/img/newsletter_editor/block-icons/divider.svg +5 -0
  73. trunk/assets/img/newsletter_editor/block-icons/document.svg +10 -0
  74. trunk/assets/img/newsletter_editor/block-icons/footer.svg +11 -0
  75. trunk/assets/img/newsletter_editor/block-icons/gallery.svg +23 -0
  76. trunk/assets/img/newsletter_editor/block-icons/header.svg +11 -0
  77. trunk/assets/img/newsletter_editor/block-icons/image.svg +7 -0
  78. trunk/assets/img/newsletter_editor/block-icons/index.php +0 -0
  79. trunk/assets/img/newsletter_editor/block-icons/podcast.svg +11 -0
  80. trunk/assets/img/newsletter_editor/block-icons/post.svg +10 -0
  81. trunk/assets/img/newsletter_editor/block-icons/spacer.svg +4 -0
  82. trunk/assets/img/newsletter_editor/block-icons/text.svg +6 -0
  83. trunk/assets/img/newsletter_editor/block-tools/index.php +0 -0
  84. trunk/assets/img/newsletter_editor/block-tools/move-horizontal.svg +10 -0
  85. trunk/assets/img/newsletter_editor/block-tools/move-without-bg.svg +5 -0
  86. trunk/assets/img/newsletter_editor/block-tools/move.svg +10 -0
  87. trunk/assets/img/newsletter_editor/block-tools/settings-column.svg +18 -0
  88. trunk/assets/img/newsletter_editor/block-tools/settings-without-bg.svg +17 -0
  89. trunk/assets/img/newsletter_editor/block-tools/settings.svg +18 -0
  90. trunk/assets/img/newsletter_editor/block-tools/trash-without-bg.svg +12 -0
  91. trunk/assets/img/newsletter_editor/block-tools/trash.svg +22 -0
  92. trunk/assets/img/newsletter_editor/image-missing.png +0 -0
  93. trunk/assets/img/newsletter_editor/image-missing.svg +27 -0
  94. trunk/assets/img/newsletter_editor/index.php +0 -0
  95. trunk/assets/img/newsletter_editor/layout-icons/1-column.svg +5 -0
  96. trunk/assets/img/newsletter_editor/layout-icons/2-column.svg +7 -0
  97. trunk/assets/img/newsletter_editor/layout-icons/3-column.svg +9 -0
  98. trunk/assets/img/newsletter_editor/layout-icons/index.php +0 -0
  99. trunk/assets/img/newsletter_editor/social-icons/01-social/Email.png +0 -0
  100. trunk/assets/img/newsletter_editor/social-icons/01-social/Facebook.png +0 -0
  101. trunk/assets/img/newsletter_editor/social-icons/01-social/Google-Plus.png +0 -0
  102. trunk/assets/img/newsletter_editor/social-icons/01-social/Instagram.png +0 -0
  103. trunk/assets/img/newsletter_editor/social-icons/01-social/LinkedIn.png +0 -0
  104. trunk/assets/img/newsletter_editor/social-icons/01-social/Pinterest.png +0 -0
  105. trunk/assets/img/newsletter_editor/social-icons/01-social/Twitter.png +0 -0
  106. trunk/assets/img/newsletter_editor/social-icons/01-social/Website.png +0 -0
  107. trunk/assets/img/newsletter_editor/social-icons/01-social/Youtube.png +0 -0
  108. trunk/assets/img/newsletter_editor/social-icons/01-social/index.php +0 -0
  109. trunk/assets/img/newsletter_editor/social-icons/02-grey/Email.png +0 -0
  110. trunk/assets/img/newsletter_editor/social-icons/02-grey/Facebook.png +0 -0
  111. trunk/assets/img/newsletter_editor/social-icons/02-grey/Google-Plus.png +0 -0
  112. trunk/assets/img/newsletter_editor/social-icons/02-grey/Instagram.png +0 -0
  113. trunk/assets/img/newsletter_editor/social-icons/02-grey/LinkedIn.png +0 -0
  114. trunk/assets/img/newsletter_editor/social-icons/02-grey/Pinterest.png +0 -0
  115. trunk/assets/img/newsletter_editor/social-icons/02-grey/Twitter.png +0 -0
  116. trunk/assets/img/newsletter_editor/social-icons/02-grey/Website.png +0 -0
  117. trunk/assets/img/newsletter_editor/social-icons/02-grey/Youtube.png +0 -0
  118. trunk/assets/img/newsletter_editor/social-icons/02-grey/index.php +0 -0
  119. trunk/assets/img/newsletter_editor/social-icons/03-circles/Email.png +0 -0
  120. trunk/assets/img/newsletter_editor/social-icons/03-circles/Facebook.png +0 -0
  121. trunk/assets/img/newsletter_editor/social-icons/03-circles/Google-Plus.png +0 -0
  122. trunk/assets/img/newsletter_editor/social-icons/03-circles/Instagram.png +0 -0
  123. trunk/assets/img/newsletter_editor/social-icons/03-circles/LinkedIn.png +0 -0
  124. trunk/assets/img/newsletter_editor/social-icons/03-circles/Pinterest.png +0 -0
  125. trunk/assets/img/newsletter_editor/social-icons/03-circles/Twitter.png +0 -0
  126. trunk/assets/img/newsletter_editor/social-icons/03-circles/Website.png +0 -0
  127. trunk/assets/img/newsletter_editor/social-icons/03-circles/Youtube.png +0 -0
  128. trunk/assets/img/newsletter_editor/social-icons/03-circles/index.php +0 -0
  129. trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Email.png +0 -0
  130. trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Facebook.png +0 -0
  131. trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Google-Plus.png +0 -0
  132. trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Instagram.png +0 -0
  133. trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/LinkedIn.png +0 -0
  134. trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Pinterest.png +0 -0
  135. trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Twitter.png +0 -0
  136. trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Website.png +0 -0
  137. trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Youtube.png +0 -0
  138. trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/index.php +0 -0
  139. trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Email.png +0 -0
  140. trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Facebook.png +0 -0
  141. trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Google-Plus.png +0 -0
  142. trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Instagram.png +0 -0
  143. trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/LinkedIn.png +0 -0
  144. trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Pinterest.png +0 -0
  145. trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Twitter.png +0 -0
  146. trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Website.png +0 -0
  147. trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Youtube.png +0 -0
  148. trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/index.php +0 -0
  149. trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Email.png +0 -0
  150. trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Facebook.png +0 -0
  151. trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Google-Plus.png +0 -0
  152. trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Instagram.png +0 -0
  153. trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/LinkedIn.png +0 -0
  154. trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Pinterest.png +0 -0
  155. trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Twitter.png +0 -0
  156. trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Website.png +0 -0
  157. trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Youtube.png +0 -0
  158. trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/index.php +0 -0
  159. trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Email.png +0 -0
  160. trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Facebook.png +0 -0
  161. trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Google-Plus.png +0 -0
  162. trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Instagram.png +0 -0
  163. trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/LinkedIn.png +0 -0
  164. trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Pinterest.png +0 -0
  165. trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Twitter.png +0 -0
  166. trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Website.png +0 -0
  167. trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Youtube.png +0 -0
  168. trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/index.php +0 -0
  169. trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Email.png +0 -0
  170. trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Facebook.png +0 -0
  171. trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Google-Plus.png +0 -0
  172. trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Instagram.png +0 -0
  173. trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/LinkedIn.png +0 -0
  174. trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Pinterest.png +0 -0
  175. trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Twitter.png +0 -0
  176. trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Website.png +0 -0
  177. trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Youtube.png +0 -0
  178. trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/index.php +0 -0
  179. trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Email.png +0 -0
  180. trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Facebook.png +0 -0
  181. trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Google-Plus.png +0 -0
  182. trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Instagram.png +0 -0
  183. trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/LinkedIn.png +0 -0
  184. trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Pinterest.png +0 -0
  185. trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Twitter.png +0 -0
  186. trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Website.png +0 -0
  187. trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Youtube.png +0 -0
  188. trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/index.php +0 -0
  189. trunk/assets/img/newsletter_editor/social-icons/10-line-square/Email.png +0 -0
  190. trunk/assets/img/newsletter_editor/social-icons/10-line-square/Facebook.png +0 -0
  191. trunk/assets/img/newsletter_editor/social-icons/10-line-square/Google-Plus.png +0 -0
  192. trunk/assets/img/newsletter_editor/social-icons/10-line-square/Instagram.png +0 -0
  193. trunk/assets/img/newsletter_editor/social-icons/10-line-square/LinkedIn.png +0 -0
  194. trunk/assets/img/newsletter_editor/social-icons/10-line-square/Pinterest.png +0 -0
  195. trunk/assets/img/newsletter_editor/social-icons/10-line-square/Twitter.png +0 -0
  196. trunk/assets/img/newsletter_editor/social-icons/10-line-square/Website.png +0 -0
  197. trunk/assets/img/newsletter_editor/social-icons/10-line-square/Youtube.png +0 -0
  198. trunk/assets/img/newsletter_editor/social-icons/10-line-square/index.php +0 -0
  199. trunk/assets/img/newsletter_editor/social-icons/custom.png +0 -0
  200. trunk/assets/img/newsletter_editor/social-icons/index.php +0 -0
  201. trunk/assets/img/post_notifications_template/ALC-widget-icon.png +0 -0
  202. trunk/assets/img/post_notifications_template/index.php +0 -0
  203. trunk/assets/img/post_notifications_template/settings-icon-highlight.png +0 -0
  204. trunk/assets/img/preview_magnifying_glass.svg +12 -0
  205. trunk/assets/img/sample_templates/coffee/coffee-grain.jpg +0 -0
  206. trunk/assets/img/sample_templates/coffee/header-v2.jpg +0 -0
  207. trunk/assets/img/sample_templates/coffee/index.php +0 -0
  208. trunk/assets/img/sample_templates/coffee/map-v2.jpg +0 -0
  209. trunk/assets/img/sample_templates/coffee/sandwich.jpg +0 -0
  210. trunk/assets/img/sample_templates/discount/bicycle-header2.png +0 -0
  211. trunk/assets/img/sample_templates/discount/bicycle-header3.png +0 -0
  212. trunk/assets/img/sample_templates/discount/index.php +0 -0
  213. trunk/assets/img/sample_templates/discount/orange-bicycle.jpg +0 -0
  214. trunk/assets/img/sample_templates/discount/red-icycle.jpg +0 -0
  215. trunk/assets/img/sample_templates/index.php +0 -0
  216. trunk/assets/img/sample_templates/restaurant/boyga-1329911-639x852.jpg +0 -0
  217. trunk/assets/img/sample_templates/restaurant/burger.jpg +0 -0
  218. trunk/assets/img/sample_templates/restaurant/header.jpg +0 -0
  219. trunk/assets/img/sample_templates/restaurant/index.php +0 -0
  220. trunk/assets/img/sample_templates/restaurant/macaroni-w-salad-1323787.jpg +0 -0
  221. trunk/assets/img/sample_templates/travel/gallery1.jpg +0 -0
  222. trunk/assets/img/sample_templates/travel/gallery2.jpg +0 -0
  223. trunk/assets/img/sample_templates/travel/gallery3.jpg +0 -0
  224. trunk/assets/img/sample_templates/travel/gallery4.jpg +0 -0
  225. trunk/assets/img/sample_templates/travel/glow-worms.jpg +0 -0
  226. trunk/assets/img/sample_templates/travel/header.png +0 -0
  227. trunk/assets/img/sample_templates/travel/holiday-park.jpg +0 -0
  228. trunk/assets/img/sample_templates/travel/index.php +0 -0
  229. trunk/assets/img/sample_templates/travel/luge.jpg +0 -0
  230. trunk/assets/img/welcome_template/beacon.png +0 -0
  231. trunk/assets/img/welcome_template/index.php +0 -0
  232. trunk/assets/img/welcome_template/mailpoet-logo.png +0 -0
  233. trunk/assets/index.php +0 -0
  234. trunk/assets/js/admin.js +16706 -0
assets/js/admin.js CHANGED
@@ -3,13 +3,13 @@ webpackJsonp([0],[
3
  /***/ function(module, exports, __webpack_require__) {
4
 
5
  __webpack_require__(1);
6
- __webpack_require__(406);
7
- __webpack_require__(426);
8
- __webpack_require__(429);
9
- __webpack_require__(431);
10
- __webpack_require__(434);
11
- __webpack_require__(438);
12
- module.exports = __webpack_require__(439);
13
 
14
 
15
  /***/ },
@@ -29861,7 +29861,8 @@ webpackJsonp([0],[
29861
  filters: {},
29862
  filter: {},
29863
  selected_ids: [],
29864
- selection: false
 
29865
  };
29866
  },
29867
  getParam: function getParam(param) {
@@ -30034,13 +30035,19 @@ webpackJsonp([0],[
30034
  items: response.data || [],
30035
  filters: response.meta.filters || {},
30036
  groups: response.meta.groups || [],
30037
- count: response.meta.count || 0
 
30038
  }, function () {
30039
  // if viewing an empty trash
30040
  if (_this5.state.group === 'trash' && response.meta.count === 0) {
30041
  // redirect to default group
30042
  _this5.handleGroup('all');
30043
  }
 
 
 
 
 
30044
  });
30045
  }).fail(function (response) {
30046
  if (response.errors.length > 0) {
@@ -30272,7 +30279,7 @@ webpackJsonp([0],[
30272
  }).bind(this));
30273
  },
30274
  handleRenderItem: function handleRenderItem(item, actions) {
30275
- var render = this.props.onRenderItem(item, actions);
30276
  return render.props.children;
30277
  },
30278
  handleRefreshItems: function handleRefreshItems() {
@@ -38574,7 +38581,7 @@ webpackJsonp([0],[
38574
 
38575
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
38576
 
38577
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(180), __webpack_require__(267), __webpack_require__(281), __webpack_require__(401)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, Router, MailPoet, Form, ReactStringReplace) {
38578
  var fields = [{
38579
  name: 'email',
38580
  label: MailPoet.I18n.t('email'),
@@ -39716,7 +39723,7 @@ webpackJsonp([0],[
39716
  /***/ function(module, exports, __webpack_require__) {
39717
 
39718
  /* WEBPACK VAR INJECTION */(function(module) {//! moment.js
39719
- //! version : 2.17.0
39720
  //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
39721
  //! license : MIT
39722
  //! momentjs.com
@@ -43981,7 +43988,7 @@ webpackJsonp([0],[
43981
  // Side effect imports
43982
 
43983
 
43984
- hooks.version = '2.17.0';
43985
 
43986
  setHookCallback(createLocal);
43987
 
@@ -44059,205 +44066,203 @@ webpackJsonp([0],[
44059
  "./be": 300,
44060
  "./be.js": 300,
44061
  "./bg": 301,
44062
- "./bg-x": 302,
44063
- "./bg-x.js": 302,
44064
  "./bg.js": 301,
44065
- "./bn": 303,
44066
- "./bn.js": 303,
44067
- "./bo": 304,
44068
- "./bo.js": 304,
44069
- "./br": 305,
44070
- "./br.js": 305,
44071
- "./bs": 306,
44072
- "./bs.js": 306,
44073
- "./ca": 307,
44074
- "./ca.js": 307,
44075
- "./cs": 308,
44076
- "./cs.js": 308,
44077
- "./cv": 309,
44078
- "./cv.js": 309,
44079
- "./cy": 310,
44080
- "./cy.js": 310,
44081
- "./da": 311,
44082
- "./da.js": 311,
44083
- "./de": 312,
44084
- "./de-at": 313,
44085
- "./de-at.js": 313,
44086
- "./de.js": 312,
44087
- "./dv": 314,
44088
- "./dv.js": 314,
44089
- "./el": 315,
44090
- "./el.js": 315,
44091
- "./en-au": 316,
44092
- "./en-au.js": 316,
44093
- "./en-ca": 317,
44094
- "./en-ca.js": 317,
44095
- "./en-gb": 318,
44096
- "./en-gb.js": 318,
44097
- "./en-ie": 319,
44098
- "./en-ie.js": 319,
44099
- "./en-nz": 320,
44100
- "./en-nz.js": 320,
44101
- "./eo": 321,
44102
- "./eo.js": 321,
44103
- "./es": 322,
44104
- "./es-do": 323,
44105
- "./es-do.js": 323,
44106
- "./es.js": 322,
44107
- "./et": 324,
44108
- "./et.js": 324,
44109
- "./eu": 325,
44110
- "./eu.js": 325,
44111
- "./fa": 326,
44112
- "./fa.js": 326,
44113
- "./fi": 327,
44114
- "./fi.js": 327,
44115
- "./fo": 328,
44116
- "./fo.js": 328,
44117
- "./fr": 329,
44118
- "./fr-ca": 330,
44119
- "./fr-ca.js": 330,
44120
- "./fr-ch": 331,
44121
- "./fr-ch.js": 331,
44122
- "./fr.js": 329,
44123
- "./fy": 332,
44124
- "./fy.js": 332,
44125
- "./gd": 333,
44126
- "./gd.js": 333,
44127
- "./gl": 334,
44128
- "./gl.js": 334,
44129
- "./he": 335,
44130
- "./he.js": 335,
44131
- "./hi": 336,
44132
- "./hi.js": 336,
44133
- "./hr": 337,
44134
- "./hr.js": 337,
44135
- "./hu": 338,
44136
- "./hu.js": 338,
44137
- "./hy-am": 339,
44138
- "./hy-am.js": 339,
44139
- "./id": 340,
44140
- "./id.js": 340,
44141
- "./is": 341,
44142
- "./is.js": 341,
44143
- "./it": 342,
44144
- "./it.js": 342,
44145
- "./ja": 343,
44146
- "./ja.js": 343,
44147
- "./jv": 344,
44148
- "./jv.js": 344,
44149
- "./ka": 345,
44150
- "./ka.js": 345,
44151
- "./kk": 346,
44152
- "./kk.js": 346,
44153
- "./km": 347,
44154
- "./km.js": 347,
44155
- "./ko": 348,
44156
- "./ko.js": 348,
44157
- "./ky": 349,
44158
- "./ky.js": 349,
44159
- "./lb": 350,
44160
- "./lb.js": 350,
44161
- "./lo": 351,
44162
- "./lo.js": 351,
44163
- "./lt": 352,
44164
- "./lt.js": 352,
44165
- "./lv": 353,
44166
- "./lv.js": 353,
44167
- "./me": 354,
44168
- "./me.js": 354,
44169
- "./mi": 355,
44170
- "./mi.js": 355,
44171
- "./mk": 356,
44172
- "./mk.js": 356,
44173
- "./ml": 357,
44174
- "./ml.js": 357,
44175
- "./mr": 358,
44176
- "./mr.js": 358,
44177
- "./ms": 359,
44178
- "./ms-my": 360,
44179
- "./ms-my.js": 360,
44180
- "./ms.js": 359,
44181
- "./my": 361,
44182
- "./my.js": 361,
44183
- "./nb": 362,
44184
- "./nb.js": 362,
44185
- "./ne": 363,
44186
- "./ne.js": 363,
44187
- "./nl": 364,
44188
- "./nl-be": 365,
44189
- "./nl-be.js": 365,
44190
- "./nl.js": 364,
44191
- "./nn": 366,
44192
- "./nn.js": 366,
44193
- "./pa-in": 367,
44194
- "./pa-in.js": 367,
44195
- "./pl": 368,
44196
- "./pl.js": 368,
44197
- "./pt": 369,
44198
- "./pt-br": 370,
44199
- "./pt-br.js": 370,
44200
- "./pt.js": 369,
44201
- "./ro": 371,
44202
- "./ro.js": 371,
44203
- "./ru": 372,
44204
- "./ru.js": 372,
44205
- "./se": 373,
44206
- "./se.js": 373,
44207
- "./si": 374,
44208
- "./si.js": 374,
44209
- "./sk": 375,
44210
- "./sk.js": 375,
44211
- "./sl": 376,
44212
- "./sl.js": 376,
44213
- "./sq": 377,
44214
- "./sq.js": 377,
44215
- "./sr": 378,
44216
- "./sr-cyrl": 379,
44217
- "./sr-cyrl.js": 379,
44218
- "./sr.js": 378,
44219
- "./ss": 380,
44220
- "./ss.js": 380,
44221
- "./sv": 381,
44222
- "./sv.js": 381,
44223
- "./sw": 382,
44224
- "./sw.js": 382,
44225
- "./ta": 383,
44226
- "./ta.js": 383,
44227
- "./te": 384,
44228
- "./te.js": 384,
44229
- "./tet": 385,
44230
- "./tet.js": 385,
44231
- "./th": 386,
44232
- "./th.js": 386,
44233
- "./tl-ph": 387,
44234
- "./tl-ph.js": 387,
44235
- "./tlh": 388,
44236
- "./tlh.js": 388,
44237
- "./tr": 389,
44238
- "./tr.js": 389,
44239
- "./tzl": 390,
44240
- "./tzl.js": 390,
44241
- "./tzm": 391,
44242
- "./tzm-latn": 392,
44243
- "./tzm-latn.js": 392,
44244
- "./tzm.js": 391,
44245
- "./uk": 393,
44246
- "./uk.js": 393,
44247
- "./uz": 394,
44248
- "./uz.js": 394,
44249
- "./vi": 395,
44250
- "./vi.js": 395,
44251
- "./x-pseudo": 396,
44252
- "./x-pseudo.js": 396,
44253
- "./yo": 397,
44254
- "./yo.js": 397,
44255
- "./zh-cn": 398,
44256
- "./zh-cn.js": 398,
44257
- "./zh-hk": 399,
44258
- "./zh-hk.js": 399,
44259
- "./zh-tw": 400,
44260
- "./zh-tw.js": 400
44261
  };
44262
  function webpackContext(req) {
44263
  return __webpack_require__(webpackContextResolve(req));
@@ -45280,26 +45285,6 @@ webpackJsonp([0],[
45280
  /* 302 */
45281
  /***/ function(module, exports, __webpack_require__) {
45282
 
45283
-
45284
- ;(function (global, factory) {
45285
- true ? factory(__webpack_require__(289)) :
45286
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
45287
- factory(global.moment)
45288
- }(this, (function (moment) { 'use strict';
45289
-
45290
- var bgX = moment.defineLocale('bg-x', {
45291
- parentLocale: 'bg'
45292
- });
45293
-
45294
- return bgX;
45295
-
45296
- })));
45297
-
45298
-
45299
- /***/ },
45300
- /* 303 */
45301
- /***/ function(module, exports, __webpack_require__) {
45302
-
45303
  //! moment.js locale configuration
45304
  //! locale : Bengali [bn]
45305
  //! author : Kaushik Gandhi : https://github.com/kaushikgandhi
@@ -45421,7 +45406,7 @@ webpackJsonp([0],[
45421
 
45422
 
45423
  /***/ },
45424
- /* 304 */
45425
  /***/ function(module, exports, __webpack_require__) {
45426
 
45427
  //! moment.js locale configuration
@@ -45545,7 +45530,7 @@ webpackJsonp([0],[
45545
 
45546
 
45547
  /***/ },
45548
- /* 305 */
45549
  /***/ function(module, exports, __webpack_require__) {
45550
 
45551
  //! moment.js locale configuration
@@ -45658,7 +45643,7 @@ webpackJsonp([0],[
45658
 
45659
 
45660
  /***/ },
45661
- /* 306 */
45662
  /***/ function(module, exports, __webpack_require__) {
45663
 
45664
  //! moment.js locale configuration
@@ -45806,7 +45791,7 @@ webpackJsonp([0],[
45806
 
45807
 
45808
  /***/ },
45809
- /* 307 */
45810
  /***/ function(module, exports, __webpack_require__) {
45811
 
45812
  //! moment.js locale configuration
@@ -45892,7 +45877,7 @@ webpackJsonp([0],[
45892
 
45893
 
45894
  /***/ },
45895
- /* 308 */
45896
  /***/ function(module, exports, __webpack_require__) {
45897
 
45898
  //! moment.js locale configuration
@@ -46069,7 +46054,7 @@ webpackJsonp([0],[
46069
 
46070
 
46071
  /***/ },
46072
- /* 309 */
46073
  /***/ function(module, exports, __webpack_require__) {
46074
 
46075
  //! moment.js locale configuration
@@ -46137,7 +46122,7 @@ webpackJsonp([0],[
46137
 
46138
 
46139
  /***/ },
46140
- /* 310 */
46141
  /***/ function(module, exports, __webpack_require__) {
46142
 
46143
  //! moment.js locale configuration
@@ -46223,7 +46208,7 @@ webpackJsonp([0],[
46223
 
46224
 
46225
  /***/ },
46226
- /* 311 */
46227
  /***/ function(module, exports, __webpack_require__) {
46228
 
46229
  //! moment.js locale configuration
@@ -46288,7 +46273,7 @@ webpackJsonp([0],[
46288
 
46289
 
46290
  /***/ },
46291
- /* 312 */
46292
  /***/ function(module, exports, __webpack_require__) {
46293
 
46294
  //! moment.js locale configuration
@@ -46371,7 +46356,7 @@ webpackJsonp([0],[
46371
 
46372
 
46373
  /***/ },
46374
- /* 313 */
46375
  /***/ function(module, exports, __webpack_require__) {
46376
 
46377
  //! moment.js locale configuration
@@ -46455,7 +46440,7 @@ webpackJsonp([0],[
46455
 
46456
 
46457
  /***/ },
46458
- /* 314 */
46459
  /***/ function(module, exports, __webpack_require__) {
46460
 
46461
  //! moment.js locale configuration
@@ -46560,7 +46545,7 @@ webpackJsonp([0],[
46560
 
46561
 
46562
  /***/ },
46563
- /* 315 */
46564
  /***/ function(module, exports, __webpack_require__) {
46565
 
46566
  //! moment.js locale configuration
@@ -46663,7 +46648,7 @@ webpackJsonp([0],[
46663
 
46664
 
46665
  /***/ },
46666
- /* 316 */
46667
  /***/ function(module, exports, __webpack_require__) {
46668
 
46669
  //! moment.js locale configuration
@@ -46735,7 +46720,7 @@ webpackJsonp([0],[
46735
 
46736
 
46737
  /***/ },
46738
- /* 317 */
46739
  /***/ function(module, exports, __webpack_require__) {
46740
 
46741
  //! moment.js locale configuration
@@ -46803,7 +46788,7 @@ webpackJsonp([0],[
46803
 
46804
 
46805
  /***/ },
46806
- /* 318 */
46807
  /***/ function(module, exports, __webpack_require__) {
46808
 
46809
  //! moment.js locale configuration
@@ -46875,7 +46860,7 @@ webpackJsonp([0],[
46875
 
46876
 
46877
  /***/ },
46878
- /* 319 */
46879
  /***/ function(module, exports, __webpack_require__) {
46880
 
46881
  //! moment.js locale configuration
@@ -46947,7 +46932,7 @@ webpackJsonp([0],[
46947
 
46948
 
46949
  /***/ },
46950
- /* 320 */
46951
  /***/ function(module, exports, __webpack_require__) {
46952
 
46953
  //! moment.js locale configuration
@@ -47019,7 +47004,7 @@ webpackJsonp([0],[
47019
 
47020
 
47021
  /***/ },
47022
- /* 321 */
47023
  /***/ function(module, exports, __webpack_require__) {
47024
 
47025
  //! moment.js locale configuration
@@ -47097,7 +47082,7 @@ webpackJsonp([0],[
47097
 
47098
 
47099
  /***/ },
47100
- /* 322 */
47101
  /***/ function(module, exports, __webpack_require__) {
47102
 
47103
  //! moment.js locale configuration
@@ -47183,7 +47168,7 @@ webpackJsonp([0],[
47183
 
47184
 
47185
  /***/ },
47186
- /* 323 */
47187
  /***/ function(module, exports, __webpack_require__) {
47188
 
47189
  //! moment.js locale configuration
@@ -47268,7 +47253,7 @@ webpackJsonp([0],[
47268
 
47269
 
47270
  /***/ },
47271
- /* 324 */
47272
  /***/ function(module, exports, __webpack_require__) {
47273
 
47274
  //! moment.js locale configuration
@@ -47353,7 +47338,7 @@ webpackJsonp([0],[
47353
 
47354
 
47355
  /***/ },
47356
- /* 325 */
47357
  /***/ function(module, exports, __webpack_require__) {
47358
 
47359
  //! moment.js locale configuration
@@ -47424,7 +47409,7 @@ webpackJsonp([0],[
47424
 
47425
 
47426
  /***/ },
47427
- /* 326 */
47428
  /***/ function(module, exports, __webpack_require__) {
47429
 
47430
  //! moment.js locale configuration
@@ -47536,7 +47521,7 @@ webpackJsonp([0],[
47536
 
47537
 
47538
  /***/ },
47539
- /* 327 */
47540
  /***/ function(module, exports, __webpack_require__) {
47541
 
47542
  //! moment.js locale configuration
@@ -47648,7 +47633,7 @@ webpackJsonp([0],[
47648
 
47649
 
47650
  /***/ },
47651
- /* 328 */
47652
  /***/ function(module, exports, __webpack_require__) {
47653
 
47654
  //! moment.js locale configuration
@@ -47713,7 +47698,7 @@ webpackJsonp([0],[
47713
 
47714
 
47715
  /***/ },
47716
- /* 329 */
47717
  /***/ function(module, exports, __webpack_require__) {
47718
 
47719
  //! moment.js locale configuration
@@ -47782,7 +47767,7 @@ webpackJsonp([0],[
47782
 
47783
 
47784
  /***/ },
47785
- /* 330 */
47786
  /***/ function(module, exports, __webpack_require__) {
47787
 
47788
  //! moment.js locale configuration
@@ -47847,7 +47832,7 @@ webpackJsonp([0],[
47847
 
47848
 
47849
  /***/ },
47850
- /* 331 */
47851
  /***/ function(module, exports, __webpack_require__) {
47852
 
47853
  //! moment.js locale configuration
@@ -47916,7 +47901,7 @@ webpackJsonp([0],[
47916
 
47917
 
47918
  /***/ },
47919
- /* 332 */
47920
  /***/ function(module, exports, __webpack_require__) {
47921
 
47922
  //! moment.js locale configuration
@@ -47994,7 +47979,7 @@ webpackJsonp([0],[
47994
 
47995
 
47996
  /***/ },
47997
- /* 333 */
47998
  /***/ function(module, exports, __webpack_require__) {
47999
 
48000
  //! moment.js locale configuration
@@ -48075,7 +48060,7 @@ webpackJsonp([0],[
48075
 
48076
 
48077
  /***/ },
48078
- /* 334 */
48079
  /***/ function(module, exports, __webpack_require__) {
48080
 
48081
  //! moment.js locale configuration
@@ -48157,7 +48142,7 @@ webpackJsonp([0],[
48157
 
48158
 
48159
  /***/ },
48160
- /* 335 */
48161
  /***/ function(module, exports, __webpack_require__) {
48162
 
48163
  //! moment.js locale configuration
@@ -48261,7 +48246,7 @@ webpackJsonp([0],[
48261
 
48262
 
48263
  /***/ },
48264
- /* 336 */
48265
  /***/ function(module, exports, __webpack_require__) {
48266
 
48267
  //! moment.js locale configuration
@@ -48390,7 +48375,7 @@ webpackJsonp([0],[
48390
 
48391
 
48392
  /***/ },
48393
- /* 337 */
48394
  /***/ function(module, exports, __webpack_require__) {
48395
 
48396
  //! moment.js locale configuration
@@ -48540,7 +48525,7 @@ webpackJsonp([0],[
48540
 
48541
 
48542
  /***/ },
48543
- /* 338 */
48544
  /***/ function(module, exports, __webpack_require__) {
48545
 
48546
  //! moment.js locale configuration
@@ -48654,7 +48639,7 @@ webpackJsonp([0],[
48654
 
48655
 
48656
  /***/ },
48657
- /* 339 */
48658
  /***/ function(module, exports, __webpack_require__) {
48659
 
48660
  //! moment.js locale configuration
@@ -48754,7 +48739,7 @@ webpackJsonp([0],[
48754
 
48755
 
48756
  /***/ },
48757
- /* 340 */
48758
  /***/ function(module, exports, __webpack_require__) {
48759
 
48760
  //! moment.js locale configuration
@@ -48842,7 +48827,7 @@ webpackJsonp([0],[
48842
 
48843
 
48844
  /***/ },
48845
- /* 341 */
48846
  /***/ function(module, exports, __webpack_require__) {
48847
 
48848
  //! moment.js locale configuration
@@ -48974,7 +48959,7 @@ webpackJsonp([0],[
48974
 
48975
 
48976
  /***/ },
48977
- /* 342 */
48978
  /***/ function(module, exports, __webpack_require__) {
48979
 
48980
  //! moment.js locale configuration
@@ -49049,7 +49034,7 @@ webpackJsonp([0],[
49049
 
49050
 
49051
  /***/ },
49052
- /* 343 */
49053
  /***/ function(module, exports, __webpack_require__) {
49054
 
49055
  //! moment.js locale configuration
@@ -49130,7 +49115,7 @@ webpackJsonp([0],[
49130
 
49131
 
49132
  /***/ },
49133
- /* 344 */
49134
  /***/ function(module, exports, __webpack_require__) {
49135
 
49136
  //! moment.js locale configuration
@@ -49218,7 +49203,7 @@ webpackJsonp([0],[
49218
 
49219
 
49220
  /***/ },
49221
- /* 345 */
49222
  /***/ function(module, exports, __webpack_require__) {
49223
 
49224
  //! moment.js locale configuration
@@ -49312,7 +49297,7 @@ webpackJsonp([0],[
49312
 
49313
 
49314
  /***/ },
49315
- /* 346 */
49316
  /***/ function(module, exports, __webpack_require__) {
49317
 
49318
  //! moment.js locale configuration
@@ -49404,7 +49389,7 @@ webpackJsonp([0],[
49404
 
49405
 
49406
  /***/ },
49407
- /* 347 */
49408
  /***/ function(module, exports, __webpack_require__) {
49409
 
49410
  //! moment.js locale configuration
@@ -49467,7 +49452,7 @@ webpackJsonp([0],[
49467
 
49468
 
49469
  /***/ },
49470
- /* 348 */
49471
  /***/ function(module, exports, __webpack_require__) {
49472
 
49473
  //! moment.js locale configuration
@@ -49537,7 +49522,7 @@ webpackJsonp([0],[
49537
 
49538
 
49539
  /***/ },
49540
- /* 349 */
49541
  /***/ function(module, exports, __webpack_require__) {
49542
 
49543
  //! moment.js locale configuration
@@ -49630,7 +49615,7 @@ webpackJsonp([0],[
49630
 
49631
 
49632
  /***/ },
49633
- /* 350 */
49634
  /***/ function(module, exports, __webpack_require__) {
49635
 
49636
  //! moment.js locale configuration
@@ -49772,7 +49757,7 @@ webpackJsonp([0],[
49772
 
49773
 
49774
  /***/ },
49775
- /* 351 */
49776
  /***/ function(module, exports, __webpack_require__) {
49777
 
49778
  //! moment.js locale configuration
@@ -49847,7 +49832,7 @@ webpackJsonp([0],[
49847
 
49848
 
49849
  /***/ },
49850
- /* 352 */
49851
  /***/ function(module, exports, __webpack_require__) {
49852
 
49853
  //! moment.js locale configuration
@@ -49969,7 +49954,7 @@ webpackJsonp([0],[
49969
 
49970
 
49971
  /***/ },
49972
- /* 353 */
49973
  /***/ function(module, exports, __webpack_require__) {
49974
 
49975
  //! moment.js locale configuration
@@ -50071,7 +50056,7 @@ webpackJsonp([0],[
50071
 
50072
 
50073
  /***/ },
50074
- /* 354 */
50075
  /***/ function(module, exports, __webpack_require__) {
50076
 
50077
  //! moment.js locale configuration
@@ -50187,7 +50172,7 @@ webpackJsonp([0],[
50187
 
50188
 
50189
  /***/ },
50190
- /* 355 */
50191
  /***/ function(module, exports, __webpack_require__) {
50192
 
50193
  //! moment.js locale configuration
@@ -50256,7 +50241,7 @@ webpackJsonp([0],[
50256
 
50257
 
50258
  /***/ },
50259
- /* 356 */
50260
  /***/ function(module, exports, __webpack_require__) {
50261
 
50262
  //! moment.js locale configuration
@@ -50351,7 +50336,7 @@ webpackJsonp([0],[
50351
 
50352
 
50353
  /***/ },
50354
- /* 357 */
50355
  /***/ function(module, exports, __webpack_require__) {
50356
 
50357
  //! moment.js locale configuration
@@ -50437,7 +50422,7 @@ webpackJsonp([0],[
50437
 
50438
 
50439
  /***/ },
50440
- /* 358 */
50441
  /***/ function(module, exports, __webpack_require__) {
50442
 
50443
  //! moment.js locale configuration
@@ -50601,7 +50586,7 @@ webpackJsonp([0],[
50601
 
50602
 
50603
  /***/ },
50604
- /* 359 */
50605
  /***/ function(module, exports, __webpack_require__) {
50606
 
50607
  //! moment.js locale configuration
@@ -50688,7 +50673,7 @@ webpackJsonp([0],[
50688
 
50689
 
50690
  /***/ },
50691
- /* 360 */
50692
  /***/ function(module, exports, __webpack_require__) {
50693
 
50694
  //! moment.js locale configuration
@@ -50776,7 +50761,7 @@ webpackJsonp([0],[
50776
 
50777
 
50778
  /***/ },
50779
- /* 361 */
50780
  /***/ function(module, exports, __webpack_require__) {
50781
 
50782
  //! moment.js locale configuration
@@ -50877,7 +50862,7 @@ webpackJsonp([0],[
50877
 
50878
 
50879
  /***/ },
50880
- /* 362 */
50881
  /***/ function(module, exports, __webpack_require__) {
50882
 
50883
  //! moment.js locale configuration
@@ -50945,7 +50930,7 @@ webpackJsonp([0],[
50945
 
50946
 
50947
  /***/ },
50948
- /* 363 */
50949
  /***/ function(module, exports, __webpack_require__) {
50950
 
50951
  //! moment.js locale configuration
@@ -51073,7 +51058,7 @@ webpackJsonp([0],[
51073
 
51074
 
51075
  /***/ },
51076
- /* 364 */
51077
  /***/ function(module, exports, __webpack_require__) {
51078
 
51079
  //! moment.js locale configuration
@@ -51164,7 +51149,7 @@ webpackJsonp([0],[
51164
 
51165
 
51166
  /***/ },
51167
- /* 365 */
51168
  /***/ function(module, exports, __webpack_require__) {
51169
 
51170
  //! moment.js locale configuration
@@ -51255,7 +51240,7 @@ webpackJsonp([0],[
51255
 
51256
 
51257
  /***/ },
51258
- /* 366 */
51259
  /***/ function(module, exports, __webpack_require__) {
51260
 
51261
  //! moment.js locale configuration
@@ -51320,7 +51305,7 @@ webpackJsonp([0],[
51320
 
51321
 
51322
  /***/ },
51323
- /* 367 */
51324
  /***/ function(module, exports, __webpack_require__) {
51325
 
51326
  //! moment.js locale configuration
@@ -51449,7 +51434,7 @@ webpackJsonp([0],[
51449
 
51450
 
51451
  /***/ },
51452
- /* 368 */
51453
  /***/ function(module, exports, __webpack_require__) {
51454
 
51455
  //! moment.js locale configuration
@@ -51559,7 +51544,7 @@ webpackJsonp([0],[
51559
 
51560
 
51561
  /***/ },
51562
- /* 369 */
51563
  /***/ function(module, exports, __webpack_require__) {
51564
 
51565
  //! moment.js locale configuration
@@ -51629,7 +51614,7 @@ webpackJsonp([0],[
51629
 
51630
 
51631
  /***/ },
51632
- /* 370 */
51633
  /***/ function(module, exports, __webpack_require__) {
51634
 
51635
  //! moment.js locale configuration
@@ -51695,7 +51680,7 @@ webpackJsonp([0],[
51695
 
51696
 
51697
  /***/ },
51698
- /* 371 */
51699
  /***/ function(module, exports, __webpack_require__) {
51700
 
51701
  //! moment.js locale configuration
@@ -51775,7 +51760,7 @@ webpackJsonp([0],[
51775
 
51776
 
51777
  /***/ },
51778
- /* 372 */
51779
  /***/ function(module, exports, __webpack_require__) {
51780
 
51781
  //! moment.js locale configuration
@@ -51963,7 +51948,7 @@ webpackJsonp([0],[
51963
 
51964
 
51965
  /***/ },
51966
- /* 373 */
51967
  /***/ function(module, exports, __webpack_require__) {
51968
 
51969
  //! moment.js locale configuration
@@ -52029,7 +52014,7 @@ webpackJsonp([0],[
52029
 
52030
 
52031
  /***/ },
52032
- /* 374 */
52033
  /***/ function(module, exports, __webpack_require__) {
52034
 
52035
  //! moment.js locale configuration
@@ -52105,7 +52090,7 @@ webpackJsonp([0],[
52105
 
52106
 
52107
  /***/ },
52108
- /* 375 */
52109
  /***/ function(module, exports, __webpack_require__) {
52110
 
52111
  //! moment.js locale configuration
@@ -52260,7 +52245,7 @@ webpackJsonp([0],[
52260
 
52261
 
52262
  /***/ },
52263
- /* 376 */
52264
  /***/ function(module, exports, __webpack_require__) {
52265
 
52266
  //! moment.js locale configuration
@@ -52427,7 +52412,7 @@ webpackJsonp([0],[
52427
 
52428
 
52429
  /***/ },
52430
- /* 377 */
52431
  /***/ function(module, exports, __webpack_require__) {
52432
 
52433
  //! moment.js locale configuration
@@ -52502,7 +52487,7 @@ webpackJsonp([0],[
52502
 
52503
 
52504
  /***/ },
52505
- /* 378 */
52506
  /***/ function(module, exports, __webpack_require__) {
52507
 
52508
  //! moment.js locale configuration
@@ -52617,7 +52602,7 @@ webpackJsonp([0],[
52617
 
52618
 
52619
  /***/ },
52620
- /* 379 */
52621
  /***/ function(module, exports, __webpack_require__) {
52622
 
52623
  //! moment.js locale configuration
@@ -52732,7 +52717,7 @@ webpackJsonp([0],[
52732
 
52733
 
52734
  /***/ },
52735
- /* 380 */
52736
  /***/ function(module, exports, __webpack_require__) {
52737
 
52738
  //! moment.js locale configuration
@@ -52826,7 +52811,7 @@ webpackJsonp([0],[
52826
 
52827
 
52828
  /***/ },
52829
- /* 381 */
52830
  /***/ function(module, exports, __webpack_require__) {
52831
 
52832
  //! moment.js locale configuration
@@ -52900,7 +52885,7 @@ webpackJsonp([0],[
52900
 
52901
 
52902
  /***/ },
52903
- /* 382 */
52904
  /***/ function(module, exports, __webpack_require__) {
52905
 
52906
  //! moment.js locale configuration
@@ -52964,7 +52949,7 @@ webpackJsonp([0],[
52964
 
52965
 
52966
  /***/ },
52967
- /* 383 */
52968
  /***/ function(module, exports, __webpack_require__) {
52969
 
52970
  //! moment.js locale configuration
@@ -53099,7 +53084,7 @@ webpackJsonp([0],[
53099
 
53100
 
53101
  /***/ },
53102
- /* 384 */
53103
  /***/ function(module, exports, __webpack_require__) {
53104
 
53105
  //! moment.js locale configuration
@@ -53193,7 +53178,7 @@ webpackJsonp([0],[
53193
 
53194
 
53195
  /***/ },
53196
- /* 385 */
53197
  /***/ function(module, exports, __webpack_require__) {
53198
 
53199
  //! moment.js locale configuration
@@ -53266,7 +53251,7 @@ webpackJsonp([0],[
53266
 
53267
 
53268
  /***/ },
53269
- /* 386 */
53270
  /***/ function(module, exports, __webpack_require__) {
53271
 
53272
  //! moment.js locale configuration
@@ -53338,7 +53323,7 @@ webpackJsonp([0],[
53338
 
53339
 
53340
  /***/ },
53341
- /* 387 */
53342
  /***/ function(module, exports, __webpack_require__) {
53343
 
53344
  //! moment.js locale configuration
@@ -53405,7 +53390,7 @@ webpackJsonp([0],[
53405
 
53406
 
53407
  /***/ },
53408
- /* 388 */
53409
  /***/ function(module, exports, __webpack_require__) {
53410
 
53411
  //! moment.js locale configuration
@@ -53530,7 +53515,7 @@ webpackJsonp([0],[
53530
 
53531
 
53532
  /***/ },
53533
- /* 389 */
53534
  /***/ function(module, exports, __webpack_require__) {
53535
 
53536
  //! moment.js locale configuration
@@ -53625,7 +53610,7 @@ webpackJsonp([0],[
53625
 
53626
 
53627
  /***/ },
53628
- /* 390 */
53629
  /***/ function(module, exports, __webpack_require__) {
53630
 
53631
  //! moment.js locale configuration
@@ -53721,7 +53706,7 @@ webpackJsonp([0],[
53721
 
53722
 
53723
  /***/ },
53724
- /* 391 */
53725
  /***/ function(module, exports, __webpack_require__) {
53726
 
53727
  //! moment.js locale configuration
@@ -53784,7 +53769,7 @@ webpackJsonp([0],[
53784
 
53785
 
53786
  /***/ },
53787
- /* 392 */
53788
  /***/ function(module, exports, __webpack_require__) {
53789
 
53790
  //! moment.js locale configuration
@@ -53847,7 +53832,7 @@ webpackJsonp([0],[
53847
 
53848
 
53849
  /***/ },
53850
- /* 393 */
53851
  /***/ function(module, exports, __webpack_require__) {
53852
 
53853
  //! moment.js locale configuration
@@ -53998,7 +53983,7 @@ webpackJsonp([0],[
53998
 
53999
 
54000
  /***/ },
54001
- /* 394 */
54002
  /***/ function(module, exports, __webpack_require__) {
54003
 
54004
  //! moment.js locale configuration
@@ -54061,7 +54046,7 @@ webpackJsonp([0],[
54061
 
54062
 
54063
  /***/ },
54064
- /* 395 */
54065
  /***/ function(module, exports, __webpack_require__) {
54066
 
54067
  //! moment.js locale configuration
@@ -54145,7 +54130,7 @@ webpackJsonp([0],[
54145
 
54146
 
54147
  /***/ },
54148
- /* 396 */
54149
  /***/ function(module, exports, __webpack_require__) {
54150
 
54151
  //! moment.js locale configuration
@@ -54218,11 +54203,11 @@ webpackJsonp([0],[
54218
 
54219
 
54220
  /***/ },
54221
- /* 397 */
54222
  /***/ function(module, exports, __webpack_require__) {
54223
 
54224
  //! moment.js locale configuration
54225
- //! locale : Yoruba Nigeria (yo)
54226
  //! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
54227
 
54228
  ;(function (global, factory) {
@@ -54283,7 +54268,7 @@ webpackJsonp([0],[
54283
 
54284
 
54285
  /***/ },
54286
- /* 398 */
54287
  /***/ function(module, exports, __webpack_require__) {
54288
 
54289
  //! moment.js locale configuration
@@ -54415,7 +54400,7 @@ webpackJsonp([0],[
54415
 
54416
 
54417
  /***/ },
54418
- /* 399 */
54419
  /***/ function(module, exports, __webpack_require__) {
54420
 
54421
  //! moment.js locale configuration
@@ -54525,7 +54510,7 @@ webpackJsonp([0],[
54525
 
54526
 
54527
  /***/ },
54528
- /* 400 */
54529
  /***/ function(module, exports, __webpack_require__) {
54530
 
54531
  //! moment.js locale configuration
@@ -54634,14 +54619,14 @@ webpackJsonp([0],[
54634
 
54635
 
54636
  /***/ },
54637
- /* 401 */
54638
  /***/ function(module, exports, __webpack_require__) {
54639
 
54640
  /* eslint-disable vars-on-top, no-var, prefer-template */
54641
- var isRegExp = __webpack_require__(402);
54642
- var escapeRegExp = __webpack_require__(403);
54643
- var isString = __webpack_require__(404);
54644
- var flatten = __webpack_require__(405);
54645
 
54646
  /**
54647
  * Given a string, replace every substring that is matched by the `match` regex
@@ -54699,7 +54684,7 @@ webpackJsonp([0],[
54699
 
54700
 
54701
  /***/ },
54702
- /* 402 */
54703
  /***/ function(module, exports, __webpack_require__) {
54704
 
54705
  /* WEBPACK VAR INJECTION */(function(global, module) {/**
@@ -54827,7 +54812,7 @@ webpackJsonp([0],[
54827
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(290)(module)))
54828
 
54829
  /***/ },
54830
- /* 403 */
54831
  /***/ function(module, exports) {
54832
 
54833
  /* WEBPACK VAR INJECTION */(function(global) {/**
@@ -55000,7 +54985,7 @@ webpackJsonp([0],[
55000
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
55001
 
55002
  /***/ },
55003
- /* 404 */
55004
  /***/ function(module, exports) {
55005
 
55006
  /**
@@ -55101,7 +55086,7 @@ webpackJsonp([0],[
55101
 
55102
 
55103
  /***/ },
55104
- /* 405 */
55105
  /***/ function(module, exports) {
55106
 
55107
  /* WEBPACK VAR INJECTION */(function(global) {/**
@@ -55457,7 +55442,7 @@ webpackJsonp([0],[
55457
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
55458
 
55459
  /***/ },
55460
- /* 406 */
55461
  /***/ function(module, exports, __webpack_require__) {
55462
 
55463
  'use strict';
@@ -55476,43 +55461,43 @@ webpackJsonp([0],[
55476
 
55477
  var _history = __webpack_require__(236);
55478
 
55479
- var _newslettersTypesJsx = __webpack_require__(407);
55480
 
55481
  var _newslettersTypesJsx2 = _interopRequireDefault(_newslettersTypesJsx);
55482
 
55483
- var _newslettersTemplatesJsx = __webpack_require__(409);
55484
 
55485
  var _newslettersTemplatesJsx2 = _interopRequireDefault(_newslettersTemplatesJsx);
55486
 
55487
- var _newslettersSendJsx = __webpack_require__(410);
55488
 
55489
  var _newslettersSendJsx2 = _interopRequireDefault(_newslettersSendJsx);
55490
 
55491
- var _newslettersTypesStandardJsx = __webpack_require__(417);
55492
 
55493
  var _newslettersTypesStandardJsx2 = _interopRequireDefault(_newslettersTypesStandardJsx);
55494
 
55495
- var _newslettersTypesWelcomeWelcomeJsx = __webpack_require__(418);
55496
 
55497
  var _newslettersTypesWelcomeWelcomeJsx2 = _interopRequireDefault(_newslettersTypesWelcomeWelcomeJsx);
55498
 
55499
- var _newslettersTypesNotificationNotificationJsx = __webpack_require__(419);
55500
 
55501
  var _newslettersTypesNotificationNotificationJsx2 = _interopRequireDefault(_newslettersTypesNotificationNotificationJsx);
55502
 
55503
- var _newslettersListingsStandardJsx = __webpack_require__(420);
55504
 
55505
  var _newslettersListingsStandardJsx2 = _interopRequireDefault(_newslettersListingsStandardJsx);
55506
 
55507
- var _newslettersListingsWelcomeJsx = __webpack_require__(423);
55508
 
55509
  var _newslettersListingsWelcomeJsx2 = _interopRequireDefault(_newslettersListingsWelcomeJsx);
55510
 
55511
- var _newslettersListingsNotificationJsx = __webpack_require__(424);
55512
 
55513
  var _newslettersListingsNotificationJsx2 = _interopRequireDefault(_newslettersListingsNotificationJsx);
55514
 
55515
- var _newslettersListingsNotification_historyJsx = __webpack_require__(425);
55516
 
55517
  var _newslettersListingsNotification_historyJsx2 = _interopRequireDefault(_newslettersListingsNotification_historyJsx);
55518
 
@@ -55529,7 +55514,7 @@ webpackJsonp([0],[
55529
  var container = document.getElementById('newsletters_container');
55530
 
55531
  if (container) {
55532
- _reactDom2['default'].render(_react2['default'].createElement(
55533
  _reactRouter.Router,
55534
  { history: history },
55535
  _react2['default'].createElement(
@@ -55548,16 +55533,18 @@ webpackJsonp([0],[
55548
  _react2['default'].createElement(_reactRouter.Route, { path: 'send/:id', component: _newslettersSendJsx2['default'] })
55549
  )
55550
  ), container);
 
 
55551
  }
55552
  /* Listings */ /* Newsletter: type selection */ /* New newsletter: types */ /* Template selection */ /* Sending options */
55553
 
55554
  /***/ },
55555
- /* 407 */
55556
  /***/ function(module, exports, __webpack_require__) {
55557
 
55558
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
55559
 
55560
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(267), __webpack_require__(180), __webpack_require__(408)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, MailPoet, Router, Breadcrumb) {
55561
  var NewsletterTypes = React.createClass({
55562
  displayName: 'NewsletterTypes',
55563
 
@@ -55704,7 +55691,7 @@ webpackJsonp([0],[
55704
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
55705
 
55706
  /***/ },
55707
- /* 408 */
55708
  /***/ function(module, exports, __webpack_require__) {
55709
 
55710
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
@@ -55772,12 +55759,12 @@ webpackJsonp([0],[
55772
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
55773
 
55774
  /***/ },
55775
- /* 409 */
55776
  /***/ function(module, exports, __webpack_require__) {
55777
 
55778
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
55779
 
55780
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(270), __webpack_require__(267), __webpack_require__(180), __webpack_require__(268), __webpack_require__(408)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, _, MailPoet, Router, classNames, Breadcrumb) {
55781
 
55782
  var ImportTemplate = React.createClass({
55783
  displayName: 'ImportTemplate',
@@ -56044,14 +56031,14 @@ webpackJsonp([0],[
56044
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
56045
 
56046
  /***/ },
56047
- /* 410 */
56048
  /***/ function(module, exports, __webpack_require__) {
56049
 
56050
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
56051
 
56052
  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; };
56053
 
56054
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(180), __webpack_require__(270), __webpack_require__(267), __webpack_require__(281), __webpack_require__(411), __webpack_require__(412), __webpack_require__(415), __webpack_require__(408)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, Router, _, MailPoet, Form, StandardNewsletterFields, NotificationNewsletterFields, WelcomeNewsletterFields, Breadcrumb) {
56055
 
56056
  var NewsletterSend = React.createClass({
56057
  displayName: 'NewsletterSend',
@@ -56291,7 +56278,7 @@ webpackJsonp([0],[
56291
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
56292
 
56293
  /***/ },
56294
- /* 411 */
56295
  /***/ function(module, exports, __webpack_require__) {
56296
 
56297
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
@@ -56667,12 +56654,12 @@ webpackJsonp([0],[
56667
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
56668
 
56669
  /***/ },
56670
- /* 412 */
56671
  /***/ function(module, exports, __webpack_require__) {
56672
 
56673
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
56674
 
56675
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(413), __webpack_require__(270)], __WEBPACK_AMD_DEFINE_RESULT__ = function (MailPoet, Scheduling, _) {
56676
 
56677
  var settings = window.mailpoet_settings || {};
56678
 
@@ -56766,7 +56753,7 @@ webpackJsonp([0],[
56766
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
56767
 
56768
  /***/ },
56769
- /* 413 */
56770
  /***/ function(module, exports, __webpack_require__) {
56771
 
56772
  'use strict';
@@ -56785,7 +56772,7 @@ webpackJsonp([0],[
56785
 
56786
  var _formFieldsSelectJsx2 = _interopRequireDefault(_formFieldsSelectJsx);
56787
 
56788
- var _newslettersSchedulingCommonJsx = __webpack_require__(414);
56789
 
56790
  var intervalField = {
56791
  name: 'intervalType',
@@ -56899,7 +56886,7 @@ webpackJsonp([0],[
56899
  module.exports = NotificationScheduling;
56900
 
56901
  /***/ },
56902
- /* 414 */
56903
  /***/ function(module, exports, __webpack_require__) {
56904
 
56905
  'use strict';
@@ -56993,12 +56980,12 @@ webpackJsonp([0],[
56993
  exports.nthWeekDayValues = _nthWeekDayValues;
56994
 
56995
  /***/ },
56996
- /* 415 */
56997
  /***/ function(module, exports, __webpack_require__) {
56998
 
56999
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
57000
 
57001
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(416)], __WEBPACK_AMD_DEFINE_RESULT__ = function (MailPoet, Scheduling) {
57002
 
57003
  var settings = window.mailpoet_settings || {};
57004
 
@@ -57065,7 +57052,7 @@ webpackJsonp([0],[
57065
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
57066
 
57067
  /***/ },
57068
- /* 416 */
57069
  /***/ function(module, exports, __webpack_require__) {
57070
 
57071
  'use strict';
@@ -57092,7 +57079,7 @@ webpackJsonp([0],[
57092
 
57093
  var _formFieldsTextJsx2 = _interopRequireDefault(_formFieldsTextJsx);
57094
 
57095
- var _newslettersSchedulingCommonJsx = __webpack_require__(414);
57096
 
57097
  var availableRoles = window.mailpoet_roles || {};
57098
  var availableSegments = _underscore2['default'].filter(window.mailpoet_segments || [], function (segment) {
@@ -57237,12 +57224,12 @@ webpackJsonp([0],[
57237
  module.exports = WelcomeScheduling;
57238
 
57239
  /***/ },
57240
- /* 417 */
57241
  /***/ function(module, exports, __webpack_require__) {
57242
 
57243
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
57244
 
57245
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(180), __webpack_require__(267), __webpack_require__(408)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, Router, MailPoet, Breadcrumb) {
57246
 
57247
  var NewsletterStandard = React.createClass({
57248
  displayName: 'NewsletterStandard',
@@ -57291,12 +57278,12 @@ webpackJsonp([0],[
57291
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
57292
 
57293
  /***/ },
57294
- /* 418 */
57295
  /***/ function(module, exports, __webpack_require__) {
57296
 
57297
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
57298
 
57299
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(270), __webpack_require__(2), __webpack_require__(180), __webpack_require__(267), __webpack_require__(416), __webpack_require__(408)], __WEBPACK_AMD_DEFINE_RESULT__ = function (_, React, Router, MailPoet, Scheduling, Breadcrumb) {
57300
 
57301
  var field = {
57302
  name: 'options',
@@ -57393,12 +57380,12 @@ webpackJsonp([0],[
57393
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
57394
 
57395
  /***/ },
57396
- /* 419 */
57397
  /***/ function(module, exports, __webpack_require__) {
57398
 
57399
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
57400
 
57401
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(270), __webpack_require__(2), __webpack_require__(180), __webpack_require__(267), __webpack_require__(413), __webpack_require__(408)], __WEBPACK_AMD_DEFINE_RESULT__ = function (_, React, Router, MailPoet, Scheduling, Breadcrumb) {
57402
 
57403
  var field = {
57404
  name: 'options',
@@ -57487,7 +57474,7 @@ webpackJsonp([0],[
57487
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
57488
 
57489
  /***/ },
57490
- /* 420 */
57491
  /***/ function(module, exports, __webpack_require__) {
57492
 
57493
  'use strict';
@@ -57516,13 +57503,14 @@ webpackJsonp([0],[
57516
 
57517
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
57518
 
57519
- var _newslettersListingsTabsJsx = __webpack_require__(421);
57520
 
57521
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
57522
 
57523
- var _newslettersListingsMixinsJsx = __webpack_require__(422);
57524
 
57525
  var mailpoet_tracking_enabled = !!window['mailpoet_tracking_enabled'];
 
57526
 
57527
  var messages = {
57528
  onTrash: function onTrash(response) {
@@ -57632,8 +57620,8 @@ webpackJsonp([0],[
57632
  var NewsletterListStandard = _react2['default'].createClass({
57633
  displayName: 'NewsletterListStandard',
57634
 
57635
- mixins: [_newslettersListingsMixinsJsx.QueueMixin, _newslettersListingsMixinsJsx.StatisticsMixin],
57636
- renderItem: function renderItem(newsletter, actions) {
57637
  var rowClasses = (0, _classnames2['default'])('manage-column', 'column-primary', 'has-row-actions');
57638
 
57639
  var segments = newsletter.segments.map(function (segment) {
@@ -57663,7 +57651,7 @@ webpackJsonp([0],[
57663
  _react2['default'].createElement(
57664
  'td',
57665
  { className: 'column', 'data-colname': _mailpoet2['default'].I18n.t('status') },
57666
- this.renderQueueStatus(newsletter)
57667
  ),
57668
  _react2['default'].createElement(
57669
  'td',
@@ -57716,7 +57704,8 @@ webpackJsonp([0],[
57716
  messages: messages,
57717
  auto_refresh: true,
57718
  sort_by: 'updated_at',
57719
- sort_order: 'desc'
 
57720
  })
57721
  );
57722
  }
@@ -57725,7 +57714,7 @@ webpackJsonp([0],[
57725
  module.exports = NewsletterListStandard;
57726
 
57727
  /***/ },
57728
- /* 421 */
57729
  /***/ function(module, exports, __webpack_require__) {
57730
 
57731
  'use strict';
@@ -57795,7 +57784,7 @@ webpackJsonp([0],[
57795
  module.exports = ListingTabs;
57796
 
57797
  /***/ },
57798
- /* 422 */
57799
  /***/ function(module, exports, __webpack_require__) {
57800
 
57801
  'use strict';
@@ -57810,6 +57799,14 @@ webpackJsonp([0],[
57810
 
57811
  var _react2 = _interopRequireDefault(_react);
57812
 
 
 
 
 
 
 
 
 
57813
  var _mailpoet = __webpack_require__(267);
57814
 
57815
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
@@ -57859,13 +57856,19 @@ webpackJsonp([0],[
57859
  }
57860
  });
57861
  },
57862
- renderQueueStatus: function renderQueueStatus(newsletter) {
57863
  if (!newsletter.queue) {
57864
  return _react2['default'].createElement(
57865
  'span',
57866
  null,
57867
  _mailpoet2['default'].I18n.t('notSentYet')
57868
  );
 
 
 
 
 
 
57869
  } else {
57870
  if (newsletter.queue.status === 'scheduled') {
57871
  return _react2['default'].createElement(
@@ -57887,7 +57890,7 @@ webpackJsonp([0],[
57887
  label = _react2['default'].createElement(
57888
  'span',
57889
  null,
57890
- _mailpoet2['default'].I18n.t('newsletterQueueCompleted').replace("%$1d", newsletter.queue.count_processed - newsletter.queue.count_failed).replace("%$2d", newsletter.queue.count_total)
57891
  );
57892
  } else {
57893
  label = _react2['default'].createElement(
@@ -57992,11 +57995,81 @@ webpackJsonp([0],[
57992
  }
57993
  };
57994
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57995
  exports.QueueMixin = _QueueMixin;
57996
  exports.StatisticsMixin = _StatisticsMixin;
 
57997
 
57998
  /***/ },
57999
- /* 423 */
58000
  /***/ function(module, exports, __webpack_require__) {
58001
 
58002
  'use strict';
@@ -58015,10 +58088,12 @@ webpackJsonp([0],[
58015
 
58016
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
58017
 
58018
- var _newslettersListingsTabsJsx = __webpack_require__(421);
58019
 
58020
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
58021
 
 
 
58022
  var _classnames = __webpack_require__(268);
58023
 
58024
  var _classnames2 = _interopRequireDefault(_classnames);
@@ -58038,6 +58113,7 @@ webpackJsonp([0],[
58038
  var mailpoet_roles = window.mailpoet_roles || {};
58039
  var mailpoet_segments = window.mailpoet_segments || {};
58040
  var mailpoet_tracking_enabled = !!window['mailpoet_tracking_enabled'];
 
58041
 
58042
  var messages = {
58043
  onTrash: function onTrash(response) {
@@ -58148,6 +58224,7 @@ webpackJsonp([0],[
58148
  var NewsletterListWelcome = _react2['default'].createClass({
58149
  displayName: 'NewsletterListWelcome',
58150
 
 
58151
  updateStatus: function updateStatus(e) {
58152
  var _this = this;
58153
 
@@ -58381,7 +58458,8 @@ webpackJsonp([0],[
58381
  messages: messages,
58382
  auto_refresh: true,
58383
  sort_by: 'updated_at',
58384
- sort_order: 'desc'
 
58385
  })
58386
  );
58387
  }
@@ -58390,7 +58468,7 @@ webpackJsonp([0],[
58390
  module.exports = NewsletterListWelcome;
58391
 
58392
  /***/ },
58393
- /* 424 */
58394
  /***/ function(module, exports, __webpack_require__) {
58395
 
58396
  'use strict';
@@ -58409,10 +58487,12 @@ webpackJsonp([0],[
58409
 
58410
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
58411
 
58412
- var _newslettersListingsTabsJsx = __webpack_require__(421);
58413
 
58414
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
58415
 
 
 
58416
  var _classnames = __webpack_require__(268);
58417
 
58418
  var _classnames2 = _interopRequireDefault(_classnames);
@@ -58425,7 +58505,9 @@ webpackJsonp([0],[
58425
 
58426
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
58427
 
58428
- var _newslettersSchedulingCommonJsx = __webpack_require__(414);
 
 
58429
 
58430
  var messages = {
58431
  onTrash: function onTrash(response) {
@@ -58536,6 +58618,7 @@ webpackJsonp([0],[
58536
  var NewsletterListNotification = _react2['default'].createClass({
58537
  displayName: 'NewsletterListNotification',
58538
 
 
58539
  updateStatus: function updateStatus(e) {
58540
  var _this = this;
58541
 
@@ -58727,7 +58810,8 @@ webpackJsonp([0],[
58727
  messages: messages,
58728
  auto_refresh: true,
58729
  sort_by: 'updated_at',
58730
- sort_order: 'desc'
 
58731
  })
58732
  );
58733
  }
@@ -58736,7 +58820,7 @@ webpackJsonp([0],[
58736
  module.exports = NewsletterListNotification;
58737
 
58738
  /***/ },
58739
- /* 425 */
58740
  /***/ function(module, exports, __webpack_require__) {
58741
 
58742
  'use strict';
@@ -58765,13 +58849,14 @@ webpackJsonp([0],[
58765
 
58766
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
58767
 
58768
- var _newslettersListingsTabsJsx = __webpack_require__(421);
58769
 
58770
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
58771
 
58772
- var _newslettersListingsMixinsJsx = __webpack_require__(422);
58773
 
58774
  var mailpoet_tracking_enabled = !!window['mailpoet_tracking_enabled'];
 
58775
 
58776
  var columns = [{
58777
  name: 'subject',
@@ -58805,14 +58890,16 @@ webpackJsonp([0],[
58805
  var NewsletterListNotificationHistory = _react2['default'].createClass({
58806
  displayName: 'NewsletterListNotificationHistory',
58807
 
58808
- mixins: [_newslettersListingsMixinsJsx.QueueMixin, _newslettersListingsMixinsJsx.StatisticsMixin],
58809
- renderItem: function renderItem(newsletter, actions) {
58810
  var rowClasses = (0, _classnames2['default'])('manage-column', 'column-primary', 'has-row-actions');
58811
 
58812
  var segments = newsletter.segments.map(function (segment) {
58813
  return segment.name;
58814
  }).join(', ');
58815
 
 
 
58816
  return _react2['default'].createElement(
58817
  'div',
58818
  null,
@@ -58836,7 +58923,7 @@ webpackJsonp([0],[
58836
  _react2['default'].createElement(
58837
  'td',
58838
  { className: 'column', 'data-colname': _mailpoet2['default'].I18n.t('status') },
58839
- this.renderQueueStatus(newsletter)
58840
  ),
58841
  _react2['default'].createElement(
58842
  'td',
@@ -58895,7 +58982,8 @@ webpackJsonp([0],[
58895
  item_actions: newsletter_actions,
58896
  auto_refresh: true,
58897
  sort_by: 'updated_at',
58898
- sort_order: 'desc'
 
58899
  })
58900
  );
58901
  }
@@ -58904,7 +58992,7 @@ webpackJsonp([0],[
58904
  module.exports = NewsletterListNotificationHistory;
58905
 
58906
  /***/ },
58907
- /* 426 */
58908
  /***/ function(module, exports, __webpack_require__) {
58909
 
58910
  'use strict';
@@ -58923,11 +59011,11 @@ webpackJsonp([0],[
58923
 
58924
  var _history = __webpack_require__(236);
58925
 
58926
- var _segmentsListJsx = __webpack_require__(427);
58927
 
58928
  var _segmentsListJsx2 = _interopRequireDefault(_segmentsListJsx);
58929
 
58930
- var _segmentsFormJsx = __webpack_require__(428);
58931
 
58932
  var _segmentsFormJsx2 = _interopRequireDefault(_segmentsFormJsx);
58933
 
@@ -58959,7 +59047,7 @@ webpackJsonp([0],[
58959
  }
58960
 
58961
  /***/ },
58962
- /* 427 */
58963
  /***/ function(module, exports, __webpack_require__) {
58964
 
58965
  'use strict';
@@ -59275,7 +59363,7 @@ webpackJsonp([0],[
59275
  module.exports = SegmentList;
59276
 
59277
  /***/ },
59278
- /* 428 */
59279
  /***/ function(module, exports, __webpack_require__) {
59280
 
59281
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
@@ -59335,7 +59423,7 @@ webpackJsonp([0],[
59335
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
59336
 
59337
  /***/ },
59338
- /* 429 */
59339
  /***/ function(module, exports, __webpack_require__) {
59340
 
59341
  'use strict';
@@ -59354,7 +59442,7 @@ webpackJsonp([0],[
59354
 
59355
  var _history = __webpack_require__(236);
59356
 
59357
- var _formsListJsx = __webpack_require__(430);
59358
 
59359
  var _formsListJsx2 = _interopRequireDefault(_formsListJsx);
59360
 
@@ -59384,7 +59472,7 @@ webpackJsonp([0],[
59384
  }
59385
 
59386
  /***/ },
59387
- /* 430 */
59388
  /***/ function(module, exports, __webpack_require__) {
59389
 
59390
  'use strict';
@@ -59615,11 +59703,11 @@ webpackJsonp([0],[
59615
  module.exports = FormList;
59616
 
59617
  /***/ },
59618
- /* 431 */
59619
  /***/ function(module, exports, __webpack_require__) {
59620
 
59621
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
59622
- __webpack_require__(432),
59623
  __webpack_require__(266),
59624
  __webpack_require__(267)
59625
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
@@ -59696,14 +59784,14 @@ webpackJsonp([0],[
59696
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
59697
 
59698
  /***/ },
59699
- /* 432 */
59700
  /***/ function(module, exports, __webpack_require__) {
59701
 
59702
- /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["Backbone"] = __webpack_require__(433);
59703
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
59704
 
59705
  /***/ },
59706
- /* 433 */
59707
  /***/ function(module, exports, __webpack_require__) {
59708
 
59709
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global) {// Backbone.js 1.3.3
@@ -61630,17 +61718,17 @@ webpackJsonp([0],[
61630
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
61631
 
61632
  /***/ },
61633
- /* 434 */
61634
  /***/ function(module, exports, __webpack_require__) {
61635
 
61636
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
61637
- __webpack_require__(432),
61638
  __webpack_require__(270),
61639
  __webpack_require__(266),
61640
  __webpack_require__(267),
 
61641
  __webpack_require__(435),
61642
  __webpack_require__(436),
61643
- __webpack_require__(437),
61644
  __webpack_require__(289),
61645
  __webpack_require__(279)
61646
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function (
@@ -61651,7 +61739,8 @@ webpackJsonp([0],[
61651
  Handlebars,
61652
  Papa,
61653
  AsyncQueue,
61654
- Moment
 
61655
  ) {
61656
  if (!jQuery('#mailpoet_subscribers_import').length) {
61657
  return;
@@ -62743,8 +62832,8 @@ webpackJsonp([0],[
62743
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
62744
 
62745
  /***/ },
62746
- /* 435 */,
62747
- /* 436 */
62748
  /***/ function(module, exports) {
62749
 
62750
  /*!
@@ -62755,7 +62844,7 @@ webpackJsonp([0],[
62755
  !function(e){"use strict";function t(t,r){if(r=r||{},r.worker&&w.WORKERS_SUPPORTED){var n=h();return n.userStep=r.step,n.userChunk=r.chunk,n.userComplete=r.complete,n.userError=r.error,r.step=m(r.step),r.chunk=m(r.chunk),r.complete=m(r.complete),r.error=m(r.error),delete r.worker,void n.postMessage({input:t,config:r,workerId:n.id})}var o=null;return"string"==typeof t?o=r.download?new i(r):new a(r):(e.File&&t instanceof File||t instanceof Object)&&(o=new s(r)),o.stream(t)}function r(e,t){function r(){"object"==typeof t&&("string"==typeof t.delimiter&&1==t.delimiter.length&&-1==w.BAD_DELIMITERS.indexOf(t.delimiter)&&(u=t.delimiter),("boolean"==typeof t.quotes||t.quotes instanceof Array)&&(o=t.quotes),"string"==typeof t.newline&&(f=t.newline))}function n(e){if("object"!=typeof e)return[];var t=[];for(var r in e)t.push(r);return t}function i(e,t){var r="";"string"==typeof e&&(e=JSON.parse(e)),"string"==typeof t&&(t=JSON.parse(t));var n=e instanceof Array&&e.length>0,i=!(t[0]instanceof Array);if(n){for(var a=0;a<e.length;a++)a>0&&(r+=u),r+=s(e[a],a);t.length>0&&(r+=f)}for(var o=0;o<t.length;o++){for(var h=n?e.length:t[o].length,d=0;h>d;d++){d>0&&(r+=u);var c=n&&i?e[d]:d;r+=s(t[o][c],d)}o<t.length-1&&(r+=f)}return r}function s(e,t){if("undefined"==typeof e||null===e)return"";e=e.toString().replace(/"/g,'""');var r="boolean"==typeof o&&o||o instanceof Array&&o[t]||a(e,w.BAD_DELIMITERS)||e.indexOf(u)>-1||" "==e.charAt(0)||" "==e.charAt(e.length-1);return r?'"'+e+'"':e}function a(e,t){for(var r=0;r<t.length;r++)if(e.indexOf(t[r])>-1)return!0;return!1}var o=!1,u=",",f="\r\n";if(r(),"string"==typeof e&&(e=JSON.parse(e)),e instanceof Array){if(!e.length||e[0]instanceof Array)return i(null,e);if("object"==typeof e[0])return i(n(e[0]),e)}else if("object"==typeof e)return"string"==typeof e.data&&(e.data=JSON.parse(e.data)),e.data instanceof Array&&(e.fields||(e.fields=e.data[0]instanceof Array?e.fields:n(e.data[0])),e.data[0]instanceof Array||"object"==typeof e.data[0]||(e.data=[e.data])),i(e.fields||[],e.data||[]);throw"exception: Unable to serialize unrecognized input"}function n(t){function r(e){var t=_(e);t.chunkSize=parseInt(t.chunkSize),this._handle=new o(t),this._handle.streamer=this,this._config=t}this._handle=null,this._paused=!1,this._finished=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this._completeResults={data:[],errors:[],meta:{}},r.call(this,t),this.parseChunk=function(t){var r=this._partialLine+t;this._partialLine="";var n=this._handle.parse(r,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var i=n.meta.cursor;this._finished||(this._partialLine=r.substring(i-this._baseIndex),this._baseIndex=i),n&&n.data&&(this._rowCount+=n.data.length);var s=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(k)e.postMessage({results:n,workerId:w.WORKER_ID,finished:s});else if(m(this._config.chunk)){if(this._config.chunk(n,this._handle),this._paused)return;n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),!s||!m(this._config.complete)||n&&n.meta.aborted||this._config.complete(this._completeResults),s||n&&n.meta.paused||this._nextChunk(),n}},this._sendError=function(t){m(this._config.error)?this._config.error(t):k&&this._config.error&&e.postMessage({workerId:w.WORKER_ID,error:t,finished:!1})}}function i(e){function t(e){var t=e.getResponseHeader("Content-Range");return parseInt(t.substr(t.lastIndexOf("/")+1))}e=e||{},e.chunkSize||(e.chunkSize=w.RemoteChunkSize),n.call(this,e);var r;this._nextChunk=k?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)return void this._chunkLoaded();if(r=new XMLHttpRequest,k||(r.onload=g(this._chunkLoaded,this),r.onerror=g(this._chunkError,this)),r.open("GET",this._input,!k),this._config.chunkSize){var e=this._start+this._config.chunkSize-1;r.setRequestHeader("Range","bytes="+this._start+"-"+e),r.setRequestHeader("If-None-Match","webkit-no-cache")}try{r.send()}catch(t){this._chunkError(t.message)}k&&0==r.status?this._chunkError():this._start+=this._config.chunkSize},this._chunkLoaded=function(){if(4==r.readyState){if(r.status<200||r.status>=400)return void this._chunkError();this._finished=!this._config.chunkSize||this._start>t(r),this.parseChunk(r.responseText)}},this._chunkError=function(e){var t=r.statusText||e;this._sendError(t)}}function s(e){e=e||{},e.chunkSize||(e.chunkSize=w.LocalChunkSize),n.call(this,e);var t,r,i="undefined"!=typeof FileReader;this.stream=function(e){this._input=e,r=e.slice||e.webkitSlice||e.mozSlice,i?(t=new FileReader,t.onload=g(this._chunkLoaded,this),t.onerror=g(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var n=Math.min(this._start+this._config.chunkSize,this._input.size);e=r.call(e,this._start,n)}var s=t.readAsText(e,this._config.encoding);i||this._chunkLoaded({target:{result:s}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(t.error)}}function a(e){e=e||{},n.call(this,e);var t,r;this.stream=function(e){return t=e,r=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e=this._config.chunkSize,t=e?r.substr(0,e):r;return r=e?r.substr(e):"",this._finished=!r,this.parseChunk(t)}}}function o(e){function t(){if(b&&c&&(f("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+w.DefaultDelimiter+"'"),c=!1),e.skipEmptyLines)for(var t=0;t<b.data.length;t++)1==b.data[t].length&&""==b.data[t][0]&&b.data.splice(t--,1);return r()&&n(),i()}function r(){return e.header&&0==y.length}function n(){if(b){for(var e=0;r()&&e<b.data.length;e++)for(var t=0;t<b.data[e].length;t++)y.push(b.data[e][t]);b.data.splice(0,1)}}function i(){if(!b||!e.header&&!e.dynamicTyping)return b;for(var t=0;t<b.data.length;t++){for(var r={},n=0;n<b.data[t].length;n++){if(e.dynamicTyping){var i=b.data[t][n];b.data[t][n]="true"==i||"TRUE"==i?!0:"false"==i||"FALSE"==i?!1:o(i)}e.header&&(n>=y.length?(r.__parsed_extra||(r.__parsed_extra=[]),r.__parsed_extra.push(b.data[t][n])):r[y[n]]=b.data[t][n])}e.header&&(b.data[t]=r,n>y.length?f("FieldMismatch","TooManyFields","Too many fields: expected "+y.length+" fields but parsed "+n,t):n<y.length&&f("FieldMismatch","TooFewFields","Too few fields: expected "+y.length+" fields but parsed "+n,t))}return e.header&&b.meta&&(b.meta.fields=y),b}function s(t){for(var r,n,i,s=[","," ","|",";",w.RECORD_SEP,w.UNIT_SEP],a=0;a<s.length;a++){var o=s[a],f=0,h=0;i=void 0;for(var d=new u({delimiter:o,preview:10}).parse(t),c=0;c<d.data.length;c++){var l=d.data[c].length;h+=l,"undefined"!=typeof i?l>1&&(f+=Math.abs(l-i),i=l):i=l}h/=d.data.length,("undefined"==typeof n||n>f)&&h>1.99&&(n=f,r=o)}return e.delimiter=r,{successful:!!r,bestDelimiter:r}}function a(e){e=e.substr(0,1048576);var t=e.split("\r");if(1==t.length)return"\n";for(var r=0,n=0;n<t.length;n++)"\n"==t[n][0]&&r++;return r>=t.length/2?"\r\n":"\r"}function o(e){var t=l.test(e);return t?parseFloat(e):e}function f(e,t,r,n){b.errors.push({type:e,code:t,message:r,row:n})}var h,d,c,l=/^\s*-?(\d*\.?\d+|\d+\.?\d*)(e[-+]?\d+)?\s*$/i,p=this,g=0,v=!1,k=!1,y=[],b={data:[],errors:[],meta:{}};if(m(e.step)){var R=e.step;e.step=function(n){if(b=n,r())t();else{if(t(),0==b.data.length)return;g+=n.data.length,e.preview&&g>e.preview?d.abort():R(b,p)}}}this.parse=function(r,n,i){if(e.newline||(e.newline=a(r)),c=!1,!e.delimiter){var o=s(r);o.successful?e.delimiter=o.bestDelimiter:(c=!0,e.delimiter=w.DefaultDelimiter),b.meta.delimiter=e.delimiter}var f=_(e);return e.preview&&e.header&&f.preview++,h=r,d=new u(f),b=d.parse(h,n,i),t(),v?{meta:{paused:!0}}:b||{meta:{paused:!1}}},this.paused=function(){return v},this.pause=function(){v=!0,d.abort(),h=h.substr(d.getCharIndex())},this.resume=function(){v=!1,p.streamer.parseChunk(h)},this.aborted=function(){return k},this.abort=function(){k=!0,d.abort(),b.meta.aborted=!0,m(e.complete)&&e.complete(b),h=""}}function u(e){e=e||{};var t=e.delimiter,r=e.newline,n=e.comments,i=e.step,s=e.preview,a=e.fastMode;if(("string"!=typeof t||w.BAD_DELIMITERS.indexOf(t)>-1)&&(t=","),n===t)throw"Comment character same as delimiter";n===!0?n="#":("string"!=typeof n||w.BAD_DELIMITERS.indexOf(n)>-1)&&(n=!1),"\n"!=r&&"\r"!=r&&"\r\n"!=r&&(r="\n");var o=0,u=!1;this.parse=function(e,f,h){function d(e){b.push(e),S=o}function c(t){return h?p():(t||(t=e.substr(o)),w.push(t),o=g,d(w),y&&_(),p())}function l(t){o=t,d(w),w=[],O=e.indexOf(r,o)}function p(e){return{data:b,errors:R,meta:{delimiter:t,linebreak:r,aborted:u,truncated:!!e,cursor:S+(f||0)}}}function _(){i(p()),b=[],R=[]}if("string"!=typeof e)throw"Input must be a string";var g=e.length,m=t.length,v=r.length,k=n.length,y="function"==typeof i;o=0;var b=[],R=[],w=[],S=0;if(!e)return p();if(a||a!==!1&&-1===e.indexOf('"')){for(var E=e.split(r),C=0;C<E.length;C++){var w=E[C];if(o+=w.length,C!==E.length-1)o+=r.length;else if(h)return p();if(!n||w.substr(0,k)!=n){if(y){if(b=[],d(w.split(t)),_(),u)return p()}else d(w.split(t));if(s&&C>=s)return b=b.slice(0,s),p(!0)}}return p()}for(var x=e.indexOf(t,o),O=e.indexOf(r,o);;)if('"'!=e[o])if(n&&0===w.length&&e.substr(o,k)===n){if(-1==O)return p();o=O+v,O=e.indexOf(r,o),x=e.indexOf(t,o)}else if(-1!==x&&(O>x||-1===O))w.push(e.substring(o,x)),o=x+m,x=e.indexOf(t,o);else{if(-1===O)break;if(w.push(e.substring(o,O)),l(O+v),y&&(_(),u))return p();if(s&&b.length>=s)return p(!0)}else{var I=o;for(o++;;){var I=e.indexOf('"',I+1);if(-1===I)return h||R.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:b.length,index:o}),c();if(I===g-1){var D=e.substring(o,I).replace(/""/g,'"');return c(D)}if('"'!=e[I+1]){if(e[I+1]==t){w.push(e.substring(o,I).replace(/""/g,'"')),o=I+1+m,x=e.indexOf(t,o),O=e.indexOf(r,o);break}if(e.substr(I+1,v)===r){if(w.push(e.substring(o,I).replace(/""/g,'"')),l(I+1+v),x=e.indexOf(t,o),y&&(_(),u))return p();if(s&&b.length>=s)return p(!0);break}}else I++}}return c()},this.abort=function(){u=!0},this.getCharIndex=function(){return o}}function f(){var e=document.getElementsByTagName("script");return e.length?e[e.length-1].src:""}function h(){if(!w.WORKERS_SUPPORTED)return!1;if(!y&&null===w.SCRIPT_PATH)throw new Error("Script path cannot be determined automatically when Papa Parse is loaded asynchronously. You need to set Papa.SCRIPT_PATH manually.");var t=new e.Worker(w.SCRIPT_PATH||v);return t.onmessage=d,t.id=R++,b[t.id]=t,t}function d(e){var t=e.data,r=b[t.workerId],n=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var i=function(){n=!0,c(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},s={abort:i,pause:l,resume:l};if(m(r.userStep)){for(var a=0;a<t.results.data.length&&(r.userStep({data:[t.results.data[a]],errors:t.results.errors,meta:t.results.meta},s),!n);a++);delete t.results}else m(r.userChunk)&&(r.userChunk(t.results,s,t.file),delete t.results)}t.finished&&!n&&c(t.workerId,t.results)}function c(e,t){var r=b[e];m(r.userComplete)&&r.userComplete(t),r.terminate(),delete b[e]}function l(){throw"Not implemented."}function p(t){var r=t.data;if("undefined"==typeof w.WORKER_ID&&r&&(w.WORKER_ID=r.workerId),"string"==typeof r.input)e.postMessage({workerId:w.WORKER_ID,results:w.parse(r.input,r.config),finished:!0});else if(e.File&&r.input instanceof File||r.input instanceof Object){var n=w.parse(r.input,r.config);n&&e.postMessage({workerId:w.WORKER_ID,results:n,finished:!0})}}function _(e){if("object"!=typeof e)return e;var t=e instanceof Array?[]:{};for(var r in e)t[r]=_(e[r]);return t}function g(e,t){return function(){e.apply(t,arguments)}}function m(e){return"function"==typeof e}var v,k=!e.document&&!!e.postMessage,y=!1,b={},R=0,w={};if(w.parse=t,w.unparse=r,w.RECORD_SEP=String.fromCharCode(30),w.UNIT_SEP=String.fromCharCode(31),w.BYTE_ORDER_MARK="",w.BAD_DELIMITERS=["\r","\n",'"',w.BYTE_ORDER_MARK],w.WORKERS_SUPPORTED=!!e.Worker,w.SCRIPT_PATH=null,w.LocalChunkSize=10485760,w.RemoteChunkSize=5242880,w.DefaultDelimiter=",",w.Parser=u,w.ParserHandle=o,w.NetworkStreamer=i,w.FileStreamer=s,w.StringStreamer=a,"undefined"!=typeof module&&module.exports?module.exports=w:m(e.define)&&e.define.amd?e.define(function(){return w}):e.Papa=w,e.jQuery){var S=e.jQuery;S.fn.parse=function(t){function r(){if(0==a.length)return void(m(t.complete)&&t.complete());var e=a[0];if(m(t.before)){var r=t.before(e.file,e.inputElem);if("object"==typeof r){if("abort"==r.action)return void n("AbortError",e.file,e.inputElem,r.reason);if("skip"==r.action)return void i();"object"==typeof r.config&&(e.instanceConfig=S.extend(e.instanceConfig,r.config))}else if("skip"==r)return void i()}var s=e.instanceConfig.complete;e.instanceConfig.complete=function(t){m(s)&&s(t,e.file,e.inputElem),i()},w.parse(e.file,e.instanceConfig)}function n(e,r,n,i){m(t.error)&&t.error({name:e},r,n,i)}function i(){a.splice(0,1),r()}var s=t.config||{},a=[];return this.each(function(){var t="INPUT"==S(this).prop("tagName").toUpperCase()&&"file"==S(this).attr("type").toLowerCase()&&e.FileReader;if(!t||!this.files||0==this.files.length)return!0;for(var r=0;r<this.files.length;r++)a.push({file:this.files[r],inputElem:this,instanceConfig:S.extend({},s)})}),r(),this}}k?e.onmessage=p:w.WORKERS_SUPPORTED&&(v=f(),document.body?document.addEventListener("DOMContentLoaded",function(){y=!0},!0):y=!0),i.prototype=Object.create(n.prototype),i.prototype.constructor=i,s.prototype=Object.create(n.prototype),s.prototype.constructor=s,a.prototype=Object.create(a.prototype),a.prototype.constructor=a}("undefined"!=typeof window?window:this);
62756
 
62757
  /***/ },
62758
- /* 437 */
62759
  /***/ function(module, exports) {
62760
 
62761
  /*
@@ -62840,20 +62929,21 @@ webpackJsonp([0],[
62840
 
62841
 
62842
  /***/ },
62843
- /* 438 */
62844
  /***/ function(module, exports, __webpack_require__) {
62845
 
62846
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
62847
  __webpack_require__(270),
62848
  __webpack_require__(266),
62849
  __webpack_require__(267),
62850
- __webpack_require__(435),
62851
  __webpack_require__(279)
62852
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function (
62853
  _,
62854
  jQuery,
62855
  MailPoet,
62856
- Handlebars
 
62857
  ) {
62858
  if (!jQuery("#mailpoet_subscribers_export").length) {
62859
  return;
@@ -62940,7 +63030,7 @@ webpackJsonp([0],[
62940
 
62941
  // set confirmed subscribers export option to false
62942
  exportData.exportConfirmedOption = false;
62943
-
62944
  renderSegmentsAndFields(subscriberFieldsContainerElement, subscriberFieldsSelect2);
62945
  renderSegmentsAndFields(segmentsContainerElement, segments);
62946
 
@@ -63012,7 +63102,7 @@ webpackJsonp([0],[
63012
 
63013
 
63014
  /***/ },
63015
- /* 439 */
63016
  /***/ function(module, exports, __webpack_require__) {
63017
 
63018
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
3
  /***/ function(module, exports, __webpack_require__) {
4
 
5
  __webpack_require__(1);
6
+ __webpack_require__(405);
7
+ __webpack_require__(425);
8
+ __webpack_require__(428);
9
+ __webpack_require__(430);
10
+ __webpack_require__(433);
11
+ __webpack_require__(437);
12
+ module.exports = __webpack_require__(438);
13
 
14
 
15
  /***/ },
29861
  filters: {},
29862
  filter: {},
29863
  selected_ids: [],
29864
+ selection: false,
29865
+ meta: {}
29866
  };
29867
  },
29868
  getParam: function getParam(param) {
30035
  items: response.data || [],
30036
  filters: response.meta.filters || {},
30037
  groups: response.meta.groups || [],
30038
+ count: response.meta.count || 0,
30039
+ meta: _underscore2['default'].omit(response.meta, ['filters', 'groups', 'count'])
30040
  }, function () {
30041
  // if viewing an empty trash
30042
  if (_this5.state.group === 'trash' && response.meta.count === 0) {
30043
  // redirect to default group
30044
  _this5.handleGroup('all');
30045
  }
30046
+
30047
+ // trigger afterGetItems callback if specified
30048
+ if (_this5.props.afterGetItems !== undefined) {
30049
+ _this5.props.afterGetItems(_this5.state);
30050
+ }
30051
  });
30052
  }).fail(function (response) {
30053
  if (response.errors.length > 0) {
30279
  }).bind(this));
30280
  },
30281
  handleRenderItem: function handleRenderItem(item, actions) {
30282
+ var render = this.props.onRenderItem(item, actions, this.state.meta);
30283
  return render.props.children;
30284
  },
30285
  handleRefreshItems: function handleRefreshItems() {
38581
 
38582
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
38583
 
38584
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(180), __webpack_require__(267), __webpack_require__(281), __webpack_require__(400)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, Router, MailPoet, Form, ReactStringReplace) {
38585
  var fields = [{
38586
  name: 'email',
38587
  label: MailPoet.I18n.t('email'),
39723
  /***/ function(module, exports, __webpack_require__) {
39724
 
39725
  /* WEBPACK VAR INJECTION */(function(module) {//! moment.js
39726
+ //! version : 2.17.1
39727
  //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
39728
  //! license : MIT
39729
  //! momentjs.com
43988
  // Side effect imports
43989
 
43990
 
43991
+ hooks.version = '2.17.1';
43992
 
43993
  setHookCallback(createLocal);
43994
 
44066
  "./be": 300,
44067
  "./be.js": 300,
44068
  "./bg": 301,
 
 
44069
  "./bg.js": 301,
44070
+ "./bn": 302,
44071
+ "./bn.js": 302,
44072
+ "./bo": 303,
44073
+ "./bo.js": 303,
44074
+ "./br": 304,
44075
+ "./br.js": 304,
44076
+ "./bs": 305,
44077
+ "./bs.js": 305,
44078
+ "./ca": 306,
44079
+ "./ca.js": 306,
44080
+ "./cs": 307,
44081
+ "./cs.js": 307,
44082
+ "./cv": 308,
44083
+ "./cv.js": 308,
44084
+ "./cy": 309,
44085
+ "./cy.js": 309,
44086
+ "./da": 310,
44087
+ "./da.js": 310,
44088
+ "./de": 311,
44089
+ "./de-at": 312,
44090
+ "./de-at.js": 312,
44091
+ "./de.js": 311,
44092
+ "./dv": 313,
44093
+ "./dv.js": 313,
44094
+ "./el": 314,
44095
+ "./el.js": 314,
44096
+ "./en-au": 315,
44097
+ "./en-au.js": 315,
44098
+ "./en-ca": 316,
44099
+ "./en-ca.js": 316,
44100
+ "./en-gb": 317,
44101
+ "./en-gb.js": 317,
44102
+ "./en-ie": 318,
44103
+ "./en-ie.js": 318,
44104
+ "./en-nz": 319,
44105
+ "./en-nz.js": 319,
44106
+ "./eo": 320,
44107
+ "./eo.js": 320,
44108
+ "./es": 321,
44109
+ "./es-do": 322,
44110
+ "./es-do.js": 322,
44111
+ "./es.js": 321,
44112
+ "./et": 323,
44113
+ "./et.js": 323,
44114
+ "./eu": 324,
44115
+ "./eu.js": 324,
44116
+ "./fa": 325,
44117
+ "./fa.js": 325,
44118
+ "./fi": 326,
44119
+ "./fi.js": 326,
44120
+ "./fo": 327,
44121
+ "./fo.js": 327,
44122
+ "./fr": 328,
44123
+ "./fr-ca": 329,
44124
+ "./fr-ca.js": 329,
44125
+ "./fr-ch": 330,
44126
+ "./fr-ch.js": 330,
44127
+ "./fr.js": 328,
44128
+ "./fy": 331,
44129
+ "./fy.js": 331,
44130
+ "./gd": 332,
44131
+ "./gd.js": 332,
44132
+ "./gl": 333,
44133
+ "./gl.js": 333,
44134
+ "./he": 334,
44135
+ "./he.js": 334,
44136
+ "./hi": 335,
44137
+ "./hi.js": 335,
44138
+ "./hr": 336,
44139
+ "./hr.js": 336,
44140
+ "./hu": 337,
44141
+ "./hu.js": 337,
44142
+ "./hy-am": 338,
44143
+ "./hy-am.js": 338,
44144
+ "./id": 339,
44145
+ "./id.js": 339,
44146
+ "./is": 340,
44147
+ "./is.js": 340,
44148
+ "./it": 341,
44149
+ "./it.js": 341,
44150
+ "./ja": 342,
44151
+ "./ja.js": 342,
44152
+ "./jv": 343,
44153
+ "./jv.js": 343,
44154
+ "./ka": 344,
44155
+ "./ka.js": 344,
44156
+ "./kk": 345,
44157
+ "./kk.js": 345,
44158
+ "./km": 346,
44159
+ "./km.js": 346,
44160
+ "./ko": 347,
44161
+ "./ko.js": 347,
44162
+ "./ky": 348,
44163
+ "./ky.js": 348,
44164
+ "./lb": 349,
44165
+ "./lb.js": 349,
44166
+ "./lo": 350,
44167
+ "./lo.js": 350,
44168
+ "./lt": 351,
44169
+ "./lt.js": 351,
44170
+ "./lv": 352,
44171
+ "./lv.js": 352,
44172
+ "./me": 353,
44173
+ "./me.js": 353,
44174
+ "./mi": 354,
44175
+ "./mi.js": 354,
44176
+ "./mk": 355,
44177
+ "./mk.js": 355,
44178
+ "./ml": 356,
44179
+ "./ml.js": 356,
44180
+ "./mr": 357,
44181
+ "./mr.js": 357,
44182
+ "./ms": 358,
44183
+ "./ms-my": 359,
44184
+ "./ms-my.js": 359,
44185
+ "./ms.js": 358,
44186
+ "./my": 360,
44187
+ "./my.js": 360,
44188
+ "./nb": 361,
44189
+ "./nb.js": 361,
44190
+ "./ne": 362,
44191
+ "./ne.js": 362,
44192
+ "./nl": 363,
44193
+ "./nl-be": 364,
44194
+ "./nl-be.js": 364,
44195
+ "./nl.js": 363,
44196
+ "./nn": 365,
44197
+ "./nn.js": 365,
44198
+ "./pa-in": 366,
44199
+ "./pa-in.js": 366,
44200
+ "./pl": 367,
44201
+ "./pl.js": 367,
44202
+ "./pt": 368,
44203
+ "./pt-br": 369,
44204
+ "./pt-br.js": 369,
44205
+ "./pt.js": 368,
44206
+ "./ro": 370,
44207
+ "./ro.js": 370,
44208
+ "./ru": 371,
44209
+ "./ru.js": 371,
44210
+ "./se": 372,
44211
+ "./se.js": 372,
44212
+ "./si": 373,
44213
+ "./si.js": 373,
44214
+ "./sk": 374,
44215
+ "./sk.js": 374,
44216
+ "./sl": 375,
44217
+ "./sl.js": 375,
44218
+ "./sq": 376,
44219
+ "./sq.js": 376,
44220
+ "./sr": 377,
44221
+ "./sr-cyrl": 378,
44222
+ "./sr-cyrl.js": 378,
44223
+ "./sr.js": 377,
44224
+ "./ss": 379,
44225
+ "./ss.js": 379,
44226
+ "./sv": 380,
44227
+ "./sv.js": 380,
44228
+ "./sw": 381,
44229
+ "./sw.js": 381,
44230
+ "./ta": 382,
44231
+ "./ta.js": 382,
44232
+ "./te": 383,
44233
+ "./te.js": 383,
44234
+ "./tet": 384,
44235
+ "./tet.js": 384,
44236
+ "./th": 385,
44237
+ "./th.js": 385,
44238
+ "./tl-ph": 386,
44239
+ "./tl-ph.js": 386,
44240
+ "./tlh": 387,
44241
+ "./tlh.js": 387,
44242
+ "./tr": 388,
44243
+ "./tr.js": 388,
44244
+ "./tzl": 389,
44245
+ "./tzl.js": 389,
44246
+ "./tzm": 390,
44247
+ "./tzm-latn": 391,
44248
+ "./tzm-latn.js": 391,
44249
+ "./tzm.js": 390,
44250
+ "./uk": 392,
44251
+ "./uk.js": 392,
44252
+ "./uz": 393,
44253
+ "./uz.js": 393,
44254
+ "./vi": 394,
44255
+ "./vi.js": 394,
44256
+ "./x-pseudo": 395,
44257
+ "./x-pseudo.js": 395,
44258
+ "./yo": 396,
44259
+ "./yo.js": 396,
44260
+ "./zh-cn": 397,
44261
+ "./zh-cn.js": 397,
44262
+ "./zh-hk": 398,
44263
+ "./zh-hk.js": 398,
44264
+ "./zh-tw": 399,
44265
+ "./zh-tw.js": 399
44266
  };
44267
  function webpackContext(req) {
44268
  return __webpack_require__(webpackContextResolve(req));
45285
  /* 302 */
45286
  /***/ function(module, exports, __webpack_require__) {
45287
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45288
  //! moment.js locale configuration
45289
  //! locale : Bengali [bn]
45290
  //! author : Kaushik Gandhi : https://github.com/kaushikgandhi
45406
 
45407
 
45408
  /***/ },
45409
+ /* 303 */
45410
  /***/ function(module, exports, __webpack_require__) {
45411
 
45412
  //! moment.js locale configuration
45530
 
45531
 
45532
  /***/ },
45533
+ /* 304 */
45534
  /***/ function(module, exports, __webpack_require__) {
45535
 
45536
  //! moment.js locale configuration
45643
 
45644
 
45645
  /***/ },
45646
+ /* 305 */
45647
  /***/ function(module, exports, __webpack_require__) {
45648
 
45649
  //! moment.js locale configuration
45791
 
45792
 
45793
  /***/ },
45794
+ /* 306 */
45795
  /***/ function(module, exports, __webpack_require__) {
45796
 
45797
  //! moment.js locale configuration
45877
 
45878
 
45879
  /***/ },
45880
+ /* 307 */
45881
  /***/ function(module, exports, __webpack_require__) {
45882
 
45883
  //! moment.js locale configuration
46054
 
46055
 
46056
  /***/ },
46057
+ /* 308 */
46058
  /***/ function(module, exports, __webpack_require__) {
46059
 
46060
  //! moment.js locale configuration
46122
 
46123
 
46124
  /***/ },
46125
+ /* 309 */
46126
  /***/ function(module, exports, __webpack_require__) {
46127
 
46128
  //! moment.js locale configuration
46208
 
46209
 
46210
  /***/ },
46211
+ /* 310 */
46212
  /***/ function(module, exports, __webpack_require__) {
46213
 
46214
  //! moment.js locale configuration
46273
 
46274
 
46275
  /***/ },
46276
+ /* 311 */
46277
  /***/ function(module, exports, __webpack_require__) {
46278
 
46279
  //! moment.js locale configuration
46356
 
46357
 
46358
  /***/ },
46359
+ /* 312 */
46360
  /***/ function(module, exports, __webpack_require__) {
46361
 
46362
  //! moment.js locale configuration
46440
 
46441
 
46442
  /***/ },
46443
+ /* 313 */
46444
  /***/ function(module, exports, __webpack_require__) {
46445
 
46446
  //! moment.js locale configuration
46545
 
46546
 
46547
  /***/ },
46548
+ /* 314 */
46549
  /***/ function(module, exports, __webpack_require__) {
46550
 
46551
  //! moment.js locale configuration
46648
 
46649
 
46650
  /***/ },
46651
+ /* 315 */
46652
  /***/ function(module, exports, __webpack_require__) {
46653
 
46654
  //! moment.js locale configuration
46720
 
46721
 
46722
  /***/ },
46723
+ /* 316 */
46724
  /***/ function(module, exports, __webpack_require__) {
46725
 
46726
  //! moment.js locale configuration
46788
 
46789
 
46790
  /***/ },
46791
+ /* 317 */
46792
  /***/ function(module, exports, __webpack_require__) {
46793
 
46794
  //! moment.js locale configuration
46860
 
46861
 
46862
  /***/ },
46863
+ /* 318 */
46864
  /***/ function(module, exports, __webpack_require__) {
46865
 
46866
  //! moment.js locale configuration
46932
 
46933
 
46934
  /***/ },
46935
+ /* 319 */
46936
  /***/ function(module, exports, __webpack_require__) {
46937
 
46938
  //! moment.js locale configuration
47004
 
47005
 
47006
  /***/ },
47007
+ /* 320 */
47008
  /***/ function(module, exports, __webpack_require__) {
47009
 
47010
  //! moment.js locale configuration
47082
 
47083
 
47084
  /***/ },
47085
+ /* 321 */
47086
  /***/ function(module, exports, __webpack_require__) {
47087
 
47088
  //! moment.js locale configuration
47168
 
47169
 
47170
  /***/ },
47171
+ /* 322 */
47172
  /***/ function(module, exports, __webpack_require__) {
47173
 
47174
  //! moment.js locale configuration
47253
 
47254
 
47255
  /***/ },
47256
+ /* 323 */
47257
  /***/ function(module, exports, __webpack_require__) {
47258
 
47259
  //! moment.js locale configuration
47338
 
47339
 
47340
  /***/ },
47341
+ /* 324 */
47342
  /***/ function(module, exports, __webpack_require__) {
47343
 
47344
  //! moment.js locale configuration
47409
 
47410
 
47411
  /***/ },
47412
+ /* 325 */
47413
  /***/ function(module, exports, __webpack_require__) {
47414
 
47415
  //! moment.js locale configuration
47521
 
47522
 
47523
  /***/ },
47524
+ /* 326 */
47525
  /***/ function(module, exports, __webpack_require__) {
47526
 
47527
  //! moment.js locale configuration
47633
 
47634
 
47635
  /***/ },
47636
+ /* 327 */
47637
  /***/ function(module, exports, __webpack_require__) {
47638
 
47639
  //! moment.js locale configuration
47698
 
47699
 
47700
  /***/ },
47701
+ /* 328 */
47702
  /***/ function(module, exports, __webpack_require__) {
47703
 
47704
  //! moment.js locale configuration
47767
 
47768
 
47769
  /***/ },
47770
+ /* 329 */
47771
  /***/ function(module, exports, __webpack_require__) {
47772
 
47773
  //! moment.js locale configuration
47832
 
47833
 
47834
  /***/ },
47835
+ /* 330 */
47836
  /***/ function(module, exports, __webpack_require__) {
47837
 
47838
  //! moment.js locale configuration
47901
 
47902
 
47903
  /***/ },
47904
+ /* 331 */
47905
  /***/ function(module, exports, __webpack_require__) {
47906
 
47907
  //! moment.js locale configuration
47979
 
47980
 
47981
  /***/ },
47982
+ /* 332 */
47983
  /***/ function(module, exports, __webpack_require__) {
47984
 
47985
  //! moment.js locale configuration
48060
 
48061
 
48062
  /***/ },
48063
+ /* 333 */
48064
  /***/ function(module, exports, __webpack_require__) {
48065
 
48066
  //! moment.js locale configuration
48142
 
48143
 
48144
  /***/ },
48145
+ /* 334 */
48146
  /***/ function(module, exports, __webpack_require__) {
48147
 
48148
  //! moment.js locale configuration
48246
 
48247
 
48248
  /***/ },
48249
+ /* 335 */
48250
  /***/ function(module, exports, __webpack_require__) {
48251
 
48252
  //! moment.js locale configuration
48375
 
48376
 
48377
  /***/ },
48378
+ /* 336 */
48379
  /***/ function(module, exports, __webpack_require__) {
48380
 
48381
  //! moment.js locale configuration
48525
 
48526
 
48527
  /***/ },
48528
+ /* 337 */
48529
  /***/ function(module, exports, __webpack_require__) {
48530
 
48531
  //! moment.js locale configuration
48639
 
48640
 
48641
  /***/ },
48642
+ /* 338 */
48643
  /***/ function(module, exports, __webpack_require__) {
48644
 
48645
  //! moment.js locale configuration
48739
 
48740
 
48741
  /***/ },
48742
+ /* 339 */
48743
  /***/ function(module, exports, __webpack_require__) {
48744
 
48745
  //! moment.js locale configuration
48827
 
48828
 
48829
  /***/ },
48830
+ /* 340 */
48831
  /***/ function(module, exports, __webpack_require__) {
48832
 
48833
  //! moment.js locale configuration
48959
 
48960
 
48961
  /***/ },
48962
+ /* 341 */
48963
  /***/ function(module, exports, __webpack_require__) {
48964
 
48965
  //! moment.js locale configuration
49034
 
49035
 
49036
  /***/ },
49037
+ /* 342 */
49038
  /***/ function(module, exports, __webpack_require__) {
49039
 
49040
  //! moment.js locale configuration
49115
 
49116
 
49117
  /***/ },
49118
+ /* 343 */
49119
  /***/ function(module, exports, __webpack_require__) {
49120
 
49121
  //! moment.js locale configuration
49203
 
49204
 
49205
  /***/ },
49206
+ /* 344 */
49207
  /***/ function(module, exports, __webpack_require__) {
49208
 
49209
  //! moment.js locale configuration
49297
 
49298
 
49299
  /***/ },
49300
+ /* 345 */
49301
  /***/ function(module, exports, __webpack_require__) {
49302
 
49303
  //! moment.js locale configuration
49389
 
49390
 
49391
  /***/ },
49392
+ /* 346 */
49393
  /***/ function(module, exports, __webpack_require__) {
49394
 
49395
  //! moment.js locale configuration
49452
 
49453
 
49454
  /***/ },
49455
+ /* 347 */
49456
  /***/ function(module, exports, __webpack_require__) {
49457
 
49458
  //! moment.js locale configuration
49522
 
49523
 
49524
  /***/ },
49525
+ /* 348 */
49526
  /***/ function(module, exports, __webpack_require__) {
49527
 
49528
  //! moment.js locale configuration
49615
 
49616
 
49617
  /***/ },
49618
+ /* 349 */
49619
  /***/ function(module, exports, __webpack_require__) {
49620
 
49621
  //! moment.js locale configuration
49757
 
49758
 
49759
  /***/ },
49760
+ /* 350 */
49761
  /***/ function(module, exports, __webpack_require__) {
49762
 
49763
  //! moment.js locale configuration
49832
 
49833
 
49834
  /***/ },
49835
+ /* 351 */
49836
  /***/ function(module, exports, __webpack_require__) {
49837
 
49838
  //! moment.js locale configuration
49954
 
49955
 
49956
  /***/ },
49957
+ /* 352 */
49958
  /***/ function(module, exports, __webpack_require__) {
49959
 
49960
  //! moment.js locale configuration
50056
 
50057
 
50058
  /***/ },
50059
+ /* 353 */
50060
  /***/ function(module, exports, __webpack_require__) {
50061
 
50062
  //! moment.js locale configuration
50172
 
50173
 
50174
  /***/ },
50175
+ /* 354 */
50176
  /***/ function(module, exports, __webpack_require__) {
50177
 
50178
  //! moment.js locale configuration
50241
 
50242
 
50243
  /***/ },
50244
+ /* 355 */
50245
  /***/ function(module, exports, __webpack_require__) {
50246
 
50247
  //! moment.js locale configuration
50336
 
50337
 
50338
  /***/ },
50339
+ /* 356 */
50340
  /***/ function(module, exports, __webpack_require__) {
50341
 
50342
  //! moment.js locale configuration
50422
 
50423
 
50424
  /***/ },
50425
+ /* 357 */
50426
  /***/ function(module, exports, __webpack_require__) {
50427
 
50428
  //! moment.js locale configuration
50586
 
50587
 
50588
  /***/ },
50589
+ /* 358 */
50590
  /***/ function(module, exports, __webpack_require__) {
50591
 
50592
  //! moment.js locale configuration
50673
 
50674
 
50675
  /***/ },
50676
+ /* 359 */
50677
  /***/ function(module, exports, __webpack_require__) {
50678
 
50679
  //! moment.js locale configuration
50761
 
50762
 
50763
  /***/ },
50764
+ /* 360 */
50765
  /***/ function(module, exports, __webpack_require__) {
50766
 
50767
  //! moment.js locale configuration
50862
 
50863
 
50864
  /***/ },
50865
+ /* 361 */
50866
  /***/ function(module, exports, __webpack_require__) {
50867
 
50868
  //! moment.js locale configuration
50930
 
50931
 
50932
  /***/ },
50933
+ /* 362 */
50934
  /***/ function(module, exports, __webpack_require__) {
50935
 
50936
  //! moment.js locale configuration
51058
 
51059
 
51060
  /***/ },
51061
+ /* 363 */
51062
  /***/ function(module, exports, __webpack_require__) {
51063
 
51064
  //! moment.js locale configuration
51149
 
51150
 
51151
  /***/ },
51152
+ /* 364 */
51153
  /***/ function(module, exports, __webpack_require__) {
51154
 
51155
  //! moment.js locale configuration
51240
 
51241
 
51242
  /***/ },
51243
+ /* 365 */
51244
  /***/ function(module, exports, __webpack_require__) {
51245
 
51246
  //! moment.js locale configuration
51305
 
51306
 
51307
  /***/ },
51308
+ /* 366 */
51309
  /***/ function(module, exports, __webpack_require__) {
51310
 
51311
  //! moment.js locale configuration
51434
 
51435
 
51436
  /***/ },
51437
+ /* 367 */
51438
  /***/ function(module, exports, __webpack_require__) {
51439
 
51440
  //! moment.js locale configuration
51544
 
51545
 
51546
  /***/ },
51547
+ /* 368 */
51548
  /***/ function(module, exports, __webpack_require__) {
51549
 
51550
  //! moment.js locale configuration
51614
 
51615
 
51616
  /***/ },
51617
+ /* 369 */
51618
  /***/ function(module, exports, __webpack_require__) {
51619
 
51620
  //! moment.js locale configuration
51680
 
51681
 
51682
  /***/ },
51683
+ /* 370 */
51684
  /***/ function(module, exports, __webpack_require__) {
51685
 
51686
  //! moment.js locale configuration
51760
 
51761
 
51762
  /***/ },
51763
+ /* 371 */
51764
  /***/ function(module, exports, __webpack_require__) {
51765
 
51766
  //! moment.js locale configuration
51948
 
51949
 
51950
  /***/ },
51951
+ /* 372 */
51952
  /***/ function(module, exports, __webpack_require__) {
51953
 
51954
  //! moment.js locale configuration
52014
 
52015
 
52016
  /***/ },
52017
+ /* 373 */
52018
  /***/ function(module, exports, __webpack_require__) {
52019
 
52020
  //! moment.js locale configuration
52090
 
52091
 
52092
  /***/ },
52093
+ /* 374 */
52094
  /***/ function(module, exports, __webpack_require__) {
52095
 
52096
  //! moment.js locale configuration
52245
 
52246
 
52247
  /***/ },
52248
+ /* 375 */
52249
  /***/ function(module, exports, __webpack_require__) {
52250
 
52251
  //! moment.js locale configuration
52412
 
52413
 
52414
  /***/ },
52415
+ /* 376 */
52416
  /***/ function(module, exports, __webpack_require__) {
52417
 
52418
  //! moment.js locale configuration
52487
 
52488
 
52489
  /***/ },
52490
+ /* 377 */
52491
  /***/ function(module, exports, __webpack_require__) {
52492
 
52493
  //! moment.js locale configuration
52602
 
52603
 
52604
  /***/ },
52605
+ /* 378 */
52606
  /***/ function(module, exports, __webpack_require__) {
52607
 
52608
  //! moment.js locale configuration
52717
 
52718
 
52719
  /***/ },
52720
+ /* 379 */
52721
  /***/ function(module, exports, __webpack_require__) {
52722
 
52723
  //! moment.js locale configuration
52811
 
52812
 
52813
  /***/ },
52814
+ /* 380 */
52815
  /***/ function(module, exports, __webpack_require__) {
52816
 
52817
  //! moment.js locale configuration
52885
 
52886
 
52887
  /***/ },
52888
+ /* 381 */
52889
  /***/ function(module, exports, __webpack_require__) {
52890
 
52891
  //! moment.js locale configuration
52949
 
52950
 
52951
  /***/ },
52952
+ /* 382 */
52953
  /***/ function(module, exports, __webpack_require__) {
52954
 
52955
  //! moment.js locale configuration
53084
 
53085
 
53086
  /***/ },
53087
+ /* 383 */
53088
  /***/ function(module, exports, __webpack_require__) {
53089
 
53090
  //! moment.js locale configuration
53178
 
53179
 
53180
  /***/ },
53181
+ /* 384 */
53182
  /***/ function(module, exports, __webpack_require__) {
53183
 
53184
  //! moment.js locale configuration
53251
 
53252
 
53253
  /***/ },
53254
+ /* 385 */
53255
  /***/ function(module, exports, __webpack_require__) {
53256
 
53257
  //! moment.js locale configuration
53323
 
53324
 
53325
  /***/ },
53326
+ /* 386 */
53327
  /***/ function(module, exports, __webpack_require__) {
53328
 
53329
  //! moment.js locale configuration
53390
 
53391
 
53392
  /***/ },
53393
+ /* 387 */
53394
  /***/ function(module, exports, __webpack_require__) {
53395
 
53396
  //! moment.js locale configuration
53515
 
53516
 
53517
  /***/ },
53518
+ /* 388 */
53519
  /***/ function(module, exports, __webpack_require__) {
53520
 
53521
  //! moment.js locale configuration
53610
 
53611
 
53612
  /***/ },
53613
+ /* 389 */
53614
  /***/ function(module, exports, __webpack_require__) {
53615
 
53616
  //! moment.js locale configuration
53706
 
53707
 
53708
  /***/ },
53709
+ /* 390 */
53710
  /***/ function(module, exports, __webpack_require__) {
53711
 
53712
  //! moment.js locale configuration
53769
 
53770
 
53771
  /***/ },
53772
+ /* 391 */
53773
  /***/ function(module, exports, __webpack_require__) {
53774
 
53775
  //! moment.js locale configuration
53832
 
53833
 
53834
  /***/ },
53835
+ /* 392 */
53836
  /***/ function(module, exports, __webpack_require__) {
53837
 
53838
  //! moment.js locale configuration
53983
 
53984
 
53985
  /***/ },
53986
+ /* 393 */
53987
  /***/ function(module, exports, __webpack_require__) {
53988
 
53989
  //! moment.js locale configuration
54046
 
54047
 
54048
  /***/ },
54049
+ /* 394 */
54050
  /***/ function(module, exports, __webpack_require__) {
54051
 
54052
  //! moment.js locale configuration
54130
 
54131
 
54132
  /***/ },
54133
+ /* 395 */
54134
  /***/ function(module, exports, __webpack_require__) {
54135
 
54136
  //! moment.js locale configuration
54203
 
54204
 
54205
  /***/ },
54206
+ /* 396 */
54207
  /***/ function(module, exports, __webpack_require__) {
54208
 
54209
  //! moment.js locale configuration
54210
+ //! locale : Yoruba Nigeria [yo]
54211
  //! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
54212
 
54213
  ;(function (global, factory) {
54268
 
54269
 
54270
  /***/ },
54271
+ /* 397 */
54272
  /***/ function(module, exports, __webpack_require__) {
54273
 
54274
  //! moment.js locale configuration
54400
 
54401
 
54402
  /***/ },
54403
+ /* 398 */
54404
  /***/ function(module, exports, __webpack_require__) {
54405
 
54406
  //! moment.js locale configuration
54510
 
54511
 
54512
  /***/ },
54513
+ /* 399 */
54514
  /***/ function(module, exports, __webpack_require__) {
54515
 
54516
  //! moment.js locale configuration
54619
 
54620
 
54621
  /***/ },
54622
+ /* 400 */
54623
  /***/ function(module, exports, __webpack_require__) {
54624
 
54625
  /* eslint-disable vars-on-top, no-var, prefer-template */
54626
+ var isRegExp = __webpack_require__(401);
54627
+ var escapeRegExp = __webpack_require__(402);
54628
+ var isString = __webpack_require__(403);
54629
+ var flatten = __webpack_require__(404);
54630
 
54631
  /**
54632
  * Given a string, replace every substring that is matched by the `match` regex
54684
 
54685
 
54686
  /***/ },
54687
+ /* 401 */
54688
  /***/ function(module, exports, __webpack_require__) {
54689
 
54690
  /* WEBPACK VAR INJECTION */(function(global, module) {/**
54812
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(290)(module)))
54813
 
54814
  /***/ },
54815
+ /* 402 */
54816
  /***/ function(module, exports) {
54817
 
54818
  /* WEBPACK VAR INJECTION */(function(global) {/**
54985
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
54986
 
54987
  /***/ },
54988
+ /* 403 */
54989
  /***/ function(module, exports) {
54990
 
54991
  /**
55086
 
55087
 
55088
  /***/ },
55089
+ /* 404 */
55090
  /***/ function(module, exports) {
55091
 
55092
  /* WEBPACK VAR INJECTION */(function(global) {/**
55442
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
55443
 
55444
  /***/ },
55445
+ /* 405 */
55446
  /***/ function(module, exports, __webpack_require__) {
55447
 
55448
  'use strict';
55461
 
55462
  var _history = __webpack_require__(236);
55463
 
55464
+ var _newslettersTypesJsx = __webpack_require__(406);
55465
 
55466
  var _newslettersTypesJsx2 = _interopRequireDefault(_newslettersTypesJsx);
55467
 
55468
+ var _newslettersTemplatesJsx = __webpack_require__(408);
55469
 
55470
  var _newslettersTemplatesJsx2 = _interopRequireDefault(_newslettersTemplatesJsx);
55471
 
55472
+ var _newslettersSendJsx = __webpack_require__(409);
55473
 
55474
  var _newslettersSendJsx2 = _interopRequireDefault(_newslettersSendJsx);
55475
 
55476
+ var _newslettersTypesStandardJsx = __webpack_require__(416);
55477
 
55478
  var _newslettersTypesStandardJsx2 = _interopRequireDefault(_newslettersTypesStandardJsx);
55479
 
55480
+ var _newslettersTypesWelcomeWelcomeJsx = __webpack_require__(417);
55481
 
55482
  var _newslettersTypesWelcomeWelcomeJsx2 = _interopRequireDefault(_newslettersTypesWelcomeWelcomeJsx);
55483
 
55484
+ var _newslettersTypesNotificationNotificationJsx = __webpack_require__(418);
55485
 
55486
  var _newslettersTypesNotificationNotificationJsx2 = _interopRequireDefault(_newslettersTypesNotificationNotificationJsx);
55487
 
55488
+ var _newslettersListingsStandardJsx = __webpack_require__(419);
55489
 
55490
  var _newslettersListingsStandardJsx2 = _interopRequireDefault(_newslettersListingsStandardJsx);
55491
 
55492
+ var _newslettersListingsWelcomeJsx = __webpack_require__(422);
55493
 
55494
  var _newslettersListingsWelcomeJsx2 = _interopRequireDefault(_newslettersListingsWelcomeJsx);
55495
 
55496
+ var _newslettersListingsNotificationJsx = __webpack_require__(423);
55497
 
55498
  var _newslettersListingsNotificationJsx2 = _interopRequireDefault(_newslettersListingsNotificationJsx);
55499
 
55500
+ var _newslettersListingsNotification_historyJsx = __webpack_require__(424);
55501
 
55502
  var _newslettersListingsNotification_historyJsx2 = _interopRequireDefault(_newslettersListingsNotification_historyJsx);
55503
 
55514
  var container = document.getElementById('newsletters_container');
55515
 
55516
  if (container) {
55517
+ var mailpoet_listing = _reactDom2['default'].render(_react2['default'].createElement(
55518
  _reactRouter.Router,
55519
  { history: history },
55520
  _react2['default'].createElement(
55533
  _react2['default'].createElement(_reactRouter.Route, { path: 'send/:id', component: _newslettersSendJsx2['default'] })
55534
  )
55535
  ), container);
55536
+
55537
+ window.mailpoet_listing = mailpoet_listing;
55538
  }
55539
  /* Listings */ /* Newsletter: type selection */ /* New newsletter: types */ /* Template selection */ /* Sending options */
55540
 
55541
  /***/ },
55542
+ /* 406 */
55543
  /***/ function(module, exports, __webpack_require__) {
55544
 
55545
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
55546
 
55547
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(267), __webpack_require__(180), __webpack_require__(407)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, MailPoet, Router, Breadcrumb) {
55548
  var NewsletterTypes = React.createClass({
55549
  displayName: 'NewsletterTypes',
55550
 
55691
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
55692
 
55693
  /***/ },
55694
+ /* 407 */
55695
  /***/ function(module, exports, __webpack_require__) {
55696
 
55697
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
55759
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
55760
 
55761
  /***/ },
55762
+ /* 408 */
55763
  /***/ function(module, exports, __webpack_require__) {
55764
 
55765
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
55766
 
55767
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(270), __webpack_require__(267), __webpack_require__(180), __webpack_require__(268), __webpack_require__(407)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, _, MailPoet, Router, classNames, Breadcrumb) {
55768
 
55769
  var ImportTemplate = React.createClass({
55770
  displayName: 'ImportTemplate',
56031
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
56032
 
56033
  /***/ },
56034
+ /* 409 */
56035
  /***/ function(module, exports, __webpack_require__) {
56036
 
56037
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
56038
 
56039
  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; };
56040
 
56041
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(180), __webpack_require__(270), __webpack_require__(267), __webpack_require__(281), __webpack_require__(410), __webpack_require__(411), __webpack_require__(414), __webpack_require__(407)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, Router, _, MailPoet, Form, StandardNewsletterFields, NotificationNewsletterFields, WelcomeNewsletterFields, Breadcrumb) {
56042
 
56043
  var NewsletterSend = React.createClass({
56044
  displayName: 'NewsletterSend',
56278
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
56279
 
56280
  /***/ },
56281
+ /* 410 */
56282
  /***/ function(module, exports, __webpack_require__) {
56283
 
56284
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
56654
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
56655
 
56656
  /***/ },
56657
+ /* 411 */
56658
  /***/ function(module, exports, __webpack_require__) {
56659
 
56660
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
56661
 
56662
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(412), __webpack_require__(270)], __WEBPACK_AMD_DEFINE_RESULT__ = function (MailPoet, Scheduling, _) {
56663
 
56664
  var settings = window.mailpoet_settings || {};
56665
 
56753
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
56754
 
56755
  /***/ },
56756
+ /* 412 */
56757
  /***/ function(module, exports, __webpack_require__) {
56758
 
56759
  'use strict';
56772
 
56773
  var _formFieldsSelectJsx2 = _interopRequireDefault(_formFieldsSelectJsx);
56774
 
56775
+ var _newslettersSchedulingCommonJsx = __webpack_require__(413);
56776
 
56777
  var intervalField = {
56778
  name: 'intervalType',
56886
  module.exports = NotificationScheduling;
56887
 
56888
  /***/ },
56889
+ /* 413 */
56890
  /***/ function(module, exports, __webpack_require__) {
56891
 
56892
  'use strict';
56980
  exports.nthWeekDayValues = _nthWeekDayValues;
56981
 
56982
  /***/ },
56983
+ /* 414 */
56984
  /***/ function(module, exports, __webpack_require__) {
56985
 
56986
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
56987
 
56988
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(415)], __WEBPACK_AMD_DEFINE_RESULT__ = function (MailPoet, Scheduling) {
56989
 
56990
  var settings = window.mailpoet_settings || {};
56991
 
57052
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
57053
 
57054
  /***/ },
57055
+ /* 415 */
57056
  /***/ function(module, exports, __webpack_require__) {
57057
 
57058
  'use strict';
57079
 
57080
  var _formFieldsTextJsx2 = _interopRequireDefault(_formFieldsTextJsx);
57081
 
57082
+ var _newslettersSchedulingCommonJsx = __webpack_require__(413);
57083
 
57084
  var availableRoles = window.mailpoet_roles || {};
57085
  var availableSegments = _underscore2['default'].filter(window.mailpoet_segments || [], function (segment) {
57224
  module.exports = WelcomeScheduling;
57225
 
57226
  /***/ },
57227
+ /* 416 */
57228
  /***/ function(module, exports, __webpack_require__) {
57229
 
57230
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
57231
 
57232
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(180), __webpack_require__(267), __webpack_require__(407)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, Router, MailPoet, Breadcrumb) {
57233
 
57234
  var NewsletterStandard = React.createClass({
57235
  displayName: 'NewsletterStandard',
57278
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
57279
 
57280
  /***/ },
57281
+ /* 417 */
57282
  /***/ function(module, exports, __webpack_require__) {
57283
 
57284
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
57285
 
57286
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(270), __webpack_require__(2), __webpack_require__(180), __webpack_require__(267), __webpack_require__(415), __webpack_require__(407)], __WEBPACK_AMD_DEFINE_RESULT__ = function (_, React, Router, MailPoet, Scheduling, Breadcrumb) {
57287
 
57288
  var field = {
57289
  name: 'options',
57380
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
57381
 
57382
  /***/ },
57383
+ /* 418 */
57384
  /***/ function(module, exports, __webpack_require__) {
57385
 
57386
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
57387
 
57388
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(270), __webpack_require__(2), __webpack_require__(180), __webpack_require__(267), __webpack_require__(412), __webpack_require__(407)], __WEBPACK_AMD_DEFINE_RESULT__ = function (_, React, Router, MailPoet, Scheduling, Breadcrumb) {
57389
 
57390
  var field = {
57391
  name: 'options',
57474
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
57475
 
57476
  /***/ },
57477
+ /* 419 */
57478
  /***/ function(module, exports, __webpack_require__) {
57479
 
57480
  'use strict';
57503
 
57504
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
57505
 
57506
+ var _newslettersListingsTabsJsx = __webpack_require__(420);
57507
 
57508
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
57509
 
57510
+ var _newslettersListingsMixinsJsx = __webpack_require__(421);
57511
 
57512
  var mailpoet_tracking_enabled = !!window['mailpoet_tracking_enabled'];
57513
+ var mailpoet_settings = window.mailpoet_settings || {};
57514
 
57515
  var messages = {
57516
  onTrash: function onTrash(response) {
57620
  var NewsletterListStandard = _react2['default'].createClass({
57621
  displayName: 'NewsletterListStandard',
57622
 
57623
+ mixins: [_newslettersListingsMixinsJsx.QueueMixin, _newslettersListingsMixinsJsx.StatisticsMixin, _newslettersListingsMixinsJsx.MailerMixin],
57624
+ renderItem: function renderItem(newsletter, actions, meta) {
57625
  var rowClasses = (0, _classnames2['default'])('manage-column', 'column-primary', 'has-row-actions');
57626
 
57627
  var segments = newsletter.segments.map(function (segment) {
57651
  _react2['default'].createElement(
57652
  'td',
57653
  { className: 'column', 'data-colname': _mailpoet2['default'].I18n.t('status') },
57654
+ this.renderQueueStatus(newsletter, meta.mta_log)
57655
  ),
57656
  _react2['default'].createElement(
57657
  'td',
57704
  messages: messages,
57705
  auto_refresh: true,
57706
  sort_by: 'updated_at',
57707
+ sort_order: 'desc',
57708
+ afterGetItems: this.checkMailerStatus
57709
  })
57710
  );
57711
  }
57714
  module.exports = NewsletterListStandard;
57715
 
57716
  /***/ },
57717
+ /* 420 */
57718
  /***/ function(module, exports, __webpack_require__) {
57719
 
57720
  'use strict';
57784
  module.exports = ListingTabs;
57785
 
57786
  /***/ },
57787
+ /* 421 */
57788
  /***/ function(module, exports, __webpack_require__) {
57789
 
57790
  'use strict';
57799
 
57800
  var _react2 = _interopRequireDefault(_react);
57801
 
57802
+ var _reactDom = __webpack_require__(33);
57803
+
57804
+ var _reactDom2 = _interopRequireDefault(_reactDom);
57805
+
57806
+ var _reactStringReplace = __webpack_require__(400);
57807
+
57808
+ var _reactStringReplace2 = _interopRequireDefault(_reactStringReplace);
57809
+
57810
  var _mailpoet = __webpack_require__(267);
57811
 
57812
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
57856
  }
57857
  });
57858
  },
57859
+ renderQueueStatus: function renderQueueStatus(newsletter, mailer_log) {
57860
  if (!newsletter.queue) {
57861
  return _react2['default'].createElement(
57862
  'span',
57863
  null,
57864
  _mailpoet2['default'].I18n.t('notSentYet')
57865
  );
57866
+ } else if (mailer_log.status === 'paused' && newsletter.queue.status !== 'completed') {
57867
+ return _react2['default'].createElement(
57868
+ 'span',
57869
+ null,
57870
+ _mailpoet2['default'].I18n.t('paused')
57871
+ );
57872
  } else {
57873
  if (newsletter.queue.status === 'scheduled') {
57874
  return _react2['default'].createElement(
57890
  label = _react2['default'].createElement(
57891
  'span',
57892
  null,
57893
+ _mailpoet2['default'].I18n.t('newsletterQueueCompleted').replace("%$1d", newsletter.queue.count_processed).replace("%$2d", newsletter.queue.count_total)
57894
  );
57895
  } else {
57896
  label = _react2['default'].createElement(
57995
  }
57996
  };
57997
 
57998
+ var _MailerMixin = {
57999
+ checkMailerStatus: function checkMailerStatus(state) {
58000
+ if (state.meta.mta_log.error && state.meta.mta_log.status === 'paused') {
58001
+ _mailpoet2['default'].Notice.error('', { 'static': true, id: 'mailpoet_mailer_error' });
58002
+
58003
+ _reactDom2['default'].render(this.getMailerError(state), (0, _jquery2['default'])('[data-id="mailpoet_mailer_error"]')[0]);
58004
+ } else {
58005
+ _mailpoet2['default'].Notice.hide('mailpoet_mailer_error');
58006
+ }
58007
+ },
58008
+ getMailerError: function getMailerError(state) {
58009
+ var mailer_error_notice = undefined;
58010
+ var mailer_check_settings_notice = (0, _reactStringReplace2['default'])(_mailpoet2['default'].I18n.t('mailerCheckSettingsNotice'), /\[link\](.*?)\[\/link\]/g, function (match, i) {
58011
+ return _react2['default'].createElement(
58012
+ 'a',
58013
+ { href: '?page=mailpoet-settings#mta' },
58014
+ match
58015
+ );
58016
+ });
58017
+ if (state.meta.mta_log.error.operation === 'send') {
58018
+ mailer_error_notice = _mailpoet2['default'].I18n.t('mailerSendErrorNotice').replace('%$1s', state.meta.mta_method).replace('%$2s', state.meta.mta_log.error.error_message);
58019
+ } else {
58020
+ mailer_error_notice = _mailpoet2['default'].I18n.t('mailerConnectionErrorNotice').replace('%$1s', state.meta.mta_log.error.error_message);
58021
+ }
58022
+ return _react2['default'].createElement(
58023
+ 'div',
58024
+ null,
58025
+ _react2['default'].createElement(
58026
+ 'p',
58027
+ null,
58028
+ mailer_error_notice
58029
+ ),
58030
+ _react2['default'].createElement(
58031
+ 'p',
58032
+ null,
58033
+ mailer_check_settings_notice
58034
+ ),
58035
+ _react2['default'].createElement(
58036
+ 'p',
58037
+ null,
58038
+ _react2['default'].createElement(
58039
+ 'a',
58040
+ { href: 'javascript:;',
58041
+ className: 'button',
58042
+ onClick: this.resumeMailerSending
58043
+ },
58044
+ _mailpoet2['default'].I18n.t('mailerResumeSendingButton')
58045
+ )
58046
+ )
58047
+ );
58048
+ },
58049
+ resumeMailerSending: function resumeMailerSending() {
58050
+ _mailpoet2['default'].Ajax.post({
58051
+ endpoint: 'mailer',
58052
+ action: 'resumeSending'
58053
+ }).done(function () {
58054
+ _mailpoet2['default'].Notice.hide('mailpoet_mailer_error');
58055
+ _mailpoet2['default'].Notice.success(_mailpoet2['default'].I18n.t('mailerSendingResumedNotice'));
58056
+ window.mailpoet_listing.forceUpdate();
58057
+ }).fail(function (response) {
58058
+ if (response.errors.length > 0) {
58059
+ _mailpoet2['default'].Notice.error(response.errors.map(function (error) {
58060
+ return error.message;
58061
+ }), { scroll: true });
58062
+ }
58063
+ });
58064
+ }
58065
+ };
58066
+
58067
  exports.QueueMixin = _QueueMixin;
58068
  exports.StatisticsMixin = _StatisticsMixin;
58069
+ exports.MailerMixin = _MailerMixin;
58070
 
58071
  /***/ },
58072
+ /* 422 */
58073
  /***/ function(module, exports, __webpack_require__) {
58074
 
58075
  'use strict';
58088
 
58089
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
58090
 
58091
+ var _newslettersListingsTabsJsx = __webpack_require__(420);
58092
 
58093
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
58094
 
58095
+ var _newslettersListingsMixinsJsx = __webpack_require__(421);
58096
+
58097
  var _classnames = __webpack_require__(268);
58098
 
58099
  var _classnames2 = _interopRequireDefault(_classnames);
58113
  var mailpoet_roles = window.mailpoet_roles || {};
58114
  var mailpoet_segments = window.mailpoet_segments || {};
58115
  var mailpoet_tracking_enabled = !!window['mailpoet_tracking_enabled'];
58116
+ var mailpoet_settings = window.mailpoet_settings || {};
58117
 
58118
  var messages = {
58119
  onTrash: function onTrash(response) {
58224
  var NewsletterListWelcome = _react2['default'].createClass({
58225
  displayName: 'NewsletterListWelcome',
58226
 
58227
+ mixins: [_newslettersListingsMixinsJsx.MailerMixin],
58228
  updateStatus: function updateStatus(e) {
58229
  var _this = this;
58230
 
58458
  messages: messages,
58459
  auto_refresh: true,
58460
  sort_by: 'updated_at',
58461
+ sort_order: 'desc',
58462
+ afterGetItems: this.checkMailerStatus
58463
  })
58464
  );
58465
  }
58468
  module.exports = NewsletterListWelcome;
58469
 
58470
  /***/ },
58471
+ /* 423 */
58472
  /***/ function(module, exports, __webpack_require__) {
58473
 
58474
  'use strict';
58487
 
58488
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
58489
 
58490
+ var _newslettersListingsTabsJsx = __webpack_require__(420);
58491
 
58492
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
58493
 
58494
+ var _newslettersListingsMixinsJsx = __webpack_require__(421);
58495
+
58496
  var _classnames = __webpack_require__(268);
58497
 
58498
  var _classnames2 = _interopRequireDefault(_classnames);
58505
 
58506
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
58507
 
58508
+ var _newslettersSchedulingCommonJsx = __webpack_require__(413);
58509
+
58510
+ var mailpoet_settings = window.mailpoet_settings || {};
58511
 
58512
  var messages = {
58513
  onTrash: function onTrash(response) {
58618
  var NewsletterListNotification = _react2['default'].createClass({
58619
  displayName: 'NewsletterListNotification',
58620
 
58621
+ mixins: [_newslettersListingsMixinsJsx.MailerMixin],
58622
  updateStatus: function updateStatus(e) {
58623
  var _this = this;
58624
 
58810
  messages: messages,
58811
  auto_refresh: true,
58812
  sort_by: 'updated_at',
58813
+ sort_order: 'desc',
58814
+ afterGetItems: this.checkMailerStatus
58815
  })
58816
  );
58817
  }
58820
  module.exports = NewsletterListNotification;
58821
 
58822
  /***/ },
58823
+ /* 424 */
58824
  /***/ function(module, exports, __webpack_require__) {
58825
 
58826
  'use strict';
58849
 
58850
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
58851
 
58852
+ var _newslettersListingsTabsJsx = __webpack_require__(420);
58853
 
58854
  var _newslettersListingsTabsJsx2 = _interopRequireDefault(_newslettersListingsTabsJsx);
58855
 
58856
+ var _newslettersListingsMixinsJsx = __webpack_require__(421);
58857
 
58858
  var mailpoet_tracking_enabled = !!window['mailpoet_tracking_enabled'];
58859
+ var mailpoet_settings = window.mailpoet_settings || {};
58860
 
58861
  var columns = [{
58862
  name: 'subject',
58890
  var NewsletterListNotificationHistory = _react2['default'].createClass({
58891
  displayName: 'NewsletterListNotificationHistory',
58892
 
58893
+ mixins: [_newslettersListingsMixinsJsx.QueueMixin, _newslettersListingsMixinsJsx.StatisticsMixin, _newslettersListingsMixinsJsx.MailerMixin],
58894
+ renderItem: function renderItem(newsletter, actions, meta) {
58895
  var rowClasses = (0, _classnames2['default'])('manage-column', 'column-primary', 'has-row-actions');
58896
 
58897
  var segments = newsletter.segments.map(function (segment) {
58898
  return segment.name;
58899
  }).join(', ');
58900
 
58901
+ var mailer_log = window.mailpoet_settings.mta_log || {};
58902
+
58903
  return _react2['default'].createElement(
58904
  'div',
58905
  null,
58923
  _react2['default'].createElement(
58924
  'td',
58925
  { className: 'column', 'data-colname': _mailpoet2['default'].I18n.t('status') },
58926
+ this.renderQueueStatus(newsletter, meta.mta_log)
58927
  ),
58928
  _react2['default'].createElement(
58929
  'td',
58982
  item_actions: newsletter_actions,
58983
  auto_refresh: true,
58984
  sort_by: 'updated_at',
58985
+ sort_order: 'desc',
58986
+ afterGetItems: this.checkMailerStatus
58987
  })
58988
  );
58989
  }
58992
  module.exports = NewsletterListNotificationHistory;
58993
 
58994
  /***/ },
58995
+ /* 425 */
58996
  /***/ function(module, exports, __webpack_require__) {
58997
 
58998
  'use strict';
59011
 
59012
  var _history = __webpack_require__(236);
59013
 
59014
+ var _segmentsListJsx = __webpack_require__(426);
59015
 
59016
  var _segmentsListJsx2 = _interopRequireDefault(_segmentsListJsx);
59017
 
59018
+ var _segmentsFormJsx = __webpack_require__(427);
59019
 
59020
  var _segmentsFormJsx2 = _interopRequireDefault(_segmentsFormJsx);
59021
 
59047
  }
59048
 
59049
  /***/ },
59050
+ /* 426 */
59051
  /***/ function(module, exports, __webpack_require__) {
59052
 
59053
  'use strict';
59363
  module.exports = SegmentList;
59364
 
59365
  /***/ },
59366
+ /* 427 */
59367
  /***/ function(module, exports, __webpack_require__) {
59368
 
59369
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
59423
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
59424
 
59425
  /***/ },
59426
+ /* 428 */
59427
  /***/ function(module, exports, __webpack_require__) {
59428
 
59429
  'use strict';
59442
 
59443
  var _history = __webpack_require__(236);
59444
 
59445
+ var _formsListJsx = __webpack_require__(429);
59446
 
59447
  var _formsListJsx2 = _interopRequireDefault(_formsListJsx);
59448
 
59472
  }
59473
 
59474
  /***/ },
59475
+ /* 429 */
59476
  /***/ function(module, exports, __webpack_require__) {
59477
 
59478
  'use strict';
59703
  module.exports = FormList;
59704
 
59705
  /***/ },
59706
+ /* 430 */
59707
  /***/ function(module, exports, __webpack_require__) {
59708
 
59709
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
59710
+ __webpack_require__(431),
59711
  __webpack_require__(266),
59712
  __webpack_require__(267)
59713
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
59784
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
59785
 
59786
  /***/ },
59787
+ /* 431 */
59788
  /***/ function(module, exports, __webpack_require__) {
59789
 
59790
+ /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["Backbone"] = __webpack_require__(432);
59791
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
59792
 
59793
  /***/ },
59794
+ /* 432 */
59795
  /***/ function(module, exports, __webpack_require__) {
59796
 
59797
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global) {// Backbone.js 1.3.3
61718
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
61719
 
61720
  /***/ },
61721
+ /* 433 */
61722
  /***/ function(module, exports, __webpack_require__) {
61723
 
61724
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
61725
+ __webpack_require__(431),
61726
  __webpack_require__(270),
61727
  __webpack_require__(266),
61728
  __webpack_require__(267),
61729
+ __webpack_require__(434),
61730
  __webpack_require__(435),
61731
  __webpack_require__(436),
 
61732
  __webpack_require__(289),
61733
  __webpack_require__(279)
61734
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function (
61739
  Handlebars,
61740
  Papa,
61741
  AsyncQueue,
61742
+ Moment,
61743
+ select2
61744
  ) {
61745
  if (!jQuery('#mailpoet_subscribers_import').length) {
61746
  return;
62832
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
62833
 
62834
  /***/ },
62835
+ /* 434 */,
62836
+ /* 435 */
62837
  /***/ function(module, exports) {
62838
 
62839
  /*!
62844
  !function(e){"use strict";function t(t,r){if(r=r||{},r.worker&&w.WORKERS_SUPPORTED){var n=h();return n.userStep=r.step,n.userChunk=r.chunk,n.userComplete=r.complete,n.userError=r.error,r.step=m(r.step),r.chunk=m(r.chunk),r.complete=m(r.complete),r.error=m(r.error),delete r.worker,void n.postMessage({input:t,config:r,workerId:n.id})}var o=null;return"string"==typeof t?o=r.download?new i(r):new a(r):(e.File&&t instanceof File||t instanceof Object)&&(o=new s(r)),o.stream(t)}function r(e,t){function r(){"object"==typeof t&&("string"==typeof t.delimiter&&1==t.delimiter.length&&-1==w.BAD_DELIMITERS.indexOf(t.delimiter)&&(u=t.delimiter),("boolean"==typeof t.quotes||t.quotes instanceof Array)&&(o=t.quotes),"string"==typeof t.newline&&(f=t.newline))}function n(e){if("object"!=typeof e)return[];var t=[];for(var r in e)t.push(r);return t}function i(e,t){var r="";"string"==typeof e&&(e=JSON.parse(e)),"string"==typeof t&&(t=JSON.parse(t));var n=e instanceof Array&&e.length>0,i=!(t[0]instanceof Array);if(n){for(var a=0;a<e.length;a++)a>0&&(r+=u),r+=s(e[a],a);t.length>0&&(r+=f)}for(var o=0;o<t.length;o++){for(var h=n?e.length:t[o].length,d=0;h>d;d++){d>0&&(r+=u);var c=n&&i?e[d]:d;r+=s(t[o][c],d)}o<t.length-1&&(r+=f)}return r}function s(e,t){if("undefined"==typeof e||null===e)return"";e=e.toString().replace(/"/g,'""');var r="boolean"==typeof o&&o||o instanceof Array&&o[t]||a(e,w.BAD_DELIMITERS)||e.indexOf(u)>-1||" "==e.charAt(0)||" "==e.charAt(e.length-1);return r?'"'+e+'"':e}function a(e,t){for(var r=0;r<t.length;r++)if(e.indexOf(t[r])>-1)return!0;return!1}var o=!1,u=",",f="\r\n";if(r(),"string"==typeof e&&(e=JSON.parse(e)),e instanceof Array){if(!e.length||e[0]instanceof Array)return i(null,e);if("object"==typeof e[0])return i(n(e[0]),e)}else if("object"==typeof e)return"string"==typeof e.data&&(e.data=JSON.parse(e.data)),e.data instanceof Array&&(e.fields||(e.fields=e.data[0]instanceof Array?e.fields:n(e.data[0])),e.data[0]instanceof Array||"object"==typeof e.data[0]||(e.data=[e.data])),i(e.fields||[],e.data||[]);throw"exception: Unable to serialize unrecognized input"}function n(t){function r(e){var t=_(e);t.chunkSize=parseInt(t.chunkSize),this._handle=new o(t),this._handle.streamer=this,this._config=t}this._handle=null,this._paused=!1,this._finished=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this._completeResults={data:[],errors:[],meta:{}},r.call(this,t),this.parseChunk=function(t){var r=this._partialLine+t;this._partialLine="";var n=this._handle.parse(r,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var i=n.meta.cursor;this._finished||(this._partialLine=r.substring(i-this._baseIndex),this._baseIndex=i),n&&n.data&&(this._rowCount+=n.data.length);var s=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(k)e.postMessage({results:n,workerId:w.WORKER_ID,finished:s});else if(m(this._config.chunk)){if(this._config.chunk(n,this._handle),this._paused)return;n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),!s||!m(this._config.complete)||n&&n.meta.aborted||this._config.complete(this._completeResults),s||n&&n.meta.paused||this._nextChunk(),n}},this._sendError=function(t){m(this._config.error)?this._config.error(t):k&&this._config.error&&e.postMessage({workerId:w.WORKER_ID,error:t,finished:!1})}}function i(e){function t(e){var t=e.getResponseHeader("Content-Range");return parseInt(t.substr(t.lastIndexOf("/")+1))}e=e||{},e.chunkSize||(e.chunkSize=w.RemoteChunkSize),n.call(this,e);var r;this._nextChunk=k?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)return void this._chunkLoaded();if(r=new XMLHttpRequest,k||(r.onload=g(this._chunkLoaded,this),r.onerror=g(this._chunkError,this)),r.open("GET",this._input,!k),this._config.chunkSize){var e=this._start+this._config.chunkSize-1;r.setRequestHeader("Range","bytes="+this._start+"-"+e),r.setRequestHeader("If-None-Match","webkit-no-cache")}try{r.send()}catch(t){this._chunkError(t.message)}k&&0==r.status?this._chunkError():this._start+=this._config.chunkSize},this._chunkLoaded=function(){if(4==r.readyState){if(r.status<200||r.status>=400)return void this._chunkError();this._finished=!this._config.chunkSize||this._start>t(r),this.parseChunk(r.responseText)}},this._chunkError=function(e){var t=r.statusText||e;this._sendError(t)}}function s(e){e=e||{},e.chunkSize||(e.chunkSize=w.LocalChunkSize),n.call(this,e);var t,r,i="undefined"!=typeof FileReader;this.stream=function(e){this._input=e,r=e.slice||e.webkitSlice||e.mozSlice,i?(t=new FileReader,t.onload=g(this._chunkLoaded,this),t.onerror=g(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var n=Math.min(this._start+this._config.chunkSize,this._input.size);e=r.call(e,this._start,n)}var s=t.readAsText(e,this._config.encoding);i||this._chunkLoaded({target:{result:s}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(t.error)}}function a(e){e=e||{},n.call(this,e);var t,r;this.stream=function(e){return t=e,r=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e=this._config.chunkSize,t=e?r.substr(0,e):r;return r=e?r.substr(e):"",this._finished=!r,this.parseChunk(t)}}}function o(e){function t(){if(b&&c&&(f("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+w.DefaultDelimiter+"'"),c=!1),e.skipEmptyLines)for(var t=0;t<b.data.length;t++)1==b.data[t].length&&""==b.data[t][0]&&b.data.splice(t--,1);return r()&&n(),i()}function r(){return e.header&&0==y.length}function n(){if(b){for(var e=0;r()&&e<b.data.length;e++)for(var t=0;t<b.data[e].length;t++)y.push(b.data[e][t]);b.data.splice(0,1)}}function i(){if(!b||!e.header&&!e.dynamicTyping)return b;for(var t=0;t<b.data.length;t++){for(var r={},n=0;n<b.data[t].length;n++){if(e.dynamicTyping){var i=b.data[t][n];b.data[t][n]="true"==i||"TRUE"==i?!0:"false"==i||"FALSE"==i?!1:o(i)}e.header&&(n>=y.length?(r.__parsed_extra||(r.__parsed_extra=[]),r.__parsed_extra.push(b.data[t][n])):r[y[n]]=b.data[t][n])}e.header&&(b.data[t]=r,n>y.length?f("FieldMismatch","TooManyFields","Too many fields: expected "+y.length+" fields but parsed "+n,t):n<y.length&&f("FieldMismatch","TooFewFields","Too few fields: expected "+y.length+" fields but parsed "+n,t))}return e.header&&b.meta&&(b.meta.fields=y),b}function s(t){for(var r,n,i,s=[","," ","|",";",w.RECORD_SEP,w.UNIT_SEP],a=0;a<s.length;a++){var o=s[a],f=0,h=0;i=void 0;for(var d=new u({delimiter:o,preview:10}).parse(t),c=0;c<d.data.length;c++){var l=d.data[c].length;h+=l,"undefined"!=typeof i?l>1&&(f+=Math.abs(l-i),i=l):i=l}h/=d.data.length,("undefined"==typeof n||n>f)&&h>1.99&&(n=f,r=o)}return e.delimiter=r,{successful:!!r,bestDelimiter:r}}function a(e){e=e.substr(0,1048576);var t=e.split("\r");if(1==t.length)return"\n";for(var r=0,n=0;n<t.length;n++)"\n"==t[n][0]&&r++;return r>=t.length/2?"\r\n":"\r"}function o(e){var t=l.test(e);return t?parseFloat(e):e}function f(e,t,r,n){b.errors.push({type:e,code:t,message:r,row:n})}var h,d,c,l=/^\s*-?(\d*\.?\d+|\d+\.?\d*)(e[-+]?\d+)?\s*$/i,p=this,g=0,v=!1,k=!1,y=[],b={data:[],errors:[],meta:{}};if(m(e.step)){var R=e.step;e.step=function(n){if(b=n,r())t();else{if(t(),0==b.data.length)return;g+=n.data.length,e.preview&&g>e.preview?d.abort():R(b,p)}}}this.parse=function(r,n,i){if(e.newline||(e.newline=a(r)),c=!1,!e.delimiter){var o=s(r);o.successful?e.delimiter=o.bestDelimiter:(c=!0,e.delimiter=w.DefaultDelimiter),b.meta.delimiter=e.delimiter}var f=_(e);return e.preview&&e.header&&f.preview++,h=r,d=new u(f),b=d.parse(h,n,i),t(),v?{meta:{paused:!0}}:b||{meta:{paused:!1}}},this.paused=function(){return v},this.pause=function(){v=!0,d.abort(),h=h.substr(d.getCharIndex())},this.resume=function(){v=!1,p.streamer.parseChunk(h)},this.aborted=function(){return k},this.abort=function(){k=!0,d.abort(),b.meta.aborted=!0,m(e.complete)&&e.complete(b),h=""}}function u(e){e=e||{};var t=e.delimiter,r=e.newline,n=e.comments,i=e.step,s=e.preview,a=e.fastMode;if(("string"!=typeof t||w.BAD_DELIMITERS.indexOf(t)>-1)&&(t=","),n===t)throw"Comment character same as delimiter";n===!0?n="#":("string"!=typeof n||w.BAD_DELIMITERS.indexOf(n)>-1)&&(n=!1),"\n"!=r&&"\r"!=r&&"\r\n"!=r&&(r="\n");var o=0,u=!1;this.parse=function(e,f,h){function d(e){b.push(e),S=o}function c(t){return h?p():(t||(t=e.substr(o)),w.push(t),o=g,d(w),y&&_(),p())}function l(t){o=t,d(w),w=[],O=e.indexOf(r,o)}function p(e){return{data:b,errors:R,meta:{delimiter:t,linebreak:r,aborted:u,truncated:!!e,cursor:S+(f||0)}}}function _(){i(p()),b=[],R=[]}if("string"!=typeof e)throw"Input must be a string";var g=e.length,m=t.length,v=r.length,k=n.length,y="function"==typeof i;o=0;var b=[],R=[],w=[],S=0;if(!e)return p();if(a||a!==!1&&-1===e.indexOf('"')){for(var E=e.split(r),C=0;C<E.length;C++){var w=E[C];if(o+=w.length,C!==E.length-1)o+=r.length;else if(h)return p();if(!n||w.substr(0,k)!=n){if(y){if(b=[],d(w.split(t)),_(),u)return p()}else d(w.split(t));if(s&&C>=s)return b=b.slice(0,s),p(!0)}}return p()}for(var x=e.indexOf(t,o),O=e.indexOf(r,o);;)if('"'!=e[o])if(n&&0===w.length&&e.substr(o,k)===n){if(-1==O)return p();o=O+v,O=e.indexOf(r,o),x=e.indexOf(t,o)}else if(-1!==x&&(O>x||-1===O))w.push(e.substring(o,x)),o=x+m,x=e.indexOf(t,o);else{if(-1===O)break;if(w.push(e.substring(o,O)),l(O+v),y&&(_(),u))return p();if(s&&b.length>=s)return p(!0)}else{var I=o;for(o++;;){var I=e.indexOf('"',I+1);if(-1===I)return h||R.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:b.length,index:o}),c();if(I===g-1){var D=e.substring(o,I).replace(/""/g,'"');return c(D)}if('"'!=e[I+1]){if(e[I+1]==t){w.push(e.substring(o,I).replace(/""/g,'"')),o=I+1+m,x=e.indexOf(t,o),O=e.indexOf(r,o);break}if(e.substr(I+1,v)===r){if(w.push(e.substring(o,I).replace(/""/g,'"')),l(I+1+v),x=e.indexOf(t,o),y&&(_(),u))return p();if(s&&b.length>=s)return p(!0);break}}else I++}}return c()},this.abort=function(){u=!0},this.getCharIndex=function(){return o}}function f(){var e=document.getElementsByTagName("script");return e.length?e[e.length-1].src:""}function h(){if(!w.WORKERS_SUPPORTED)return!1;if(!y&&null===w.SCRIPT_PATH)throw new Error("Script path cannot be determined automatically when Papa Parse is loaded asynchronously. You need to set Papa.SCRIPT_PATH manually.");var t=new e.Worker(w.SCRIPT_PATH||v);return t.onmessage=d,t.id=R++,b[t.id]=t,t}function d(e){var t=e.data,r=b[t.workerId],n=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var i=function(){n=!0,c(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},s={abort:i,pause:l,resume:l};if(m(r.userStep)){for(var a=0;a<t.results.data.length&&(r.userStep({data:[t.results.data[a]],errors:t.results.errors,meta:t.results.meta},s),!n);a++);delete t.results}else m(r.userChunk)&&(r.userChunk(t.results,s,t.file),delete t.results)}t.finished&&!n&&c(t.workerId,t.results)}function c(e,t){var r=b[e];m(r.userComplete)&&r.userComplete(t),r.terminate(),delete b[e]}function l(){throw"Not implemented."}function p(t){var r=t.data;if("undefined"==typeof w.WORKER_ID&&r&&(w.WORKER_ID=r.workerId),"string"==typeof r.input)e.postMessage({workerId:w.WORKER_ID,results:w.parse(r.input,r.config),finished:!0});else if(e.File&&r.input instanceof File||r.input instanceof Object){var n=w.parse(r.input,r.config);n&&e.postMessage({workerId:w.WORKER_ID,results:n,finished:!0})}}function _(e){if("object"!=typeof e)return e;var t=e instanceof Array?[]:{};for(var r in e)t[r]=_(e[r]);return t}function g(e,t){return function(){e.apply(t,arguments)}}function m(e){return"function"==typeof e}var v,k=!e.document&&!!e.postMessage,y=!1,b={},R=0,w={};if(w.parse=t,w.unparse=r,w.RECORD_SEP=String.fromCharCode(30),w.UNIT_SEP=String.fromCharCode(31),w.BYTE_ORDER_MARK="",w.BAD_DELIMITERS=["\r","\n",'"',w.BYTE_ORDER_MARK],w.WORKERS_SUPPORTED=!!e.Worker,w.SCRIPT_PATH=null,w.LocalChunkSize=10485760,w.RemoteChunkSize=5242880,w.DefaultDelimiter=",",w.Parser=u,w.ParserHandle=o,w.NetworkStreamer=i,w.FileStreamer=s,w.StringStreamer=a,"undefined"!=typeof module&&module.exports?module.exports=w:m(e.define)&&e.define.amd?e.define(function(){return w}):e.Papa=w,e.jQuery){var S=e.jQuery;S.fn.parse=function(t){function r(){if(0==a.length)return void(m(t.complete)&&t.complete());var e=a[0];if(m(t.before)){var r=t.before(e.file,e.inputElem);if("object"==typeof r){if("abort"==r.action)return void n("AbortError",e.file,e.inputElem,r.reason);if("skip"==r.action)return void i();"object"==typeof r.config&&(e.instanceConfig=S.extend(e.instanceConfig,r.config))}else if("skip"==r)return void i()}var s=e.instanceConfig.complete;e.instanceConfig.complete=function(t){m(s)&&s(t,e.file,e.inputElem),i()},w.parse(e.file,e.instanceConfig)}function n(e,r,n,i){m(t.error)&&t.error({name:e},r,n,i)}function i(){a.splice(0,1),r()}var s=t.config||{},a=[];return this.each(function(){var t="INPUT"==S(this).prop("tagName").toUpperCase()&&"file"==S(this).attr("type").toLowerCase()&&e.FileReader;if(!t||!this.files||0==this.files.length)return!0;for(var r=0;r<this.files.length;r++)a.push({file:this.files[r],inputElem:this,instanceConfig:S.extend({},s)})}),r(),this}}k?e.onmessage=p:w.WORKERS_SUPPORTED&&(v=f(),document.body?document.addEventListener("DOMContentLoaded",function(){y=!0},!0):y=!0),i.prototype=Object.create(n.prototype),i.prototype.constructor=i,s.prototype=Object.create(n.prototype),s.prototype.constructor=s,a.prototype=Object.create(a.prototype),a.prototype.constructor=a}("undefined"!=typeof window?window:this);
62845
 
62846
  /***/ },
62847
+ /* 436 */
62848
  /***/ function(module, exports) {
62849
 
62850
  /*
62929
 
62930
 
62931
  /***/ },
62932
+ /* 437 */
62933
  /***/ function(module, exports, __webpack_require__) {
62934
 
62935
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
62936
  __webpack_require__(270),
62937
  __webpack_require__(266),
62938
  __webpack_require__(267),
62939
+ __webpack_require__(434),
62940
  __webpack_require__(279)
62941
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function (
62942
  _,
62943
  jQuery,
62944
  MailPoet,
62945
+ Handlebars,
62946
+ select2
62947
  ) {
62948
  if (!jQuery("#mailpoet_subscribers_export").length) {
62949
  return;
63030
 
63031
  // set confirmed subscribers export option to false
63032
  exportData.exportConfirmedOption = false;
63033
+
63034
  renderSegmentsAndFields(subscriberFieldsContainerElement, subscriberFieldsSelect2);
63035
  renderSegmentsAndFields(segmentsContainerElement, segments);
63036
 
63102
 
63103
 
63104
  /***/ },
63105
+ /* 438 */
63106
  /***/ function(module, exports, __webpack_require__) {
63107
 
63108
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
assets/js/form_editor.js CHANGED
@@ -3,22 +3,22 @@ webpackJsonp([1],{
3
  /***/ 0:
4
  /***/ function(module, exports, __webpack_require__) {
5
 
6
- __webpack_require__(440);
7
- __webpack_require__(442);
8
- module.exports = __webpack_require__(444);
9
 
10
 
11
  /***/ },
12
 
13
- /***/ 440:
14
  /***/ function(module, exports, __webpack_require__) {
15
 
16
- /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["WysijaForm"] = __webpack_require__(441);
17
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
18
 
19
  /***/ },
20
 
21
- /***/ 441:
22
  /***/ function(module, exports) {
23
 
24
  /*
@@ -1088,15 +1088,15 @@ webpackJsonp([1],{
1088
 
1089
  /***/ },
1090
 
1091
- /***/ 442:
1092
  /***/ function(module, exports, __webpack_require__) {
1093
 
1094
- /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["CodeMirror"] = __webpack_require__(443);
1095
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
1096
 
1097
  /***/ },
1098
 
1099
- /***/ 443:
1100
  /***/ function(module, exports, __webpack_require__) {
1101
 
1102
  // CodeMirror, copyright (c) by Marijn Haverbeke and others
@@ -10210,7 +10210,7 @@ webpackJsonp([1],{
10210
 
10211
  /***/ },
10212
 
10213
- /***/ 444:
10214
  /***/ function(module, exports, __webpack_require__) {
10215
 
10216
  // CodeMirror, copyright (c) by Marijn Haverbeke and others
@@ -10218,7 +10218,7 @@ webpackJsonp([1],{
10218
 
10219
  (function(mod) {
10220
  if (true) // CommonJS
10221
- mod(__webpack_require__(442));
10222
  else if (typeof define == "function" && define.amd) // AMD
10223
  define(["../../lib/codemirror"], mod);
10224
  else // Plain browser env
3
  /***/ 0:
4
  /***/ function(module, exports, __webpack_require__) {
5
 
6
+ __webpack_require__(439);
7
+ __webpack_require__(441);
8
+ module.exports = __webpack_require__(443);
9
 
10
 
11
  /***/ },
12
 
13
+ /***/ 439:
14
  /***/ function(module, exports, __webpack_require__) {
15
 
16
+ /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["WysijaForm"] = __webpack_require__(440);
17
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
18
 
19
  /***/ },
20
 
21
+ /***/ 440:
22
  /***/ function(module, exports) {
23
 
24
  /*
1088
 
1089
  /***/ },
1090
 
1091
+ /***/ 441:
1092
  /***/ function(module, exports, __webpack_require__) {
1093
 
1094
+ /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["CodeMirror"] = __webpack_require__(442);
1095
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
1096
 
1097
  /***/ },
1098
 
1099
+ /***/ 442:
1100
  /***/ function(module, exports, __webpack_require__) {
1101
 
1102
  // CodeMirror, copyright (c) by Marijn Haverbeke and others
10210
 
10211
  /***/ },
10212
 
10213
+ /***/ 443:
10214
  /***/ function(module, exports, __webpack_require__) {
10215
 
10216
  // CodeMirror, copyright (c) by Marijn Haverbeke and others
10218
 
10219
  (function(mod) {
10220
  if (true) // CommonJS
10221
+ mod(__webpack_require__(441));
10222
  else if (typeof define == "function" && define.amd) // AMD
10223
  define(["../../lib/codemirror"], mod);
10224
  else // Plain browser env
assets/js/mailpoet.js CHANGED
@@ -3,13 +3,13 @@ webpackJsonp([2],[
3
  /***/ function(module, exports, __webpack_require__) {
4
 
5
  __webpack_require__(267);
 
6
  __webpack_require__(445);
7
  __webpack_require__(446);
8
  __webpack_require__(447);
9
  __webpack_require__(448);
10
  __webpack_require__(449);
11
- __webpack_require__(450);
12
- module.exports = __webpack_require__(451);
13
 
14
 
15
  /***/ },
@@ -1883,7 +1883,7 @@ webpackJsonp([2],[
1883
  /***/ function(module, exports, __webpack_require__) {
1884
 
1885
  /* WEBPACK VAR INJECTION */(function(module) {//! moment.js
1886
- //! version : 2.17.0
1887
  //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
1888
  //! license : MIT
1889
  //! momentjs.com
@@ -6148,7 +6148,7 @@ webpackJsonp([2],[
6148
  // Side effect imports
6149
 
6150
 
6151
- hooks.version = '2.17.0';
6152
 
6153
  setHookCallback(createLocal);
6154
 
@@ -6226,205 +6226,203 @@ webpackJsonp([2],[
6226
  "./be": 300,
6227
  "./be.js": 300,
6228
  "./bg": 301,
6229
- "./bg-x": 302,
6230
- "./bg-x.js": 302,
6231
  "./bg.js": 301,
6232
- "./bn": 303,
6233
- "./bn.js": 303,
6234
- "./bo": 304,
6235
- "./bo.js": 304,
6236
- "./br": 305,
6237
- "./br.js": 305,
6238
- "./bs": 306,
6239
- "./bs.js": 306,
6240
- "./ca": 307,
6241
- "./ca.js": 307,
6242
- "./cs": 308,
6243
- "./cs.js": 308,
6244
- "./cv": 309,
6245
- "./cv.js": 309,
6246
- "./cy": 310,
6247
- "./cy.js": 310,
6248
- "./da": 311,
6249
- "./da.js": 311,
6250
- "./de": 312,
6251
- "./de-at": 313,
6252
- "./de-at.js": 313,
6253
- "./de.js": 312,
6254
- "./dv": 314,
6255
- "./dv.js": 314,
6256
- "./el": 315,
6257
- "./el.js": 315,
6258
- "./en-au": 316,
6259
- "./en-au.js": 316,
6260
- "./en-ca": 317,
6261
- "./en-ca.js": 317,
6262
- "./en-gb": 318,
6263
- "./en-gb.js": 318,
6264
- "./en-ie": 319,
6265
- "./en-ie.js": 319,
6266
- "./en-nz": 320,
6267
- "./en-nz.js": 320,
6268
- "./eo": 321,
6269
- "./eo.js": 321,
6270
- "./es": 322,
6271
- "./es-do": 323,
6272
- "./es-do.js": 323,
6273
- "./es.js": 322,
6274
- "./et": 324,
6275
- "./et.js": 324,
6276
- "./eu": 325,
6277
- "./eu.js": 325,
6278
- "./fa": 326,
6279
- "./fa.js": 326,
6280
- "./fi": 327,
6281
- "./fi.js": 327,
6282
- "./fo": 328,
6283
- "./fo.js": 328,
6284
- "./fr": 329,
6285
- "./fr-ca": 330,
6286
- "./fr-ca.js": 330,
6287
- "./fr-ch": 331,
6288
- "./fr-ch.js": 331,
6289
- "./fr.js": 329,
6290
- "./fy": 332,
6291
- "./fy.js": 332,
6292
- "./gd": 333,
6293
- "./gd.js": 333,
6294
- "./gl": 334,
6295
- "./gl.js": 334,
6296
- "./he": 335,
6297
- "./he.js": 335,
6298
- "./hi": 336,
6299
- "./hi.js": 336,
6300
- "./hr": 337,
6301
- "./hr.js": 337,
6302
- "./hu": 338,
6303
- "./hu.js": 338,
6304
- "./hy-am": 339,
6305
- "./hy-am.js": 339,
6306
- "./id": 340,
6307
- "./id.js": 340,
6308
- "./is": 341,
6309
- "./is.js": 341,
6310
- "./it": 342,
6311
- "./it.js": 342,
6312
- "./ja": 343,
6313
- "./ja.js": 343,
6314
- "./jv": 344,
6315
- "./jv.js": 344,
6316
- "./ka": 345,
6317
- "./ka.js": 345,
6318
- "./kk": 346,
6319
- "./kk.js": 346,
6320
- "./km": 347,
6321
- "./km.js": 347,
6322
- "./ko": 348,
6323
- "./ko.js": 348,
6324
- "./ky": 349,
6325
- "./ky.js": 349,
6326
- "./lb": 350,
6327
- "./lb.js": 350,
6328
- "./lo": 351,
6329
- "./lo.js": 351,
6330
- "./lt": 352,
6331
- "./lt.js": 352,
6332
- "./lv": 353,
6333
- "./lv.js": 353,
6334
- "./me": 354,
6335
- "./me.js": 354,
6336
- "./mi": 355,
6337
- "./mi.js": 355,
6338
- "./mk": 356,
6339
- "./mk.js": 356,
6340
- "./ml": 357,
6341
- "./ml.js": 357,
6342
- "./mr": 358,
6343
- "./mr.js": 358,
6344
- "./ms": 359,
6345
- "./ms-my": 360,
6346
- "./ms-my.js": 360,
6347
- "./ms.js": 359,
6348
- "./my": 361,
6349
- "./my.js": 361,
6350
- "./nb": 362,
6351
- "./nb.js": 362,
6352
- "./ne": 363,
6353
- "./ne.js": 363,
6354
- "./nl": 364,
6355
- "./nl-be": 365,
6356
- "./nl-be.js": 365,
6357
- "./nl.js": 364,
6358
- "./nn": 366,
6359
- "./nn.js": 366,
6360
- "./pa-in": 367,
6361
- "./pa-in.js": 367,
6362
- "./pl": 368,
6363
- "./pl.js": 368,
6364
- "./pt": 369,
6365
- "./pt-br": 370,
6366
- "./pt-br.js": 370,
6367
- "./pt.js": 369,
6368
- "./ro": 371,
6369
- "./ro.js": 371,
6370
- "./ru": 372,
6371
- "./ru.js": 372,
6372
- "./se": 373,
6373
- "./se.js": 373,
6374
- "./si": 374,
6375
- "./si.js": 374,
6376
- "./sk": 375,
6377
- "./sk.js": 375,
6378
- "./sl": 376,
6379
- "./sl.js": 376,
6380
- "./sq": 377,
6381
- "./sq.js": 377,
6382
- "./sr": 378,
6383
- "./sr-cyrl": 379,
6384
- "./sr-cyrl.js": 379,
6385
- "./sr.js": 378,
6386
- "./ss": 380,
6387
- "./ss.js": 380,
6388
- "./sv": 381,
6389
- "./sv.js": 381,
6390
- "./sw": 382,
6391
- "./sw.js": 382,
6392
- "./ta": 383,
6393
- "./ta.js": 383,
6394
- "./te": 384,
6395
- "./te.js": 384,
6396
- "./tet": 385,
6397
- "./tet.js": 385,
6398
- "./th": 386,
6399
- "./th.js": 386,
6400
- "./tl-ph": 387,
6401
- "./tl-ph.js": 387,
6402
- "./tlh": 388,
6403
- "./tlh.js": 388,
6404
- "./tr": 389,
6405
- "./tr.js": 389,
6406
- "./tzl": 390,
6407
- "./tzl.js": 390,
6408
- "./tzm": 391,
6409
- "./tzm-latn": 392,
6410
- "./tzm-latn.js": 392,
6411
- "./tzm.js": 391,
6412
- "./uk": 393,
6413
- "./uk.js": 393,
6414
- "./uz": 394,
6415
- "./uz.js": 394,
6416
- "./vi": 395,
6417
- "./vi.js": 395,
6418
- "./x-pseudo": 396,
6419
- "./x-pseudo.js": 396,
6420
- "./yo": 397,
6421
- "./yo.js": 397,
6422
- "./zh-cn": 398,
6423
- "./zh-cn.js": 398,
6424
- "./zh-hk": 399,
6425
- "./zh-hk.js": 399,
6426
- "./zh-tw": 400,
6427
- "./zh-tw.js": 400
6428
  };
6429
  function webpackContext(req) {
6430
  return __webpack_require__(webpackContextResolve(req));
@@ -7447,26 +7445,6 @@ webpackJsonp([2],[
7447
  /* 302 */
7448
  /***/ function(module, exports, __webpack_require__) {
7449
 
7450
-
7451
- ;(function (global, factory) {
7452
- true ? factory(__webpack_require__(289)) :
7453
- typeof define === 'function' && define.amd ? define(['../moment'], factory) :
7454
- factory(global.moment)
7455
- }(this, (function (moment) { 'use strict';
7456
-
7457
- var bgX = moment.defineLocale('bg-x', {
7458
- parentLocale: 'bg'
7459
- });
7460
-
7461
- return bgX;
7462
-
7463
- })));
7464
-
7465
-
7466
- /***/ },
7467
- /* 303 */
7468
- /***/ function(module, exports, __webpack_require__) {
7469
-
7470
  //! moment.js locale configuration
7471
  //! locale : Bengali [bn]
7472
  //! author : Kaushik Gandhi : https://github.com/kaushikgandhi
@@ -7588,7 +7566,7 @@ webpackJsonp([2],[
7588
 
7589
 
7590
  /***/ },
7591
- /* 304 */
7592
  /***/ function(module, exports, __webpack_require__) {
7593
 
7594
  //! moment.js locale configuration
@@ -7712,7 +7690,7 @@ webpackJsonp([2],[
7712
 
7713
 
7714
  /***/ },
7715
- /* 305 */
7716
  /***/ function(module, exports, __webpack_require__) {
7717
 
7718
  //! moment.js locale configuration
@@ -7825,7 +7803,7 @@ webpackJsonp([2],[
7825
 
7826
 
7827
  /***/ },
7828
- /* 306 */
7829
  /***/ function(module, exports, __webpack_require__) {
7830
 
7831
  //! moment.js locale configuration
@@ -7973,7 +7951,7 @@ webpackJsonp([2],[
7973
 
7974
 
7975
  /***/ },
7976
- /* 307 */
7977
  /***/ function(module, exports, __webpack_require__) {
7978
 
7979
  //! moment.js locale configuration
@@ -8059,7 +8037,7 @@ webpackJsonp([2],[
8059
 
8060
 
8061
  /***/ },
8062
- /* 308 */
8063
  /***/ function(module, exports, __webpack_require__) {
8064
 
8065
  //! moment.js locale configuration
@@ -8236,7 +8214,7 @@ webpackJsonp([2],[
8236
 
8237
 
8238
  /***/ },
8239
- /* 309 */
8240
  /***/ function(module, exports, __webpack_require__) {
8241
 
8242
  //! moment.js locale configuration
@@ -8304,7 +8282,7 @@ webpackJsonp([2],[
8304
 
8305
 
8306
  /***/ },
8307
- /* 310 */
8308
  /***/ function(module, exports, __webpack_require__) {
8309
 
8310
  //! moment.js locale configuration
@@ -8390,7 +8368,7 @@ webpackJsonp([2],[
8390
 
8391
 
8392
  /***/ },
8393
- /* 311 */
8394
  /***/ function(module, exports, __webpack_require__) {
8395
 
8396
  //! moment.js locale configuration
@@ -8455,7 +8433,7 @@ webpackJsonp([2],[
8455
 
8456
 
8457
  /***/ },
8458
- /* 312 */
8459
  /***/ function(module, exports, __webpack_require__) {
8460
 
8461
  //! moment.js locale configuration
@@ -8538,7 +8516,7 @@ webpackJsonp([2],[
8538
 
8539
 
8540
  /***/ },
8541
- /* 313 */
8542
  /***/ function(module, exports, __webpack_require__) {
8543
 
8544
  //! moment.js locale configuration
@@ -8622,7 +8600,7 @@ webpackJsonp([2],[
8622
 
8623
 
8624
  /***/ },
8625
- /* 314 */
8626
  /***/ function(module, exports, __webpack_require__) {
8627
 
8628
  //! moment.js locale configuration
@@ -8727,7 +8705,7 @@ webpackJsonp([2],[
8727
 
8728
 
8729
  /***/ },
8730
- /* 315 */
8731
  /***/ function(module, exports, __webpack_require__) {
8732
 
8733
  //! moment.js locale configuration
@@ -8830,7 +8808,7 @@ webpackJsonp([2],[
8830
 
8831
 
8832
  /***/ },
8833
- /* 316 */
8834
  /***/ function(module, exports, __webpack_require__) {
8835
 
8836
  //! moment.js locale configuration
@@ -8902,7 +8880,7 @@ webpackJsonp([2],[
8902
 
8903
 
8904
  /***/ },
8905
- /* 317 */
8906
  /***/ function(module, exports, __webpack_require__) {
8907
 
8908
  //! moment.js locale configuration
@@ -8970,7 +8948,7 @@ webpackJsonp([2],[
8970
 
8971
 
8972
  /***/ },
8973
- /* 318 */
8974
  /***/ function(module, exports, __webpack_require__) {
8975
 
8976
  //! moment.js locale configuration
@@ -9042,7 +9020,7 @@ webpackJsonp([2],[
9042
 
9043
 
9044
  /***/ },
9045
- /* 319 */
9046
  /***/ function(module, exports, __webpack_require__) {
9047
 
9048
  //! moment.js locale configuration
@@ -9114,7 +9092,7 @@ webpackJsonp([2],[
9114
 
9115
 
9116
  /***/ },
9117
- /* 320 */
9118
  /***/ function(module, exports, __webpack_require__) {
9119
 
9120
  //! moment.js locale configuration
@@ -9186,7 +9164,7 @@ webpackJsonp([2],[
9186
 
9187
 
9188
  /***/ },
9189
- /* 321 */
9190
  /***/ function(module, exports, __webpack_require__) {
9191
 
9192
  //! moment.js locale configuration
@@ -9264,7 +9242,7 @@ webpackJsonp([2],[
9264
 
9265
 
9266
  /***/ },
9267
- /* 322 */
9268
  /***/ function(module, exports, __webpack_require__) {
9269
 
9270
  //! moment.js locale configuration
@@ -9350,7 +9328,7 @@ webpackJsonp([2],[
9350
 
9351
 
9352
  /***/ },
9353
- /* 323 */
9354
  /***/ function(module, exports, __webpack_require__) {
9355
 
9356
  //! moment.js locale configuration
@@ -9435,7 +9413,7 @@ webpackJsonp([2],[
9435
 
9436
 
9437
  /***/ },
9438
- /* 324 */
9439
  /***/ function(module, exports, __webpack_require__) {
9440
 
9441
  //! moment.js locale configuration
@@ -9520,7 +9498,7 @@ webpackJsonp([2],[
9520
 
9521
 
9522
  /***/ },
9523
- /* 325 */
9524
  /***/ function(module, exports, __webpack_require__) {
9525
 
9526
  //! moment.js locale configuration
@@ -9591,7 +9569,7 @@ webpackJsonp([2],[
9591
 
9592
 
9593
  /***/ },
9594
- /* 326 */
9595
  /***/ function(module, exports, __webpack_require__) {
9596
 
9597
  //! moment.js locale configuration
@@ -9703,7 +9681,7 @@ webpackJsonp([2],[
9703
 
9704
 
9705
  /***/ },
9706
- /* 327 */
9707
  /***/ function(module, exports, __webpack_require__) {
9708
 
9709
  //! moment.js locale configuration
@@ -9815,7 +9793,7 @@ webpackJsonp([2],[
9815
 
9816
 
9817
  /***/ },
9818
- /* 328 */
9819
  /***/ function(module, exports, __webpack_require__) {
9820
 
9821
  //! moment.js locale configuration
@@ -9880,7 +9858,7 @@ webpackJsonp([2],[
9880
 
9881
 
9882
  /***/ },
9883
- /* 329 */
9884
  /***/ function(module, exports, __webpack_require__) {
9885
 
9886
  //! moment.js locale configuration
@@ -9949,7 +9927,7 @@ webpackJsonp([2],[
9949
 
9950
 
9951
  /***/ },
9952
- /* 330 */
9953
  /***/ function(module, exports, __webpack_require__) {
9954
 
9955
  //! moment.js locale configuration
@@ -10014,7 +9992,7 @@ webpackJsonp([2],[
10014
 
10015
 
10016
  /***/ },
10017
- /* 331 */
10018
  /***/ function(module, exports, __webpack_require__) {
10019
 
10020
  //! moment.js locale configuration
@@ -10083,7 +10061,7 @@ webpackJsonp([2],[
10083
 
10084
 
10085
  /***/ },
10086
- /* 332 */
10087
  /***/ function(module, exports, __webpack_require__) {
10088
 
10089
  //! moment.js locale configuration
@@ -10161,7 +10139,7 @@ webpackJsonp([2],[
10161
 
10162
 
10163
  /***/ },
10164
- /* 333 */
10165
  /***/ function(module, exports, __webpack_require__) {
10166
 
10167
  //! moment.js locale configuration
@@ -10242,7 +10220,7 @@ webpackJsonp([2],[
10242
 
10243
 
10244
  /***/ },
10245
- /* 334 */
10246
  /***/ function(module, exports, __webpack_require__) {
10247
 
10248
  //! moment.js locale configuration
@@ -10324,7 +10302,7 @@ webpackJsonp([2],[
10324
 
10325
 
10326
  /***/ },
10327
- /* 335 */
10328
  /***/ function(module, exports, __webpack_require__) {
10329
 
10330
  //! moment.js locale configuration
@@ -10428,7 +10406,7 @@ webpackJsonp([2],[
10428
 
10429
 
10430
  /***/ },
10431
- /* 336 */
10432
  /***/ function(module, exports, __webpack_require__) {
10433
 
10434
  //! moment.js locale configuration
@@ -10557,7 +10535,7 @@ webpackJsonp([2],[
10557
 
10558
 
10559
  /***/ },
10560
- /* 337 */
10561
  /***/ function(module, exports, __webpack_require__) {
10562
 
10563
  //! moment.js locale configuration
@@ -10707,7 +10685,7 @@ webpackJsonp([2],[
10707
 
10708
 
10709
  /***/ },
10710
- /* 338 */
10711
  /***/ function(module, exports, __webpack_require__) {
10712
 
10713
  //! moment.js locale configuration
@@ -10821,7 +10799,7 @@ webpackJsonp([2],[
10821
 
10822
 
10823
  /***/ },
10824
- /* 339 */
10825
  /***/ function(module, exports, __webpack_require__) {
10826
 
10827
  //! moment.js locale configuration
@@ -10921,7 +10899,7 @@ webpackJsonp([2],[
10921
 
10922
 
10923
  /***/ },
10924
- /* 340 */
10925
  /***/ function(module, exports, __webpack_require__) {
10926
 
10927
  //! moment.js locale configuration
@@ -11009,7 +10987,7 @@ webpackJsonp([2],[
11009
 
11010
 
11011
  /***/ },
11012
- /* 341 */
11013
  /***/ function(module, exports, __webpack_require__) {
11014
 
11015
  //! moment.js locale configuration
@@ -11141,7 +11119,7 @@ webpackJsonp([2],[
11141
 
11142
 
11143
  /***/ },
11144
- /* 342 */
11145
  /***/ function(module, exports, __webpack_require__) {
11146
 
11147
  //! moment.js locale configuration
@@ -11216,7 +11194,7 @@ webpackJsonp([2],[
11216
 
11217
 
11218
  /***/ },
11219
- /* 343 */
11220
  /***/ function(module, exports, __webpack_require__) {
11221
 
11222
  //! moment.js locale configuration
@@ -11297,7 +11275,7 @@ webpackJsonp([2],[
11297
 
11298
 
11299
  /***/ },
11300
- /* 344 */
11301
  /***/ function(module, exports, __webpack_require__) {
11302
 
11303
  //! moment.js locale configuration
@@ -11385,7 +11363,7 @@ webpackJsonp([2],[
11385
 
11386
 
11387
  /***/ },
11388
- /* 345 */
11389
  /***/ function(module, exports, __webpack_require__) {
11390
 
11391
  //! moment.js locale configuration
@@ -11479,7 +11457,7 @@ webpackJsonp([2],[
11479
 
11480
 
11481
  /***/ },
11482
- /* 346 */
11483
  /***/ function(module, exports, __webpack_require__) {
11484
 
11485
  //! moment.js locale configuration
@@ -11571,7 +11549,7 @@ webpackJsonp([2],[
11571
 
11572
 
11573
  /***/ },
11574
- /* 347 */
11575
  /***/ function(module, exports, __webpack_require__) {
11576
 
11577
  //! moment.js locale configuration
@@ -11634,7 +11612,7 @@ webpackJsonp([2],[
11634
 
11635
 
11636
  /***/ },
11637
- /* 348 */
11638
  /***/ function(module, exports, __webpack_require__) {
11639
 
11640
  //! moment.js locale configuration
@@ -11704,7 +11682,7 @@ webpackJsonp([2],[
11704
 
11705
 
11706
  /***/ },
11707
- /* 349 */
11708
  /***/ function(module, exports, __webpack_require__) {
11709
 
11710
  //! moment.js locale configuration
@@ -11797,7 +11775,7 @@ webpackJsonp([2],[
11797
 
11798
 
11799
  /***/ },
11800
- /* 350 */
11801
  /***/ function(module, exports, __webpack_require__) {
11802
 
11803
  //! moment.js locale configuration
@@ -11939,7 +11917,7 @@ webpackJsonp([2],[
11939
 
11940
 
11941
  /***/ },
11942
- /* 351 */
11943
  /***/ function(module, exports, __webpack_require__) {
11944
 
11945
  //! moment.js locale configuration
@@ -12014,7 +11992,7 @@ webpackJsonp([2],[
12014
 
12015
 
12016
  /***/ },
12017
- /* 352 */
12018
  /***/ function(module, exports, __webpack_require__) {
12019
 
12020
  //! moment.js locale configuration
@@ -12136,7 +12114,7 @@ webpackJsonp([2],[
12136
 
12137
 
12138
  /***/ },
12139
- /* 353 */
12140
  /***/ function(module, exports, __webpack_require__) {
12141
 
12142
  //! moment.js locale configuration
@@ -12238,7 +12216,7 @@ webpackJsonp([2],[
12238
 
12239
 
12240
  /***/ },
12241
- /* 354 */
12242
  /***/ function(module, exports, __webpack_require__) {
12243
 
12244
  //! moment.js locale configuration
@@ -12354,7 +12332,7 @@ webpackJsonp([2],[
12354
 
12355
 
12356
  /***/ },
12357
- /* 355 */
12358
  /***/ function(module, exports, __webpack_require__) {
12359
 
12360
  //! moment.js locale configuration
@@ -12423,7 +12401,7 @@ webpackJsonp([2],[
12423
 
12424
 
12425
  /***/ },
12426
- /* 356 */
12427
  /***/ function(module, exports, __webpack_require__) {
12428
 
12429
  //! moment.js locale configuration
@@ -12518,7 +12496,7 @@ webpackJsonp([2],[
12518
 
12519
 
12520
  /***/ },
12521
- /* 357 */
12522
  /***/ function(module, exports, __webpack_require__) {
12523
 
12524
  //! moment.js locale configuration
@@ -12604,7 +12582,7 @@ webpackJsonp([2],[
12604
 
12605
 
12606
  /***/ },
12607
- /* 358 */
12608
  /***/ function(module, exports, __webpack_require__) {
12609
 
12610
  //! moment.js locale configuration
@@ -12768,7 +12746,7 @@ webpackJsonp([2],[
12768
 
12769
 
12770
  /***/ },
12771
- /* 359 */
12772
  /***/ function(module, exports, __webpack_require__) {
12773
 
12774
  //! moment.js locale configuration
@@ -12855,7 +12833,7 @@ webpackJsonp([2],[
12855
 
12856
 
12857
  /***/ },
12858
- /* 360 */
12859
  /***/ function(module, exports, __webpack_require__) {
12860
 
12861
  //! moment.js locale configuration
@@ -12943,7 +12921,7 @@ webpackJsonp([2],[
12943
 
12944
 
12945
  /***/ },
12946
- /* 361 */
12947
  /***/ function(module, exports, __webpack_require__) {
12948
 
12949
  //! moment.js locale configuration
@@ -13044,7 +13022,7 @@ webpackJsonp([2],[
13044
 
13045
 
13046
  /***/ },
13047
- /* 362 */
13048
  /***/ function(module, exports, __webpack_require__) {
13049
 
13050
  //! moment.js locale configuration
@@ -13112,7 +13090,7 @@ webpackJsonp([2],[
13112
 
13113
 
13114
  /***/ },
13115
- /* 363 */
13116
  /***/ function(module, exports, __webpack_require__) {
13117
 
13118
  //! moment.js locale configuration
@@ -13240,7 +13218,7 @@ webpackJsonp([2],[
13240
 
13241
 
13242
  /***/ },
13243
- /* 364 */
13244
  /***/ function(module, exports, __webpack_require__) {
13245
 
13246
  //! moment.js locale configuration
@@ -13331,7 +13309,7 @@ webpackJsonp([2],[
13331
 
13332
 
13333
  /***/ },
13334
- /* 365 */
13335
  /***/ function(module, exports, __webpack_require__) {
13336
 
13337
  //! moment.js locale configuration
@@ -13422,7 +13400,7 @@ webpackJsonp([2],[
13422
 
13423
 
13424
  /***/ },
13425
- /* 366 */
13426
  /***/ function(module, exports, __webpack_require__) {
13427
 
13428
  //! moment.js locale configuration
@@ -13487,7 +13465,7 @@ webpackJsonp([2],[
13487
 
13488
 
13489
  /***/ },
13490
- /* 367 */
13491
  /***/ function(module, exports, __webpack_require__) {
13492
 
13493
  //! moment.js locale configuration
@@ -13616,7 +13594,7 @@ webpackJsonp([2],[
13616
 
13617
 
13618
  /***/ },
13619
- /* 368 */
13620
  /***/ function(module, exports, __webpack_require__) {
13621
 
13622
  //! moment.js locale configuration
@@ -13726,7 +13704,7 @@ webpackJsonp([2],[
13726
 
13727
 
13728
  /***/ },
13729
- /* 369 */
13730
  /***/ function(module, exports, __webpack_require__) {
13731
 
13732
  //! moment.js locale configuration
@@ -13796,7 +13774,7 @@ webpackJsonp([2],[
13796
 
13797
 
13798
  /***/ },
13799
- /* 370 */
13800
  /***/ function(module, exports, __webpack_require__) {
13801
 
13802
  //! moment.js locale configuration
@@ -13862,7 +13840,7 @@ webpackJsonp([2],[
13862
 
13863
 
13864
  /***/ },
13865
- /* 371 */
13866
  /***/ function(module, exports, __webpack_require__) {
13867
 
13868
  //! moment.js locale configuration
@@ -13942,7 +13920,7 @@ webpackJsonp([2],[
13942
 
13943
 
13944
  /***/ },
13945
- /* 372 */
13946
  /***/ function(module, exports, __webpack_require__) {
13947
 
13948
  //! moment.js locale configuration
@@ -14130,7 +14108,7 @@ webpackJsonp([2],[
14130
 
14131
 
14132
  /***/ },
14133
- /* 373 */
14134
  /***/ function(module, exports, __webpack_require__) {
14135
 
14136
  //! moment.js locale configuration
@@ -14196,7 +14174,7 @@ webpackJsonp([2],[
14196
 
14197
 
14198
  /***/ },
14199
- /* 374 */
14200
  /***/ function(module, exports, __webpack_require__) {
14201
 
14202
  //! moment.js locale configuration
@@ -14272,7 +14250,7 @@ webpackJsonp([2],[
14272
 
14273
 
14274
  /***/ },
14275
- /* 375 */
14276
  /***/ function(module, exports, __webpack_require__) {
14277
 
14278
  //! moment.js locale configuration
@@ -14427,7 +14405,7 @@ webpackJsonp([2],[
14427
 
14428
 
14429
  /***/ },
14430
- /* 376 */
14431
  /***/ function(module, exports, __webpack_require__) {
14432
 
14433
  //! moment.js locale configuration
@@ -14594,7 +14572,7 @@ webpackJsonp([2],[
14594
 
14595
 
14596
  /***/ },
14597
- /* 377 */
14598
  /***/ function(module, exports, __webpack_require__) {
14599
 
14600
  //! moment.js locale configuration
@@ -14669,7 +14647,7 @@ webpackJsonp([2],[
14669
 
14670
 
14671
  /***/ },
14672
- /* 378 */
14673
  /***/ function(module, exports, __webpack_require__) {
14674
 
14675
  //! moment.js locale configuration
@@ -14784,7 +14762,7 @@ webpackJsonp([2],[
14784
 
14785
 
14786
  /***/ },
14787
- /* 379 */
14788
  /***/ function(module, exports, __webpack_require__) {
14789
 
14790
  //! moment.js locale configuration
@@ -14899,7 +14877,7 @@ webpackJsonp([2],[
14899
 
14900
 
14901
  /***/ },
14902
- /* 380 */
14903
  /***/ function(module, exports, __webpack_require__) {
14904
 
14905
  //! moment.js locale configuration
@@ -14993,7 +14971,7 @@ webpackJsonp([2],[
14993
 
14994
 
14995
  /***/ },
14996
- /* 381 */
14997
  /***/ function(module, exports, __webpack_require__) {
14998
 
14999
  //! moment.js locale configuration
@@ -15067,7 +15045,7 @@ webpackJsonp([2],[
15067
 
15068
 
15069
  /***/ },
15070
- /* 382 */
15071
  /***/ function(module, exports, __webpack_require__) {
15072
 
15073
  //! moment.js locale configuration
@@ -15131,7 +15109,7 @@ webpackJsonp([2],[
15131
 
15132
 
15133
  /***/ },
15134
- /* 383 */
15135
  /***/ function(module, exports, __webpack_require__) {
15136
 
15137
  //! moment.js locale configuration
@@ -15266,7 +15244,7 @@ webpackJsonp([2],[
15266
 
15267
 
15268
  /***/ },
15269
- /* 384 */
15270
  /***/ function(module, exports, __webpack_require__) {
15271
 
15272
  //! moment.js locale configuration
@@ -15360,7 +15338,7 @@ webpackJsonp([2],[
15360
 
15361
 
15362
  /***/ },
15363
- /* 385 */
15364
  /***/ function(module, exports, __webpack_require__) {
15365
 
15366
  //! moment.js locale configuration
@@ -15433,7 +15411,7 @@ webpackJsonp([2],[
15433
 
15434
 
15435
  /***/ },
15436
- /* 386 */
15437
  /***/ function(module, exports, __webpack_require__) {
15438
 
15439
  //! moment.js locale configuration
@@ -15505,7 +15483,7 @@ webpackJsonp([2],[
15505
 
15506
 
15507
  /***/ },
15508
- /* 387 */
15509
  /***/ function(module, exports, __webpack_require__) {
15510
 
15511
  //! moment.js locale configuration
@@ -15572,7 +15550,7 @@ webpackJsonp([2],[
15572
 
15573
 
15574
  /***/ },
15575
- /* 388 */
15576
  /***/ function(module, exports, __webpack_require__) {
15577
 
15578
  //! moment.js locale configuration
@@ -15697,7 +15675,7 @@ webpackJsonp([2],[
15697
 
15698
 
15699
  /***/ },
15700
- /* 389 */
15701
  /***/ function(module, exports, __webpack_require__) {
15702
 
15703
  //! moment.js locale configuration
@@ -15792,7 +15770,7 @@ webpackJsonp([2],[
15792
 
15793
 
15794
  /***/ },
15795
- /* 390 */
15796
  /***/ function(module, exports, __webpack_require__) {
15797
 
15798
  //! moment.js locale configuration
@@ -15888,7 +15866,7 @@ webpackJsonp([2],[
15888
 
15889
 
15890
  /***/ },
15891
- /* 391 */
15892
  /***/ function(module, exports, __webpack_require__) {
15893
 
15894
  //! moment.js locale configuration
@@ -15951,7 +15929,7 @@ webpackJsonp([2],[
15951
 
15952
 
15953
  /***/ },
15954
- /* 392 */
15955
  /***/ function(module, exports, __webpack_require__) {
15956
 
15957
  //! moment.js locale configuration
@@ -16014,7 +15992,7 @@ webpackJsonp([2],[
16014
 
16015
 
16016
  /***/ },
16017
- /* 393 */
16018
  /***/ function(module, exports, __webpack_require__) {
16019
 
16020
  //! moment.js locale configuration
@@ -16165,7 +16143,7 @@ webpackJsonp([2],[
16165
 
16166
 
16167
  /***/ },
16168
- /* 394 */
16169
  /***/ function(module, exports, __webpack_require__) {
16170
 
16171
  //! moment.js locale configuration
@@ -16228,7 +16206,7 @@ webpackJsonp([2],[
16228
 
16229
 
16230
  /***/ },
16231
- /* 395 */
16232
  /***/ function(module, exports, __webpack_require__) {
16233
 
16234
  //! moment.js locale configuration
@@ -16312,7 +16290,7 @@ webpackJsonp([2],[
16312
 
16313
 
16314
  /***/ },
16315
- /* 396 */
16316
  /***/ function(module, exports, __webpack_require__) {
16317
 
16318
  //! moment.js locale configuration
@@ -16385,11 +16363,11 @@ webpackJsonp([2],[
16385
 
16386
 
16387
  /***/ },
16388
- /* 397 */
16389
  /***/ function(module, exports, __webpack_require__) {
16390
 
16391
  //! moment.js locale configuration
16392
- //! locale : Yoruba Nigeria (yo)
16393
  //! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
16394
 
16395
  ;(function (global, factory) {
@@ -16450,7 +16428,7 @@ webpackJsonp([2],[
16450
 
16451
 
16452
  /***/ },
16453
- /* 398 */
16454
  /***/ function(module, exports, __webpack_require__) {
16455
 
16456
  //! moment.js locale configuration
@@ -16582,7 +16560,7 @@ webpackJsonp([2],[
16582
 
16583
 
16584
  /***/ },
16585
- /* 399 */
16586
  /***/ function(module, exports, __webpack_require__) {
16587
 
16588
  //! moment.js locale configuration
@@ -16692,7 +16670,7 @@ webpackJsonp([2],[
16692
 
16693
 
16694
  /***/ },
16695
- /* 400 */
16696
  /***/ function(module, exports, __webpack_require__) {
16697
 
16698
  //! moment.js locale configuration
@@ -16801,6 +16779,7 @@ webpackJsonp([2],[
16801
 
16802
 
16803
  /***/ },
 
16804
  /* 401 */,
16805
  /* 402 */,
16806
  /* 403 */,
@@ -16844,8 +16823,7 @@ webpackJsonp([2],[
16844
  /* 441 */,
16845
  /* 442 */,
16846
  /* 443 */,
16847
- /* 444 */,
16848
- /* 445 */
16849
  /***/ function(module, exports, __webpack_require__) {
16850
 
16851
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(266), __webpack_require__(270)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery, _) {
@@ -16923,7 +16901,7 @@ webpackJsonp([2],[
16923
 
16924
 
16925
  /***/ },
16926
- /* 446 */
16927
  /***/ function(module, exports, __webpack_require__) {
16928
 
16929
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
@@ -17096,7 +17074,7 @@ webpackJsonp([2],[
17096
 
17097
 
17098
  /***/ },
17099
- /* 447 */
17100
  /***/ function(module, exports, __webpack_require__) {
17101
 
17102
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
@@ -17126,7 +17104,7 @@ webpackJsonp([2],[
17126
 
17127
 
17128
  /***/ },
17129
- /* 448 */
17130
  /***/ function(module, exports, __webpack_require__) {
17131
 
17132
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(266)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
@@ -17735,7 +17713,7 @@ webpackJsonp([2],[
17735
 
17736
 
17737
  /***/ },
17738
- /* 449 */
17739
  /***/ function(module, exports, __webpack_require__) {
17740
 
17741
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(266)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
@@ -17745,14 +17723,14 @@ webpackJsonp([2],[
17745
  MailPoet Notice:
17746
 
17747
  description: Handles notices
17748
- version: 0.2
17749
  author: Jonathan Labreuille
17750
  company: Wysija
17751
  dependencies: jQuery
17752
 
17753
  Usage:
17754
 
17755
- // success message (static: false)
17756
  MailPoet.Notice.success('Yatta!');
17757
 
17758
  // error message (static: false)
@@ -17761,206 +17739,213 @@ webpackJsonp([2],[
17761
  // system message (static: true)
17762
  MailPoet.Notice.system('You need to updated ASAP!');
17763
 
17764
- Examples:
17765
 
17766
- MailPoet.Notice.success('- success #1 -');
17767
- setTimeout(function() {
17768
- MailPoet.Notice.success('- success #2 -');
17769
- setTimeout(function() {
17770
- MailPoet.Notice.error('- error -');
17771
- setTimeout(function() {
17772
- MailPoet.Notice.system('- system -');
 
 
 
 
 
 
 
 
 
 
 
 
17773
 
17774
- setTimeout(function() {
17775
- MailPoet.Notice.hide();
17776
- }, 2500);
17777
- }, 300);
17778
- }, 400);
17779
- }, 500);
17780
 
17781
- ==================================================================================================*/
 
 
 
 
 
 
17782
 
17783
- MailPoet.Notice = {
17784
- version: 0.2,
17785
- // default options
17786
- defaults: {
17787
- type: 'success',
17788
- message: '',
17789
- static: false,
17790
- hideClose: false,
17791
- id: null,
17792
- positionAfter: false,
17793
- scroll: false,
17794
- timeout: 5000,
17795
- onOpen: null,
17796
- onClose: null
17797
- },
17798
- options: {},
17799
- init: function(options) {
17800
- // set options
17801
- this.options = jQuery.extend({}, this.defaults, options);
17802
-
17803
- // clone element
17804
- this.element = jQuery('#mailpoet_notice_'+this.options.type).clone();
17805
-
17806
- // add data-id to the element
17807
- if (this.options.id) this.element.attr('data-id', 'notice_' + this.options.id);
17808
-
17809
- // remove id from clone
17810
- this.element.removeAttr('id');
17811
-
17812
- // insert notice after its parent
17813
- var positionAfter;
17814
- if (typeof this.options.positionAfter === 'object') {
17815
- positionAfter = this.options.positionAfter;
17816
- } else if (typeof this.options.positionAfter === 'string') {
17817
- positionAfter = jQuery(this.options.positionAfter);
17818
- } else {
17819
- positionAfter = jQuery('#mailpoet_notice_'+this.options.type);
17820
- }
17821
- positionAfter.after(this.element);
17822
 
17823
- // setup onClose callback
17824
- var onClose = null;
17825
- if(this.options.onClose !== null) {
17826
- onClose = this.options.onClose;
17827
- }
 
 
 
 
 
17828
 
17829
- // listen to remove event
17830
- jQuery(this.element).on('close', function() {
17831
- jQuery(this).fadeOut(200, function() {
17832
- // on close callback
17833
- if(onClose !== null) {
17834
- onClose();
17835
- }
17836
- // remove notice
17837
- jQuery(this).remove();
17838
- });
17839
- }.bind(this.element));
17840
-
17841
- // listen to message event
17842
- jQuery(this.element).on('message', function(e, message) {
17843
- MailPoet.Notice.setMessage(message);
17844
- }.bind(this.element));
17845
 
17846
- return this;
17847
- },
17848
- isHTML: function(str) {
17849
- var a = document.createElement('div');
17850
- a.innerHTML = str;
17851
- for(var c = a.childNodes, i = c.length; i--;) {
17852
- if(c[i].nodeType == 1) return true;
17853
  }
17854
- return false;
17855
- },
17856
- setMessage: function(message) {
17857
- // if it's not an html message, let's sugar coat the message with a fancy <p>
17858
- if(this.isHTML(message) === false) {
17859
- message = '<p>'+message+'</p>';
17860
- }
17861
- // set message
17862
- return this.element.html(message);
17863
- },
17864
- show: function(options) {
17865
- // initialize
17866
- this.init(options);
17867
 
17868
- // show notice
17869
- this.showNotice();
 
 
17870
 
17871
- // return this;
17872
- },
17873
- showNotice: function() {
17874
- // set message
17875
- this.setMessage(this.options.message);
 
 
 
 
 
 
 
 
 
 
 
 
 
17876
 
17877
- // position notice
17878
- this.element.insertAfter(jQuery('h2.title'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17879
 
17880
- // set class name
17881
- switch(this.options.type) {
17882
- case 'success':
17883
- this.element.addClass('updated');
17884
- break;
17885
- case 'system':
17886
- this.element.addClass('update-nag');
17887
- break;
17888
- case 'error':
17889
- this.element.addClass('error');
17890
- break;
17891
- }
 
 
17892
 
17893
- // make the notice appear
17894
- this.element.fadeIn(200);
17895
 
17896
- // if scroll option is enabled, scroll to the notice
17897
- if(this.options.scroll === true) {
17898
- this.element.get(0).scrollIntoView(false);
17899
- }
 
 
 
 
 
 
 
 
17900
 
17901
- // if the notice is not static, it has to disappear after a timeout
17902
- if(this.options.static === false) {
17903
- this.element.delay(this.options.timeout).trigger('close');
17904
- } else if (this.options.hideClose === false) {
17905
- this.element.append('<a href="javascript:;" class="mailpoet_notice_close"><span class="dashicons dashicons-dismiss"></span></a>');
17906
- this.element.find('.mailpoet_notice_close').on('click', function() {
17907
- jQuery(this).trigger('close');
17908
- });
17909
- }
17910
 
17911
- // call onOpen callback
17912
- if(this.options.onOpen !== null) {
17913
- this.options.onOpen(this.element);
17914
- }
17915
- },
17916
- hide: function(all) {
17917
- if(all !== undefined && all === true) {
17918
- jQuery('.mailpoet_notice:not([id])').trigger('close');
17919
- } else if (all !== undefined && jQuery.isArray(all)) {
17920
- for (var id in all) {
17921
- jQuery('[data-id="notice_' + all[id] + '"]')
17922
- .trigger('close');
17923
- }
17924
- } if (all !== undefined) {
17925
- jQuery('[data-id="notice_' + all + '"]')
17926
- .trigger('close');
17927
- } else {
17928
- jQuery('.mailpoet_notice.updated:not([id]), .mailpoet_notice.error:not([id])')
17929
- .trigger('close');
17930
- }
17931
- },
17932
- error: function(message, options) {
17933
- this.show(jQuery.extend({}, {
17934
- type: 'error',
17935
- message: '<p>'+this.formatMessage(message)+'</p>'
17936
- }, options));
17937
- },
17938
- success: function(message, options) {
17939
- this.show(jQuery.extend({}, {
17940
- type: 'success',
17941
- message: '<p>'+this.formatMessage(message)+'</p>'
17942
- }, options));
17943
- },
17944
- system: function(message, options) {
17945
- this.show(jQuery.extend({}, {
17946
- type: 'system',
17947
- static: true,
17948
- message: '<p>'+this.formatMessage(message)+'</p>'
17949
- }, options));
17950
- },
17951
- formatMessage: function(message) {
17952
- if(Array.isArray(message)) {
17953
- return message.join('<br />');
17954
- } else {
17955
- return message;
17956
  }
 
 
 
 
 
 
17957
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17958
  };
17959
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
17960
 
17961
 
17962
  /***/ },
17963
- /* 450 */
17964
  /***/ function(module, exports, __webpack_require__) {
17965
 
17966
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
@@ -18069,7 +18054,7 @@ webpackJsonp([2],[
18069
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
18070
 
18071
  /***/ },
18072
- /* 451 */
18073
  /***/ function(module, exports, __webpack_require__) {
18074
 
18075
  /* WEBPACK VAR INJECTION */(function(global) {/*!
3
  /***/ function(module, exports, __webpack_require__) {
4
 
5
  __webpack_require__(267);
6
+ __webpack_require__(444);
7
  __webpack_require__(445);
8
  __webpack_require__(446);
9
  __webpack_require__(447);
10
  __webpack_require__(448);
11
  __webpack_require__(449);
12
+ module.exports = __webpack_require__(450);
 
13
 
14
 
15
  /***/ },
1883
  /***/ function(module, exports, __webpack_require__) {
1884
 
1885
  /* WEBPACK VAR INJECTION */(function(module) {//! moment.js
1886
+ //! version : 2.17.1
1887
  //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
1888
  //! license : MIT
1889
  //! momentjs.com
6148
  // Side effect imports
6149
 
6150
 
6151
+ hooks.version = '2.17.1';
6152
 
6153
  setHookCallback(createLocal);
6154
 
6226
  "./be": 300,
6227
  "./be.js": 300,
6228
  "./bg": 301,
 
 
6229
  "./bg.js": 301,
6230
+ "./bn": 302,
6231
+ "./bn.js": 302,
6232
+ "./bo": 303,
6233
+ "./bo.js": 303,
6234
+ "./br": 304,
6235
+ "./br.js": 304,
6236
+ "./bs": 305,
6237
+ "./bs.js": 305,
6238
+ "./ca": 306,
6239
+ "./ca.js": 306,
6240
+ "./cs": 307,
6241
+ "./cs.js": 307,
6242
+ "./cv": 308,
6243
+ "./cv.js": 308,
6244
+ "./cy": 309,
6245
+ "./cy.js": 309,
6246
+ "./da": 310,
6247
+ "./da.js": 310,
6248
+ "./de": 311,
6249
+ "./de-at": 312,
6250
+ "./de-at.js": 312,
6251
+ "./de.js": 311,
6252
+ "./dv": 313,
6253
+ "./dv.js": 313,
6254
+ "./el": 314,
6255
+ "./el.js": 314,
6256
+ "./en-au": 315,
6257
+ "./en-au.js": 315,
6258
+ "./en-ca": 316,
6259
+ "./en-ca.js": 316,
6260
+ "./en-gb": 317,
6261
+ "./en-gb.js": 317,
6262
+ "./en-ie": 318,
6263
+ "./en-ie.js": 318,
6264
+ "./en-nz": 319,
6265
+ "./en-nz.js": 319,
6266
+ "./eo": 320,
6267
+ "./eo.js": 320,
6268
+ "./es": 321,
6269
+ "./es-do": 322,
6270
+ "./es-do.js": 322,
6271
+ "./es.js": 321,
6272
+ "./et": 323,
6273
+ "./et.js": 323,
6274
+ "./eu": 324,
6275
+ "./eu.js": 324,
6276
+ "./fa": 325,
6277
+ "./fa.js": 325,
6278
+ "./fi": 326,
6279
+ "./fi.js": 326,
6280
+ "./fo": 327,
6281
+ "./fo.js": 327,
6282
+ "./fr": 328,
6283
+ "./fr-ca": 329,
6284
+ "./fr-ca.js": 329,
6285
+ "./fr-ch": 330,
6286
+ "./fr-ch.js": 330,
6287
+ "./fr.js": 328,
6288
+ "./fy": 331,
6289
+ "./fy.js": 331,
6290
+ "./gd": 332,
6291
+ "./gd.js": 332,
6292
+ "./gl": 333,
6293
+ "./gl.js": 333,
6294
+ "./he": 334,
6295
+ "./he.js": 334,
6296
+ "./hi": 335,
6297
+ "./hi.js": 335,
6298
+ "./hr": 336,
6299
+ "./hr.js": 336,
6300
+ "./hu": 337,
6301
+ "./hu.js": 337,
6302
+ "./hy-am": 338,
6303
+ "./hy-am.js": 338,
6304
+ "./id": 339,
6305
+ "./id.js": 339,
6306
+ "./is": 340,
6307
+ "./is.js": 340,
6308
+ "./it": 341,
6309
+ "./it.js": 341,
6310
+ "./ja": 342,
6311
+ "./ja.js": 342,
6312
+ "./jv": 343,
6313
+ "./jv.js": 343,
6314
+ "./ka": 344,
6315
+ "./ka.js": 344,
6316
+ "./kk": 345,
6317
+ "./kk.js": 345,
6318
+ "./km": 346,
6319
+ "./km.js": 346,
6320
+ "./ko": 347,
6321
+ "./ko.js": 347,
6322
+ "./ky": 348,
6323
+ "./ky.js": 348,
6324
+ "./lb": 349,
6325
+ "./lb.js": 349,
6326
+ "./lo": 350,
6327
+ "./lo.js": 350,
6328
+ "./lt": 351,
6329
+ "./lt.js": 351,
6330
+ "./lv": 352,
6331
+ "./lv.js": 352,
6332
+ "./me": 353,
6333
+ "./me.js": 353,
6334
+ "./mi": 354,
6335
+ "./mi.js": 354,
6336
+ "./mk": 355,
6337
+ "./mk.js": 355,
6338
+ "./ml": 356,
6339
+ "./ml.js": 356,
6340
+ "./mr": 357,
6341
+ "./mr.js": 357,
6342
+ "./ms": 358,
6343
+ "./ms-my": 359,
6344
+ "./ms-my.js": 359,
6345
+ "./ms.js": 358,
6346
+ "./my": 360,
6347
+ "./my.js": 360,
6348
+ "./nb": 361,
6349
+ "./nb.js": 361,
6350
+ "./ne": 362,
6351
+ "./ne.js": 362,
6352
+ "./nl": 363,
6353
+ "./nl-be": 364,
6354
+ "./nl-be.js": 364,
6355
+ "./nl.js": 363,
6356
+ "./nn": 365,
6357
+ "./nn.js": 365,
6358
+ "./pa-in": 366,
6359
+ "./pa-in.js": 366,
6360
+ "./pl": 367,
6361
+ "./pl.js": 367,
6362
+ "./pt": 368,
6363
+ "./pt-br": 369,
6364
+ "./pt-br.js": 369,
6365
+ "./pt.js": 368,
6366
+ "./ro": 370,
6367
+ "./ro.js": 370,
6368
+ "./ru": 371,
6369
+ "./ru.js": 371,
6370
+ "./se": 372,
6371
+ "./se.js": 372,
6372
+ "./si": 373,
6373
+ "./si.js": 373,
6374
+ "./sk": 374,
6375
+ "./sk.js": 374,
6376
+ "./sl": 375,
6377
+ "./sl.js": 375,
6378
+ "./sq": 376,
6379
+ "./sq.js": 376,
6380
+ "./sr": 377,
6381
+ "./sr-cyrl": 378,
6382
+ "./sr-cyrl.js": 378,
6383
+ "./sr.js": 377,
6384
+ "./ss": 379,
6385
+ "./ss.js": 379,
6386
+ "./sv": 380,
6387
+ "./sv.js": 380,
6388
+ "./sw": 381,
6389
+ "./sw.js": 381,
6390
+ "./ta": 382,
6391
+ "./ta.js": 382,
6392
+ "./te": 383,
6393
+ "./te.js": 383,
6394
+ "./tet": 384,
6395
+ "./tet.js": 384,
6396
+ "./th": 385,
6397
+ "./th.js": 385,
6398
+ "./tl-ph": 386,
6399
+ "./tl-ph.js": 386,
6400
+ "./tlh": 387,
6401
+ "./tlh.js": 387,
6402
+ "./tr": 388,
6403
+ "./tr.js": 388,
6404
+ "./tzl": 389,
6405
+ "./tzl.js": 389,
6406
+ "./tzm": 390,
6407
+ "./tzm-latn": 391,
6408
+ "./tzm-latn.js": 391,
6409
+ "./tzm.js": 390,
6410
+ "./uk": 392,
6411
+ "./uk.js": 392,
6412
+ "./uz": 393,
6413
+ "./uz.js": 393,
6414
+ "./vi": 394,
6415
+ "./vi.js": 394,
6416
+ "./x-pseudo": 395,
6417
+ "./x-pseudo.js": 395,
6418
+ "./yo": 396,
6419
+ "./yo.js": 396,
6420
+ "./zh-cn": 397,
6421
+ "./zh-cn.js": 397,
6422
+ "./zh-hk": 398,
6423
+ "./zh-hk.js": 398,
6424
+ "./zh-tw": 399,
6425
+ "./zh-tw.js": 399
6426
  };
6427
  function webpackContext(req) {
6428
  return __webpack_require__(webpackContextResolve(req));
7445
  /* 302 */
7446
  /***/ function(module, exports, __webpack_require__) {
7447
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7448
  //! moment.js locale configuration
7449
  //! locale : Bengali [bn]
7450
  //! author : Kaushik Gandhi : https://github.com/kaushikgandhi
7566
 
7567
 
7568
  /***/ },
7569
+ /* 303 */
7570
  /***/ function(module, exports, __webpack_require__) {
7571
 
7572
  //! moment.js locale configuration
7690
 
7691
 
7692
  /***/ },
7693
+ /* 304 */
7694
  /***/ function(module, exports, __webpack_require__) {
7695
 
7696
  //! moment.js locale configuration
7803
 
7804
 
7805
  /***/ },
7806
+ /* 305 */
7807
  /***/ function(module, exports, __webpack_require__) {
7808
 
7809
  //! moment.js locale configuration
7951
 
7952
 
7953
  /***/ },
7954
+ /* 306 */
7955
  /***/ function(module, exports, __webpack_require__) {
7956
 
7957
  //! moment.js locale configuration
8037
 
8038
 
8039
  /***/ },
8040
+ /* 307 */
8041
  /***/ function(module, exports, __webpack_require__) {
8042
 
8043
  //! moment.js locale configuration
8214
 
8215
 
8216
  /***/ },
8217
+ /* 308 */
8218
  /***/ function(module, exports, __webpack_require__) {
8219
 
8220
  //! moment.js locale configuration
8282
 
8283
 
8284
  /***/ },
8285
+ /* 309 */
8286
  /***/ function(module, exports, __webpack_require__) {
8287
 
8288
  //! moment.js locale configuration
8368
 
8369
 
8370
  /***/ },
8371
+ /* 310 */
8372
  /***/ function(module, exports, __webpack_require__) {
8373
 
8374
  //! moment.js locale configuration
8433
 
8434
 
8435
  /***/ },
8436
+ /* 311 */
8437
  /***/ function(module, exports, __webpack_require__) {
8438
 
8439
  //! moment.js locale configuration
8516
 
8517
 
8518
  /***/ },
8519
+ /* 312 */
8520
  /***/ function(module, exports, __webpack_require__) {
8521
 
8522
  //! moment.js locale configuration
8600
 
8601
 
8602
  /***/ },
8603
+ /* 313 */
8604
  /***/ function(module, exports, __webpack_require__) {
8605
 
8606
  //! moment.js locale configuration
8705
 
8706
 
8707
  /***/ },
8708
+ /* 314 */
8709
  /***/ function(module, exports, __webpack_require__) {
8710
 
8711
  //! moment.js locale configuration
8808
 
8809
 
8810
  /***/ },
8811
+ /* 315 */
8812
  /***/ function(module, exports, __webpack_require__) {
8813
 
8814
  //! moment.js locale configuration
8880
 
8881
 
8882
  /***/ },
8883
+ /* 316 */
8884
  /***/ function(module, exports, __webpack_require__) {
8885
 
8886
  //! moment.js locale configuration
8948
 
8949
 
8950
  /***/ },
8951
+ /* 317 */
8952
  /***/ function(module, exports, __webpack_require__) {
8953
 
8954
  //! moment.js locale configuration
9020
 
9021
 
9022
  /***/ },
9023
+ /* 318 */
9024
  /***/ function(module, exports, __webpack_require__) {
9025
 
9026
  //! moment.js locale configuration
9092
 
9093
 
9094
  /***/ },
9095
+ /* 319 */
9096
  /***/ function(module, exports, __webpack_require__) {
9097
 
9098
  //! moment.js locale configuration
9164
 
9165
 
9166
  /***/ },
9167
+ /* 320 */
9168
  /***/ function(module, exports, __webpack_require__) {
9169
 
9170
  //! moment.js locale configuration
9242
 
9243
 
9244
  /***/ },
9245
+ /* 321 */
9246
  /***/ function(module, exports, __webpack_require__) {
9247
 
9248
  //! moment.js locale configuration
9328
 
9329
 
9330
  /***/ },
9331
+ /* 322 */
9332
  /***/ function(module, exports, __webpack_require__) {
9333
 
9334
  //! moment.js locale configuration
9413
 
9414
 
9415
  /***/ },
9416
+ /* 323 */
9417
  /***/ function(module, exports, __webpack_require__) {
9418
 
9419
  //! moment.js locale configuration
9498
 
9499
 
9500
  /***/ },
9501
+ /* 324 */
9502
  /***/ function(module, exports, __webpack_require__) {
9503
 
9504
  //! moment.js locale configuration
9569
 
9570
 
9571
  /***/ },
9572
+ /* 325 */
9573
  /***/ function(module, exports, __webpack_require__) {
9574
 
9575
  //! moment.js locale configuration
9681
 
9682
 
9683
  /***/ },
9684
+ /* 326 */
9685
  /***/ function(module, exports, __webpack_require__) {
9686
 
9687
  //! moment.js locale configuration
9793
 
9794
 
9795
  /***/ },
9796
+ /* 327 */
9797
  /***/ function(module, exports, __webpack_require__) {
9798
 
9799
  //! moment.js locale configuration
9858
 
9859
 
9860
  /***/ },
9861
+ /* 328 */
9862
  /***/ function(module, exports, __webpack_require__) {
9863
 
9864
  //! moment.js locale configuration
9927
 
9928
 
9929
  /***/ },
9930
+ /* 329 */
9931
  /***/ function(module, exports, __webpack_require__) {
9932
 
9933
  //! moment.js locale configuration
9992
 
9993
 
9994
  /***/ },
9995
+ /* 330 */
9996
  /***/ function(module, exports, __webpack_require__) {
9997
 
9998
  //! moment.js locale configuration
10061
 
10062
 
10063
  /***/ },
10064
+ /* 331 */
10065
  /***/ function(module, exports, __webpack_require__) {
10066
 
10067
  //! moment.js locale configuration
10139
 
10140
 
10141
  /***/ },
10142
+ /* 332 */
10143
  /***/ function(module, exports, __webpack_require__) {
10144
 
10145
  //! moment.js locale configuration
10220
 
10221
 
10222
  /***/ },
10223
+ /* 333 */
10224
  /***/ function(module, exports, __webpack_require__) {
10225
 
10226
  //! moment.js locale configuration
10302
 
10303
 
10304
  /***/ },
10305
+ /* 334 */
10306
  /***/ function(module, exports, __webpack_require__) {
10307
 
10308
  //! moment.js locale configuration
10406
 
10407
 
10408
  /***/ },
10409
+ /* 335 */
10410
  /***/ function(module, exports, __webpack_require__) {
10411
 
10412
  //! moment.js locale configuration
10535
 
10536
 
10537
  /***/ },
10538
+ /* 336 */
10539
  /***/ function(module, exports, __webpack_require__) {
10540
 
10541
  //! moment.js locale configuration
10685
 
10686
 
10687
  /***/ },
10688
+ /* 337 */
10689
  /***/ function(module, exports, __webpack_require__) {
10690
 
10691
  //! moment.js locale configuration
10799
 
10800
 
10801
  /***/ },
10802
+ /* 338 */
10803
  /***/ function(module, exports, __webpack_require__) {
10804
 
10805
  //! moment.js locale configuration
10899
 
10900
 
10901
  /***/ },
10902
+ /* 339 */
10903
  /***/ function(module, exports, __webpack_require__) {
10904
 
10905
  //! moment.js locale configuration
10987
 
10988
 
10989
  /***/ },
10990
+ /* 340 */
10991
  /***/ function(module, exports, __webpack_require__) {
10992
 
10993
  //! moment.js locale configuration
11119
 
11120
 
11121
  /***/ },
11122
+ /* 341 */
11123
  /***/ function(module, exports, __webpack_require__) {
11124
 
11125
  //! moment.js locale configuration
11194
 
11195
 
11196
  /***/ },
11197
+ /* 342 */
11198
  /***/ function(module, exports, __webpack_require__) {
11199
 
11200
  //! moment.js locale configuration
11275
 
11276
 
11277
  /***/ },
11278
+ /* 343 */
11279
  /***/ function(module, exports, __webpack_require__) {
11280
 
11281
  //! moment.js locale configuration
11363
 
11364
 
11365
  /***/ },
11366
+ /* 344 */
11367
  /***/ function(module, exports, __webpack_require__) {
11368
 
11369
  //! moment.js locale configuration
11457
 
11458
 
11459
  /***/ },
11460
+ /* 345 */
11461
  /***/ function(module, exports, __webpack_require__) {
11462
 
11463
  //! moment.js locale configuration
11549
 
11550
 
11551
  /***/ },
11552
+ /* 346 */
11553
  /***/ function(module, exports, __webpack_require__) {
11554
 
11555
  //! moment.js locale configuration
11612
 
11613
 
11614
  /***/ },
11615
+ /* 347 */
11616
  /***/ function(module, exports, __webpack_require__) {
11617
 
11618
  //! moment.js locale configuration
11682
 
11683
 
11684
  /***/ },
11685
+ /* 348 */
11686
  /***/ function(module, exports, __webpack_require__) {
11687
 
11688
  //! moment.js locale configuration
11775
 
11776
 
11777
  /***/ },
11778
+ /* 349 */
11779
  /***/ function(module, exports, __webpack_require__) {
11780
 
11781
  //! moment.js locale configuration
11917
 
11918
 
11919
  /***/ },
11920
+ /* 350 */
11921
  /***/ function(module, exports, __webpack_require__) {
11922
 
11923
  //! moment.js locale configuration
11992
 
11993
 
11994
  /***/ },
11995
+ /* 351 */
11996
  /***/ function(module, exports, __webpack_require__) {
11997
 
11998
  //! moment.js locale configuration
12114
 
12115
 
12116
  /***/ },
12117
+ /* 352 */
12118
  /***/ function(module, exports, __webpack_require__) {
12119
 
12120
  //! moment.js locale configuration
12216
 
12217
 
12218
  /***/ },
12219
+ /* 353 */
12220
  /***/ function(module, exports, __webpack_require__) {
12221
 
12222
  //! moment.js locale configuration
12332
 
12333
 
12334
  /***/ },
12335
+ /* 354 */
12336
  /***/ function(module, exports, __webpack_require__) {
12337
 
12338
  //! moment.js locale configuration
12401
 
12402
 
12403
  /***/ },
12404
+ /* 355 */
12405
  /***/ function(module, exports, __webpack_require__) {
12406
 
12407
  //! moment.js locale configuration
12496
 
12497
 
12498
  /***/ },
12499
+ /* 356 */
12500
  /***/ function(module, exports, __webpack_require__) {
12501
 
12502
  //! moment.js locale configuration
12582
 
12583
 
12584
  /***/ },
12585
+ /* 357 */
12586
  /***/ function(module, exports, __webpack_require__) {
12587
 
12588
  //! moment.js locale configuration
12746
 
12747
 
12748
  /***/ },
12749
+ /* 358 */
12750
  /***/ function(module, exports, __webpack_require__) {
12751
 
12752
  //! moment.js locale configuration
12833
 
12834
 
12835
  /***/ },
12836
+ /* 359 */
12837
  /***/ function(module, exports, __webpack_require__) {
12838
 
12839
  //! moment.js locale configuration
12921
 
12922
 
12923
  /***/ },
12924
+ /* 360 */
12925
  /***/ function(module, exports, __webpack_require__) {
12926
 
12927
  //! moment.js locale configuration
13022
 
13023
 
13024
  /***/ },
13025
+ /* 361 */
13026
  /***/ function(module, exports, __webpack_require__) {
13027
 
13028
  //! moment.js locale configuration
13090
 
13091
 
13092
  /***/ },
13093
+ /* 362 */
13094
  /***/ function(module, exports, __webpack_require__) {
13095
 
13096
  //! moment.js locale configuration
13218
 
13219
 
13220
  /***/ },
13221
+ /* 363 */
13222
  /***/ function(module, exports, __webpack_require__) {
13223
 
13224
  //! moment.js locale configuration
13309
 
13310
 
13311
  /***/ },
13312
+ /* 364 */
13313
  /***/ function(module, exports, __webpack_require__) {
13314
 
13315
  //! moment.js locale configuration
13400
 
13401
 
13402
  /***/ },
13403
+ /* 365 */
13404
  /***/ function(module, exports, __webpack_require__) {
13405
 
13406
  //! moment.js locale configuration
13465
 
13466
 
13467
  /***/ },
13468
+ /* 366 */
13469
  /***/ function(module, exports, __webpack_require__) {
13470
 
13471
  //! moment.js locale configuration
13594
 
13595
 
13596
  /***/ },
13597
+ /* 367 */
13598
  /***/ function(module, exports, __webpack_require__) {
13599
 
13600
  //! moment.js locale configuration
13704
 
13705
 
13706
  /***/ },
13707
+ /* 368 */
13708
  /***/ function(module, exports, __webpack_require__) {
13709
 
13710
  //! moment.js locale configuration
13774
 
13775
 
13776
  /***/ },
13777
+ /* 369 */
13778
  /***/ function(module, exports, __webpack_require__) {
13779
 
13780
  //! moment.js locale configuration
13840
 
13841
 
13842
  /***/ },
13843
+ /* 370 */
13844
  /***/ function(module, exports, __webpack_require__) {
13845
 
13846
  //! moment.js locale configuration
13920
 
13921
 
13922
  /***/ },
13923
+ /* 371 */
13924
  /***/ function(module, exports, __webpack_require__) {
13925
 
13926
  //! moment.js locale configuration
14108
 
14109
 
14110
  /***/ },
14111
+ /* 372 */
14112
  /***/ function(module, exports, __webpack_require__) {
14113
 
14114
  //! moment.js locale configuration
14174
 
14175
 
14176
  /***/ },
14177
+ /* 373 */
14178
  /***/ function(module, exports, __webpack_require__) {
14179
 
14180
  //! moment.js locale configuration
14250
 
14251
 
14252
  /***/ },
14253
+ /* 374 */
14254
  /***/ function(module, exports, __webpack_require__) {
14255
 
14256
  //! moment.js locale configuration
14405
 
14406
 
14407
  /***/ },
14408
+ /* 375 */
14409
  /***/ function(module, exports, __webpack_require__) {
14410
 
14411
  //! moment.js locale configuration
14572
 
14573
 
14574
  /***/ },
14575
+ /* 376 */
14576
  /***/ function(module, exports, __webpack_require__) {
14577
 
14578
  //! moment.js locale configuration
14647
 
14648
 
14649
  /***/ },
14650
+ /* 377 */
14651
  /***/ function(module, exports, __webpack_require__) {
14652
 
14653
  //! moment.js locale configuration
14762
 
14763
 
14764
  /***/ },
14765
+ /* 378 */
14766
  /***/ function(module, exports, __webpack_require__) {
14767
 
14768
  //! moment.js locale configuration
14877
 
14878
 
14879
  /***/ },
14880
+ /* 379 */
14881
  /***/ function(module, exports, __webpack_require__) {
14882
 
14883
  //! moment.js locale configuration
14971
 
14972
 
14973
  /***/ },
14974
+ /* 380 */
14975
  /***/ function(module, exports, __webpack_require__) {
14976
 
14977
  //! moment.js locale configuration
15045
 
15046
 
15047
  /***/ },
15048
+ /* 381 */
15049
  /***/ function(module, exports, __webpack_require__) {
15050
 
15051
  //! moment.js locale configuration
15109
 
15110
 
15111
  /***/ },
15112
+ /* 382 */
15113
  /***/ function(module, exports, __webpack_require__) {
15114
 
15115
  //! moment.js locale configuration
15244
 
15245
 
15246
  /***/ },
15247
+ /* 383 */
15248
  /***/ function(module, exports, __webpack_require__) {
15249
 
15250
  //! moment.js locale configuration
15338
 
15339
 
15340
  /***/ },
15341
+ /* 384 */
15342
  /***/ function(module, exports, __webpack_require__) {
15343
 
15344
  //! moment.js locale configuration
15411
 
15412
 
15413
  /***/ },
15414
+ /* 385 */
15415
  /***/ function(module, exports, __webpack_require__) {
15416
 
15417
  //! moment.js locale configuration
15483
 
15484
 
15485
  /***/ },
15486
+ /* 386 */
15487
  /***/ function(module, exports, __webpack_require__) {
15488
 
15489
  //! moment.js locale configuration
15550
 
15551
 
15552
  /***/ },
15553
+ /* 387 */
15554
  /***/ function(module, exports, __webpack_require__) {
15555
 
15556
  //! moment.js locale configuration
15675
 
15676
 
15677
  /***/ },
15678
+ /* 388 */
15679
  /***/ function(module, exports, __webpack_require__) {
15680
 
15681
  //! moment.js locale configuration
15770
 
15771
 
15772
  /***/ },
15773
+ /* 389 */
15774
  /***/ function(module, exports, __webpack_require__) {
15775
 
15776
  //! moment.js locale configuration
15866
 
15867
 
15868
  /***/ },
15869
+ /* 390 */
15870
  /***/ function(module, exports, __webpack_require__) {
15871
 
15872
  //! moment.js locale configuration
15929
 
15930
 
15931
  /***/ },
15932
+ /* 391 */
15933
  /***/ function(module, exports, __webpack_require__) {
15934
 
15935
  //! moment.js locale configuration
15992
 
15993
 
15994
  /***/ },
15995
+ /* 392 */
15996
  /***/ function(module, exports, __webpack_require__) {
15997
 
15998
  //! moment.js locale configuration
16143
 
16144
 
16145
  /***/ },
16146
+ /* 393 */
16147
  /***/ function(module, exports, __webpack_require__) {
16148
 
16149
  //! moment.js locale configuration
16206
 
16207
 
16208
  /***/ },
16209
+ /* 394 */
16210
  /***/ function(module, exports, __webpack_require__) {
16211
 
16212
  //! moment.js locale configuration
16290
 
16291
 
16292
  /***/ },
16293
+ /* 395 */
16294
  /***/ function(module, exports, __webpack_require__) {
16295
 
16296
  //! moment.js locale configuration
16363
 
16364
 
16365
  /***/ },
16366
+ /* 396 */
16367
  /***/ function(module, exports, __webpack_require__) {
16368
 
16369
  //! moment.js locale configuration
16370
+ //! locale : Yoruba Nigeria [yo]
16371
  //! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
16372
 
16373
  ;(function (global, factory) {
16428
 
16429
 
16430
  /***/ },
16431
+ /* 397 */
16432
  /***/ function(module, exports, __webpack_require__) {
16433
 
16434
  //! moment.js locale configuration
16560
 
16561
 
16562
  /***/ },
16563
+ /* 398 */
16564
  /***/ function(module, exports, __webpack_require__) {
16565
 
16566
  //! moment.js locale configuration
16670
 
16671
 
16672
  /***/ },
16673
+ /* 399 */
16674
  /***/ function(module, exports, __webpack_require__) {
16675
 
16676
  //! moment.js locale configuration
16779
 
16780
 
16781
  /***/ },
16782
+ /* 400 */,
16783
  /* 401 */,
16784
  /* 402 */,
16785
  /* 403 */,
16823
  /* 441 */,
16824
  /* 442 */,
16825
  /* 443 */,
16826
+ /* 444 */
 
16827
  /***/ function(module, exports, __webpack_require__) {
16828
 
16829
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(266), __webpack_require__(270)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery, _) {
16901
 
16902
 
16903
  /***/ },
16904
+ /* 445 */
16905
  /***/ function(module, exports, __webpack_require__) {
16906
 
16907
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
17074
 
17075
 
17076
  /***/ },
17077
+ /* 446 */
17078
  /***/ function(module, exports, __webpack_require__) {
17079
 
17080
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
17104
 
17105
 
17106
  /***/ },
17107
+ /* 447 */
17108
  /***/ function(module, exports, __webpack_require__) {
17109
 
17110
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(266)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
17713
 
17714
 
17715
  /***/ },
17716
+ /* 448 */
17717
  /***/ function(module, exports, __webpack_require__) {
17718
 
17719
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(266)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
17723
  MailPoet Notice:
17724
 
17725
  description: Handles notices
17726
+ version: 1.0
17727
  author: Jonathan Labreuille
17728
  company: Wysija
17729
  dependencies: jQuery
17730
 
17731
  Usage:
17732
 
17733
+ // success message (static: false)
17734
  MailPoet.Notice.success('Yatta!');
17735
 
17736
  // error message (static: false)
17739
  // system message (static: true)
17740
  MailPoet.Notice.system('You need to updated ASAP!');
17741
 
17742
+ ==================================================================================================*/
17743
 
17744
+ MailPoet.Notice = {
17745
+ version: 1.0,
17746
+ // default options
17747
+ defaults: {
17748
+ type: 'success',
17749
+ message: '',
17750
+ static: false,
17751
+ hideClose: false,
17752
+ id: null,
17753
+ positionAfter: false,
17754
+ scroll: false,
17755
+ timeout: 5000,
17756
+ onOpen: null,
17757
+ onClose: null
17758
+ },
17759
+ options: {},
17760
+ init: function(options) {
17761
+ // set options
17762
+ this.options = jQuery.extend({}, this.defaults, options);
17763
 
17764
+ return this;
17765
+ },
17766
+ createNotice: function() {
17767
+ // clone element
17768
+ this.element = jQuery('#mailpoet_notice_'+this.options.type).clone();
 
17769
 
17770
+ // add data-id to the element
17771
+ if (this.options.id) {
17772
+ this.element.attr(
17773
+ 'data-id',
17774
+ this.options.id
17775
+ );
17776
+ }
17777
 
17778
+ // remove id from clone
17779
+ this.element.removeAttr('id');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17780
 
17781
+ // insert notice after its parent
17782
+ var positionAfter;
17783
+ if (typeof this.options.positionAfter === 'object') {
17784
+ positionAfter = this.options.positionAfter;
17785
+ } else if (typeof this.options.positionAfter === 'string') {
17786
+ positionAfter = jQuery(this.options.positionAfter);
17787
+ } else {
17788
+ positionAfter = jQuery('#mailpoet_notice_'+this.options.type);
17789
+ }
17790
+ positionAfter.after(this.element);
17791
 
17792
+ // setup onClose callback
17793
+ var onClose = null;
17794
+ if (this.options.onClose !== null) {
17795
+ onClose = this.options.onClose;
17796
+ }
 
 
 
 
 
 
 
 
 
 
 
17797
 
17798
+ // listen to remove event
17799
+ jQuery(this.element).on('close', function() {
17800
+ jQuery(this).fadeOut(200, function() {
17801
+ // on close callback
17802
+ if (onClose !== null) {
17803
+ onClose();
 
17804
  }
17805
+ // remove notice
17806
+ jQuery(this).remove();
17807
+ });
17808
+ }.bind(this.element));
 
 
 
 
 
 
 
 
 
17809
 
17810
+ // listen to message event
17811
+ jQuery(this.element).on('setMessage', function(e, message) {
17812
+ MailPoet.Notice.setMessage(message);
17813
+ }.bind(this.element));
17814
 
17815
+ return this;
17816
+ },
17817
+ updateNotice: function() {
17818
+ // update notice's message
17819
+ jQuery('[data-id="'+this.options.id+'"').first().trigger(
17820
+ 'setMessage', this.options.message
17821
+ );
17822
+ },
17823
+ isHTML: function(str) {
17824
+ var a = document.createElement('div');
17825
+ a.innerHTML = str;
17826
+ for (var c = a.childNodes, i = c.length; i--;) {
17827
+ if (c[i].nodeType == 1) return true;
17828
+ }
17829
+ return false;
17830
+ },
17831
+ setMessage: function(message) {
17832
+ message = this.formatMessage(message);
17833
 
17834
+ // if it's not an html message
17835
+ // let's sugar coat the message with a fancy <p>
17836
+ if (this.isHTML(message) === false) {
17837
+ message = '<p>'+message+'</p>';
17838
+ }
17839
+ // set message
17840
+ return this.element.html(message);
17841
+ },
17842
+ formatMessage: function(message) {
17843
+ if (Array.isArray(message)) {
17844
+ return message.join('<br />');
17845
+ } else {
17846
+ return message;
17847
+ }
17848
+ },
17849
+ show: function(options) {
17850
+ // initialize
17851
+ this.init(options);
17852
 
17853
+ if (
17854
+ this.options.id !== null
17855
+ &&
17856
+ jQuery('[data-id="'+this.options.id+'"').length > 0
17857
+ ) {
17858
+ this.updateNotice();
17859
+ } else {
17860
+ this.createNotice();
17861
+ }
17862
+ this.showNotice();
17863
+ },
17864
+ showNotice: function() {
17865
+ // set message
17866
+ this.setMessage(this.options.message);
17867
 
17868
+ // position notice
17869
+ this.element.insertAfter(jQuery('h2.title'));
17870
 
17871
+ // set class name
17872
+ switch (this.options.type) {
17873
+ case 'success':
17874
+ this.element.addClass('updated');
17875
+ break;
17876
+ case 'system':
17877
+ this.element.addClass('update-nag');
17878
+ break;
17879
+ case 'error':
17880
+ this.element.addClass('error');
17881
+ break;
17882
+ }
17883
 
17884
+ // make the notice appear
17885
+ this.element.fadeIn(200);
 
 
 
 
 
 
 
17886
 
17887
+ // if scroll option is enabled, scroll to the notice
17888
+ if (this.options.scroll === true) {
17889
+ this.element.get(0).scrollIntoView(false);
17890
+ }
17891
+
17892
+ // if the notice is not static, it has to disappear after a timeout
17893
+ if (this.options.static === false) {
17894
+ this.element.delay(this.options.timeout).trigger('close');
17895
+ } else if (this.options.hideClose === false) {
17896
+ this.element.append('<a href="javascript:;" class="mailpoet_notice_close"><span class="dashicons dashicons-dismiss"></span></a>');
17897
+ this.element.find('.mailpoet_notice_close').on('click', function() {
17898
+ jQuery(this).trigger('close');
17899
+ });
17900
+ }
17901
+
17902
+ // call onOpen callback
17903
+ if (this.options.onOpen !== null) {
17904
+ this.options.onOpen(this.element);
17905
+ }
17906
+ },
17907
+ hide: function(all) {
17908
+ if (all !== undefined && all === true) {
17909
+ // all notices
17910
+ jQuery('.mailpoet_notice:not([id])').trigger('close');
17911
+ } else if (all !== undefined && jQuery.isArray(all)) {
17912
+ // array of ids
17913
+ for (var id in all) {
17914
+ jQuery('[data-id="' + all[id] + '"]').trigger('close');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17915
  }
17916
+ } if (all !== undefined) {
17917
+ // single id
17918
+ jQuery('[data-id="' + all + '"]').trigger('close');
17919
+ } else {
17920
+ jQuery('.mailpoet_notice.updated:not([id]), .mailpoet_notice.error:not([id])')
17921
+ .trigger('close');
17922
  }
17923
+ },
17924
+ error: function(message, options) {
17925
+ this.show(jQuery.extend({}, {
17926
+ type: 'error',
17927
+ message: message
17928
+ }, options));
17929
+ },
17930
+ success: function(message, options) {
17931
+ this.show(jQuery.extend({}, {
17932
+ type: 'success',
17933
+ message: message
17934
+ }, options));
17935
+ },
17936
+ system: function(message, options) {
17937
+ this.show(jQuery.extend({}, {
17938
+ type: 'system',
17939
+ static: true,
17940
+ message: message
17941
+ }, options));
17942
+ }
17943
  };
17944
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
17945
 
17946
 
17947
  /***/ },
17948
+ /* 449 */
17949
  /***/ function(module, exports, __webpack_require__) {
17950
 
17951
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
18054
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
18055
 
18056
  /***/ },
18057
+ /* 450 */
18058
  /***/ function(module, exports, __webpack_require__) {
18059
 
18060
  /* WEBPACK VAR INJECTION */(function(global) {/*!
assets/js/newsletter_editor.js CHANGED
@@ -4,26 +4,27 @@ webpackJsonp([3],{
4
  /***/ function(module, exports, __webpack_require__) {
5
 
6
  __webpack_require__(270);
7
- __webpack_require__(432);
 
8
  __webpack_require__(452);
9
  __webpack_require__(453);
10
  __webpack_require__(454);
11
- __webpack_require__(455);
12
  __webpack_require__(279);
 
13
  __webpack_require__(456);
14
  __webpack_require__(457);
15
  __webpack_require__(458);
16
- __webpack_require__(459);
17
  __webpack_require__(462);
18
  __webpack_require__(463);
19
- __webpack_require__(464);
20
  __webpack_require__(466);
21
  __webpack_require__(467);
22
- __webpack_require__(468);
23
  __webpack_require__(470);
24
  __webpack_require__(471);
25
- __webpack_require__(472);
26
- __webpack_require__(469);
27
  __webpack_require__(475);
28
  __webpack_require__(476);
29
  __webpack_require__(477);
@@ -43,8 +44,7 @@ webpackJsonp([3],{
43
  __webpack_require__(491);
44
  __webpack_require__(492);
45
  __webpack_require__(493);
46
- __webpack_require__(494);
47
- module.exports = __webpack_require__(495);
48
 
49
 
50
  /***/ },
@@ -7367,15 +7367,15 @@ webpackJsonp([3],{
7367
 
7368
  /***/ },
7369
 
7370
- /***/ 432:
7371
  /***/ function(module, exports, __webpack_require__) {
7372
 
7373
- /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["Backbone"] = __webpack_require__(433);
7374
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
7375
 
7376
  /***/ },
7377
 
7378
- /***/ 433:
7379
  /***/ function(module, exports, __webpack_require__) {
7380
 
7381
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global) {// Backbone.js 1.3.3
@@ -9303,7 +9303,7 @@ webpackJsonp([3],{
9303
 
9304
  /***/ },
9305
 
9306
- /***/ 445:
9307
  /***/ function(module, exports, __webpack_require__) {
9308
 
9309
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(266), __webpack_require__(270)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery, _) {
@@ -9382,7 +9382,7 @@ webpackJsonp([3],{
9382
 
9383
  /***/ },
9384
 
9385
- /***/ 448:
9386
  /***/ function(module, exports, __webpack_require__) {
9387
 
9388
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(266)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
@@ -9992,7 +9992,7 @@ webpackJsonp([3],{
9992
 
9993
  /***/ },
9994
 
9995
- /***/ 449:
9996
  /***/ function(module, exports, __webpack_require__) {
9997
 
9998
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(266)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
@@ -10002,14 +10002,14 @@ webpackJsonp([3],{
10002
  MailPoet Notice:
10003
 
10004
  description: Handles notices
10005
- version: 0.2
10006
  author: Jonathan Labreuille
10007
  company: Wysija
10008
  dependencies: jQuery
10009
 
10010
  Usage:
10011
 
10012
- // success message (static: false)
10013
  MailPoet.Notice.success('Yatta!');
10014
 
10015
  // error message (static: false)
@@ -10018,207 +10018,214 @@ webpackJsonp([3],{
10018
  // system message (static: true)
10019
  MailPoet.Notice.system('You need to updated ASAP!');
10020
 
10021
- Examples:
10022
 
10023
- MailPoet.Notice.success('- success #1 -');
10024
- setTimeout(function() {
10025
- MailPoet.Notice.success('- success #2 -');
10026
- setTimeout(function() {
10027
- MailPoet.Notice.error('- error -');
10028
- setTimeout(function() {
10029
- MailPoet.Notice.system('- system -');
 
 
 
 
 
 
 
 
 
 
 
 
10030
 
10031
- setTimeout(function() {
10032
- MailPoet.Notice.hide();
10033
- }, 2500);
10034
- }, 300);
10035
- }, 400);
10036
- }, 500);
10037
 
10038
- ==================================================================================================*/
 
 
 
 
 
 
10039
 
10040
- MailPoet.Notice = {
10041
- version: 0.2,
10042
- // default options
10043
- defaults: {
10044
- type: 'success',
10045
- message: '',
10046
- static: false,
10047
- hideClose: false,
10048
- id: null,
10049
- positionAfter: false,
10050
- scroll: false,
10051
- timeout: 5000,
10052
- onOpen: null,
10053
- onClose: null
10054
- },
10055
- options: {},
10056
- init: function(options) {
10057
- // set options
10058
- this.options = jQuery.extend({}, this.defaults, options);
10059
-
10060
- // clone element
10061
- this.element = jQuery('#mailpoet_notice_'+this.options.type).clone();
10062
-
10063
- // add data-id to the element
10064
- if (this.options.id) this.element.attr('data-id', 'notice_' + this.options.id);
10065
-
10066
- // remove id from clone
10067
- this.element.removeAttr('id');
10068
-
10069
- // insert notice after its parent
10070
- var positionAfter;
10071
- if (typeof this.options.positionAfter === 'object') {
10072
- positionAfter = this.options.positionAfter;
10073
- } else if (typeof this.options.positionAfter === 'string') {
10074
- positionAfter = jQuery(this.options.positionAfter);
10075
- } else {
10076
- positionAfter = jQuery('#mailpoet_notice_'+this.options.type);
10077
- }
10078
- positionAfter.after(this.element);
10079
 
10080
- // setup onClose callback
10081
- var onClose = null;
10082
- if(this.options.onClose !== null) {
10083
- onClose = this.options.onClose;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10084
  }
 
 
 
 
10085
 
10086
- // listen to remove event
10087
- jQuery(this.element).on('close', function() {
10088
- jQuery(this).fadeOut(200, function() {
10089
- // on close callback
10090
- if(onClose !== null) {
10091
- onClose();
10092
- }
10093
- // remove notice
10094
- jQuery(this).remove();
10095
- });
10096
- }.bind(this.element));
10097
 
10098
- // listen to message event
10099
- jQuery(this.element).on('message', function(e, message) {
10100
- MailPoet.Notice.setMessage(message);
10101
- }.bind(this.element));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10102
 
10103
- return this;
10104
- },
10105
- isHTML: function(str) {
10106
- var a = document.createElement('div');
10107
- a.innerHTML = str;
10108
- for(var c = a.childNodes, i = c.length; i--;) {
10109
- if(c[i].nodeType == 1) return true;
10110
- }
10111
- return false;
10112
- },
10113
- setMessage: function(message) {
10114
- // if it's not an html message, let's sugar coat the message with a fancy <p>
10115
- if(this.isHTML(message) === false) {
10116
- message = '<p>'+message+'</p>';
10117
- }
10118
- // set message
10119
- return this.element.html(message);
10120
- },
10121
- show: function(options) {
10122
- // initialize
10123
- this.init(options);
10124
 
10125
- // show notice
10126
- this.showNotice();
 
 
 
 
 
 
 
 
 
 
 
 
10127
 
10128
- // return this;
10129
- },
10130
- showNotice: function() {
10131
- // set message
10132
- this.setMessage(this.options.message);
10133
-
10134
- // position notice
10135
- this.element.insertAfter(jQuery('h2.title'));
10136
-
10137
- // set class name
10138
- switch(this.options.type) {
10139
- case 'success':
10140
- this.element.addClass('updated');
10141
- break;
10142
- case 'system':
10143
- this.element.addClass('update-nag');
10144
- break;
10145
- case 'error':
10146
- this.element.addClass('error');
10147
- break;
10148
- }
10149
 
10150
- // make the notice appear
10151
- this.element.fadeIn(200);
 
 
 
 
 
 
 
 
 
 
10152
 
10153
- // if scroll option is enabled, scroll to the notice
10154
- if(this.options.scroll === true) {
10155
- this.element.get(0).scrollIntoView(false);
10156
- }
10157
 
10158
- // if the notice is not static, it has to disappear after a timeout
10159
- if(this.options.static === false) {
10160
- this.element.delay(this.options.timeout).trigger('close');
10161
- } else if (this.options.hideClose === false) {
10162
- this.element.append('<a href="javascript:;" class="mailpoet_notice_close"><span class="dashicons dashicons-dismiss"></span></a>');
10163
- this.element.find('.mailpoet_notice_close').on('click', function() {
10164
- jQuery(this).trigger('close');
10165
- });
10166
- }
10167
 
10168
- // call onOpen callback
10169
- if(this.options.onOpen !== null) {
10170
- this.options.onOpen(this.element);
10171
- }
10172
- },
10173
- hide: function(all) {
10174
- if(all !== undefined && all === true) {
10175
- jQuery('.mailpoet_notice:not([id])').trigger('close');
10176
- } else if (all !== undefined && jQuery.isArray(all)) {
10177
- for (var id in all) {
10178
- jQuery('[data-id="notice_' + all[id] + '"]')
10179
- .trigger('close');
10180
- }
10181
- } if (all !== undefined) {
10182
- jQuery('[data-id="notice_' + all + '"]')
10183
- .trigger('close');
10184
- } else {
10185
- jQuery('.mailpoet_notice.updated:not([id]), .mailpoet_notice.error:not([id])')
10186
- .trigger('close');
10187
- }
10188
- },
10189
- error: function(message, options) {
10190
- this.show(jQuery.extend({}, {
10191
- type: 'error',
10192
- message: '<p>'+this.formatMessage(message)+'</p>'
10193
- }, options));
10194
- },
10195
- success: function(message, options) {
10196
- this.show(jQuery.extend({}, {
10197
- type: 'success',
10198
- message: '<p>'+this.formatMessage(message)+'</p>'
10199
- }, options));
10200
- },
10201
- system: function(message, options) {
10202
- this.show(jQuery.extend({}, {
10203
- type: 'system',
10204
- static: true,
10205
- message: '<p>'+this.formatMessage(message)+'</p>'
10206
- }, options));
10207
- },
10208
- formatMessage: function(message) {
10209
- if(Array.isArray(message)) {
10210
- return message.join('<br />');
10211
- } else {
10212
- return message;
10213
  }
 
 
 
 
 
 
10214
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10215
  };
10216
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
10217
 
10218
 
10219
  /***/ },
10220
 
10221
- /***/ 452:
10222
  /***/ function(module, exports, __webpack_require__) {
10223
 
10224
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// MarionetteJS (Backbone.Marionette)
@@ -10244,7 +10251,7 @@ webpackJsonp([3],{
10244
 
10245
  /* istanbul ignore next */
10246
  if (true) {
10247
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(432), __webpack_require__(270)], __WEBPACK_AMD_DEFINE_RESULT__ = function(Backbone, _) {
10248
  return (root.Marionette = root.Mn = factory(root, Backbone, _));
10249
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
10250
  } else if (typeof exports !== 'undefined') {
@@ -14190,7 +14197,7 @@ webpackJsonp([3],{
14190
 
14191
  /***/ },
14192
 
14193
- /***/ 453:
14194
  /***/ function(module, exports) {
14195
 
14196
  Backbone.SuperModel = (function(_, Backbone){
@@ -14613,7 +14620,7 @@ webpackJsonp([3],{
14613
 
14614
  /***/ },
14615
 
14616
- /***/ 454:
14617
  /***/ function(module, exports, __webpack_require__) {
14618
 
14619
  /**
@@ -20596,13 +20603,13 @@ webpackJsonp([3],{
20596
 
20597
  /***/ },
20598
 
20599
- /***/ 455:
20600
  /***/ function(module, exports, __webpack_require__) {
20601
 
20602
  // Backbone.Radio v1.0.4
20603
 
20604
  (function (global, factory) {
20605
- true ? module.exports = factory(__webpack_require__(270), __webpack_require__(432)) :
20606
  typeof define === 'function' && define.amd ? define(['underscore', 'backbone'], factory) :
20607
  (global.Backbone = global.Backbone || {}, global.Backbone.Radio = factory(global._,global.Backbone));
20608
  }(this, function (_,Backbone) { 'use strict';
@@ -20954,7 +20961,7 @@ webpackJsonp([3],{
20954
 
20955
  /***/ },
20956
 
20957
- /***/ 456:
20958
  /***/ function(module, exports, __webpack_require__) {
20959
 
20960
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Spectrum Colorpicker v1.8.0
@@ -23284,7 +23291,7 @@ webpackJsonp([3],{
23284
 
23285
  /***/ },
23286
 
23287
- /***/ 457:
23288
  /***/ function(module, exports) {
23289
 
23290
  // Generated by CoffeeScript 1.9.2
@@ -23555,7 +23562,7 @@ webpackJsonp([3],{
23555
 
23556
  /***/ },
23557
 
23558
- /***/ 458:
23559
  /***/ function(module, exports) {
23560
 
23561
  /* Blob.js
@@ -23776,7 +23783,7 @@ webpackJsonp([3],{
23776
 
23777
  /***/ },
23778
 
23779
- /***/ 459:
23780
  /***/ function(module, exports, __webpack_require__) {
23781
 
23782
  var __WEBPACK_AMD_DEFINE_RESULT__;/* FileSaver.js
@@ -23962,7 +23969,7 @@ webpackJsonp([3],{
23962
 
23963
  if (typeof module !== "undefined" && module.exports) {
23964
  module.exports.saveAs = saveAs;
23965
- } else if (("function" !== "undefined" && __webpack_require__(460) !== null) && (__webpack_require__(461) !== null)) {
23966
  !(__WEBPACK_AMD_DEFINE_RESULT__ = function() {
23967
  return saveAs;
23968
  }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
@@ -23971,7 +23978,7 @@ webpackJsonp([3],{
23971
 
23972
  /***/ },
23973
 
23974
- /***/ 460:
23975
  /***/ function(module, exports) {
23976
 
23977
  module.exports = function() { throw new Error("define cannot be used indirect"); };
@@ -23979,7 +23986,7 @@ webpackJsonp([3],{
23979
 
23980
  /***/ },
23981
 
23982
- /***/ 461:
23983
  /***/ function(module, exports) {
23984
 
23985
  /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {module.exports = __webpack_amd_options__;
@@ -23988,7 +23995,7 @@ webpackJsonp([3],{
23988
 
23989
  /***/ },
23990
 
23991
- /***/ 462:
23992
  /***/ function(module, exports, __webpack_require__) {
23993
 
23994
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*** IMPORTS FROM imports-loader ***/
@@ -27884,7 +27891,7 @@ webpackJsonp([3],{
27884
 
27885
  /***/ },
27886
 
27887
- /***/ 463:
27888
  /***/ function(module, exports, __webpack_require__) {
27889
 
27890
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -27897,7 +27904,7 @@ webpackJsonp([3],{
27897
 
27898
  (function(root, factory) {
27899
  if (true) {
27900
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(452), __webpack_require__(455), __webpack_require__(270)], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, Radio, _) {
27901
  return factory(Marionette, Radio, _);
27902
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27903
  }
@@ -27922,17 +27929,17 @@ webpackJsonp([3],{
27922
 
27923
  /***/ },
27924
 
27925
- /***/ 464:
27926
  /***/ function(module, exports, __webpack_require__) {
27927
 
27928
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
27929
- __webpack_require__(432),
 
27930
  __webpack_require__(452),
27931
- __webpack_require__(453),
27932
  __webpack_require__(266),
27933
  __webpack_require__(270),
27934
- __webpack_require__(435),
27935
- __webpack_require__(465)
27936
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Backbone, Marionette, SuperModel, jQuery, _, Handlebars) {
27937
 
27938
  var app = new Marionette.Application(), AppView;
@@ -27965,12 +27972,12 @@ webpackJsonp([3],{
27965
 
27966
  /***/ },
27967
 
27968
- /***/ 466:
27969
  /***/ function(module, exports, __webpack_require__) {
27970
 
27971
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
27972
- __webpack_require__(464),
27973
- __webpack_require__(453)
27974
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, SuperModel) {
27975
 
27976
  var Module = {};
@@ -28008,13 +28015,13 @@ webpackJsonp([3],{
28008
 
28009
  /***/ },
28010
 
28011
- /***/ 467:
28012
  /***/ function(module, exports, __webpack_require__) {
28013
 
28014
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28015
- __webpack_require__(464),
28016
- __webpack_require__(452),
28017
- __webpack_require__(453)
28018
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, Marionette, SuperModel) {
28019
 
28020
  "use strict";
@@ -28100,19 +28107,19 @@ webpackJsonp([3],{
28100
 
28101
  /***/ },
28102
 
28103
- /***/ 468:
28104
  /***/ function(module, exports, __webpack_require__) {
28105
 
28106
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28107
- __webpack_require__(464),
28108
- __webpack_require__(469),
28109
  __webpack_require__(267),
28110
- __webpack_require__(432),
 
28111
  __webpack_require__(452),
28112
- __webpack_require__(453),
28113
  __webpack_require__(270),
28114
  __webpack_require__(266),
28115
- __webpack_require__(457)
28116
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
28117
  App,
28118
  CommunicationComponent,
@@ -28459,14 +28466,14 @@ webpackJsonp([3],{
28459
 
28460
  /***/ },
28461
 
28462
- /***/ 469:
28463
  /***/ function(module, exports, __webpack_require__) {
28464
 
28465
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28466
- __webpack_require__(464),
28467
  __webpack_require__(270),
28468
  __webpack_require__(267),
28469
- __webpack_require__(445)
28470
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, _, MailPoet) {
28471
 
28472
  var Module = {};
@@ -28570,12 +28577,12 @@ webpackJsonp([3],{
28570
 
28571
  /***/ },
28572
 
28573
- /***/ 470:
28574
  /***/ function(module, exports, __webpack_require__) {
28575
 
28576
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28577
- __webpack_require__(464),
28578
- __webpack_require__(453),
28579
  __webpack_require__(270)
28580
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, SuperModel, _) {
28581
  "use strict";
@@ -28672,13 +28679,13 @@ webpackJsonp([3],{
28672
 
28673
  /***/ },
28674
 
28675
- /***/ 471:
28676
  /***/ function(module, exports, __webpack_require__) {
28677
 
28678
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28679
- __webpack_require__(464),
28680
- __webpack_require__(432),
28681
- __webpack_require__(452),
28682
  __webpack_require__(270),
28683
  __webpack_require__(266)
28684
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, Backbone, Marionette, _, jQuery) {
@@ -28715,20 +28722,20 @@ webpackJsonp([3],{
28715
 
28716
  /***/ },
28717
 
28718
- /***/ 472:
28719
  /***/ function(module, exports, __webpack_require__) {
28720
 
28721
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28722
- __webpack_require__(464),
28723
- __webpack_require__(469),
28724
  __webpack_require__(267),
28725
- __webpack_require__(449),
28726
- __webpack_require__(432),
28727
- __webpack_require__(452),
28728
  __webpack_require__(266),
 
28729
  __webpack_require__(458),
28730
- __webpack_require__(459),
28731
- __webpack_require__(473)
28732
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
28733
  App,
28734
  CommunicationComponent,
@@ -29074,15 +29081,15 @@ webpackJsonp([3],{
29074
 
29075
  /***/ },
29076
 
29077
- /***/ 473:
29078
  /***/ function(module, exports, __webpack_require__) {
29079
 
29080
- /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["html2canvas"] = __webpack_require__(474);
29081
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
29082
 
29083
  /***/ },
29084
 
29085
- /***/ 474:
29086
  /***/ function(module, exports, __webpack_require__) {
29087
 
29088
  var require;var require;/* WEBPACK VAR INJECTION */(function(global) {/*
@@ -33623,7 +33630,7 @@ webpackJsonp([3],{
33623
 
33624
  /***/ },
33625
 
33626
- /***/ 475:
33627
  /***/ function(module, exports, __webpack_require__) {
33628
 
33629
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -33633,7 +33640,7 @@ webpackJsonp([3],{
33633
  * For more check: http://marionettejs.com/docs/marionette.behaviors.html#behaviorslookup
33634
  */
33635
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33636
- __webpack_require__(452)
33637
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette) {
33638
 
33639
  var BehaviorsLookup = {};
@@ -33649,7 +33656,7 @@ webpackJsonp([3],{
33649
 
33650
  /***/ },
33651
 
33652
- /***/ 476:
33653
  /***/ function(module, exports, __webpack_require__) {
33654
 
33655
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -33658,9 +33665,9 @@ webpackJsonp([3],{
33658
  * Adds a color picker integration with the view
33659
  */
33660
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33661
- __webpack_require__(452),
33662
- __webpack_require__(475),
33663
- __webpack_require__(456)
33664
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, BehaviorsLookup, Spectrum) {
33665
 
33666
  BehaviorsLookup.ColorPickerBehavior = Marionette.Behavior.extend({
@@ -33679,7 +33686,7 @@ webpackJsonp([3],{
33679
 
33680
  /***/ },
33681
 
33682
- /***/ 477:
33683
  /***/ function(module, exports, __webpack_require__) {
33684
 
33685
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -33690,11 +33697,11 @@ webpackJsonp([3],{
33690
  * accept droppables
33691
  */
33692
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33693
- __webpack_require__(452),
33694
  __webpack_require__(270),
33695
  __webpack_require__(266),
33696
- __webpack_require__(475),
33697
- __webpack_require__(454)
33698
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, jQuery, BehaviorsLookup, interact) {
33699
 
33700
  BehaviorsLookup.ContainerDropZoneBehavior = Marionette.Behavior.extend({
@@ -34114,7 +34121,7 @@ webpackJsonp([3],{
34114
 
34115
  /***/ },
34116
 
34117
- /***/ 478:
34118
  /***/ function(module, exports, __webpack_require__) {
34119
 
34120
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -34124,11 +34131,11 @@ webpackJsonp([3],{
34124
  * Part of the drag&drop behavior.
34125
  */
34126
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34127
- __webpack_require__(452),
34128
  __webpack_require__(270),
34129
  __webpack_require__(266),
34130
- __webpack_require__(475),
34131
- __webpack_require__(454)
34132
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, jQuery, BehaviorsLookup, interact) {
34133
 
34134
  BehaviorsLookup.DraggableBehavior = Marionette.Behavior.extend({
@@ -34262,7 +34269,7 @@ webpackJsonp([3],{
34262
 
34263
  /***/ },
34264
 
34265
- /***/ 479:
34266
  /***/ function(module, exports, __webpack_require__) {
34267
 
34268
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -34271,8 +34278,8 @@ webpackJsonp([3],{
34271
  * Highlights a block that is being edited
34272
  */
34273
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34274
- __webpack_require__(452),
34275
- __webpack_require__(475),
34276
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, BehaviorsLookup) {
34277
 
34278
  BehaviorsLookup.HighlightEditingBehavior = Marionette.Behavior.extend({
@@ -34292,7 +34299,7 @@ webpackJsonp([3],{
34292
 
34293
  /***/ },
34294
 
34295
- /***/ 480:
34296
  /***/ function(module, exports, __webpack_require__) {
34297
 
34298
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -34301,9 +34308,9 @@ webpackJsonp([3],{
34301
  * Allows resizing elements within a block
34302
  */
34303
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34304
- __webpack_require__(452),
34305
- __webpack_require__(475),
34306
- __webpack_require__(454)
34307
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, BehaviorsLookup, interact) {
34308
 
34309
  BehaviorsLookup.ResizableBehavior = Marionette.Behavior.extend({
@@ -34367,7 +34374,7 @@ webpackJsonp([3],{
34367
 
34368
  /***/ },
34369
 
34370
- /***/ 481:
34371
  /***/ function(module, exports, __webpack_require__) {
34372
 
34373
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -34376,9 +34383,9 @@ webpackJsonp([3],{
34376
  * Allows sorting elements within a collection
34377
  */
34378
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34379
- __webpack_require__(452),
34380
  __webpack_require__(270),
34381
- __webpack_require__(475)
34382
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, BehaviorsLookup) {
34383
 
34384
  BehaviorsLookup.SortableBehavior = Marionette.Behavior.extend({
@@ -34414,7 +34421,7 @@ webpackJsonp([3],{
34414
 
34415
  /***/ },
34416
 
34417
- /***/ 482:
34418
  /***/ function(module, exports, __webpack_require__) {
34419
 
34420
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -34423,9 +34430,9 @@ webpackJsonp([3],{
34423
  * Opens up settings of a BlockView if contents are clicked upon
34424
  */
34425
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34426
- __webpack_require__(452),
34427
  __webpack_require__(266),
34428
- __webpack_require__(475),
34429
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, jQuery, BehaviorsLookup) {
34430
 
34431
  BehaviorsLookup.ShowSettingsBehavior = Marionette.Behavior.extend({
@@ -34452,7 +34459,7 @@ webpackJsonp([3],{
34452
 
34453
  /***/ },
34454
 
34455
- /***/ 483:
34456
  /***/ function(module, exports, __webpack_require__) {
34457
 
34458
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -34461,9 +34468,9 @@ webpackJsonp([3],{
34461
  * Adds TinyMCE text editing capabilities to a view
34462
  */
34463
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34464
- __webpack_require__(452),
34465
  __webpack_require__(270),
34466
- __webpack_require__(475)
34467
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, BehaviorsLookup) {
34468
 
34469
  BehaviorsLookup.TextEditorBehavior = Marionette.Behavior.extend({
@@ -34535,7 +34542,7 @@ webpackJsonp([3],{
34535
 
34536
  /***/ },
34537
 
34538
- /***/ 484:
34539
  /***/ function(module, exports, __webpack_require__) {
34540
 
34541
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -34545,13 +34552,13 @@ webpackJsonp([3],{
34545
  * BlockToolsView, BlockSettingsView and BlockWidgetView are optional.
34546
  */
34547
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34548
- __webpack_require__(464),
 
34549
  __webpack_require__(452),
34550
- __webpack_require__(453),
34551
  __webpack_require__(270),
34552
  __webpack_require__(266),
34553
  __webpack_require__(267),
34554
- __webpack_require__(448)
34555
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, Marionette, SuperModel, _, jQuery, MailPoet, Modal) {
34556
 
34557
  "use strict";
@@ -34828,7 +34835,7 @@ webpackJsonp([3],{
34828
 
34829
  /***/ },
34830
 
34831
- /***/ 485:
34832
  /***/ function(module, exports, __webpack_require__) {
34833
 
34834
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -34837,12 +34844,12 @@ webpackJsonp([3],{
34837
  * as other containers.
34838
  */
34839
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34840
- __webpack_require__(432),
34841
- __webpack_require__(452),
34842
  __webpack_require__(270),
34843
  __webpack_require__(266),
34844
- __webpack_require__(464),
34845
- __webpack_require__(484)
34846
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Backbone, Marionette, _, jQuery, App, BaseBlock) {
34847
 
34848
  "use strict";
@@ -35269,15 +35276,15 @@ webpackJsonp([3],{
35269
 
35270
  /***/ },
35271
 
35272
- /***/ 486:
35273
  /***/ function(module, exports, __webpack_require__) {
35274
 
35275
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35276
  * Button content block
35277
  */
35278
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35279
- __webpack_require__(464),
35280
- __webpack_require__(484),
35281
  __webpack_require__(267),
35282
  __webpack_require__(270),
35283
  __webpack_require__(266)
@@ -35426,15 +35433,15 @@ webpackJsonp([3],{
35426
 
35427
  /***/ },
35428
 
35429
- /***/ 487:
35430
  /***/ function(module, exports, __webpack_require__) {
35431
 
35432
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35433
  * Image content block
35434
  */
35435
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35436
- __webpack_require__(464),
35437
- __webpack_require__(484),
35438
  __webpack_require__(270)
35439
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
35440
 
@@ -35801,15 +35808,15 @@ webpackJsonp([3],{
35801
 
35802
  /***/ },
35803
 
35804
- /***/ 488:
35805
  /***/ function(module, exports, __webpack_require__) {
35806
 
35807
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35808
  * Divider content block
35809
  */
35810
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35811
- __webpack_require__(464),
35812
- __webpack_require__(484),
35813
  __webpack_require__(270),
35814
  __webpack_require__(266),
35815
  __webpack_require__(267)
@@ -35965,15 +35972,15 @@ webpackJsonp([3],{
35965
 
35966
  /***/ },
35967
 
35968
- /***/ 489:
35969
  /***/ function(module, exports, __webpack_require__) {
35970
 
35971
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35972
  * Text content block
35973
  */
35974
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35975
- __webpack_require__(464),
35976
- __webpack_require__(484),
35977
  __webpack_require__(270)
35978
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
35979
 
@@ -36090,15 +36097,15 @@ webpackJsonp([3],{
36090
 
36091
  /***/ },
36092
 
36093
- /***/ 490:
36094
  /***/ function(module, exports, __webpack_require__) {
36095
 
36096
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
36097
  * Spacer content block
36098
  */
36099
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36100
- __webpack_require__(464),
36101
- __webpack_require__(484),
36102
  __webpack_require__(270)
36103
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
36104
 
@@ -36201,15 +36208,15 @@ webpackJsonp([3],{
36201
 
36202
  /***/ },
36203
 
36204
- /***/ 491:
36205
  /***/ function(module, exports, __webpack_require__) {
36206
 
36207
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
36208
  * Footer content block
36209
  */
36210
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36211
- __webpack_require__(464),
36212
- __webpack_require__(484),
36213
  __webpack_require__(270)
36214
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
36215
 
@@ -36341,15 +36348,15 @@ webpackJsonp([3],{
36341
 
36342
  /***/ },
36343
 
36344
- /***/ 492:
36345
  /***/ function(module, exports, __webpack_require__) {
36346
 
36347
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
36348
  * Header content block
36349
  */
36350
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36351
- __webpack_require__(464),
36352
- __webpack_require__(484),
36353
  __webpack_require__(270)
36354
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
36355
 
@@ -36481,7 +36488,7 @@ webpackJsonp([3],{
36481
 
36482
  /***/ },
36483
 
36484
- /***/ 493:
36485
  /***/ function(module, exports, __webpack_require__) {
36486
 
36487
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -36493,13 +36500,13 @@ webpackJsonp([3],{
36493
  * block settings view.
36494
  */
36495
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36496
- __webpack_require__(464),
36497
- __webpack_require__(484),
36498
- __webpack_require__(486),
36499
- __webpack_require__(488),
36500
- __webpack_require__(469),
36501
  __webpack_require__(267),
36502
- __webpack_require__(453),
36503
  __webpack_require__(270),
36504
  __webpack_require__(266)
36505
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
@@ -36887,7 +36894,7 @@ webpackJsonp([3],{
36887
 
36888
  /***/ },
36889
 
36890
- /***/ 494:
36891
  /***/ function(module, exports, __webpack_require__) {
36892
 
36893
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
@@ -36903,17 +36910,17 @@ webpackJsonp([3],{
36903
  * block settings view.
36904
  */
36905
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36906
- __webpack_require__(432),
36907
- __webpack_require__(452),
36908
- __webpack_require__(455),
36909
  __webpack_require__(270),
36910
  __webpack_require__(266),
36911
  __webpack_require__(267),
36912
- __webpack_require__(464),
36913
- __webpack_require__(469),
36914
- __webpack_require__(484),
36915
- __webpack_require__(486),
36916
- __webpack_require__(488),
36917
  __webpack_require__(279)
36918
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
36919
  Backbone,
@@ -37431,18 +37438,18 @@ webpackJsonp([3],{
37431
 
37432
  /***/ },
37433
 
37434
- /***/ 495:
37435
  /***/ function(module, exports, __webpack_require__) {
37436
 
37437
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
37438
  * Social icons content block
37439
  */
37440
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
37441
- __webpack_require__(464),
37442
- __webpack_require__(484),
37443
- __webpack_require__(432),
 
37444
  __webpack_require__(452),
37445
- __webpack_require__(453),
37446
  __webpack_require__(270),
37447
  __webpack_require__(266)
37448
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, Backbone, Marionette, SuperModel, _, jQuery) {
4
  /***/ function(module, exports, __webpack_require__) {
5
 
6
  __webpack_require__(270);
7
+ __webpack_require__(431);
8
+ __webpack_require__(451);
9
  __webpack_require__(452);
10
  __webpack_require__(453);
11
  __webpack_require__(454);
 
12
  __webpack_require__(279);
13
+ __webpack_require__(455);
14
  __webpack_require__(456);
15
  __webpack_require__(457);
16
  __webpack_require__(458);
17
+ __webpack_require__(461);
18
  __webpack_require__(462);
19
  __webpack_require__(463);
20
+ __webpack_require__(465);
21
  __webpack_require__(466);
22
  __webpack_require__(467);
23
+ __webpack_require__(469);
24
  __webpack_require__(470);
25
  __webpack_require__(471);
26
+ __webpack_require__(468);
27
+ __webpack_require__(474);
28
  __webpack_require__(475);
29
  __webpack_require__(476);
30
  __webpack_require__(477);
44
  __webpack_require__(491);
45
  __webpack_require__(492);
46
  __webpack_require__(493);
47
+ module.exports = __webpack_require__(494);
 
48
 
49
 
50
  /***/ },
7367
 
7368
  /***/ },
7369
 
7370
+ /***/ 431:
7371
  /***/ function(module, exports, __webpack_require__) {
7372
 
7373
+ /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["Backbone"] = __webpack_require__(432);
7374
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
7375
 
7376
  /***/ },
7377
 
7378
+ /***/ 432:
7379
  /***/ function(module, exports, __webpack_require__) {
7380
 
7381
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global) {// Backbone.js 1.3.3
9303
 
9304
  /***/ },
9305
 
9306
+ /***/ 444:
9307
  /***/ function(module, exports, __webpack_require__) {
9308
 
9309
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(266), __webpack_require__(270)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery, _) {
9382
 
9383
  /***/ },
9384
 
9385
+ /***/ 447:
9386
  /***/ function(module, exports, __webpack_require__) {
9387
 
9388
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(266)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
9992
 
9993
  /***/ },
9994
 
9995
+ /***/ 448:
9996
  /***/ function(module, exports, __webpack_require__) {
9997
 
9998
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(266)], __WEBPACK_AMD_DEFINE_RESULT__ = function(MailPoet, jQuery) {
10002
  MailPoet Notice:
10003
 
10004
  description: Handles notices
10005
+ version: 1.0
10006
  author: Jonathan Labreuille
10007
  company: Wysija
10008
  dependencies: jQuery
10009
 
10010
  Usage:
10011
 
10012
+ // success message (static: false)
10013
  MailPoet.Notice.success('Yatta!');
10014
 
10015
  // error message (static: false)
10018
  // system message (static: true)
10019
  MailPoet.Notice.system('You need to updated ASAP!');
10020
 
10021
+ ==================================================================================================*/
10022
 
10023
+ MailPoet.Notice = {
10024
+ version: 1.0,
10025
+ // default options
10026
+ defaults: {
10027
+ type: 'success',
10028
+ message: '',
10029
+ static: false,
10030
+ hideClose: false,
10031
+ id: null,
10032
+ positionAfter: false,
10033
+ scroll: false,
10034
+ timeout: 5000,
10035
+ onOpen: null,
10036
+ onClose: null
10037
+ },
10038
+ options: {},
10039
+ init: function(options) {
10040
+ // set options
10041
+ this.options = jQuery.extend({}, this.defaults, options);
10042
 
10043
+ return this;
10044
+ },
10045
+ createNotice: function() {
10046
+ // clone element
10047
+ this.element = jQuery('#mailpoet_notice_'+this.options.type).clone();
 
10048
 
10049
+ // add data-id to the element
10050
+ if (this.options.id) {
10051
+ this.element.attr(
10052
+ 'data-id',
10053
+ this.options.id
10054
+ );
10055
+ }
10056
 
10057
+ // remove id from clone
10058
+ this.element.removeAttr('id');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10059
 
10060
+ // insert notice after its parent
10061
+ var positionAfter;
10062
+ if (typeof this.options.positionAfter === 'object') {
10063
+ positionAfter = this.options.positionAfter;
10064
+ } else if (typeof this.options.positionAfter === 'string') {
10065
+ positionAfter = jQuery(this.options.positionAfter);
10066
+ } else {
10067
+ positionAfter = jQuery('#mailpoet_notice_'+this.options.type);
10068
+ }
10069
+ positionAfter.after(this.element);
10070
+
10071
+ // setup onClose callback
10072
+ var onClose = null;
10073
+ if (this.options.onClose !== null) {
10074
+ onClose = this.options.onClose;
10075
+ }
10076
+
10077
+ // listen to remove event
10078
+ jQuery(this.element).on('close', function() {
10079
+ jQuery(this).fadeOut(200, function() {
10080
+ // on close callback
10081
+ if (onClose !== null) {
10082
+ onClose();
10083
  }
10084
+ // remove notice
10085
+ jQuery(this).remove();
10086
+ });
10087
+ }.bind(this.element));
10088
 
10089
+ // listen to message event
10090
+ jQuery(this.element).on('setMessage', function(e, message) {
10091
+ MailPoet.Notice.setMessage(message);
10092
+ }.bind(this.element));
 
 
 
 
 
 
 
10093
 
10094
+ return this;
10095
+ },
10096
+ updateNotice: function() {
10097
+ // update notice's message
10098
+ jQuery('[data-id="'+this.options.id+'"').first().trigger(
10099
+ 'setMessage', this.options.message
10100
+ );
10101
+ },
10102
+ isHTML: function(str) {
10103
+ var a = document.createElement('div');
10104
+ a.innerHTML = str;
10105
+ for (var c = a.childNodes, i = c.length; i--;) {
10106
+ if (c[i].nodeType == 1) return true;
10107
+ }
10108
+ return false;
10109
+ },
10110
+ setMessage: function(message) {
10111
+ message = this.formatMessage(message);
10112
 
10113
+ // if it's not an html message
10114
+ // let's sugar coat the message with a fancy <p>
10115
+ if (this.isHTML(message) === false) {
10116
+ message = '<p>'+message+'</p>';
10117
+ }
10118
+ // set message
10119
+ return this.element.html(message);
10120
+ },
10121
+ formatMessage: function(message) {
10122
+ if (Array.isArray(message)) {
10123
+ return message.join('<br />');
10124
+ } else {
10125
+ return message;
10126
+ }
10127
+ },
10128
+ show: function(options) {
10129
+ // initialize
10130
+ this.init(options);
 
 
 
10131
 
10132
+ if (
10133
+ this.options.id !== null
10134
+ &&
10135
+ jQuery('[data-id="'+this.options.id+'"').length > 0
10136
+ ) {
10137
+ this.updateNotice();
10138
+ } else {
10139
+ this.createNotice();
10140
+ }
10141
+ this.showNotice();
10142
+ },
10143
+ showNotice: function() {
10144
+ // set message
10145
+ this.setMessage(this.options.message);
10146
 
10147
+ // position notice
10148
+ this.element.insertAfter(jQuery('h2.title'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10149
 
10150
+ // set class name
10151
+ switch (this.options.type) {
10152
+ case 'success':
10153
+ this.element.addClass('updated');
10154
+ break;
10155
+ case 'system':
10156
+ this.element.addClass('update-nag');
10157
+ break;
10158
+ case 'error':
10159
+ this.element.addClass('error');
10160
+ break;
10161
+ }
10162
 
10163
+ // make the notice appear
10164
+ this.element.fadeIn(200);
 
 
10165
 
10166
+ // if scroll option is enabled, scroll to the notice
10167
+ if (this.options.scroll === true) {
10168
+ this.element.get(0).scrollIntoView(false);
10169
+ }
 
 
 
 
 
10170
 
10171
+ // if the notice is not static, it has to disappear after a timeout
10172
+ if (this.options.static === false) {
10173
+ this.element.delay(this.options.timeout).trigger('close');
10174
+ } else if (this.options.hideClose === false) {
10175
+ this.element.append('<a href="javascript:;" class="mailpoet_notice_close"><span class="dashicons dashicons-dismiss"></span></a>');
10176
+ this.element.find('.mailpoet_notice_close').on('click', function() {
10177
+ jQuery(this).trigger('close');
10178
+ });
10179
+ }
10180
+
10181
+ // call onOpen callback
10182
+ if (this.options.onOpen !== null) {
10183
+ this.options.onOpen(this.element);
10184
+ }
10185
+ },
10186
+ hide: function(all) {
10187
+ if (all !== undefined && all === true) {
10188
+ // all notices
10189
+ jQuery('.mailpoet_notice:not([id])').trigger('close');
10190
+ } else if (all !== undefined && jQuery.isArray(all)) {
10191
+ // array of ids
10192
+ for (var id in all) {
10193
+ jQuery('[data-id="' + all[id] + '"]').trigger('close');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10194
  }
10195
+ } if (all !== undefined) {
10196
+ // single id
10197
+ jQuery('[data-id="' + all + '"]').trigger('close');
10198
+ } else {
10199
+ jQuery('.mailpoet_notice.updated:not([id]), .mailpoet_notice.error:not([id])')
10200
+ .trigger('close');
10201
  }
10202
+ },
10203
+ error: function(message, options) {
10204
+ this.show(jQuery.extend({}, {
10205
+ type: 'error',
10206
+ message: message
10207
+ }, options));
10208
+ },
10209
+ success: function(message, options) {
10210
+ this.show(jQuery.extend({}, {
10211
+ type: 'success',
10212
+ message: message
10213
+ }, options));
10214
+ },
10215
+ system: function(message, options) {
10216
+ this.show(jQuery.extend({}, {
10217
+ type: 'system',
10218
+ static: true,
10219
+ message: message
10220
+ }, options));
10221
+ }
10222
  };
10223
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
10224
 
10225
 
10226
  /***/ },
10227
 
10228
+ /***/ 451:
10229
  /***/ function(module, exports, __webpack_require__) {
10230
 
10231
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// MarionetteJS (Backbone.Marionette)
10251
 
10252
  /* istanbul ignore next */
10253
  if (true) {
10254
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(431), __webpack_require__(270)], __WEBPACK_AMD_DEFINE_RESULT__ = function(Backbone, _) {
10255
  return (root.Marionette = root.Mn = factory(root, Backbone, _));
10256
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
10257
  } else if (typeof exports !== 'undefined') {
14197
 
14198
  /***/ },
14199
 
14200
+ /***/ 452:
14201
  /***/ function(module, exports) {
14202
 
14203
  Backbone.SuperModel = (function(_, Backbone){
14620
 
14621
  /***/ },
14622
 
14623
+ /***/ 453:
14624
  /***/ function(module, exports, __webpack_require__) {
14625
 
14626
  /**
20603
 
20604
  /***/ },
20605
 
20606
+ /***/ 454:
20607
  /***/ function(module, exports, __webpack_require__) {
20608
 
20609
  // Backbone.Radio v1.0.4
20610
 
20611
  (function (global, factory) {
20612
+ true ? module.exports = factory(__webpack_require__(270), __webpack_require__(431)) :
20613
  typeof define === 'function' && define.amd ? define(['underscore', 'backbone'], factory) :
20614
  (global.Backbone = global.Backbone || {}, global.Backbone.Radio = factory(global._,global.Backbone));
20615
  }(this, function (_,Backbone) { 'use strict';
20961
 
20962
  /***/ },
20963
 
20964
+ /***/ 455:
20965
  /***/ function(module, exports, __webpack_require__) {
20966
 
20967
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Spectrum Colorpicker v1.8.0
23291
 
23292
  /***/ },
23293
 
23294
+ /***/ 456:
23295
  /***/ function(module, exports) {
23296
 
23297
  // Generated by CoffeeScript 1.9.2
23562
 
23563
  /***/ },
23564
 
23565
+ /***/ 457:
23566
  /***/ function(module, exports) {
23567
 
23568
  /* Blob.js
23783
 
23784
  /***/ },
23785
 
23786
+ /***/ 458:
23787
  /***/ function(module, exports, __webpack_require__) {
23788
 
23789
  var __WEBPACK_AMD_DEFINE_RESULT__;/* FileSaver.js
23969
 
23970
  if (typeof module !== "undefined" && module.exports) {
23971
  module.exports.saveAs = saveAs;
23972
+ } else if (("function" !== "undefined" && __webpack_require__(459) !== null) && (__webpack_require__(460) !== null)) {
23973
  !(__WEBPACK_AMD_DEFINE_RESULT__ = function() {
23974
  return saveAs;
23975
  }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
23978
 
23979
  /***/ },
23980
 
23981
+ /***/ 459:
23982
  /***/ function(module, exports) {
23983
 
23984
  module.exports = function() { throw new Error("define cannot be used indirect"); };
23986
 
23987
  /***/ },
23988
 
23989
+ /***/ 460:
23990
  /***/ function(module, exports) {
23991
 
23992
  /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {module.exports = __webpack_amd_options__;
23995
 
23996
  /***/ },
23997
 
23998
+ /***/ 461:
23999
  /***/ function(module, exports, __webpack_require__) {
24000
 
24001
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*** IMPORTS FROM imports-loader ***/
27891
 
27892
  /***/ },
27893
 
27894
+ /***/ 462:
27895
  /***/ function(module, exports, __webpack_require__) {
27896
 
27897
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
27904
 
27905
  (function(root, factory) {
27906
  if (true) {
27907
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(451), __webpack_require__(454), __webpack_require__(270)], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, Radio, _) {
27908
  return factory(Marionette, Radio, _);
27909
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
27910
  }
27929
 
27930
  /***/ },
27931
 
27932
+ /***/ 463:
27933
  /***/ function(module, exports, __webpack_require__) {
27934
 
27935
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
27936
+ __webpack_require__(431),
27937
+ __webpack_require__(451),
27938
  __webpack_require__(452),
 
27939
  __webpack_require__(266),
27940
  __webpack_require__(270),
27941
+ __webpack_require__(434),
27942
+ __webpack_require__(464)
27943
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Backbone, Marionette, SuperModel, jQuery, _, Handlebars) {
27944
 
27945
  var app = new Marionette.Application(), AppView;
27972
 
27973
  /***/ },
27974
 
27975
+ /***/ 465:
27976
  /***/ function(module, exports, __webpack_require__) {
27977
 
27978
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
27979
+ __webpack_require__(463),
27980
+ __webpack_require__(452)
27981
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, SuperModel) {
27982
 
27983
  var Module = {};
28015
 
28016
  /***/ },
28017
 
28018
+ /***/ 466:
28019
  /***/ function(module, exports, __webpack_require__) {
28020
 
28021
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28022
+ __webpack_require__(463),
28023
+ __webpack_require__(451),
28024
+ __webpack_require__(452)
28025
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, Marionette, SuperModel) {
28026
 
28027
  "use strict";
28107
 
28108
  /***/ },
28109
 
28110
+ /***/ 467:
28111
  /***/ function(module, exports, __webpack_require__) {
28112
 
28113
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28114
+ __webpack_require__(463),
28115
+ __webpack_require__(468),
28116
  __webpack_require__(267),
28117
+ __webpack_require__(431),
28118
+ __webpack_require__(451),
28119
  __webpack_require__(452),
 
28120
  __webpack_require__(270),
28121
  __webpack_require__(266),
28122
+ __webpack_require__(456)
28123
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
28124
  App,
28125
  CommunicationComponent,
28466
 
28467
  /***/ },
28468
 
28469
+ /***/ 468:
28470
  /***/ function(module, exports, __webpack_require__) {
28471
 
28472
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28473
+ __webpack_require__(463),
28474
  __webpack_require__(270),
28475
  __webpack_require__(267),
28476
+ __webpack_require__(444)
28477
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, _, MailPoet) {
28478
 
28479
  var Module = {};
28577
 
28578
  /***/ },
28579
 
28580
+ /***/ 469:
28581
  /***/ function(module, exports, __webpack_require__) {
28582
 
28583
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28584
+ __webpack_require__(463),
28585
+ __webpack_require__(452),
28586
  __webpack_require__(270)
28587
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, SuperModel, _) {
28588
  "use strict";
28679
 
28680
  /***/ },
28681
 
28682
+ /***/ 470:
28683
  /***/ function(module, exports, __webpack_require__) {
28684
 
28685
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28686
+ __webpack_require__(463),
28687
+ __webpack_require__(431),
28688
+ __webpack_require__(451),
28689
  __webpack_require__(270),
28690
  __webpack_require__(266)
28691
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, Backbone, Marionette, _, jQuery) {
28722
 
28723
  /***/ },
28724
 
28725
+ /***/ 471:
28726
  /***/ function(module, exports, __webpack_require__) {
28727
 
28728
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
28729
+ __webpack_require__(463),
28730
+ __webpack_require__(468),
28731
  __webpack_require__(267),
28732
+ __webpack_require__(448),
28733
+ __webpack_require__(431),
28734
+ __webpack_require__(451),
28735
  __webpack_require__(266),
28736
+ __webpack_require__(457),
28737
  __webpack_require__(458),
28738
+ __webpack_require__(472)
 
28739
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
28740
  App,
28741
  CommunicationComponent,
29081
 
29082
  /***/ },
29083
 
29084
+ /***/ 472:
29085
  /***/ function(module, exports, __webpack_require__) {
29086
 
29087
+ /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["html2canvas"] = __webpack_require__(473);
29088
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
29089
 
29090
  /***/ },
29091
 
29092
+ /***/ 473:
29093
  /***/ function(module, exports, __webpack_require__) {
29094
 
29095
  var require;var require;/* WEBPACK VAR INJECTION */(function(global) {/*
33630
 
33631
  /***/ },
33632
 
33633
+ /***/ 474:
33634
  /***/ function(module, exports, __webpack_require__) {
33635
 
33636
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
33640
  * For more check: http://marionettejs.com/docs/marionette.behaviors.html#behaviorslookup
33641
  */
33642
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33643
+ __webpack_require__(451)
33644
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette) {
33645
 
33646
  var BehaviorsLookup = {};
33656
 
33657
  /***/ },
33658
 
33659
+ /***/ 475:
33660
  /***/ function(module, exports, __webpack_require__) {
33661
 
33662
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
33665
  * Adds a color picker integration with the view
33666
  */
33667
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33668
+ __webpack_require__(451),
33669
+ __webpack_require__(474),
33670
+ __webpack_require__(455)
33671
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, BehaviorsLookup, Spectrum) {
33672
 
33673
  BehaviorsLookup.ColorPickerBehavior = Marionette.Behavior.extend({
33686
 
33687
  /***/ },
33688
 
33689
+ /***/ 476:
33690
  /***/ function(module, exports, __webpack_require__) {
33691
 
33692
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
33697
  * accept droppables
33698
  */
33699
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
33700
+ __webpack_require__(451),
33701
  __webpack_require__(270),
33702
  __webpack_require__(266),
33703
+ __webpack_require__(474),
33704
+ __webpack_require__(453)
33705
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, jQuery, BehaviorsLookup, interact) {
33706
 
33707
  BehaviorsLookup.ContainerDropZoneBehavior = Marionette.Behavior.extend({
34121
 
34122
  /***/ },
34123
 
34124
+ /***/ 477:
34125
  /***/ function(module, exports, __webpack_require__) {
34126
 
34127
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34131
  * Part of the drag&drop behavior.
34132
  */
34133
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34134
+ __webpack_require__(451),
34135
  __webpack_require__(270),
34136
  __webpack_require__(266),
34137
+ __webpack_require__(474),
34138
+ __webpack_require__(453)
34139
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, jQuery, BehaviorsLookup, interact) {
34140
 
34141
  BehaviorsLookup.DraggableBehavior = Marionette.Behavior.extend({
34269
 
34270
  /***/ },
34271
 
34272
+ /***/ 478:
34273
  /***/ function(module, exports, __webpack_require__) {
34274
 
34275
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34278
  * Highlights a block that is being edited
34279
  */
34280
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34281
+ __webpack_require__(451),
34282
+ __webpack_require__(474),
34283
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, BehaviorsLookup) {
34284
 
34285
  BehaviorsLookup.HighlightEditingBehavior = Marionette.Behavior.extend({
34299
 
34300
  /***/ },
34301
 
34302
+ /***/ 479:
34303
  /***/ function(module, exports, __webpack_require__) {
34304
 
34305
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34308
  * Allows resizing elements within a block
34309
  */
34310
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34311
+ __webpack_require__(451),
34312
+ __webpack_require__(474),
34313
+ __webpack_require__(453)
34314
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, BehaviorsLookup, interact) {
34315
 
34316
  BehaviorsLookup.ResizableBehavior = Marionette.Behavior.extend({
34374
 
34375
  /***/ },
34376
 
34377
+ /***/ 480:
34378
  /***/ function(module, exports, __webpack_require__) {
34379
 
34380
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34383
  * Allows sorting elements within a collection
34384
  */
34385
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34386
+ __webpack_require__(451),
34387
  __webpack_require__(270),
34388
+ __webpack_require__(474)
34389
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, BehaviorsLookup) {
34390
 
34391
  BehaviorsLookup.SortableBehavior = Marionette.Behavior.extend({
34421
 
34422
  /***/ },
34423
 
34424
+ /***/ 481:
34425
  /***/ function(module, exports, __webpack_require__) {
34426
 
34427
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34430
  * Opens up settings of a BlockView if contents are clicked upon
34431
  */
34432
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34433
+ __webpack_require__(451),
34434
  __webpack_require__(266),
34435
+ __webpack_require__(474),
34436
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, jQuery, BehaviorsLookup) {
34437
 
34438
  BehaviorsLookup.ShowSettingsBehavior = Marionette.Behavior.extend({
34459
 
34460
  /***/ },
34461
 
34462
+ /***/ 482:
34463
  /***/ function(module, exports, __webpack_require__) {
34464
 
34465
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34468
  * Adds TinyMCE text editing capabilities to a view
34469
  */
34470
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34471
+ __webpack_require__(451),
34472
  __webpack_require__(270),
34473
+ __webpack_require__(474)
34474
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Marionette, _, BehaviorsLookup) {
34475
 
34476
  BehaviorsLookup.TextEditorBehavior = Marionette.Behavior.extend({
34542
 
34543
  /***/ },
34544
 
34545
+ /***/ 483:
34546
  /***/ function(module, exports, __webpack_require__) {
34547
 
34548
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34552
  * BlockToolsView, BlockSettingsView and BlockWidgetView are optional.
34553
  */
34554
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34555
+ __webpack_require__(463),
34556
+ __webpack_require__(451),
34557
  __webpack_require__(452),
 
34558
  __webpack_require__(270),
34559
  __webpack_require__(266),
34560
  __webpack_require__(267),
34561
+ __webpack_require__(447)
34562
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, Marionette, SuperModel, _, jQuery, MailPoet, Modal) {
34563
 
34564
  "use strict";
34835
 
34836
  /***/ },
34837
 
34838
+ /***/ 484:
34839
  /***/ function(module, exports, __webpack_require__) {
34840
 
34841
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
34844
  * as other containers.
34845
  */
34846
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
34847
+ __webpack_require__(431),
34848
+ __webpack_require__(451),
34849
  __webpack_require__(270),
34850
  __webpack_require__(266),
34851
+ __webpack_require__(463),
34852
+ __webpack_require__(483)
34853
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Backbone, Marionette, _, jQuery, App, BaseBlock) {
34854
 
34855
  "use strict";
35276
 
35277
  /***/ },
35278
 
35279
+ /***/ 485:
35280
  /***/ function(module, exports, __webpack_require__) {
35281
 
35282
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35283
  * Button content block
35284
  */
35285
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35286
+ __webpack_require__(463),
35287
+ __webpack_require__(483),
35288
  __webpack_require__(267),
35289
  __webpack_require__(270),
35290
  __webpack_require__(266)
35433
 
35434
  /***/ },
35435
 
35436
+ /***/ 486:
35437
  /***/ function(module, exports, __webpack_require__) {
35438
 
35439
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35440
  * Image content block
35441
  */
35442
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35443
+ __webpack_require__(463),
35444
+ __webpack_require__(483),
35445
  __webpack_require__(270)
35446
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
35447
 
35808
 
35809
  /***/ },
35810
 
35811
+ /***/ 487:
35812
  /***/ function(module, exports, __webpack_require__) {
35813
 
35814
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35815
  * Divider content block
35816
  */
35817
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35818
+ __webpack_require__(463),
35819
+ __webpack_require__(483),
35820
  __webpack_require__(270),
35821
  __webpack_require__(266),
35822
  __webpack_require__(267)
35972
 
35973
  /***/ },
35974
 
35975
+ /***/ 488:
35976
  /***/ function(module, exports, __webpack_require__) {
35977
 
35978
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
35979
  * Text content block
35980
  */
35981
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
35982
+ __webpack_require__(463),
35983
+ __webpack_require__(483),
35984
  __webpack_require__(270)
35985
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
35986
 
36097
 
36098
  /***/ },
36099
 
36100
+ /***/ 489:
36101
  /***/ function(module, exports, __webpack_require__) {
36102
 
36103
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
36104
  * Spacer content block
36105
  */
36106
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36107
+ __webpack_require__(463),
36108
+ __webpack_require__(483),
36109
  __webpack_require__(270)
36110
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
36111
 
36208
 
36209
  /***/ },
36210
 
36211
+ /***/ 490:
36212
  /***/ function(module, exports, __webpack_require__) {
36213
 
36214
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
36215
  * Footer content block
36216
  */
36217
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36218
+ __webpack_require__(463),
36219
+ __webpack_require__(483),
36220
  __webpack_require__(270)
36221
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
36222
 
36348
 
36349
  /***/ },
36350
 
36351
+ /***/ 491:
36352
  /***/ function(module, exports, __webpack_require__) {
36353
 
36354
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
36355
  * Header content block
36356
  */
36357
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36358
+ __webpack_require__(463),
36359
+ __webpack_require__(483),
36360
  __webpack_require__(270)
36361
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, _) {
36362
 
36488
 
36489
  /***/ },
36490
 
36491
+ /***/ 492:
36492
  /***/ function(module, exports, __webpack_require__) {
36493
 
36494
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
36500
  * block settings view.
36501
  */
36502
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36503
+ __webpack_require__(463),
36504
+ __webpack_require__(483),
36505
+ __webpack_require__(485),
36506
+ __webpack_require__(487),
36507
+ __webpack_require__(468),
36508
  __webpack_require__(267),
36509
+ __webpack_require__(452),
36510
  __webpack_require__(270),
36511
  __webpack_require__(266)
36512
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
36894
 
36895
  /***/ },
36896
 
36897
+ /***/ 493:
36898
  /***/ function(module, exports, __webpack_require__) {
36899
 
36900
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
36910
  * block settings view.
36911
  */
36912
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
36913
+ __webpack_require__(431),
36914
+ __webpack_require__(451),
36915
+ __webpack_require__(454),
36916
  __webpack_require__(270),
36917
  __webpack_require__(266),
36918
  __webpack_require__(267),
36919
+ __webpack_require__(463),
36920
+ __webpack_require__(468),
36921
+ __webpack_require__(483),
36922
+ __webpack_require__(485),
36923
+ __webpack_require__(487),
36924
  __webpack_require__(279)
36925
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
36926
  Backbone,
37438
 
37439
  /***/ },
37440
 
37441
+ /***/ 494:
37442
  /***/ function(module, exports, __webpack_require__) {
37443
 
37444
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
37445
  * Social icons content block
37446
  */
37447
  !(__WEBPACK_AMD_DEFINE_ARRAY__ = [
37448
+ __webpack_require__(463),
37449
+ __webpack_require__(483),
37450
+ __webpack_require__(431),
37451
+ __webpack_require__(451),
37452
  __webpack_require__(452),
 
37453
  __webpack_require__(270),
37454
  __webpack_require__(266)
37455
  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(App, BaseBlock, Backbone, Marionette, SuperModel, _, jQuery) {
assets/js/vendor.js CHANGED
@@ -99,13 +99,13 @@
99
  /***/ 0:
100
  /***/ function(module, exports, __webpack_require__) {
101
 
102
- __webpack_require__(435);
103
- module.exports = __webpack_require__(465);
104
 
105
 
106
  /***/ },
107
 
108
- /***/ 435:
109
  /***/ function(module, exports, __webpack_require__) {
110
 
111
  /*!
@@ -4209,10 +4209,10 @@
4209
 
4210
  /***/ },
4211
 
4212
- /***/ 465:
4213
  /***/ function(module, exports, __webpack_require__) {
4214
 
4215
- var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(435)], __WEBPACK_AMD_DEFINE_RESULT__ = function(Handlebars) {
4216
  // Handlebars helpers
4217
  Handlebars.registerHelper('concat', function() {
4218
  var size = (arguments.length - 1),
99
  /***/ 0:
100
  /***/ function(module, exports, __webpack_require__) {
101
 
102
+ __webpack_require__(434);
103
+ module.exports = __webpack_require__(464);
104
 
105
 
106
  /***/ },
107
 
108
+ /***/ 434:
109
  /***/ function(module, exports, __webpack_require__) {
110
 
111
  /*!
4209
 
4210
  /***/ },
4211
 
4212
+ /***/ 464:
4213
  /***/ function(module, exports, __webpack_require__) {
4214
 
4215
+ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(434)], __WEBPACK_AMD_DEFINE_RESULT__ = function(Handlebars) {
4216
  // Handlebars helpers
4217
  Handlebars.registerHelper('concat', function() {
4218
  var size = (arguments.length - 1),
lang/mailpoet.pot CHANGED
@@ -4,7 +4,7 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: \n"
6
  "Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
7
- "POT-Creation-Date: 2016-11-29 12:08:28+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -74,13 +74,13 @@ msgstr ""
74
  msgid "Check your inbox or spam folder to confirm your subscription."
75
  msgstr ""
76
 
77
- #: lib/API/Endpoints/Forms.php:259 lib/API/Endpoints/Newsletters.php:187
78
  #: lib/API/Endpoints/Segments.php:121
79
  msgid "Copy of %s"
80
  msgstr ""
81
 
82
- #: lib/API/Endpoints/Mailer.php:25
83
- msgid "The email could not be sent. Please check your settings."
84
  msgstr ""
85
 
86
  #: lib/API/Endpoints/NewsletterTemplates.php:16
@@ -88,24 +88,24 @@ msgstr ""
88
  msgid "This template does not exist."
89
  msgstr ""
90
 
91
- #: lib/API/Endpoints/Newsletters.php:27 lib/API/Endpoints/Newsletters.php:116
92
- #: lib/API/Endpoints/Newsletters.php:137 lib/API/Endpoints/Newsletters.php:153
93
- #: lib/API/Endpoints/Newsletters.php:169 lib/API/Endpoints/Newsletters.php:183
94
- #: lib/API/Endpoints/Newsletters.php:215 lib/API/Endpoints/Newsletters.php:244
95
  #: lib/API/Endpoints/SendingQueue.php:32 lib/API/Endpoints/SendingQueue.php:122
96
  #: lib/API/Endpoints/SendingQueue.php:148
97
  msgid "This newsletter does not exist."
98
  msgstr ""
99
 
100
- #: lib/API/Endpoints/Newsletters.php:107
101
  msgid "You need to specify a status."
102
  msgstr ""
103
 
104
- #: lib/API/Endpoints/Newsletters.php:206
105
  msgid "Newsletter data is missing."
106
  msgstr ""
107
 
108
- #: lib/API/Endpoints/Newsletters.php:235
109
  msgid "Please specify receiver information."
110
  msgstr ""
111
 
@@ -159,7 +159,7 @@ msgid "Subscribers"
159
  msgstr ""
160
 
161
  #: lib/Config/Menu.php:114 lib/Config/Menu.php:115 views/forms.html:43
162
- #: views/newsletters.html:63 views/newsletters.html:148 views/segments.html:13
163
  #: views/subscribers/subscribers.html:61
164
  msgid "Lists"
165
  msgstr ""
@@ -197,7 +197,7 @@ msgstr ""
197
 
198
  #: lib/Config/Menu.php:187 lib/Newsletter/Shortcodes/ShortcodesHelper.php:32
199
  #: views/newsletter/templates/components/sidebar/styles.hbs:74
200
- #: views/newsletters.html:104
201
  msgid "Newsletter"
202
  msgstr ""
203
 
@@ -213,11 +213,11 @@ msgstr ""
213
  msgid "MailPoet"
214
  msgstr ""
215
 
216
- #: lib/Config/Populator.php:134
217
  msgid "My First List"
218
  msgstr ""
219
 
220
- #: lib/Config/Populator.php:136
221
  msgid "This list is automatically created when you install MailPoet"
222
  msgstr ""
223
 
@@ -975,7 +975,7 @@ msgid "Please specify a valid email address"
975
  msgstr ""
976
 
977
  #: lib/Form/Block/Base.php:18 views/form/editor.html:55
978
- #: views/newsletters.html:151
979
  msgid "Please select a list"
980
  msgstr ""
981
 
@@ -1031,62 +1031,62 @@ msgstr ""
1031
  msgid "Month (January, February,...)"
1032
  msgstr ""
1033
 
1034
- #: lib/Form/Block/Date.php:124 views/newsletters.html:173
1035
  #: views/subscribers/importExport/import.html:56
1036
  msgid "January"
1037
  msgstr ""
1038
 
1039
- #: lib/Form/Block/Date.php:124 views/newsletters.html:174
1040
  #: views/subscribers/importExport/import.html:57
1041
  msgid "February"
1042
  msgstr ""
1043
 
1044
- #: lib/Form/Block/Date.php:124 views/newsletters.html:175
1045
  #: views/subscribers/importExport/import.html:58
1046
  msgid "March"
1047
  msgstr ""
1048
 
1049
- #: lib/Form/Block/Date.php:124 views/newsletters.html:176
1050
  #: views/subscribers/importExport/import.html:59
1051
  msgid "April"
1052
  msgstr ""
1053
 
1054
- #: lib/Form/Block/Date.php:125 views/newsletters.html:177
1055
- #: views/newsletters.html:189 views/subscribers/importExport/import.html:60
1056
  msgid "May"
1057
  msgstr ""
1058
 
1059
- #: lib/Form/Block/Date.php:125 views/newsletters.html:178
1060
  #: views/subscribers/importExport/import.html:61
1061
  msgid "June"
1062
  msgstr ""
1063
 
1064
- #: lib/Form/Block/Date.php:125 views/newsletters.html:179
1065
  #: views/subscribers/importExport/import.html:62
1066
  msgid "July"
1067
  msgstr ""
1068
 
1069
- #: lib/Form/Block/Date.php:125 views/newsletters.html:180
1070
  #: views/subscribers/importExport/import.html:63
1071
  msgid "August"
1072
  msgstr ""
1073
 
1074
- #: lib/Form/Block/Date.php:125 views/newsletters.html:181
1075
  #: views/subscribers/importExport/import.html:64
1076
  msgid "September"
1077
  msgstr ""
1078
 
1079
- #: lib/Form/Block/Date.php:126 views/newsletters.html:182
1080
  #: views/subscribers/importExport/import.html:65
1081
  msgid "October"
1082
  msgstr ""
1083
 
1084
- #: lib/Form/Block/Date.php:126 views/newsletters.html:183
1085
  #: views/subscribers/importExport/import.html:66
1086
  msgid "November"
1087
  msgstr ""
1088
 
1089
- #: lib/Form/Block/Date.php:126 views/newsletters.html:184
1090
  #: views/subscribers/importExport/import.html:67
1091
  msgid "December"
1092
  msgstr ""
@@ -1119,26 +1119,39 @@ msgstr ""
1119
  msgid "Create a new form"
1120
  msgstr ""
1121
 
1122
- #: lib/Mailer/Mailer.php:95
1123
  msgid "Mailing method does not exist"
1124
  msgstr ""
1125
 
1126
- #: lib/Mailer/Mailer.php:103
1127
  msgid "Mailer is not configured"
1128
  msgstr ""
1129
 
1130
- #: lib/Mailer/Mailer.php:120
1131
  msgid "Sender name and email are not configured"
1132
  msgstr ""
1133
 
1134
- #: lib/Mailer/MailerLog.php:57
 
 
 
 
 
 
 
 
1135
  msgid "Sending frequency limit has been reached."
1136
  msgstr ""
1137
 
1138
- #: lib/Mailer/Methods/AmazonSES.php:31
1139
  msgid "Unsupported Amazon SES region."
1140
  msgstr ""
1141
 
 
 
 
 
 
1142
  #: lib/Models/CustomField.php:14 lib/Models/Form.php:13
1143
  #: lib/Models/NewsletterOptionField.php:12 lib/Models/NewsletterTemplate.php:13
1144
  #: lib/Models/Segment.php:13 lib/Models/Setting.php:22
@@ -1215,7 +1228,7 @@ msgstr ""
1215
  msgid "This lists containts all of your WordPress users"
1216
  msgstr ""
1217
 
1218
- #: lib/Models/Segment.php:217
1219
  msgid "Not in a List"
1220
  msgstr ""
1221
 
@@ -1655,7 +1668,7 @@ msgstr ""
1655
 
1656
  #: views/form/editor.html:195
1657
  #: views/newsletter/templates/components/sidebar/preview.hbs:2
1658
- #: views/newsletters.html:99 views/settings/basics.html:242
1659
  #: views/settings/basics.html:299 views/settings/signup.html:177
1660
  msgid "Preview"
1661
  msgstr ""
@@ -1821,7 +1834,7 @@ msgstr ""
1821
  msgid "Checkbox"
1822
  msgstr ""
1823
 
1824
- #: views/form/templates/settings/field_form.hbs:37 views/newsletters.html:98
1825
  #: views/subscribers/importExport/export.html:52
1826
  #: views/subscribers/importExport/export.html:63
1827
  #: views/subscribers/importExport/import/step1.html:95
@@ -2080,7 +2093,7 @@ msgstr ""
2080
  msgid "Form \"%$1s\" has been duplicated"
2081
  msgstr ""
2082
 
2083
- #: views/forms.html:57 views/newsletters.html:88 views/segments.html:48
2084
  #: views/subscribers/subscribers.html:88
2085
  msgid "Add New"
2086
  msgstr ""
@@ -2526,7 +2539,7 @@ msgid "Edit settings"
2526
  msgstr ""
2527
 
2528
  #: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
2529
- #: views/newsletters.html:97
2530
  msgid "Delete"
2531
  msgstr ""
2532
 
@@ -2735,8 +2748,8 @@ msgstr ""
2735
  msgid "Preview text (usually displayed underneath the subject line in the inbox"
2736
  msgstr ""
2737
 
2738
- #: views/newsletter/templates/components/save.hbs:5 views/newsletters.html:134
2739
- #: views/newsletters.html:211
2740
  msgid "Next"
2741
  msgstr ""
2742
 
@@ -2836,7 +2849,7 @@ msgstr ""
2836
  msgid "Current page"
2837
  msgstr ""
2838
 
2839
- #: views/newsletters.html:60 views/newsletters.html:102
2840
  msgid "Subject"
2841
  msgstr ""
2842
 
@@ -2920,467 +2933,495 @@ msgstr ""
2920
  msgid "Pause"
2921
  msgstr ""
2922
 
2923
- #: views/newsletters.html:90
2924
- msgid "This template file appears to be damaged. Please try another one."
2925
  msgstr ""
2926
 
2927
  #: views/newsletters.html:91
2928
- msgid "Import a template"
2929
  msgstr ""
2930
 
2931
  #: views/newsletters.html:92
2932
- msgid "Select a .json file to upload"
2933
  msgstr ""
2934
 
2935
  #: views/newsletters.html:93
2936
- msgid "Upload"
2937
  msgstr ""
2938
 
2939
  #: views/newsletters.html:94
2940
- msgid "MailPoet's Guide"
2941
  msgstr ""
2942
 
2943
  #: views/newsletters.html:95
2944
- msgid "This is the standard template that comes with MailPoet"
2945
  msgstr ""
2946
 
2947
  #: views/newsletters.html:96
 
 
 
 
2948
  msgid "You are about to delete the template named \"%$1s"
2949
  msgstr ""
2950
 
2951
- #: views/newsletters.html:100
2952
  msgid "Select a responsive template"
2953
  msgstr ""
2954
 
2955
- #: views/newsletters.html:103
2956
  msgid "Select type of email"
2957
  msgstr ""
2958
 
2959
- #: views/newsletters.html:105
2960
  msgid "Send a newsletter with images"
2961
  msgstr ""
2962
 
2963
- #: views/newsletters.html:106
2964
  msgid "Create"
2965
  msgstr ""
2966
 
2967
- #: views/newsletters.html:107
2968
  msgid "Welcome Email"
2969
  msgstr ""
2970
 
2971
- #: views/newsletters.html:108
2972
  msgid "Automatically send an email (or series of emails"
2973
  msgstr ""
2974
 
2975
- #: views/newsletters.html:109
2976
  msgid "Set up"
2977
  msgstr ""
2978
 
2979
- #: views/newsletters.html:110
2980
  msgid "Latest Post Notifications"
2981
  msgstr ""
2982
 
2983
- #: views/newsletters.html:111
2984
  msgid ""
2985
  "Let MailPoet email your subscribers with your latest content. You can send "
2986
  "daily"
2987
  msgstr ""
2988
 
2989
- #: views/newsletters.html:112
2990
  msgid "Select a frequency"
2991
  msgstr ""
2992
 
2993
- #: views/newsletters.html:113
2994
  msgid "Insert [newsletter:total] to show number of posts"
2995
  msgstr ""
2996
 
2997
- #: views/newsletters.html:114 views/settings/mta.html:640
2998
  msgid "Activate"
2999
  msgstr ""
3000
 
3001
- #: views/newsletters.html:115
3002
  msgid "Send this Welcome Email when..."
3003
  msgstr ""
3004
 
3005
- #: views/newsletters.html:117
3006
  msgid "Once a day at..."
3007
  msgstr ""
3008
 
3009
- #: views/newsletters.html:118
3010
  msgid "Weekly on..."
3011
  msgstr ""
3012
 
3013
- #: views/newsletters.html:119
3014
  msgid "Monthly on the..."
3015
  msgstr ""
3016
 
3017
- #: views/newsletters.html:120
3018
  msgid "Monthly every..."
3019
  msgstr ""
3020
 
3021
- #: views/newsletters.html:121
3022
  msgid "Immediately."
3023
  msgstr ""
3024
 
3025
- #: views/newsletters.html:122
3026
  msgid "Sunday"
3027
  msgstr ""
3028
 
3029
- #: views/newsletters.html:123
3030
  msgid "Monday"
3031
  msgstr ""
3032
 
3033
- #: views/newsletters.html:124
3034
  msgid "Tuesday"
3035
  msgstr ""
3036
 
3037
- #: views/newsletters.html:125
3038
  msgid "Wednesday"
3039
  msgstr ""
3040
 
3041
- #: views/newsletters.html:126
3042
  msgid "Thursday"
3043
  msgstr ""
3044
 
3045
- #: views/newsletters.html:127
3046
  msgid "Friday"
3047
  msgstr ""
3048
 
3049
- #: views/newsletters.html:128
3050
  msgid "Saturday"
3051
  msgstr ""
3052
 
3053
- #: views/newsletters.html:129
3054
  msgid "1st"
3055
  msgstr ""
3056
 
3057
- #: views/newsletters.html:130
3058
  msgid "2nd"
3059
  msgstr ""
3060
 
3061
- #: views/newsletters.html:131
3062
  msgid "3rd"
3063
  msgstr ""
3064
 
3065
- #: views/newsletters.html:132
3066
  msgid "%$1dth"
3067
  msgstr ""
3068
 
3069
- #: views/newsletters.html:133
3070
  msgid "last"
3071
  msgstr ""
3072
 
3073
- #: views/newsletters.html:136
3074
  msgid "When is this Welcome Email sent?"
3075
  msgstr ""
3076
 
3077
- #: views/newsletters.html:138
3078
  msgid "When someone subscribes to the list..."
3079
  msgstr ""
3080
 
3081
- #: views/newsletters.html:139
3082
  msgid "When a new WordPress user is added to your site..."
3083
  msgstr ""
3084
 
3085
- #: views/newsletters.html:140
3086
  msgid "immediately"
3087
  msgstr ""
3088
 
3089
- #: views/newsletters.html:141
3090
  msgid "hour(s"
3091
  msgstr ""
3092
 
3093
- #: views/newsletters.html:142
3094
  msgid "day(s"
3095
  msgstr ""
3096
 
3097
- #: views/newsletters.html:143
3098
  msgid "week(s"
3099
  msgstr ""
3100
 
3101
- #: views/newsletters.html:145
3102
  msgid "Subject line"
3103
  msgstr ""
3104
 
3105
- #: views/newsletters.html:146
3106
  msgid ""
3107
  "Be creative! It's the first thing that your subscribers see. Tempt them to "
3108
  "open your email."
3109
  msgstr ""
3110
 
3111
- #: views/newsletters.html:147
3112
  msgid "Please specify a subject"
3113
  msgstr ""
3114
 
3115
- #: views/newsletters.html:149
3116
  msgid "This subscriber segment will be used for this email."
3117
  msgstr ""
3118
 
3119
- #: views/newsletters.html:150 views/subscribers/subscribers.html:54
3120
  msgid "Select a list"
3121
  msgstr ""
3122
 
3123
- #: views/newsletters.html:152
3124
  msgid "Sender"
3125
  msgstr ""
3126
 
3127
- #: views/newsletters.html:153
3128
  msgid "Your name and email."
3129
  msgstr ""
3130
 
3131
- #: views/newsletters.html:154 views/newsletters.html:158
3132
  msgid "John Doe"
3133
  msgstr ""
3134
 
3135
- #: views/newsletters.html:155 views/newsletters.html:159
3136
  msgid "john.doe@email.com"
3137
  msgstr ""
3138
 
3139
- #: views/newsletters.html:156 views/settings/basics.html:29
3140
  #: views/settings/signup.html:85
3141
  msgid "Reply-to"
3142
  msgstr ""
3143
 
3144
- #: views/newsletters.html:157
3145
  msgid "When your subscribers reply to your newsletter"
3146
  msgstr ""
3147
 
3148
- #: views/newsletters.html:160
3149
  msgid "Newsletter was updated successfully!"
3150
  msgstr ""
3151
 
3152
- #: views/newsletters.html:161
3153
  msgid "Newsletter was added successfully!"
3154
  msgstr ""
3155
 
3156
- #: views/newsletters.html:162
3157
  msgid ""
3158
  "An error occurred while trying to send. <a href=\"%$1s\">Please check your "
3159
  "settings</a>"
3160
  msgstr ""
3161
 
3162
- #: views/newsletters.html:163
3163
  msgid "Final Step: Last Details"
3164
  msgstr ""
3165
 
3166
- #: views/newsletters.html:164
3167
  msgid "Save as draft and close"
3168
  msgstr ""
3169
 
3170
- #: views/newsletters.html:165
3171
  msgid "or simply"
3172
  msgstr ""
3173
 
3174
- #: views/newsletters.html:166
3175
  msgid "go back to the Design page"
3176
  msgstr ""
3177
 
3178
- #: views/newsletters.html:167
3179
  msgid "Your website’s time is"
3180
  msgstr ""
3181
 
3182
- #: views/newsletters.html:168
3183
  msgid "Please enter the scheduled date"
3184
  msgstr ""
3185
 
3186
- #: views/newsletters.html:169
3187
  msgid "Schedule"
3188
  msgstr ""
3189
 
3190
- #: views/newsletters.html:171
3191
  msgid "Close"
3192
  msgstr ""
3193
 
3194
- #: views/newsletters.html:172
3195
  msgid "Today"
3196
  msgstr ""
3197
 
3198
- #: views/newsletters.html:185
3199
  msgid "Jan"
3200
  msgstr ""
3201
 
3202
- #: views/newsletters.html:186
3203
  msgid "Feb"
3204
  msgstr ""
3205
 
3206
- #: views/newsletters.html:187
3207
  msgid "Mar"
3208
  msgstr ""
3209
 
3210
- #: views/newsletters.html:188
3211
  msgid "Apr"
3212
  msgstr ""
3213
 
3214
- #: views/newsletters.html:190
3215
  msgid "Jun"
3216
  msgstr ""
3217
 
3218
- #: views/newsletters.html:191
3219
  msgid "Jul"
3220
  msgstr ""
3221
 
3222
- #: views/newsletters.html:192
3223
  msgid "Aug"
3224
  msgstr ""
3225
 
3226
- #: views/newsletters.html:193
3227
  msgid "Sep"
3228
  msgstr ""
3229
 
3230
- #: views/newsletters.html:194
3231
  msgid "Oct"
3232
  msgstr ""
3233
 
3234
- #: views/newsletters.html:195
3235
  msgid "Nov"
3236
  msgstr ""
3237
 
3238
- #: views/newsletters.html:196
3239
  msgid "Dec"
3240
  msgstr ""
3241
 
3242
- #: views/newsletters.html:197
3243
  msgid "Sun"
3244
  msgstr ""
3245
 
3246
- #: views/newsletters.html:198
3247
  msgid "Mon"
3248
  msgstr ""
3249
 
3250
- #: views/newsletters.html:199
3251
  msgid "Tue"
3252
  msgstr ""
3253
 
3254
- #: views/newsletters.html:200
3255
  msgid "Wed"
3256
  msgstr ""
3257
 
3258
- #: views/newsletters.html:201
3259
  msgid "Thu"
3260
  msgstr ""
3261
 
3262
- #: views/newsletters.html:202
3263
  msgid "Fri"
3264
  msgstr ""
3265
 
3266
- #: views/newsletters.html:203
3267
  msgid "Sat"
3268
  msgstr ""
3269
 
3270
- #: views/newsletters.html:204 views/newsletters.html:210
3271
  msgid "S"
3272
  msgstr ""
3273
 
3274
- #: views/newsletters.html:205
3275
  msgid "M"
3276
  msgstr ""
3277
 
3278
- #: views/newsletters.html:206 views/newsletters.html:208
3279
  msgid "T"
3280
  msgstr ""
3281
 
3282
- #: views/newsletters.html:207
3283
  msgid "W"
3284
  msgstr ""
3285
 
3286
- #: views/newsletters.html:209
3287
  msgid "F"
3288
  msgstr ""
3289
 
3290
- #: views/newsletters.html:212
3291
  msgid "Previous"
3292
  msgstr ""
3293
 
3294
- #: views/newsletters.html:213
3295
  msgid "The newsletter is being sent..."
3296
  msgstr ""
3297
 
3298
- #: views/newsletters.html:214
3299
  msgid "The newsletter has been scheduled."
3300
  msgstr ""
3301
 
3302
- #: views/newsletters.html:215
3303
  msgid "Your Welcome Email is now activated!"
3304
  msgstr ""
3305
 
3306
- #: views/newsletters.html:216
3307
  msgid "Your Welcome Email could not be activated"
3308
  msgstr ""
3309
 
3310
- #: views/newsletters.html:217
3311
  msgid "Your post notification is now active!"
3312
  msgstr ""
3313
 
3314
- #: views/newsletters.html:218
3315
  msgid "Your post notification could not be activated"
3316
  msgstr ""
3317
 
3318
- #: views/newsletters.html:219
3319
  msgid "This newsletter is sent when someone subscribes to the list: \"%$1s"
3320
  msgstr ""
3321
 
3322
- #: views/newsletters.html:220
3323
  msgid "This newsletter is sent when a new WordPress user is added to your site"
3324
  msgstr ""
3325
 
3326
- #: views/newsletters.html:221
3327
  msgid ""
3328
  "This newsletter is sent when a new WordPress user with the role \"%$1s\" is "
3329
  "added to your site"
3330
  msgstr ""
3331
 
3332
- #: views/newsletters.html:222
3333
  msgid "%$1d hour(s"
3334
  msgstr ""
3335
 
3336
- #: views/newsletters.html:223
3337
  msgid "%$1d day(s"
3338
  msgstr ""
3339
 
3340
- #: views/newsletters.html:224
3341
  msgid "%$1d week(s"
3342
  msgstr ""
3343
 
3344
- #: views/newsletters.html:225
3345
  msgid "Send daily at %$1s"
3346
  msgstr ""
3347
 
3348
- #: views/newsletters.html:226
3349
  msgid "Send weekly on %$1s at %$2s"
3350
  msgstr ""
3351
 
3352
- #: views/newsletters.html:227
3353
  msgid "Send monthly on the %$1s at %$2s"
3354
  msgstr ""
3355
 
3356
- #: views/newsletters.html:228
3357
  msgid "Send every %$1s %$2s of the month at %$3s"
3358
  msgstr ""
3359
 
3360
- #: views/newsletters.html:229
3361
  msgid "Send immediately"
3362
  msgstr ""
3363
 
3364
- #: views/newsletters.html:230
3365
  msgid "if there's new content to %$1s."
3366
  msgstr ""
3367
 
3368
- #: views/newsletters.html:231
3369
  msgid "You need to select a list to send to."
3370
  msgstr ""
3371
 
3372
- #: views/newsletters.html:233
3373
  msgid "Back to Post notifications"
3374
  msgstr ""
3375
 
3376
- #: views/newsletters.html:234
3377
  msgid "Sent on"
3378
  msgstr ""
3379
 
3380
- #: views/newsletters.html:235
3381
  msgid "No subscribers!"
3382
  msgstr ""
3383
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3384
  #: views/segments.html:15
3385
  msgid "Loading lists..."
3386
  msgstr ""
@@ -4410,11 +4451,11 @@ msgstr ""
4410
  msgid "List of Changes"
4411
  msgstr ""
4412
 
4413
- #: views/update.html:57 views/welcome.html:76
4414
  msgid "Awesome! Now"
4415
  msgstr ""
4416
 
4417
- #: views/update.html:57
4418
  msgid "View all changes"
4419
  msgstr ""
4420
 
4
  msgstr ""
5
  "Project-Id-Version: \n"
6
  "Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
7
+ "POT-Creation-Date: 2016-12-06 12:26:49+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
74
  msgid "Check your inbox or spam folder to confirm your subscription."
75
  msgstr ""
76
 
77
+ #: lib/API/Endpoints/Forms.php:259 lib/API/Endpoints/Newsletters.php:188
78
  #: lib/API/Endpoints/Segments.php:121
79
  msgid "Copy of %s"
80
  msgstr ""
81
 
82
+ #: lib/API/Endpoints/Mailer.php:26 lib/API/Endpoints/Newsletters.php:283
83
+ msgid "The email could not be sent: %s"
84
  msgstr ""
85
 
86
  #: lib/API/Endpoints/NewsletterTemplates.php:16
88
  msgid "This template does not exist."
89
  msgstr ""
90
 
91
+ #: lib/API/Endpoints/Newsletters.php:28 lib/API/Endpoints/Newsletters.php:117
92
+ #: lib/API/Endpoints/Newsletters.php:138 lib/API/Endpoints/Newsletters.php:154
93
+ #: lib/API/Endpoints/Newsletters.php:170 lib/API/Endpoints/Newsletters.php:184
94
+ #: lib/API/Endpoints/Newsletters.php:216 lib/API/Endpoints/Newsletters.php:245
95
  #: lib/API/Endpoints/SendingQueue.php:32 lib/API/Endpoints/SendingQueue.php:122
96
  #: lib/API/Endpoints/SendingQueue.php:148
97
  msgid "This newsletter does not exist."
98
  msgstr ""
99
 
100
+ #: lib/API/Endpoints/Newsletters.php:108
101
  msgid "You need to specify a status."
102
  msgstr ""
103
 
104
+ #: lib/API/Endpoints/Newsletters.php:207
105
  msgid "Newsletter data is missing."
106
  msgstr ""
107
 
108
+ #: lib/API/Endpoints/Newsletters.php:236
109
  msgid "Please specify receiver information."
110
  msgstr ""
111
 
159
  msgstr ""
160
 
161
  #: lib/Config/Menu.php:114 lib/Config/Menu.php:115 views/forms.html:43
162
+ #: views/newsletters.html:63 views/newsletters.html:149 views/segments.html:13
163
  #: views/subscribers/subscribers.html:61
164
  msgid "Lists"
165
  msgstr ""
197
 
198
  #: lib/Config/Menu.php:187 lib/Newsletter/Shortcodes/ShortcodesHelper.php:32
199
  #: views/newsletter/templates/components/sidebar/styles.hbs:74
200
+ #: views/newsletters.html:105
201
  msgid "Newsletter"
202
  msgstr ""
203
 
213
  msgid "MailPoet"
214
  msgstr ""
215
 
216
+ #: lib/Config/Populator.php:139
217
  msgid "My First List"
218
  msgstr ""
219
 
220
+ #: lib/Config/Populator.php:141
221
  msgid "This list is automatically created when you install MailPoet"
222
  msgstr ""
223
 
975
  msgstr ""
976
 
977
  #: lib/Form/Block/Base.php:18 views/form/editor.html:55
978
+ #: views/newsletters.html:152
979
  msgid "Please select a list"
980
  msgstr ""
981
 
1031
  msgid "Month (January, February,...)"
1032
  msgstr ""
1033
 
1034
+ #: lib/Form/Block/Date.php:124 views/newsletters.html:174
1035
  #: views/subscribers/importExport/import.html:56
1036
  msgid "January"
1037
  msgstr ""
1038
 
1039
+ #: lib/Form/Block/Date.php:124 views/newsletters.html:175
1040
  #: views/subscribers/importExport/import.html:57
1041
  msgid "February"
1042
  msgstr ""
1043
 
1044
+ #: lib/Form/Block/Date.php:124 views/newsletters.html:176
1045
  #: views/subscribers/importExport/import.html:58
1046
  msgid "March"
1047
  msgstr ""
1048
 
1049
+ #: lib/Form/Block/Date.php:124 views/newsletters.html:177
1050
  #: views/subscribers/importExport/import.html:59
1051
  msgid "April"
1052
  msgstr ""
1053
 
1054
+ #: lib/Form/Block/Date.php:125 views/newsletters.html:178
1055
+ #: views/newsletters.html:190 views/subscribers/importExport/import.html:60
1056
  msgid "May"
1057
  msgstr ""
1058
 
1059
+ #: lib/Form/Block/Date.php:125 views/newsletters.html:179
1060
  #: views/subscribers/importExport/import.html:61
1061
  msgid "June"
1062
  msgstr ""
1063
 
1064
+ #: lib/Form/Block/Date.php:125 views/newsletters.html:180
1065
  #: views/subscribers/importExport/import.html:62
1066
  msgid "July"
1067
  msgstr ""
1068
 
1069
+ #: lib/Form/Block/Date.php:125 views/newsletters.html:181
1070
  #: views/subscribers/importExport/import.html:63
1071
  msgid "August"
1072
  msgstr ""
1073
 
1074
+ #: lib/Form/Block/Date.php:125 views/newsletters.html:182
1075
  #: views/subscribers/importExport/import.html:64
1076
  msgid "September"
1077
  msgstr ""
1078
 
1079
+ #: lib/Form/Block/Date.php:126 views/newsletters.html:183
1080
  #: views/subscribers/importExport/import.html:65
1081
  msgid "October"
1082
  msgstr ""
1083
 
1084
+ #: lib/Form/Block/Date.php:126 views/newsletters.html:184
1085
  #: views/subscribers/importExport/import.html:66
1086
  msgid "November"
1087
  msgstr ""
1088
 
1089
+ #: lib/Form/Block/Date.php:126 views/newsletters.html:185
1090
  #: views/subscribers/importExport/import.html:67
1091
  msgid "December"
1092
  msgstr ""
1119
  msgid "Create a new form"
1120
  msgstr ""
1121
 
1122
+ #: lib/Mailer/Mailer.php:78
1123
  msgid "Mailing method does not exist"
1124
  msgstr ""
1125
 
1126
+ #: lib/Mailer/Mailer.php:86
1127
  msgid "Mailer is not configured"
1128
  msgstr ""
1129
 
1130
+ #: lib/Mailer/Mailer.php:103
1131
  msgid "Sender name and email are not configured"
1132
  msgstr ""
1133
 
1134
+ #: lib/Mailer/MailerLog.php:51
1135
+ msgid "Sending has been paused."
1136
+ msgstr ""
1137
+
1138
+ #: lib/Mailer/MailerLog.php:55
1139
+ msgid "Sending is waiting to be retried."
1140
+ msgstr ""
1141
+
1142
+ #: lib/Mailer/MailerLog.php:63
1143
  msgid "Sending frequency limit has been reached."
1144
  msgstr ""
1145
 
1146
+ #: lib/Mailer/Methods/AmazonSES.php:33
1147
  msgid "Unsupported Amazon SES region."
1148
  msgstr ""
1149
 
1150
+ #: lib/Mailer/Methods/AmazonSES.php:60 lib/Mailer/Methods/PHPMail.php:29
1151
+ #: lib/Mailer/Methods/SMTP.php:43 lib/Mailer/Methods/SendGrid.php:32
1152
+ msgid "%s has returned an unknown error."
1153
+ msgstr ""
1154
+
1155
  #: lib/Models/CustomField.php:14 lib/Models/Form.php:13
1156
  #: lib/Models/NewsletterOptionField.php:12 lib/Models/NewsletterTemplate.php:13
1157
  #: lib/Models/Segment.php:13 lib/Models/Setting.php:22
1228
  msgid "This lists containts all of your WordPress users"
1229
  msgstr ""
1230
 
1231
+ #: lib/Models/Segment.php:193
1232
  msgid "Not in a List"
1233
  msgstr ""
1234
 
1668
 
1669
  #: views/form/editor.html:195
1670
  #: views/newsletter/templates/components/sidebar/preview.hbs:2
1671
+ #: views/newsletters.html:100 views/settings/basics.html:242
1672
  #: views/settings/basics.html:299 views/settings/signup.html:177
1673
  msgid "Preview"
1674
  msgstr ""
1834
  msgid "Checkbox"
1835
  msgstr ""
1836
 
1837
+ #: views/form/templates/settings/field_form.hbs:37 views/newsletters.html:99
1838
  #: views/subscribers/importExport/export.html:52
1839
  #: views/subscribers/importExport/export.html:63
1840
  #: views/subscribers/importExport/import/step1.html:95
2093
  msgid "Form \"%$1s\" has been duplicated"
2094
  msgstr ""
2095
 
2096
+ #: views/forms.html:57 views/newsletters.html:89 views/segments.html:48
2097
  #: views/subscribers/subscribers.html:88
2098
  msgid "Add New"
2099
  msgstr ""
2539
  msgstr ""
2540
 
2541
  #: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
2542
+ #: views/newsletters.html:98
2543
  msgid "Delete"
2544
  msgstr ""
2545
 
2748
  msgid "Preview text (usually displayed underneath the subject line in the inbox"
2749
  msgstr ""
2750
 
2751
+ #: views/newsletter/templates/components/save.hbs:5 views/newsletters.html:135
2752
+ #: views/newsletters.html:212
2753
  msgid "Next"
2754
  msgstr ""
2755
 
2849
  msgid "Current page"
2850
  msgstr ""
2851
 
2852
+ #: views/newsletters.html:60 views/newsletters.html:103
2853
  msgid "Subject"
2854
  msgstr ""
2855
 
2933
  msgid "Pause"
2934
  msgstr ""
2935
 
2936
+ #: views/newsletters.html:88
2937
+ msgid "Paused"
2938
  msgstr ""
2939
 
2940
  #: views/newsletters.html:91
2941
+ msgid "This template file appears to be damaged. Please try another one."
2942
  msgstr ""
2943
 
2944
  #: views/newsletters.html:92
2945
+ msgid "Import a template"
2946
  msgstr ""
2947
 
2948
  #: views/newsletters.html:93
2949
+ msgid "Select a .json file to upload"
2950
  msgstr ""
2951
 
2952
  #: views/newsletters.html:94
2953
+ msgid "Upload"
2954
  msgstr ""
2955
 
2956
  #: views/newsletters.html:95
2957
+ msgid "MailPoet's Guide"
2958
  msgstr ""
2959
 
2960
  #: views/newsletters.html:96
2961
+ msgid "This is the standard template that comes with MailPoet"
2962
+ msgstr ""
2963
+
2964
+ #: views/newsletters.html:97
2965
  msgid "You are about to delete the template named \"%$1s"
2966
  msgstr ""
2967
 
2968
+ #: views/newsletters.html:101
2969
  msgid "Select a responsive template"
2970
  msgstr ""
2971
 
2972
+ #: views/newsletters.html:104
2973
  msgid "Select type of email"
2974
  msgstr ""
2975
 
2976
+ #: views/newsletters.html:106
2977
  msgid "Send a newsletter with images"
2978
  msgstr ""
2979
 
2980
+ #: views/newsletters.html:107
2981
  msgid "Create"
2982
  msgstr ""
2983
 
2984
+ #: views/newsletters.html:108
2985
  msgid "Welcome Email"
2986
  msgstr ""
2987
 
2988
+ #: views/newsletters.html:109
2989
  msgid "Automatically send an email (or series of emails"
2990
  msgstr ""
2991
 
2992
+ #: views/newsletters.html:110
2993
  msgid "Set up"
2994
  msgstr ""
2995
 
2996
+ #: views/newsletters.html:111
2997
  msgid "Latest Post Notifications"
2998
  msgstr ""
2999
 
3000
+ #: views/newsletters.html:112
3001
  msgid ""
3002
  "Let MailPoet email your subscribers with your latest content. You can send "
3003
  "daily"
3004
  msgstr ""
3005
 
3006
+ #: views/newsletters.html:113
3007
  msgid "Select a frequency"
3008
  msgstr ""
3009
 
3010
+ #: views/newsletters.html:114
3011
  msgid "Insert [newsletter:total] to show number of posts"
3012
  msgstr ""
3013
 
3014
+ #: views/newsletters.html:115 views/settings/mta.html:640
3015
  msgid "Activate"
3016
  msgstr ""
3017
 
3018
+ #: views/newsletters.html:116
3019
  msgid "Send this Welcome Email when..."
3020
  msgstr ""
3021
 
3022
+ #: views/newsletters.html:118
3023
  msgid "Once a day at..."
3024
  msgstr ""
3025
 
3026
+ #: views/newsletters.html:119
3027
  msgid "Weekly on..."
3028
  msgstr ""
3029
 
3030
+ #: views/newsletters.html:120
3031
  msgid "Monthly on the..."
3032
  msgstr ""
3033
 
3034
+ #: views/newsletters.html:121
3035
  msgid "Monthly every..."
3036
  msgstr ""
3037
 
3038
+ #: views/newsletters.html:122
3039
  msgid "Immediately."
3040
  msgstr ""
3041
 
3042
+ #: views/newsletters.html:123
3043
  msgid "Sunday"
3044
  msgstr ""
3045
 
3046
+ #: views/newsletters.html:124
3047
  msgid "Monday"
3048
  msgstr ""
3049
 
3050
+ #: views/newsletters.html:125
3051
  msgid "Tuesday"
3052
  msgstr ""
3053
 
3054
+ #: views/newsletters.html:126
3055
  msgid "Wednesday"
3056
  msgstr ""
3057
 
3058
+ #: views/newsletters.html:127
3059
  msgid "Thursday"
3060
  msgstr ""
3061
 
3062
+ #: views/newsletters.html:128
3063
  msgid "Friday"
3064
  msgstr ""
3065
 
3066
+ #: views/newsletters.html:129
3067
  msgid "Saturday"
3068
  msgstr ""
3069
 
3070
+ #: views/newsletters.html:130
3071
  msgid "1st"
3072
  msgstr ""
3073
 
3074
+ #: views/newsletters.html:131
3075
  msgid "2nd"
3076
  msgstr ""
3077
 
3078
+ #: views/newsletters.html:132
3079
  msgid "3rd"
3080
  msgstr ""
3081
 
3082
+ #: views/newsletters.html:133
3083
  msgid "%$1dth"
3084
  msgstr ""
3085
 
3086
+ #: views/newsletters.html:134
3087
  msgid "last"
3088
  msgstr ""
3089
 
3090
+ #: views/newsletters.html:137
3091
  msgid "When is this Welcome Email sent?"
3092
  msgstr ""
3093
 
3094
+ #: views/newsletters.html:139
3095
  msgid "When someone subscribes to the list..."
3096
  msgstr ""
3097
 
3098
+ #: views/newsletters.html:140
3099
  msgid "When a new WordPress user is added to your site..."
3100
  msgstr ""
3101
 
3102
+ #: views/newsletters.html:141
3103
  msgid "immediately"
3104
  msgstr ""
3105
 
3106
+ #: views/newsletters.html:142
3107
  msgid "hour(s"
3108
  msgstr ""
3109
 
3110
+ #: views/newsletters.html:143
3111
  msgid "day(s"
3112
  msgstr ""
3113
 
3114
+ #: views/newsletters.html:144
3115
  msgid "week(s"
3116
  msgstr ""
3117
 
3118
+ #: views/newsletters.html:146
3119
  msgid "Subject line"
3120
  msgstr ""
3121
 
3122
+ #: views/newsletters.html:147
3123
  msgid ""
3124
  "Be creative! It's the first thing that your subscribers see. Tempt them to "
3125
  "open your email."
3126
  msgstr ""
3127
 
3128
+ #: views/newsletters.html:148
3129
  msgid "Please specify a subject"
3130
  msgstr ""
3131
 
3132
+ #: views/newsletters.html:150
3133
  msgid "This subscriber segment will be used for this email."
3134
  msgstr ""
3135
 
3136
+ #: views/newsletters.html:151 views/subscribers/subscribers.html:54
3137
  msgid "Select a list"
3138
  msgstr ""
3139
 
3140
+ #: views/newsletters.html:153
3141
  msgid "Sender"
3142
  msgstr ""
3143
 
3144
+ #: views/newsletters.html:154
3145
  msgid "Your name and email."
3146
  msgstr ""
3147
 
3148
+ #: views/newsletters.html:155 views/newsletters.html:159
3149
  msgid "John Doe"
3150
  msgstr ""
3151
 
3152
+ #: views/newsletters.html:156 views/newsletters.html:160
3153
  msgid "john.doe@email.com"
3154
  msgstr ""
3155
 
3156
+ #: views/newsletters.html:157 views/settings/basics.html:29
3157
  #: views/settings/signup.html:85
3158
  msgid "Reply-to"
3159
  msgstr ""
3160
 
3161
+ #: views/newsletters.html:158
3162
  msgid "When your subscribers reply to your newsletter"
3163
  msgstr ""
3164
 
3165
+ #: views/newsletters.html:161
3166
  msgid "Newsletter was updated successfully!"
3167
  msgstr ""
3168
 
3169
+ #: views/newsletters.html:162
3170
  msgid "Newsletter was added successfully!"
3171
  msgstr ""
3172
 
3173
+ #: views/newsletters.html:163
3174
  msgid ""
3175
  "An error occurred while trying to send. <a href=\"%$1s\">Please check your "
3176
  "settings</a>"
3177
  msgstr ""
3178
 
3179
+ #: views/newsletters.html:164
3180
  msgid "Final Step: Last Details"
3181
  msgstr ""
3182
 
3183
+ #: views/newsletters.html:165
3184
  msgid "Save as draft and close"
3185
  msgstr ""
3186
 
3187
+ #: views/newsletters.html:166
3188
  msgid "or simply"
3189
  msgstr ""
3190
 
3191
+ #: views/newsletters.html:167
3192
  msgid "go back to the Design page"
3193
  msgstr ""
3194
 
3195
+ #: views/newsletters.html:168
3196
  msgid "Your website’s time is"
3197
  msgstr ""
3198
 
3199
+ #: views/newsletters.html:169
3200
  msgid "Please enter the scheduled date"
3201
  msgstr ""
3202
 
3203
+ #: views/newsletters.html:170
3204
  msgid "Schedule"
3205
  msgstr ""
3206
 
3207
+ #: views/newsletters.html:172
3208
  msgid "Close"
3209
  msgstr ""
3210
 
3211
+ #: views/newsletters.html:173
3212
  msgid "Today"
3213
  msgstr ""
3214
 
3215
+ #: views/newsletters.html:186
3216
  msgid "Jan"
3217
  msgstr ""
3218
 
3219
+ #: views/newsletters.html:187
3220
  msgid "Feb"
3221
  msgstr ""
3222
 
3223
+ #: views/newsletters.html:188
3224
  msgid "Mar"
3225
  msgstr ""
3226
 
3227
+ #: views/newsletters.html:189
3228
  msgid "Apr"
3229
  msgstr ""
3230
 
3231
+ #: views/newsletters.html:191
3232
  msgid "Jun"
3233
  msgstr ""
3234
 
3235
+ #: views/newsletters.html:192
3236
  msgid "Jul"
3237
  msgstr ""
3238
 
3239
+ #: views/newsletters.html:193
3240
  msgid "Aug"
3241
  msgstr ""
3242
 
3243
+ #: views/newsletters.html:194
3244
  msgid "Sep"
3245
  msgstr ""
3246
 
3247
+ #: views/newsletters.html:195
3248
  msgid "Oct"
3249
  msgstr ""
3250
 
3251
+ #: views/newsletters.html:196
3252
  msgid "Nov"
3253
  msgstr ""
3254
 
3255
+ #: views/newsletters.html:197
3256
  msgid "Dec"
3257
  msgstr ""
3258
 
3259
+ #: views/newsletters.html:198
3260
  msgid "Sun"
3261
  msgstr ""
3262
 
3263
+ #: views/newsletters.html:199
3264
  msgid "Mon"
3265
  msgstr ""
3266
 
3267
+ #: views/newsletters.html:200
3268
  msgid "Tue"
3269
  msgstr ""
3270
 
3271
+ #: views/newsletters.html:201
3272
  msgid "Wed"
3273
  msgstr ""
3274
 
3275
+ #: views/newsletters.html:202
3276
  msgid "Thu"
3277
  msgstr ""
3278
 
3279
+ #: views/newsletters.html:203
3280
  msgid "Fri"
3281
  msgstr ""
3282
 
3283
+ #: views/newsletters.html:204
3284
  msgid "Sat"
3285
  msgstr ""
3286
 
3287
+ #: views/newsletters.html:205 views/newsletters.html:211
3288
  msgid "S"
3289
  msgstr ""
3290
 
3291
+ #: views/newsletters.html:206
3292
  msgid "M"
3293
  msgstr ""
3294
 
3295
+ #: views/newsletters.html:207 views/newsletters.html:209
3296
  msgid "T"
3297
  msgstr ""
3298
 
3299
+ #: views/newsletters.html:208
3300
  msgid "W"
3301
  msgstr ""
3302
 
3303
+ #: views/newsletters.html:210
3304
  msgid "F"
3305
  msgstr ""
3306
 
3307
+ #: views/newsletters.html:213
3308
  msgid "Previous"
3309
  msgstr ""
3310
 
3311
+ #: views/newsletters.html:214
3312
  msgid "The newsletter is being sent..."
3313
  msgstr ""
3314
 
3315
+ #: views/newsletters.html:215
3316
  msgid "The newsletter has been scheduled."
3317
  msgstr ""
3318
 
3319
+ #: views/newsletters.html:216
3320
  msgid "Your Welcome Email is now activated!"
3321
  msgstr ""
3322
 
3323
+ #: views/newsletters.html:217
3324
  msgid "Your Welcome Email could not be activated"
3325
  msgstr ""
3326
 
3327
+ #: views/newsletters.html:218
3328
  msgid "Your post notification is now active!"
3329
  msgstr ""
3330
 
3331
+ #: views/newsletters.html:219
3332
  msgid "Your post notification could not be activated"
3333
  msgstr ""
3334
 
3335
+ #: views/newsletters.html:220
3336
  msgid "This newsletter is sent when someone subscribes to the list: \"%$1s"
3337
  msgstr ""
3338
 
3339
+ #: views/newsletters.html:221
3340
  msgid "This newsletter is sent when a new WordPress user is added to your site"
3341
  msgstr ""
3342
 
3343
+ #: views/newsletters.html:222
3344
  msgid ""
3345
  "This newsletter is sent when a new WordPress user with the role \"%$1s\" is "
3346
  "added to your site"
3347
  msgstr ""
3348
 
3349
+ #: views/newsletters.html:223
3350
  msgid "%$1d hour(s"
3351
  msgstr ""
3352
 
3353
+ #: views/newsletters.html:224
3354
  msgid "%$1d day(s"
3355
  msgstr ""
3356
 
3357
+ #: views/newsletters.html:225
3358
  msgid "%$1d week(s"
3359
  msgstr ""
3360
 
3361
+ #: views/newsletters.html:226
3362
  msgid "Send daily at %$1s"
3363
  msgstr ""
3364
 
3365
+ #: views/newsletters.html:227
3366
  msgid "Send weekly on %$1s at %$2s"
3367
  msgstr ""
3368
 
3369
+ #: views/newsletters.html:228
3370
  msgid "Send monthly on the %$1s at %$2s"
3371
  msgstr ""
3372
 
3373
+ #: views/newsletters.html:229
3374
  msgid "Send every %$1s %$2s of the month at %$3s"
3375
  msgstr ""
3376
 
3377
+ #: views/newsletters.html:230
3378
  msgid "Send immediately"
3379
  msgstr ""
3380
 
3381
+ #: views/newsletters.html:231
3382
  msgid "if there's new content to %$1s."
3383
  msgstr ""
3384
 
3385
+ #: views/newsletters.html:232
3386
  msgid "You need to select a list to send to."
3387
  msgstr ""
3388
 
3389
+ #: views/newsletters.html:234
3390
  msgid "Back to Post notifications"
3391
  msgstr ""
3392
 
3393
+ #: views/newsletters.html:235
3394
  msgid "Sent on"
3395
  msgstr ""
3396
 
3397
+ #: views/newsletters.html:236
3398
  msgid "No subscribers!"
3399
  msgstr ""
3400
 
3401
+ #: views/newsletters.html:238
3402
+ msgid ""
3403
+ "Sending is paused because %$1s prevents MailPoet from delivering emails "
3404
+ "with the following error: %$2s"
3405
+ msgstr ""
3406
+
3407
+ #: views/newsletters.html:239
3408
+ msgid ""
3409
+ "Sending is paused because the following connection issue prevents MailPoet "
3410
+ "from delivering emails: %$1s"
3411
+ msgstr ""
3412
+
3413
+ #: views/newsletters.html:240
3414
+ msgid "Check your [link]sending method settings[/link]."
3415
+ msgstr ""
3416
+
3417
+ #: views/newsletters.html:241
3418
+ msgid "Resume sending"
3419
+ msgstr ""
3420
+
3421
+ #: views/newsletters.html:242
3422
+ msgid "Sending has been resumed."
3423
+ msgstr ""
3424
+
3425
  #: views/segments.html:15
3426
  msgid "Loading lists..."
3427
  msgstr ""
4451
  msgid "List of Changes"
4452
  msgstr ""
4453
 
4454
+ #: views/update.html:56 views/welcome.html:76
4455
  msgid "Awesome! Now"
4456
  msgstr ""
4457
 
4458
+ #: views/update.html:56
4459
  msgid "View all changes"
4460
  msgstr ""
4461
 
lib/API/Endpoints/Mailer.php CHANGED
@@ -2,6 +2,7 @@
2
  namespace MailPoet\API\Endpoints;
3
  use MailPoet\API\Endpoint as APIEndpoint;
4
  use MailPoet\API\Error as APIError;
 
5
 
6
  if(!defined('ABSPATH')) exit;
7
 
@@ -20,12 +21,19 @@ class Mailer extends APIEndpoint {
20
  ));
21
  }
22
 
23
- if($result === false) {
24
- return $this->errorResponse(array(
25
- APIError::BAD_REQUEST => __("The email could not be sent. Please check your settings.", 'mailpoet')
26
- ));
 
 
27
  } else {
28
  return $this->successResponse(null);
29
  }
30
  }
 
 
 
 
 
31
  }
2
  namespace MailPoet\API\Endpoints;
3
  use MailPoet\API\Endpoint as APIEndpoint;
4
  use MailPoet\API\Error as APIError;
5
+ use MailPoet\Mailer\MailerLog;
6
 
7
  if(!defined('ABSPATH')) exit;
8
 
21
  ));
22
  }
23
 
24
+ if($result['response'] === false) {
25
+ $error = sprintf(
26
+ __('The email could not be sent: %s', 'mailpoet'),
27
+ $result['error_message']
28
+ );
29
+ return $this->errorResponse(array(APIError::BAD_REQUEST => $error));
30
  } else {
31
  return $this->successResponse(null);
32
  }
33
  }
34
+
35
+ function resumeSending() {
36
+ MailerLog::resumeSending();
37
+ return $this->successResponse(null);
38
+ }
39
  }
lib/API/Endpoints/Newsletters.php CHANGED
@@ -4,6 +4,7 @@ namespace MailPoet\API\Endpoints;
4
  use MailPoet\API\Endpoint as APIEndpoint;
5
  use MailPoet\API\Error as APIError;
6
  use MailPoet\Listing;
 
7
  use MailPoet\Models\Newsletter;
8
  use MailPoet\Models\NewsletterTemplate;
9
  use MailPoet\Models\NewsletterSegment;
@@ -257,7 +258,7 @@ class Newsletters extends APIEndpoint {
257
  $body = implode($divider, $data_for_shortcodes);
258
 
259
  $subscriber = Subscriber::getCurrentWPUser();
260
- $subscriber = ($subscriber) ? $subscriber->asArray() : false;
261
 
262
  $shortcodes = new \MailPoet\Newsletter\Shortcodes\Shortcodes(
263
  $newsletter,
@@ -275,10 +276,19 @@ class Newsletters extends APIEndpoint {
275
  $sender = false,
276
  $reply_to = false
277
  );
278
- $mailer->send($newsletter, $data['subscriber']);
279
- return $this->successResponse(
280
- Newsletter::findOne($id)->asArray()
281
- );
 
 
 
 
 
 
 
 
 
282
  } catch(\Exception $e) {
283
  return $this->errorResponse(array(
284
  $e->getCode() => $e->getMessage()
@@ -337,7 +347,9 @@ class Newsletters extends APIEndpoint {
337
  return $this->successResponse($data, array(
338
  'count' => $listing_data['count'],
339
  'filters' => $listing_data['filters'],
340
- 'groups' => $listing_data['groups']
 
 
341
  ));
342
  }
343
 
4
  use MailPoet\API\Endpoint as APIEndpoint;
5
  use MailPoet\API\Error as APIError;
6
  use MailPoet\Listing;
7
+ use MailPoet\Models\Setting;
8
  use MailPoet\Models\Newsletter;
9
  use MailPoet\Models\NewsletterTemplate;
10
  use MailPoet\Models\NewsletterSegment;
258
  $body = implode($divider, $data_for_shortcodes);
259
 
260
  $subscriber = Subscriber::getCurrentWPUser();
261
+ $subscriber = ($subscriber) ? $subscriber : false;
262
 
263
  $shortcodes = new \MailPoet\Newsletter\Shortcodes\Shortcodes(
264
  $newsletter,
276
  $sender = false,
277
  $reply_to = false
278
  );
279
+ $result = $mailer->send($newsletter, $data['subscriber']);
280
+
281
+ if($result['response'] === false) {
282
+ $error = sprintf(
283
+ __('The email could not be sent: %s', 'mailpoet'),
284
+ $result['error']
285
+ );
286
+ return $this->errorResponse(array(APIError::BAD_REQUEST => $error));
287
+ } else {
288
+ return $this->successResponse(
289
+ Newsletter::findOne($id)->asArray()
290
+ );
291
+ }
292
  } catch(\Exception $e) {
293
  return $this->errorResponse(array(
294
  $e->getCode() => $e->getMessage()
347
  return $this->successResponse($data, array(
348
  'count' => $listing_data['count'],
349
  'filters' => $listing_data['filters'],
350
+ 'groups' => $listing_data['groups'],
351
+ 'mta_log' => Setting::getValue('mta_log'),
352
+ 'mta_method' => Setting::getValue('mta.method')
353
  ));
354
  }
355
 
lib/Config/Activator.php CHANGED
@@ -1,23 +1,20 @@
1
  <?php
2
  namespace MailPoet\Config;
3
- use \MailPoet\Config\Migrator;
4
- use \MailPoet\Config\Populator;
5
 
6
  if(!defined('ABSPATH')) exit;
7
 
8
  class Activator {
9
- function __construct() {
10
- }
11
-
12
- function activate() {
13
  $migrator = new Migrator();
14
  $migrator->up();
15
 
16
  $populator = new Populator();
17
  $populator->up();
 
 
18
  }
19
 
20
- function deactivate() {
21
  $migrator = new Migrator();
22
  $migrator->down();
23
  }
1
  <?php
2
  namespace MailPoet\Config;
 
 
3
 
4
  if(!defined('ABSPATH')) exit;
5
 
6
  class Activator {
7
+ static function activate() {
 
 
 
8
  $migrator = new Migrator();
9
  $migrator->up();
10
 
11
  $populator = new Populator();
12
  $populator->up();
13
+
14
+ update_option('mailpoet_db_version', Env::$version);
15
  }
16
 
17
+ static function deactivate() {
18
  $migrator = new Migrator();
19
  $migrator->down();
20
  }
lib/Config/Initializer.php CHANGED
@@ -29,8 +29,11 @@ class Initializer {
29
 
30
  $this->setupDB();
31
 
32
- register_activation_hook(Env::$file, array($this, 'runMigrator'));
33
- register_activation_hook(Env::$file, array($this, 'runPopulator'));
 
 
 
34
 
35
  add_action('plugins_loaded', array($this, 'setup'));
36
  add_action('init', array($this, 'onInit'));
@@ -96,18 +99,9 @@ class Initializer {
96
  define('MP_STATISTICS_FORMS_TABLE', $statistics_forms);
97
  }
98
 
99
- function runMigrator() {
100
- $migrator = new Migrator();
101
- $migrator->up();
102
- }
103
-
104
- function runPopulator() {
105
- $populator = new Populator();
106
- $populator->up();
107
- }
108
-
109
  function setup() {
110
  try {
 
111
  $this->setupRenderer();
112
  $this->setupLocalizer();
113
  $this->setupMenu();
@@ -141,6 +135,15 @@ class Initializer {
141
  define('MAILPOET_INITIALIZED', true);
142
  }
143
 
 
 
 
 
 
 
 
 
 
144
  function setupWidget() {
145
  if(!$this->plugin_initialized) {
146
  return;
29
 
30
  $this->setupDB();
31
 
32
+ // activation function
33
+ register_activation_hook(
34
+ Env::$file,
35
+ array('MailPoet\Config\Activator', 'activate')
36
+ );
37
 
38
  add_action('plugins_loaded', array($this, 'setup'));
39
  add_action('init', array($this, 'onInit'));
99
  define('MP_STATISTICS_FORMS_TABLE', $statistics_forms);
100
  }
101
 
 
 
 
 
 
 
 
 
 
 
102
  function setup() {
103
  try {
104
+ $this->maybeDbUpdate();
105
  $this->setupRenderer();
106
  $this->setupLocalizer();
107
  $this->setupMenu();
135
  define('MAILPOET_INITIALIZED', true);
136
  }
137
 
138
+ function maybeDbUpdate() {
139
+ $current_db_version = get_option('mailpoet_db_version', false);
140
+
141
+ // if current db version and plugin version differ
142
+ if(version_compare($current_db_version, Env::$version) !== 0) {
143
+ Activator::activate();
144
+ }
145
+ }
146
+
147
  function setupWidget() {
148
  if(!$this->plugin_initialized) {
149
  return;
lib/Config/Migrator.php CHANGED
@@ -115,7 +115,6 @@ class Migrator {
115
  'count_total mediumint(9) NOT NULL DEFAULT 0,',
116
  'count_processed mediumint(9) NOT NULL DEFAULT 0,',
117
  'count_to_process mediumint(9) NOT NULL DEFAULT 0,',
118
- 'count_failed mediumint(9) NOT NULL DEFAULT 0,',
119
  'scheduled_at TIMESTAMP NULL,',
120
  'processed_at TIMESTAMP NULL,',
121
  'created_at TIMESTAMP NULL,',
115
  'count_total mediumint(9) NOT NULL DEFAULT 0,',
116
  'count_processed mediumint(9) NOT NULL DEFAULT 0,',
117
  'count_to_process mediumint(9) NOT NULL DEFAULT 0,',
 
118
  'scheduled_at TIMESTAMP NULL,',
119
  'processed_at TIMESTAMP NULL,',
120
  'created_at TIMESTAMP NULL,',
lib/Config/Populator.php CHANGED
@@ -2,6 +2,7 @@
2
  namespace MailPoet\Config;
3
 
4
  use MailPoet\Cron\CronTrigger;
 
5
  use \MailPoet\Models\Segment;
6
  use \MailPoet\Segments\WP;
7
  use \MailPoet\Models\Setting;
@@ -85,26 +86,26 @@ class Populator {
85
  private function createDefaultSettings() {
86
  $current_user = wp_get_current_user();
87
 
 
88
  if(!Setting::getValue(CronTrigger::SETTING_NAME)) {
89
- // disable task scheduler (cron) be default
90
  Setting::setValue(CronTrigger::SETTING_NAME, array(
91
  'method' => CronTrigger::DEFAULT_METHOD
92
  ));
93
  }
94
 
95
- // default sender info based on current user
96
  $sender = array(
97
  'name' => $current_user->display_name,
98
  'address' => $current_user->user_email
99
  );
100
 
 
101
  if(!Setting::getValue('sender')) {
102
- // default from name & address
103
  Setting::setValue('sender', $sender);
104
  }
105
 
 
106
  if(!Setting::getValue('signup_confirmation')) {
107
- // enable signup confirmation by default
108
  Setting::setValue('signup_confirmation', array(
109
  'enabled' => true,
110
  'from' => array(
@@ -115,9 +116,13 @@ class Populator {
115
  ));
116
  }
117
 
 
118
  if(!Setting::getValue('installed_at')) {
119
  Setting::setValue('installed_at', date("Y-m-d H:i:s"));
120
  }
 
 
 
121
  }
122
 
123
  private function createDefaultSegments() {
2
  namespace MailPoet\Config;
3
 
4
  use MailPoet\Cron\CronTrigger;
5
+ use MailPoet\Mailer\MailerLog;
6
  use \MailPoet\Models\Segment;
7
  use \MailPoet\Segments\WP;
8
  use \MailPoet\Models\Setting;
86
  private function createDefaultSettings() {
87
  $current_user = wp_get_current_user();
88
 
89
+ // set cron trigger option to default method
90
  if(!Setting::getValue(CronTrigger::SETTING_NAME)) {
 
91
  Setting::setValue(CronTrigger::SETTING_NAME, array(
92
  'method' => CronTrigger::DEFAULT_METHOD
93
  ));
94
  }
95
 
96
+ // set default sender info based on current user
97
  $sender = array(
98
  'name' => $current_user->display_name,
99
  'address' => $current_user->user_email
100
  );
101
 
102
+ // set default from name & address
103
  if(!Setting::getValue('sender')) {
 
104
  Setting::setValue('sender', $sender);
105
  }
106
 
107
+ // enable signup confirmation by default
108
  if(!Setting::getValue('signup_confirmation')) {
 
109
  Setting::setValue('signup_confirmation', array(
110
  'enabled' => true,
111
  'from' => array(
116
  ));
117
  }
118
 
119
+ // set installation date
120
  if(!Setting::getValue('installed_at')) {
121
  Setting::setValue('installed_at', date("Y-m-d H:i:s"));
122
  }
123
+
124
+ // reset mailer log
125
+ MailerLog::resetMailerLog();
126
  }
127
 
128
  private function createDefaultSegments() {
lib/Cron/CronHelper.php CHANGED
@@ -9,9 +9,9 @@ use MailPoet\Util\Security;
9
  if(!defined('ABSPATH')) exit;
10
 
11
  class CronHelper {
12
- const DAEMON_EXECUTION_LIMIT = 20;
13
- const DAEMON_EXECUTION_TIMEOUT = 35;
14
- const DAEMON_REQUEST_TIMEOUT = 2;
15
  const DAEMON_SETTING = 'cron_daemon';
16
 
17
  static function createDaemon($token) {
@@ -55,7 +55,7 @@ class CronHelper {
55
  );
56
  $url = str_replace(home_url(), self::getSiteUrl(), $url);
57
  $args = array(
58
- 'blocking' => false,
59
  'sslverify' => false,
60
  'timeout' => $timeout,
61
  'user-agent' => 'MailPoet (www.mailpoet.com) Cron'
9
  if(!defined('ABSPATH')) exit;
10
 
11
  class CronHelper {
12
+ const DAEMON_EXECUTION_LIMIT = 20; // seconds
13
+ const DAEMON_EXECUTION_TIMEOUT = 35; // seconds
14
+ const DAEMON_REQUEST_TIMEOUT = 2; // seconds
15
  const DAEMON_SETTING = 'cron_daemon';
16
 
17
  static function createDaemon($token) {
55
  );
56
  $url = str_replace(home_url(), self::getSiteUrl(), $url);
57
  $args = array(
58
+ 'blocking' => true,
59
  'sslverify' => false,
60
  'timeout' => $timeout,
61
  'user-agent' => 'MailPoet (www.mailpoet.com) Cron'
lib/Cron/Daemon.php CHANGED
@@ -10,7 +10,7 @@ class Daemon {
10
  public $daemon;
11
  public $request_data;
12
  public $timer;
13
- const REQUEST_TIMEOUT = 5;
14
 
15
  function __construct($request_data = false) {
16
  $this->request_data = $request_data;
10
  public $daemon;
11
  public $request_data;
12
  public $timer;
13
+ const REQUEST_TIMEOUT = 5; // seconds
14
 
15
  function __construct($request_data = false) {
16
  $this->request_data = $request_data;
lib/Cron/Workers/SendingQueue/SendingQueue.php CHANGED
@@ -21,11 +21,10 @@ class SendingQueue {
21
  $this->mailer_task = ($mailer_task) ? $mailer_task : new MailerTask();
22
  $this->newsletter_task = ($newsletter_task) ? $newsletter_task : new NewsletterTask();
23
  $this->timer = ($timer) ? $timer : microtime(true);
24
- // abort if execution or sending limit are reached
25
- CronHelper::enforceExecutionLimit($this->timer);
26
  }
27
 
28
  function process() {
 
29
  foreach(self::getRunningQueues() as $queue) {
30
  // get and pre-process newsletter (render, replace shortcodes/links, etc.)
31
  $newsletter = $this->newsletter_task->getAndPreProcess($queue);
@@ -42,8 +41,6 @@ class SendingQueue {
42
  self::BATCH_SIZE
43
  );
44
  foreach($subscriber_batches as $subscribers_to_process_ids) {
45
- // abort if execution limit is reached
46
- CronHelper::enforceExecutionLimit($this->timer);
47
  $found_subscribers = SubscriberModel::whereIn('id', $subscribers_to_process_ids)
48
  ->whereNull('deleted_at')
49
  ->findMany();
@@ -70,8 +67,7 @@ class SendingQueue {
70
  if($queue->status === SendingQueueModel::STATUS_COMPLETED) {
71
  $this->newsletter_task->markNewsletterAsSent($newsletter);
72
  }
73
- // abort if sending limit is reached
74
- MailerLog::enforceSendingLimit();
75
  }
76
  }
77
  }
@@ -118,8 +114,6 @@ class SendingQueue {
118
  $prepared_subscribers_ids = array();
119
  $statistics = array();
120
  }
121
- // abort if sending limit is reached
122
- MailerLog::enforceSendingLimit();
123
  }
124
  if($processing_method === 'bulk') {
125
  $queue = $this->sendNewsletters(
@@ -142,24 +136,33 @@ class SendingQueue {
142
  $prepared_newsletters,
143
  $prepared_subscribers
144
  );
145
- if(!$send_result) {
146
- // update failed/to process list
147
- $queue->updateFailedSubscribers($prepared_subscribers_ids);
148
- } else {
149
- // update processed/to process list
150
- $queue->updateProcessedSubscribers($prepared_subscribers_ids);
151
- // log statistics
152
- StatisticsNewslettersModel::createMultiple($statistics);
153
- // update the sent count
154
- $this->mailer_task->updateSentCount();
155
- // enforce sending limit if there are still subscribers left to process
156
- if($queue->count_to_process) {
157
- MailerLog::enforceSendingLimit();
158
- }
 
 
159
  }
160
  return $queue;
161
  }
162
 
 
 
 
 
 
 
 
163
  static function getRunningQueues() {
164
  return SendingQueueModel::orderByAsc('priority')
165
  ->whereNull('deleted_at')
21
  $this->mailer_task = ($mailer_task) ? $mailer_task : new MailerTask();
22
  $this->newsletter_task = ($newsletter_task) ? $newsletter_task : new NewsletterTask();
23
  $this->timer = ($timer) ? $timer : microtime(true);
 
 
24
  }
25
 
26
  function process() {
27
+ $this->enforceSendingAndExecutionLimits();
28
  foreach(self::getRunningQueues() as $queue) {
29
  // get and pre-process newsletter (render, replace shortcodes/links, etc.)
30
  $newsletter = $this->newsletter_task->getAndPreProcess($queue);
41
  self::BATCH_SIZE
42
  );
43
  foreach($subscriber_batches as $subscribers_to_process_ids) {
 
 
44
  $found_subscribers = SubscriberModel::whereIn('id', $subscribers_to_process_ids)
45
  ->whereNull('deleted_at')
46
  ->findMany();
67
  if($queue->status === SendingQueueModel::STATUS_COMPLETED) {
68
  $this->newsletter_task->markNewsletterAsSent($newsletter);
69
  }
70
+ $this->enforceSendingAndExecutionLimits();
 
71
  }
72
  }
73
  }
114
  $prepared_subscribers_ids = array();
115
  $statistics = array();
116
  }
 
 
117
  }
118
  if($processing_method === 'bulk') {
119
  $queue = $this->sendNewsletters(
136
  $prepared_newsletters,
137
  $prepared_subscribers
138
  );
139
+ // log error message and schedule retry/pause sending
140
+ if($send_result['response'] === false) {
141
+ MailerLog::processSendingError(
142
+ $send_result['operation'],
143
+ $send_result['error_message']
144
+ );
145
+ }
146
+ // update processed/to process list
147
+ $queue->updateProcessedSubscribers($prepared_subscribers_ids);
148
+ // log statistics
149
+ StatisticsNewslettersModel::createMultiple($statistics);
150
+ // update the sent count
151
+ $this->mailer_task->updateSentCount();
152
+ // enforce execution limits if queue is still being processed
153
+ if($queue->status !== SendingQueueModel::STATUS_COMPLETED) {
154
+ $this->enforceSendingAndExecutionLimits();
155
  }
156
  return $queue;
157
  }
158
 
159
+ function enforceSendingAndExecutionLimits() {
160
+ // abort if execution limit is reached
161
+ CronHelper::enforceExecutionLimit($this->timer);
162
+ // abort if sending limit has been reached
163
+ MailerLog::enforceExecutionRequirements();
164
+ }
165
+
166
  static function getRunningQueues() {
167
  return SendingQueueModel::orderByAsc('priority')
168
  ->whereNull('deleted_at')
lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php CHANGED
@@ -21,7 +21,7 @@ class Newsletter {
21
  }
22
 
23
  function getAndPreProcess($queue) {
24
- $newsletter = $queue->newsletter()->findOne();
25
  if(!$newsletter) {
26
  return false;
27
  }
21
  }
22
 
23
  function getAndPreProcess($queue) {
24
+ $newsletter = $queue->newsletter()->whereNull('deleted_at')->findOne();
25
  if(!$newsletter) {
26
  return false;
27
  }
lib/Mailer/Mailer.php CHANGED
@@ -14,8 +14,6 @@ class Mailer {
14
  const MAILER_CONFIG_SETTING_NAME = 'mta';
15
  const SENDING_LIMIT_INTERVAL_MULTIPLIER = 60;
16
  const METHOD_MAILPOET = 'MailPoet';
17
- const METHOD_MAILGUN = 'MailGun';
18
- const METHOD_ELASTICEMAIL = 'ElasticEmail';
19
  const METHOD_AMAZONSES = 'AmazonSES';
20
  const METHOD_SENDGRID = 'SendGrid';
21
  const METHOD_PHPMAIL = 'PHPMail';
@@ -44,21 +42,6 @@ class Mailer {
44
  $this->reply_to
45
  );
46
  break;
47
- case self::METHOD_ELASTICEMAIL:
48
- $mailer_instance = new $this->mailer_config['class'](
49
- $this->mailer_config['api_key'],
50
- $this->sender,
51
- $this->reply_to
52
- );
53
- break;
54
- case self::METHOD_MAILGUN:
55
- $mailer_instance = new $this->mailer_config['class'](
56
- $this->mailer_config['domain'],
57
- $this->mailer_config['api_key'],
58
- $this->sender,
59
- $this->reply_to
60
- );
61
- break;
62
  case self::METHOD_MAILPOET:
63
  $mailer_instance = new $this->mailer_config['class'](
64
  $this->mailer_config['mailpoet_api_key'],
@@ -168,7 +151,29 @@ class Mailer {
168
 
169
  function encodeAddressNamePart($name) {
170
  if(mb_detect_encoding($name) === 'ASCII') return $name;
171
- // bse64_encode non-ASCII string as per RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt)
172
  return sprintf('=?utf-8?B?%s?=', base64_encode($name));
173
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  }
14
  const MAILER_CONFIG_SETTING_NAME = 'mta';
15
  const SENDING_LIMIT_INTERVAL_MULTIPLIER = 60;
16
  const METHOD_MAILPOET = 'MailPoet';
 
 
17
  const METHOD_AMAZONSES = 'AmazonSES';
18
  const METHOD_SENDGRID = 'SendGrid';
19
  const METHOD_PHPMAIL = 'PHPMail';
42
  $this->reply_to
43
  );
44
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  case self::METHOD_MAILPOET:
46
  $mailer_instance = new $this->mailer_config['class'](
47
  $this->mailer_config['mailpoet_api_key'],
151
 
152
  function encodeAddressNamePart($name) {
153
  if(mb_detect_encoding($name) === 'ASCII') return $name;
154
+ // encode non-ASCII string as per RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt)
155
  return sprintf('=?utf-8?B?%s?=', base64_encode($name));
156
  }
157
+
158
+ static function formatMailerConnectionErrorResult($error_message) {
159
+ return array(
160
+ 'response' => false,
161
+ 'operation' => 'connect',
162
+ 'error_message' => $error_message
163
+ );
164
+ }
165
+
166
+ static function formatMailerSendErrorResult($error_message) {
167
+ return array(
168
+ 'response' => false,
169
+ 'operation' => 'send',
170
+ 'error_message' => $error_message
171
+ );
172
+ }
173
+
174
+ static function formatMailerSendSuccessResult() {
175
+ return array(
176
+ 'response' => true
177
+ );
178
+ }
179
  }
lib/Mailer/MailerLog.php CHANGED
@@ -7,8 +7,12 @@ if(!defined('ABSPATH')) exit;
7
 
8
  class MailerLog {
9
  const SETTING_NAME = 'mta_log';
 
 
 
10
 
11
- static function getMailerLog() {
 
12
  $mailer_log = Setting::getValue(self::SETTING_NAME);
13
  if(!$mailer_log) {
14
  $mailer_log = self::createMailerLog();
@@ -18,8 +22,12 @@ class MailerLog {
18
 
19
  static function createMailerLog() {
20
  $mailer_log = array(
21
- 'sent' => 0,
22
- 'started' => time()
 
 
 
 
23
  );
24
  Setting::setValue(self::SETTING_NAME, $mailer_log);
25
  return $mailer_log;
@@ -34,15 +42,73 @@ class MailerLog {
34
  return $mailer_log;
35
  }
36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  static function incrementSentCount() {
38
  $mailer_log = self::getMailerLog();
 
 
 
 
39
  (int)$mailer_log['sent']++;
40
  return self::updateMailerLog($mailer_log);
41
  }
42
 
43
- static function isSendingLimitReached() {
 
 
 
 
 
 
 
44
  $mailer_config = Mailer::getMailerConfig();
45
- $mailer_log = self::getMailerLog();
 
 
46
  $elapsed_time = time() - (int)$mailer_log['started'];
47
  if($mailer_log['sent'] === $mailer_config['frequency_limit']) {
48
  if($elapsed_time <= $mailer_config['frequency_interval']) return true;
@@ -51,10 +117,4 @@ class MailerLog {
51
  }
52
  return false;
53
  }
54
-
55
- static function enforceSendingLimit() {
56
- if(self::isSendingLimitReached()) {
57
- throw new \Exception(__('Sending frequency limit has been reached.', 'mailpoet'));
58
- }
59
- }
60
  }
7
 
8
  class MailerLog {
9
  const SETTING_NAME = 'mta_log';
10
+ const STATUS_PAUSED = 'paused';
11
+ const RETRY_ATTEMPTS_LIMIT = 3;
12
+ const RETRY_INTERVAL = 120; // seconds
13
 
14
+ static function getMailerLog($mailer_log = false) {
15
+ if($mailer_log) return $mailer_log;
16
  $mailer_log = Setting::getValue(self::SETTING_NAME);
17
  if(!$mailer_log) {
18
  $mailer_log = self::createMailerLog();
22
 
23
  static function createMailerLog() {
24
  $mailer_log = array(
25
+ 'sent' => null,
26
+ 'started' => time(),
27
+ 'status' => null,
28
+ 'retry_attempt' => null,
29
+ 'retry_at' => null,
30
+ 'error' => null
31
  );
32
  Setting::setValue(self::SETTING_NAME, $mailer_log);
33
  return $mailer_log;
42
  return $mailer_log;
43
  }
44
 
45
+ static function enforceExecutionRequirements($mailer_log = false) {
46
+ $mailer_log = self::getMailerLog($mailer_log);
47
+ if($mailer_log['retry_attempt'] === self::RETRY_ATTEMPTS_LIMIT) {
48
+ $mailer_log = self::pauseSending($mailer_log);
49
+ }
50
+ if($mailer_log['status'] === self::STATUS_PAUSED) {
51
+ throw new \Exception(__('Sending has been paused.', 'mailpoet'));
52
+ }
53
+ if(!is_null($mailer_log['retry_at'])) {
54
+ if(time() <= $mailer_log['retry_at']) {
55
+ throw new \Exception(__('Sending is waiting to be retried.', 'mailpoet'));
56
+ } else {
57
+ $mailer_log['retry_at'] = null;
58
+ self::updateMailerLog($mailer_log);
59
+ }
60
+ }
61
+ // ensure that sending frequency has not been reached
62
+ if(self::isSendingLimitReached($mailer_log)) {
63
+ throw new \Exception(__('Sending frequency limit has been reached.', 'mailpoet'));
64
+ }
65
+ }
66
+
67
+ static function pauseSending($mailer_log) {
68
+ $mailer_log['status'] = self::STATUS_PAUSED;
69
+ $mailer_log['retry_attempt'] = null;
70
+ $mailer_log['retry_at'] = null;
71
+ return self::updateMailerLog($mailer_log);
72
+ }
73
+
74
+ static function resumeSending() {
75
+ return self::resetMailerLog();
76
+ }
77
+
78
+ static function processSendingError($operation, $error_message) {
79
+ $mailer_log = self::getMailerLog();
80
+ (int)$mailer_log['retry_attempt']++;
81
+ $mailer_log['retry_at'] = time() + self::RETRY_INTERVAL;
82
+ $mailer_log['error'] = array(
83
+ 'operation' => $operation,
84
+ 'error_message' => $error_message
85
+ );
86
+ self::updateMailerLog($mailer_log);
87
+ return self::enforceExecutionRequirements();
88
+ }
89
+
90
  static function incrementSentCount() {
91
  $mailer_log = self::getMailerLog();
92
+ // clear previous retry count, errors, etc.
93
+ if($mailer_log['error']) {
94
+ $mailer_log = self::clearSendingErrorLog($mailer_log);
95
+ }
96
  (int)$mailer_log['sent']++;
97
  return self::updateMailerLog($mailer_log);
98
  }
99
 
100
+ static function clearSendingErrorLog($mailer_log) {
101
+ $mailer_log['retry_attempt'] = null;
102
+ $mailer_log['retry_at'] = null;
103
+ $mailer_log['error'] = null;
104
+ return self::updateMailerLog($mailer_log);
105
+ }
106
+
107
+ static function isSendingLimitReached($mailer_log = false) {
108
  $mailer_config = Mailer::getMailerConfig();
109
+ // do not enforce sending limit for MailPoet's sending method
110
+ if($mailer_config['method'] === Mailer::METHOD_MAILPOET) return false;
111
+ $mailer_log = self::getMailerLog($mailer_log);
112
  $elapsed_time = time() - (int)$mailer_log['started'];
113
  if($mailer_log['sent'] === $mailer_config['frequency_limit']) {
114
  if($elapsed_time <= $mailer_config['frequency_interval']) return true;
117
  }
118
  return false;
119
  }
 
 
 
 
 
 
120
  }
lib/Mailer/Methods/AmazonSES.php CHANGED
@@ -1,6 +1,8 @@
1
  <?php
2
  namespace MailPoet\Mailer\Methods;
3
 
 
 
4
  if(!defined('ABSPATH')) exit;
5
 
6
  class AmazonSES {
@@ -48,10 +50,17 @@ class AmazonSES {
48
  $this->url,
49
  $this->request($newsletter, $subscriber)
50
  );
51
- return (
52
- !is_wp_error($result) === true &&
53
- wp_remote_retrieve_response_code($result) === 200
54
- );
 
 
 
 
 
 
 
55
  }
56
 
57
  function getBody($newsletter, $subscriber) {
1
  <?php
2
  namespace MailPoet\Mailer\Methods;
3
 
4
+ use MailPoet\Mailer\Mailer;
5
+
6
  if(!defined('ABSPATH')) exit;
7
 
8
  class AmazonSES {
50
  $this->url,
51
  $this->request($newsletter, $subscriber)
52
  );
53
+ if(is_wp_error($result)) {
54
+ return Mailer::formatMailerConnectionErrorResult($result->get_error_message());
55
+ }
56
+ if(wp_remote_retrieve_response_code($result) !== 200) {
57
+ $response = simplexml_load_string(wp_remote_retrieve_body($result));
58
+ $response = ($response) ?
59
+ $response->Error->Message->__toString() :
60
+ sprintf(__('%s has returned an unknown error.', 'mailpoet'), Mailer::METHOD_AMAZONSES);
61
+ return Mailer::formatMailerSendErrorResult($response);
62
+ }
63
+ return Mailer::formatMailerSendSuccessResult();
64
  }
65
 
66
  function getBody($newsletter, $subscriber) {
lib/Mailer/Methods/ElasticEmail.php DELETED
@@ -1,56 +0,0 @@
1
- <?php
2
- namespace MailPoet\Mailer\Methods;
3
-
4
- if(!defined('ABSPATH')) exit;
5
-
6
- class ElasticEmail {
7
- public $url = 'https://api.elasticemail.com/mailer/send';
8
- public $api_key;
9
- public $sender;
10
- public $reply_to;
11
-
12
- function __construct($api_key, $sender, $reply_to) {
13
- $this->api_key = $api_key;
14
- $this->sender = $sender;
15
- $this->reply_to = $reply_to;
16
- }
17
-
18
- function send($newsletter, $subscriber) {
19
- $result = wp_remote_post(
20
- $this->url,
21
- $this->request($newsletter, $subscriber));
22
- return (
23
- !is_wp_error($result) === true &&
24
- !preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $result['body']) === false
25
- );
26
- }
27
-
28
- function getBody($newsletter, $subscriber) {
29
- $body = array(
30
- 'api_key' => $this->api_key,
31
- 'to' => $subscriber,
32
- 'from' => $this->sender['from_email'],
33
- 'from_name' => $this->sender['from_name'],
34
- 'reply_to' => $this->reply_to['reply_to_email'],
35
- 'reply_to_name' => $this->reply_to['reply_to_name'],
36
- 'subject' => $newsletter['subject']
37
- );
38
- if(!empty($newsletter['body']['html'])) {
39
- $body['body_html'] = $newsletter['body']['html'];
40
- }
41
- if(!empty($newsletter['body']['text'])) {
42
- $body['body_text'] = $newsletter['body']['text'];
43
- }
44
- return $body;
45
- }
46
-
47
- function request($newsletter, $subscriber) {
48
- $body = $this->getBody($newsletter, $subscriber);
49
- return array(
50
- 'timeout' => 10,
51
- 'httpversion' => '1.0',
52
- 'method' => 'POST',
53
- 'body' => urldecode(http_build_query($body))
54
- );
55
- }
56
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Mailer/Methods/MailPoet.php CHANGED
@@ -1,6 +1,8 @@
1
  <?php
2
  namespace MailPoet\Mailer\Methods;
3
 
 
 
4
  if(!defined('ABSPATH')) exit;
5
 
6
  class MailPoet {
@@ -21,10 +23,16 @@ class MailPoet {
21
  $this->url,
22
  $this->request($message_body)
23
  );
24
- return (
25
- !is_wp_error($result) === true &&
26
- wp_remote_retrieve_response_code($result) === 201
27
- );
 
 
 
 
 
 
28
  }
29
 
30
  function processSubscriber($subscriber) {
@@ -41,7 +49,7 @@ class MailPoet {
41
  }
42
 
43
  function getBody($newsletter, $subscriber) {
44
- $composeBody = function ($newsletter, $subscriber) {
45
  $body = array(
46
  'to' => (array(
47
  'address' => $subscriber['email'],
1
  <?php
2
  namespace MailPoet\Mailer\Methods;
3
 
4
+ use MailPoet\Mailer\Mailer;
5
+
6
  if(!defined('ABSPATH')) exit;
7
 
8
  class MailPoet {
23
  $this->url,
24
  $this->request($message_body)
25
  );
26
+ if(is_wp_error($result)) {
27
+ return Mailer::formatMailerConnectionErrorResult($result->get_error_message());
28
+ }
29
+ if(wp_remote_retrieve_response_code($result) !== 201) {
30
+ $response = (wp_remote_retrieve_body($result)) ?
31
+ wp_remote_retrieve_body($result) :
32
+ wp_remote_retrieve_response_message($result);
33
+ return Mailer::formatMailerSendErrorResult($response);
34
+ }
35
+ return Mailer::formatMailerSendSuccessResult();
36
  }
37
 
38
  function processSubscriber($subscriber) {
49
  }
50
 
51
  function getBody($newsletter, $subscriber) {
52
+ $composeBody = function($newsletter, $subscriber) {
53
  $body = array(
54
  'to' => (array(
55
  'address' => $subscriber['email'],
lib/Mailer/Methods/PHPMail.php CHANGED
@@ -1,6 +1,8 @@
1
  <?php
2
  namespace MailPoet\Mailer\Methods;
3
 
 
 
4
  if(!defined('ABSPATH')) exit;
5
 
6
  class PHPMail {
@@ -19,9 +21,13 @@ class PHPMail {
19
  $message = $this->createMessage($newsletter, $subscriber);
20
  $result = $this->mailer->send($message);
21
  } catch(\Exception $e) {
22
- $result = false;
23
  }
24
- return ($result === 1);
 
 
 
 
25
  }
26
 
27
  function buildMailer() {
1
  <?php
2
  namespace MailPoet\Mailer\Methods;
3
 
4
+ use MailPoet\Mailer\Mailer;
5
+
6
  if(!defined('ABSPATH')) exit;
7
 
8
  class PHPMail {
21
  $message = $this->createMessage($newsletter, $subscriber);
22
  $result = $this->mailer->send($message);
23
  } catch(\Exception $e) {
24
+ return Mailer::formatMailerSendErrorResult($e->getMessage());
25
  }
26
+ return ($result === 1) ?
27
+ Mailer::formatMailerSendSuccessResult() :
28
+ Mailer::formatMailerSendErrorResult(
29
+ sprintf(__('%s has returned an unknown error.', 'mailpoet'), Mailer::METHOD_PHPMAIL)
30
+ );
31
  }
32
 
33
  function buildMailer() {
lib/Mailer/Methods/SMTP.php CHANGED
@@ -1,6 +1,8 @@
1
  <?php
2
  namespace MailPoet\Mailer\Methods;
3
 
 
 
4
  if(!defined('ABSPATH')) exit;
5
 
6
  class SMTP {
@@ -33,9 +35,13 @@ class SMTP {
33
  $message = $this->createMessage($newsletter, $subscriber);
34
  $result = $this->mailer->send($message);
35
  } catch(\Exception $e) {
36
- $result = false;
37
  }
38
- return ($result === 1);
 
 
 
 
39
  }
40
 
41
  function buildMailer() {
1
  <?php
2
  namespace MailPoet\Mailer\Methods;
3
 
4
+ use MailPoet\Mailer\Mailer;
5
+
6
  if(!defined('ABSPATH')) exit;
7
 
8
  class SMTP {
35
  $message = $this->createMessage($newsletter, $subscriber);
36
  $result = $this->mailer->send($message);
37
  } catch(\Exception $e) {
38
+ return Mailer::formatMailerSendErrorResult($e->getMessage());
39
  }
40
+ return ($result === 1) ?
41
+ Mailer::formatMailerSendSuccessResult() :
42
+ Mailer::formatMailerSendErrorResult(
43
+ sprintf(__('%s has returned an unknown error.', 'mailpoet'), Mailer::METHOD_SMTP)
44
+ );
45
  }
46
 
47
  function buildMailer() {
lib/Mailer/Methods/SendGrid.php CHANGED
@@ -1,6 +1,8 @@
1
  <?php
2
  namespace MailPoet\Mailer\Methods;
3
 
 
 
4
  if(!defined('ABSPATH')) exit;
5
 
6
  class SendGrid {
@@ -20,13 +22,17 @@ class SendGrid {
20
  $this->url,
21
  $this->request($newsletter, $subscriber)
22
  );
23
- $result_body = json_decode($result['body'], true);
24
- return (
25
- !is_wp_error($result) === true &&
26
- !preg_match('!invalid!', $result['body']) === true &&
27
- !isset($result_body['errors']) === true &&
28
- wp_remote_retrieve_response_code($result) === 200
29
- );
 
 
 
 
30
  }
31
 
32
  function getBody($newsletter, $subscriber) {
1
  <?php
2
  namespace MailPoet\Mailer\Methods;
3
 
4
+ use MailPoet\Mailer\Mailer;
5
+
6
  if(!defined('ABSPATH')) exit;
7
 
8
  class SendGrid {
22
  $this->url,
23
  $this->request($newsletter, $subscriber)
24
  );
25
+ if(is_wp_error($result)) {
26
+ return Mailer::formatMailerConnectionErrorResult($result->get_error_message());
27
+ }
28
+ if(wp_remote_retrieve_response_code($result) !== 200) {
29
+ $response = json_decode($result['body'], true);
30
+ $response = (!empty($response['errors'])) ?
31
+ $response['errors'] :
32
+ sprintf(__('%s has returned an unknown error.', 'mailpoet'), Mailer::METHOD_SENDGRID);
33
+ return Mailer::formatMailerSendErrorResult($response);
34
+ }
35
+ return Mailer::formatMailerSendSuccessResult();
36
  }
37
 
38
  function getBody($newsletter, $subscriber) {
lib/Models/Segment.php CHANGED
@@ -174,31 +174,7 @@ class Segment extends Model {
174
  }
175
 
176
  static function getSegmentsForImport() {
177
- $query = self::selectMany(array(self::$_table.'.id', self::$_table.'.name'))
178
- ->selectExpr(
179
- self::$_table.'.*, ' .
180
- 'COUNT(IF('.
181
- MP_SUBSCRIBER_SEGMENT_TABLE.'.status="'.Subscriber::STATUS_SUBSCRIBED.'"'
182
- .' AND '.
183
- MP_SUBSCRIBERS_TABLE.'.deleted_at IS NULL'
184
- .', 1, NULL)) `subscribers`'
185
- )
186
- ->leftOuterJoin(
187
- MP_SUBSCRIBER_SEGMENT_TABLE,
188
- array(self::$_table.'.id', '=', MP_SUBSCRIBER_SEGMENT_TABLE.'.segment_id'))
189
- ->leftOuterJoin(
190
- MP_SUBSCRIBERS_TABLE,
191
- array(MP_SUBSCRIBER_SEGMENT_TABLE.'.subscriber_id', '=', MP_SUBSCRIBERS_TABLE.'.id'))
192
- ->groupBy(self::$_table.'.id')
193
- ->groupBy(self::$_table.'.name')
194
- ->orderByAsc(self::$_table.'.name')
195
- ->whereNull(self::$_table.'.deleted_at');
196
-
197
- if(!empty($type)) {
198
- $query->where(self::$_table.'.type', $type);
199
- }
200
-
201
- return $query->findArray();
202
  }
203
 
204
  static function getSegmentsForExport($withConfirmedSubscribers = false) {
174
  }
175
 
176
  static function getSegmentsForImport() {
177
+ return self::getSegmentsWithSubscriberCount($type = false);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
178
  }
179
 
180
  static function getSegmentsForExport($withConfirmedSubscribers = false) {
lib/Models/SendingQueue.php CHANGED
@@ -67,9 +67,6 @@ class SendingQueue extends Model {
67
  if(empty($subscribers['processed'])) {
68
  $subscribers['processed'] = array();
69
  }
70
- if(empty($subscribers['failed'])) {
71
- $subscribers['failed'] = array();
72
- }
73
  return $subscribers;
74
  }
75
 
@@ -104,22 +101,6 @@ class SendingQueue extends Model {
104
  $this->updateCount();
105
  }
106
 
107
- function updateFailedSubscribers($failed_subscribers) {
108
- $subscribers = $this->getSubscribers();
109
- $subscribers['failed'] = array_merge(
110
- $subscribers['failed'],
111
- $failed_subscribers
112
- );
113
- $subscribers['to_process'] = array_values(
114
- array_diff(
115
- $subscribers['to_process'],
116
- $failed_subscribers
117
- )
118
- );
119
- $this->subscribers = $subscribers;
120
- $this->updateCount();
121
- }
122
-
123
  function updateProcessedSubscribers($processed_subscribers) {
124
  $subscribers = $this->getSubscribers();
125
  $subscribers['processed'] = array_merge(
@@ -138,10 +119,8 @@ class SendingQueue extends Model {
138
 
139
  function updateCount() {
140
  $this->subscribers = $this->getSubscribers();
141
- $this->count_processed =
142
- count($this->subscribers['processed']) + count($this->subscribers['failed']);
143
  $this->count_to_process = count($this->subscribers['to_process']);
144
- $this->count_failed = count($this->subscribers['failed']);
145
  $this->count_total = $this->count_processed + $this->count_to_process;
146
  if(!$this->count_to_process) {
147
  $this->processed_at = current_time('mysql');
67
  if(empty($subscribers['processed'])) {
68
  $subscribers['processed'] = array();
69
  }
 
 
 
70
  return $subscribers;
71
  }
72
 
101
  $this->updateCount();
102
  }
103
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  function updateProcessedSubscribers($processed_subscribers) {
105
  $subscribers = $this->getSubscribers();
106
  $subscribers['processed'] = array_merge(
119
 
120
  function updateCount() {
121
  $this->subscribers = $this->getSubscribers();
122
+ $this->count_processed = count($this->subscribers['processed']);
 
123
  $this->count_to_process = count($this->subscribers['to_process']);
 
124
  $this->count_total = $this->count_processed + $this->count_to_process;
125
  if(!$this->count_to_process) {
126
  $this->processed_at = current_time('mysql');
lib/Newsletter/Editor/PostListTransformer.php CHANGED
@@ -14,7 +14,7 @@ class PostListTransformer {
14
 
15
  function transform($posts) {
16
  $results = array();
17
- $use_divider = $this->args['showDivider'] === 'true';
18
 
19
  foreach($posts as $index => $post) {
20
  if($use_divider && $index > 0) {
14
 
15
  function transform($posts) {
16
  $results = array();
17
+ $use_divider = filter_var($this->args['showDivider'], FILTER_VALIDATE_BOOLEAN);
18
 
19
  foreach($posts as $index => $post) {
20
  if($use_divider && $index > 0) {
lib/Newsletter/Editor/PostTransformer.php CHANGED
@@ -29,7 +29,7 @@ class PostTransformer {
29
  $structure = $this->appendFeaturedImage(
30
  $post,
31
  $this->args['displayType'],
32
- $this->args['imageFullWidth'] === 'true',
33
  $structure
34
  );
35
  } else {
@@ -37,7 +37,7 @@ class PostTransformer {
37
  $structure = $this->appendFeaturedImage(
38
  $post,
39
  $this->args['displayType'],
40
- $this->args['imageFullWidth'] === 'true',
41
  $structure
42
  );
43
  }
@@ -155,7 +155,7 @@ class PostTransformer {
155
  private function getPostTitle($post) {
156
  $title = $post->post_title;
157
 
158
- if($this->args['titleIsLink'] === 'true') {
159
  $title = '<a href="' . get_permalink($post->ID) . '">' . $title . '</a>';
160
  }
161
 
29
  $structure = $this->appendFeaturedImage(
30
  $post,
31
  $this->args['displayType'],
32
+ filter_var($this->args['imageFullWidth'], FILTER_VALIDATE_BOOLEAN),
33
  $structure
34
  );
35
  } else {
37
  $structure = $this->appendFeaturedImage(
38
  $post,
39
  $this->args['displayType'],
40
+ filter_var($this->args['imageFullWidth'], FILTER_VALIDATE_BOOLEAN),
41
  $structure
42
  );
43
  }
155
  private function getPostTitle($post) {
156
  $title = $post->post_title;
157
 
158
+ if(filter_var($this->args['titleIsLink'], FILTER_VALIDATE_BOOLEAN)) {
159
  $title = '<a href="' . get_permalink($post->ID) . '">' . $title . '</a>';
160
  }
161
 
lib/Newsletter/Shortcodes/Categories/Link.php CHANGED
@@ -8,10 +8,10 @@ use MailPoet\Subscription\Url as SubscriptionUrl;
8
 
9
  class Link {
10
  static function process($action,
11
- $default_value = false,
12
  $newsletter,
13
  $subscriber,
14
- $queue = false
15
  ) {
16
  switch($action) {
17
  case 'subscription_unsubscribe':
8
 
9
  class Link {
10
  static function process($action,
11
+ $default_value,
12
  $newsletter,
13
  $subscriber,
14
+ $queue
15
  ) {
16
  switch($action) {
17
  case 'subscription_unsubscribe':
lib/Newsletter/Shortcodes/Categories/Newsletter.php CHANGED
@@ -8,10 +8,10 @@ require_once(ABSPATH . "wp-includes/pluggable.php");
8
 
9
  class Newsletter {
10
  static function process($action,
11
- $default_value = false,
12
  $newsletter,
13
  $subscriber,
14
- $queue = false,
15
  $content
16
  ) {
17
  switch($action) {
8
 
9
  class Newsletter {
10
  static function process($action,
11
+ $default_value,
12
  $newsletter,
13
  $subscriber,
14
+ $queue,
15
  $content
16
  ) {
17
  switch($action) {
lib/Newsletter/Shortcodes/Categories/Subscriber.php CHANGED
@@ -11,9 +11,10 @@ class Subscriber {
11
  static function process(
12
  $action,
13
  $default_value,
14
- $newsletter = false,
15
  $subscriber
16
  ) {
 
17
  switch($action) {
18
  case 'firstname':
19
  return ($subscriber) ? $subscriber->first_name : $default_value;
11
  static function process(
12
  $action,
13
  $default_value,
14
+ $newsletter,
15
  $subscriber
16
  ) {
17
+ if($subscriber !== false && !is_object($subscriber)) return false;
18
  switch($action) {
19
  case 'firstname':
20
  return ($subscriber) ? $subscriber->first_name : $default_value;
lib/Subscribers/ImportExport/Import/Import.php CHANGED
@@ -378,7 +378,7 @@ class Import {
378
  );
379
  }
380
  $this->addSubscribersToSegments(
381
- array_keys($result),
382
  $this->segments
383
  );
384
  return $result;
378
  );
379
  }
380
  $this->addSubscribersToSegments(
381
+ $result,
382
  $this->segments
383
  );
384
  return $result;
mailpoet.php CHANGED
@@ -5,7 +5,7 @@ use MailPoet\Config\Initializer;
5
 
6
  /*
7
  * Plugin Name: MailPoet
8
- * Version: 3.0.0-beta.6
9
  * Plugin URI: http://www.mailpoet.com
10
  * Description: Create and send beautiful email newsletters, autoresponders, and post notifications without leaving WordPress. This is a beta version of our brand new plugin!
11
  * Author: MailPoet
@@ -24,7 +24,7 @@ use MailPoet\Config\Initializer;
24
  $mailpoet_loader = dirname(__FILE__) . '/vendor/autoload.php';
25
  if(file_exists($mailpoet_loader)) {
26
  require $mailpoet_loader;
27
- define('MAILPOET_VERSION', '3.0.0-beta.6');
28
  $initializer = new Initializer(
29
  array(
30
  'file' => __FILE__,
5
 
6
  /*
7
  * Plugin Name: MailPoet
8
+ * Version: 3.0.0-beta.7
9
  * Plugin URI: http://www.mailpoet.com
10
  * Description: Create and send beautiful email newsletters, autoresponders, and post notifications without leaving WordPress. This is a beta version of our brand new plugin!
11
  * Author: MailPoet
24
  $mailpoet_loader = dirname(__FILE__) . '/vendor/autoload.php';
25
  if(file_exists($mailpoet_loader)) {
26
  require $mailpoet_loader;
27
+ define('MAILPOET_VERSION', '3.0.0-beta.7');
28
  $initializer = new Initializer(
29
  array(
30
  'file' => __FILE__,
readme.txt CHANGED
@@ -83,6 +83,16 @@ Our [support site](https://docs.mailpoet.com/) has plenty of articles. You can w
83
 
84
  == Changelog ==
85
 
 
 
 
 
 
 
 
 
 
 
86
  = 3.0.0-beta.6 - 2016-11-29 =
87
  * Added: "bounced" status has been added to subscribers;
88
  * Improved: execution time enforced between individual send operations. Avoids duplicate sending on really slow servers;
83
 
84
  == Changelog ==
85
 
86
+ = 3.0.0-beta.7 - 2016-12-06 =
87
+ * Improved: allow user to restart sending after sending method failure;
88
+ * Fixed: subscribers are not added to lists after import;
89
+ * Fixed: sending should stop when newsletter is trashed;
90
+ * Fixed: update database schema after an update which fixes an SQL error;
91
+ * Fixed: status of sent newsletters is showing "paused" instead of "sent";
92
+ * Fixed: dividers in Automatic Latest Posts posts are not displayed. Thx Gregor!;
93
+ * Fixed: shortcodes (ie, first name) are not rendered when sending a preview;
94
+ * Fixed: count of confirmed subscribers only in step 2 of import is erroneous.
95
+
96
  = 3.0.0-beta.6 - 2016-11-29 =
97
  * Added: "bounced" status has been added to subscribers;
98
  * Improved: execution time enforced between individual send operations. Avoids duplicate sending on really slow servers;
trunk/assets/css/admin.css ADDED
@@ -0,0 +1,2839 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .select2-container {
2
+ box-sizing: border-box;
3
+ display: inline-block;
4
+ margin: 0;
5
+ position: relative;
6
+ vertical-align: middle; }
7
+ .select2-container .select2-selection--single {
8
+ box-sizing: border-box;
9
+ cursor: pointer;
10
+ display: block;
11
+ height: 28px;
12
+ user-select: none;
13
+ -webkit-user-select: none; }
14
+ .select2-container .select2-selection--single .select2-selection__rendered {
15
+ display: block;
16
+ padding-left: 8px;
17
+ padding-right: 20px;
18
+ overflow: hidden;
19
+ text-overflow: ellipsis;
20
+ white-space: nowrap; }
21
+ .select2-container .select2-selection--single .select2-selection__clear {
22
+ position: relative; }
23
+ .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
24
+ padding-right: 8px;
25
+ padding-left: 20px; }
26
+ .select2-container .select2-selection--multiple {
27
+ box-sizing: border-box;
28
+ cursor: pointer;
29
+ display: block;
30
+ min-height: 32px;
31
+ user-select: none;
32
+ -webkit-user-select: none; }
33
+ .select2-container .select2-selection--multiple .select2-selection__rendered {
34
+ display: inline-block;
35
+ overflow: hidden;
36
+ padding-left: 8px;
37
+ text-overflow: ellipsis;
38
+ white-space: nowrap; }
39
+ .select2-container .select2-search--inline {
40
+ float: left; }
41
+ .select2-container .select2-search--inline .select2-search__field {
42
+ box-sizing: border-box;
43
+ border: none;
44
+ font-size: 100%;
45
+ margin-top: 5px;
46
+ padding: 0; }
47
+ .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
48
+ -webkit-appearance: none; }
49
+
50
+ .select2-dropdown {
51
+ background-color: white;
52
+ border: 1px solid #aaa;
53
+ border-radius: 4px;
54
+ box-sizing: border-box;
55
+ display: block;
56
+ position: absolute;
57
+ left: -100000px;
58
+ width: 100%;
59
+ z-index: 1051; }
60
+
61
+ .select2-results {
62
+ display: block; }
63
+
64
+ .select2-results__options {
65
+ list-style: none;
66
+ margin: 0;
67
+ padding: 0; }
68
+
69
+ .select2-results__option {
70
+ padding: 6px;
71
+ user-select: none;
72
+ -webkit-user-select: none; }
73
+ .select2-results__option[aria-selected] {
74
+ cursor: pointer; }
75
+
76
+ .select2-container--open .select2-dropdown {
77
+ left: 0; }
78
+
79
+ .select2-container--open .select2-dropdown--above {
80
+ border-bottom: none;
81
+ border-bottom-left-radius: 0;
82
+ border-bottom-right-radius: 0; }
83
+
84
+ .select2-container--open .select2-dropdown--below {
85
+ border-top: none;
86
+ border-top-left-radius: 0;
87
+ border-top-right-radius: 0; }
88
+
89
+ .select2-search--dropdown {
90
+ display: block;
91
+ padding: 4px; }
92
+ .select2-search--dropdown .select2-search__field {
93
+ padding: 4px;
94
+ width: 100%;
95
+ box-sizing: border-box; }
96
+ .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
97
+ -webkit-appearance: none; }
98
+ .select2-search--dropdown.select2-search--hide {
99
+ display: none; }
100
+
101
+ .select2-close-mask {
102
+ border: 0;
103
+ margin: 0;
104
+ padding: 0;
105
+ display: block;
106
+ position: fixed;
107
+ left: 0;
108
+ top: 0;
109
+ min-height: 100%;
110
+ min-width: 100%;
111
+ height: auto;
112
+ width: auto;
113
+ opacity: 0;
114
+ z-index: 99;
115
+ background-color: #fff;
116
+ filter: alpha(opacity=0); }
117
+
118
+ .select2-hidden-accessible {
119
+ border: 0 !important;
120
+ clip: rect(0 0 0 0) !important;
121
+ height: 1px !important;
122
+ margin: -1px !important;
123
+ overflow: hidden !important;
124
+ padding: 0 !important;
125
+ position: absolute !important;
126
+ width: 1px !important; }
127
+
128
+ .select2-container--default .select2-selection--single {
129
+ background-color: #fff;
130
+ border: 1px solid #aaa;
131
+ border-radius: 4px; }
132
+ .select2-container--default .select2-selection--single .select2-selection__rendered {
133
+ color: #444;
134
+ line-height: 28px; }
135
+ .select2-container--default .select2-selection--single .select2-selection__clear {
136
+ cursor: pointer;
137
+ float: right;
138
+ font-weight: bold; }
139
+ .select2-container--default .select2-selection--single .select2-selection__placeholder {
140
+ color: #999; }
141
+ .select2-container--default .select2-selection--single .select2-selection__arrow {
142
+ height: 26px;
143
+ position: absolute;
144
+ top: 1px;
145
+ right: 1px;
146
+ width: 20px; }
147
+ .select2-container--default .select2-selection--single .select2-selection__arrow b {
148
+ border-color: #888 transparent transparent transparent;
149
+ border-style: solid;
150
+ border-width: 5px 4px 0 4px;
151
+ height: 0;
152
+ left: 50%;
153
+ margin-left: -4px;
154
+ margin-top: -2px;
155
+ position: absolute;
156
+ top: 50%;
157
+ width: 0; }
158
+
159
+ .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
160
+ float: left; }
161
+
162
+ .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
163
+ left: 1px;
164
+ right: auto; }
165
+
166
+ .select2-container--default.select2-container--disabled .select2-selection--single {
167
+ background-color: #eee;
168
+ cursor: default; }
169
+ .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
170
+ display: none; }
171
+
172
+ .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
173
+ border-color: transparent transparent #888 transparent;
174
+ border-width: 0 4px 5px 4px; }
175
+
176
+ .select2-container--default .select2-selection--multiple {
177
+ background-color: white;
178
+ border: 1px solid #aaa;
179
+ border-radius: 4px;
180
+ cursor: text; }
181
+ .select2-container--default .select2-selection--multiple .select2-selection__rendered {
182
+ box-sizing: border-box;
183
+ list-style: none;
184
+ margin: 0;
185
+ padding: 0 5px;
186
+ width: 100%; }
187
+ .select2-container--default .select2-selection--multiple .select2-selection__rendered li {
188
+ list-style: none; }
189
+ .select2-container--default .select2-selection--multiple .select2-selection__placeholder {
190
+ color: #999;
191
+ margin-top: 5px;
192
+ float: left; }
193
+ .select2-container--default .select2-selection--multiple .select2-selection__clear {
194
+ cursor: pointer;
195
+ float: right;
196
+ font-weight: bold;
197
+ margin-top: 5px;
198
+ margin-right: 10px; }
199
+ .select2-container--default .select2-selection--multiple .select2-selection__choice {
200
+ background-color: #e4e4e4;
201
+ border: 1px solid #aaa;
202
+ border-radius: 4px;
203
+ cursor: default;
204
+ float: left;
205
+ margin-right: 5px;
206
+ margin-top: 5px;
207
+ padding: 0 5px; }
208
+ .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
209
+ color: #999;
210
+ cursor: pointer;
211
+ display: inline-block;
212
+ font-weight: bold;
213
+ margin-right: 2px; }
214
+ .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
215
+ color: #333; }
216
+
217
+ .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
218
+ float: right; }
219
+
220
+ .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
221
+ margin-left: 5px;
222
+ margin-right: auto; }
223
+
224
+ .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
225
+ margin-left: 2px;
226
+ margin-right: auto; }
227
+
228
+ .select2-container--default.select2-container--focus .select2-selection--multiple {
229
+ border: solid black 1px;
230
+ outline: 0; }
231
+
232
+ .select2-container--default.select2-container--disabled .select2-selection--multiple {
233
+ background-color: #eee;
234
+ cursor: default; }
235
+
236
+ .select2-container--default.select2-container--disabled .select2-selection__choice__remove {
237
+ display: none; }
238
+
239
+ .select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
240
+ border-top-left-radius: 0;
241
+ border-top-right-radius: 0; }
242
+
243
+ .select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
244
+ border-bottom-left-radius: 0;
245
+ border-bottom-right-radius: 0; }
246
+
247
+ .select2-container--default .select2-search--dropdown .select2-search__field {
248
+ border: 1px solid #aaa; }
249
+
250
+ .select2-container--default .select2-search--inline .select2-search__field {
251
+ background: transparent;
252
+ border: none;
253
+ outline: 0;
254
+ box-shadow: none;
255
+ -webkit-appearance: textfield; }
256
+
257
+ .select2-container--default .select2-results > .select2-results__options {
258
+ max-height: 200px;
259
+ overflow-y: auto; }
260
+
261
+ .select2-container--default .select2-results__option[role=group] {
262
+ padding: 0; }
263
+
264
+ .select2-container--default .select2-results__option[aria-disabled=true] {
265
+ color: #999; }
266
+
267
+ .select2-container--default .select2-results__option[aria-selected=true] {
268
+ background-color: #ddd; }
269
+
270
+ .select2-container--default .select2-results__option .select2-results__option {
271
+ padding-left: 1em; }
272
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__group {
273
+ padding-left: 0; }
274
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option {
275
+ margin-left: -1em;
276
+ padding-left: 2em; }
277
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
278
+ margin-left: -2em;
279
+ padding-left: 3em; }
280
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
281
+ margin-left: -3em;
282
+ padding-left: 4em; }
283
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
284
+ margin-left: -4em;
285
+ padding-left: 5em; }
286
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
287
+ margin-left: -5em;
288
+ padding-left: 6em; }
289
+
290
+ .select2-container--default .select2-results__option--highlighted[aria-selected] {
291
+ background-color: #5897fb;
292
+ color: white; }
293
+
294
+ .select2-container--default .select2-results__group {
295
+ cursor: default;
296
+ display: block;
297
+ padding: 6px; }
298
+
299
+ .select2-container--classic .select2-selection--single {
300
+ background-color: #f7f7f7;
301
+ border: 1px solid #aaa;
302
+ border-radius: 4px;
303
+ outline: 0;
304
+ background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
305
+ background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
306
+ background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
307
+ background-repeat: repeat-x;
308
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
309
+ .select2-container--classic .select2-selection--single:focus {
310
+ border: 1px solid #5897fb; }
311
+ .select2-container--classic .select2-selection--single .select2-selection__rendered {
312
+ color: #444;
313
+ line-height: 28px; }
314
+ .select2-container--classic .select2-selection--single .select2-selection__clear {
315
+ cursor: pointer;
316
+ float: right;
317
+ font-weight: bold;
318
+ margin-right: 10px; }
319
+ .select2-container--classic .select2-selection--single .select2-selection__placeholder {
320
+ color: #999; }
321
+ .select2-container--classic .select2-selection--single .select2-selection__arrow {
322
+ background-color: #ddd;
323
+ border: none;
324
+ border-left: 1px solid #aaa;
325
+ border-top-right-radius: 4px;
326
+ border-bottom-right-radius: 4px;
327
+ height: 26px;
328
+ position: absolute;
329
+ top: 1px;
330
+ right: 1px;
331
+ width: 20px;
332
+ background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
333
+ background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
334
+ background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
335
+ background-repeat: repeat-x;
336
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }
337
+ .select2-container--classic .select2-selection--single .select2-selection__arrow b {
338
+ border-color: #888 transparent transparent transparent;
339
+ border-style: solid;
340
+ border-width: 5px 4px 0 4px;
341
+ height: 0;
342
+ left: 50%;
343
+ margin-left: -4px;
344
+ margin-top: -2px;
345
+ position: absolute;
346
+ top: 50%;
347
+ width: 0; }
348
+
349
+ .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear {
350
+ float: left; }
351
+
352
+ .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow {
353
+ border: none;
354
+ border-right: 1px solid #aaa;
355
+ border-radius: 0;
356
+ border-top-left-radius: 4px;
357
+ border-bottom-left-radius: 4px;
358
+ left: 1px;
359
+ right: auto; }
360
+
361
+ .select2-container--classic.select2-container--open .select2-selection--single {
362
+ border: 1px solid #5897fb; }
363
+ .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
364
+ background: transparent;
365
+ border: none; }
366
+ .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
367
+ border-color: transparent transparent #888 transparent;
368
+ border-width: 0 4px 5px 4px; }
369
+
370
+ .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {
371
+ border-top: none;
372
+ border-top-left-radius: 0;
373
+ border-top-right-radius: 0;
374
+ background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
375
+ background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
376
+ background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
377
+ background-repeat: repeat-x;
378
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
379
+
380
+ .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {
381
+ border-bottom: none;
382
+ border-bottom-left-radius: 0;
383
+ border-bottom-right-radius: 0;
384
+ background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
385
+ background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
386
+ background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
387
+ background-repeat: repeat-x;
388
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }
389
+
390
+ .select2-container--classic .select2-selection--multiple {
391
+ background-color: white;
392
+ border: 1px solid #aaa;
393
+ border-radius: 4px;
394
+ cursor: text;
395
+ outline: 0; }
396
+ .select2-container--classic .select2-selection--multiple:focus {
397
+ border: 1px solid #5897fb; }
398
+ .select2-container--classic .select2-selection--multiple .select2-selection__rendered {
399
+ list-style: none;
400
+ margin: 0;
401
+ padding: 0 5px; }
402
+ .select2-container--classic .select2-selection--multiple .select2-selection__clear {
403
+ display: none; }
404
+ .select2-container--classic .select2-selection--multiple .select2-selection__choice {
405
+ background-color: #e4e4e4;
406
+ border: 1px solid #aaa;
407
+ border-radius: 4px;
408
+ cursor: default;
409
+ float: left;
410
+ margin-right: 5px;
411
+ margin-top: 5px;
412
+ padding: 0 5px; }
413
+ .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {
414
+ color: #888;
415
+ cursor: pointer;
416
+ display: inline-block;
417
+ font-weight: bold;
418
+ margin-right: 2px; }
419
+ .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
420
+ color: #555; }
421
+
422
+ .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
423
+ float: right; }
424
+
425
+ .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
426
+ margin-left: 5px;
427
+ margin-right: auto; }
428
+
429
+ .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
430
+ margin-left: 2px;
431
+ margin-right: auto; }
432
+
433
+ .select2-container--classic.select2-container--open .select2-selection--multiple {
434
+ border: 1px solid #5897fb; }
435
+
436
+ .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
437
+ border-top: none;
438
+ border-top-left-radius: 0;
439
+ border-top-right-radius: 0; }
440
+
441
+ .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
442
+ border-bottom: none;
443
+ border-bottom-left-radius: 0;
444
+ border-bottom-right-radius: 0; }
445
+
446
+ .select2-container--classic .select2-search--dropdown .select2-search__field {
447
+ border: 1px solid #aaa;
448
+ outline: 0; }
449
+
450
+ .select2-container--classic .select2-search--inline .select2-search__field {
451
+ outline: 0;
452
+ box-shadow: none; }
453
+
454
+ .select2-container--classic .select2-dropdown {
455
+ background-color: white;
456
+ border: 1px solid transparent; }
457
+
458
+ .select2-container--classic .select2-dropdown--above {
459
+ border-bottom: none; }
460
+
461
+ .select2-container--classic .select2-dropdown--below {
462
+ border-top: none; }
463
+
464
+ .select2-container--classic .select2-results > .select2-results__options {
465
+ max-height: 200px;
466
+ overflow-y: auto; }
467
+
468
+ .select2-container--classic .select2-results__option[role=group] {
469
+ padding: 0; }
470
+
471
+ .select2-container--classic .select2-results__option[aria-disabled=true] {
472
+ color: grey; }
473
+
474
+ .select2-container--classic .select2-results__option--highlighted[aria-selected] {
475
+ background-color: #3875d7;
476
+ color: white; }
477
+
478
+ .select2-container--classic .select2-results__group {
479
+ cursor: default;
480
+ display: block;
481
+ padding: 6px; }
482
+
483
+ .select2-container--classic.select2-container--open .select2-dropdown {
484
+ border-color: #5897fb; }
485
+
486
+ /*! jQuery UI - v1.10.1 - 2013-03-10
487
+ * http://jqueryui.com
488
+ * Includes: jquery.ui.core.css, jquery.ui.datepicker.css
489
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
490
+ * Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */
491
+
492
+ /* Layout helpers
493
+ ----------------------------------*/
494
+ .ui-helper-hidden {
495
+ display: none;
496
+ }
497
+ .ui-helper-hidden-accessible {
498
+ border: 0;
499
+ clip: rect(0 0 0 0);
500
+ height: 1px;
501
+ margin: -1px;
502
+ overflow: hidden;
503
+ padding: 0;
504
+ position: absolute;
505
+ width: 1px;
506
+ }
507
+ .ui-helper-reset {
508
+ margin: 0;
509
+ padding: 0;
510
+ border: 0;
511
+ outline: 0;
512
+ line-height: 1.3;
513
+ text-decoration: none;
514
+ font-size: 100%;
515
+ list-style: none;
516
+ }
517
+ .ui-helper-clearfix:before,
518
+ .ui-helper-clearfix:after {
519
+ content: "";
520
+ display: table;
521
+ border-collapse: collapse;
522
+ }
523
+ .ui-helper-clearfix:after {
524
+ clear: both;
525
+ }
526
+ .ui-helper-clearfix {
527
+ min-height: 0; /* support: IE7 */
528
+ }
529
+ .ui-helper-zfix {
530
+ width: 100%;
531
+ height: 100%;
532
+ top: 0;
533
+ left: 0;
534
+ position: absolute;
535
+ opacity: 0;
536
+ filter:Alpha(Opacity=0);
537
+ }
538
+
539
+ .ui-front {
540
+ z-index: 100;
541
+ }
542
+
543
+
544
+ /* Interaction Cues
545
+ ----------------------------------*/
546
+ .ui-state-disabled {
547
+ cursor: default !important;
548
+ }
549
+
550
+
551
+ /* Icons
552
+ ----------------------------------*/
553
+
554
+ /* states and images */
555
+ .ui-icon {
556
+ display: block;
557
+ text-indent: -99999px;
558
+ overflow: hidden;
559
+ background-repeat: no-repeat;
560
+ }
561
+
562
+
563
+ /* Misc visuals
564
+ ----------------------------------*/
565
+
566
+ /* Overlays */
567
+ .ui-widget-overlay {
568
+ position: fixed;
569
+ top: 0;
570
+ left: 0;
571
+ width: 100%;
572
+ height: 100%;
573
+ }
574
+ .ui-datepicker {
575
+ width: 17em;
576
+ padding: .2em .2em 0;
577
+ display: none;
578
+ }
579
+ .ui-datepicker .ui-datepicker-header {
580
+ position: relative;
581
+ padding: .2em 0;
582
+ }
583
+ .ui-datepicker .ui-datepicker-prev,
584
+ .ui-datepicker .ui-datepicker-next {
585
+ position: absolute;
586
+ top: 2px;
587
+ width: 1.8em;
588
+ height: 1.8em;
589
+ }
590
+ .ui-datepicker .ui-datepicker-prev-hover,
591
+ .ui-datepicker .ui-datepicker-next-hover {
592
+ top: 1px;
593
+ }
594
+ .ui-datepicker .ui-datepicker-prev {
595
+ left: 2px;
596
+ }
597
+ .ui-datepicker .ui-datepicker-next {
598
+ right: 2px;
599
+ }
600
+ .ui-datepicker .ui-datepicker-prev-hover {
601
+ left: 1px;
602
+ }
603
+ .ui-datepicker .ui-datepicker-next-hover {
604
+ right: 1px;
605
+ }
606
+ .ui-datepicker .ui-datepicker-prev span,
607
+ .ui-datepicker .ui-datepicker-next span {
608
+ display: block;
609
+ position: absolute;
610
+ left: 50%;
611
+ margin-left: -8px;
612
+ top: 50%;
613
+ margin-top: -8px;
614
+ }
615
+ .ui-datepicker .ui-datepicker-title {
616
+ margin: 0 2.3em;
617
+ line-height: 1.8em;
618
+ text-align: center;
619
+ }
620
+ .ui-datepicker .ui-datepicker-title select {
621
+ font-size: 1em;
622
+ margin: 1px 0;
623
+ }
624
+ .ui-datepicker select.ui-datepicker-month-year {
625
+ width: 100%;
626
+ }
627
+ .ui-datepicker select.ui-datepicker-month,
628
+ .ui-datepicker select.ui-datepicker-year {
629
+ width: 49%;
630
+ }
631
+ .ui-datepicker table {
632
+ width: 100%;
633
+ font-size: .9em;
634
+ border-collapse: collapse;
635
+ margin: 0 0 .4em;
636
+ }
637
+ .ui-datepicker th {
638
+ padding: .7em .3em;
639
+ text-align: center;
640
+ font-weight: bold;
641
+ border: 0;
642
+ }
643
+ .ui-datepicker td {
644
+ border: 0;
645
+ padding: 1px;
646
+ }
647
+ .ui-datepicker td span,
648
+ .ui-datepicker td a {
649
+ display: block;
650
+ padding: .2em;
651
+ text-align: right;
652
+ text-decoration: none;
653
+ }
654
+ .ui-datepicker .ui-datepicker-buttonpane {
655
+ background-image: none;
656
+ margin: .7em 0 0 0;
657
+ padding: 0 .2em;
658
+ border-left: 0;
659
+ border-right: 0;
660
+ border-bottom: 0;
661
+ }
662
+ .ui-datepicker .ui-datepicker-buttonpane button {
663
+ float: right;
664
+ margin: .5em .2em .4em;
665
+ cursor: pointer;
666
+ padding: .2em .6em .3em .6em;
667
+ width: auto;
668
+ overflow: visible;
669
+ }
670
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
671
+ float: left;
672
+ }
673
+
674
+ /* with multiple calendars */
675
+ .ui-datepicker.ui-datepicker-multi {
676
+ width: auto;
677
+ }
678
+ .ui-datepicker-multi .ui-datepicker-group {
679
+ float: left;
680
+ }
681
+ .ui-datepicker-multi .ui-datepicker-group table {
682
+ width: 95%;
683
+ margin: 0 auto .4em;
684
+ }
685
+ .ui-datepicker-multi-2 .ui-datepicker-group {
686
+ width: 50%;
687
+ }
688
+ .ui-datepicker-multi-3 .ui-datepicker-group {
689
+ width: 33.3%;
690
+ }
691
+ .ui-datepicker-multi-4 .ui-datepicker-group {
692
+ width: 25%;
693
+ }
694
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
695
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
696
+ border-left-width: 0;
697
+ }
698
+ .ui-datepicker-multi .ui-datepicker-buttonpane {
699
+ clear: left;
700
+ }
701
+ .ui-datepicker-row-break {
702
+ clear: both;
703
+ width: 100%;
704
+ font-size: 0;
705
+ }
706
+
707
+ /* RTL support */
708
+ .ui-datepicker-rtl {
709
+ direction: rtl;
710
+ }
711
+ .ui-datepicker-rtl .ui-datepicker-prev {
712
+ right: 2px;
713
+ left: auto;
714
+ }
715
+ .ui-datepicker-rtl .ui-datepicker-next {
716
+ left: 2px;
717
+ right: auto;
718
+ }
719
+ .ui-datepicker-rtl .ui-datepicker-prev:hover {
720
+ right: 1px;
721
+ left: auto;
722
+ }
723
+ .ui-datepicker-rtl .ui-datepicker-next:hover {
724
+ left: 1px;
725
+ right: auto;
726
+ }
727
+ .ui-datepicker-rtl .ui-datepicker-buttonpane {
728
+ clear: right;
729
+ }
730
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button {
731
+ float: left;
732
+ }
733
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
734
+ .ui-datepicker-rtl .ui-datepicker-group {
735
+ float: right;
736
+ }
737
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
738
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
739
+ border-right-width: 0;
740
+ border-left-width: 1px;
741
+ }
742
+
743
+ /* Component containers
744
+ ----------------------------------*/
745
+ .ui-widget {
746
+ font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
747
+ font-size: 1.1em;
748
+ }
749
+ .ui-widget .ui-widget {
750
+ font-size: 1em;
751
+ }
752
+ .ui-widget input,
753
+ .ui-widget select,
754
+ .ui-widget textarea,
755
+ .ui-widget button {
756
+ font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
757
+ font-size: 1em;
758
+ }
759
+ .ui-widget-content {
760
+ border: 1px solid #dddddd;
761
+ background: #eeeeee url(../img/datepicker/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x;
762
+ color: #333333;
763
+ }
764
+ .ui-widget-content a {
765
+ color: #333333;
766
+ }
767
+ .ui-widget-header {
768
+ border: 1px solid #e78f08;
769
+ background: #f6a828 url(../img/datepicker/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x;
770
+ color: #ffffff;
771
+ font-weight: bold;
772
+ }
773
+ .ui-widget-header a {
774
+ color: #ffffff;
775
+ }
776
+
777
+ /* Interaction states
778
+ ----------------------------------*/
779
+ .ui-state-default,
780
+ .ui-widget-content .ui-state-default,
781
+ .ui-widget-header .ui-state-default {
782
+ border: 1px solid #cccccc;
783
+ background: #f6f6f6 url(../img/datepicker/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x;
784
+ font-weight: bold;
785
+ color: #1c94c4;
786
+ }
787
+ .ui-state-default a,
788
+ .ui-state-default a:link,
789
+ .ui-state-default a:visited {
790
+ color: #1c94c4;
791
+ text-decoration: none;
792
+ }
793
+ .ui-state-hover,
794
+ .ui-widget-content .ui-state-hover,
795
+ .ui-widget-header .ui-state-hover,
796
+ .ui-state-focus,
797
+ .ui-widget-content .ui-state-focus,
798
+ .ui-widget-header .ui-state-focus {
799
+ border: 1px solid #fbcb09;
800
+ background: #fdf5ce url(../img/datepicker/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x;
801
+ font-weight: bold;
802
+ color: #c77405;
803
+ }
804
+ .ui-state-hover a,
805
+ .ui-state-hover a:hover,
806
+ .ui-state-hover a:link,
807
+ .ui-state-hover a:visited {
808
+ color: #c77405;
809
+ text-decoration: none;
810
+ }
811
+ .ui-state-active,
812
+ .ui-widget-content .ui-state-active,
813
+ .ui-widget-header .ui-state-active {
814
+ border: 1px solid #fbd850;
815
+ background: #ffffff url(../img/datepicker/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
816
+ font-weight: bold;
817
+ color: #eb8f00;
818
+ }
819
+ .ui-state-active a,
820
+ .ui-state-active a:link,
821
+ .ui-state-active a:visited {
822
+ color: #eb8f00;
823
+ text-decoration: none;
824
+ }
825
+
826
+ /* Interaction Cues
827
+ ----------------------------------*/
828
+ .ui-state-highlight,
829
+ .ui-widget-content .ui-state-highlight,
830
+ .ui-widget-header .ui-state-highlight {
831
+ border: 1px solid #fed22f;
832
+ background: #ffe45c url(../img/datepicker/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x;
833
+ color: #363636;
834
+ }
835
+ .ui-state-highlight a,
836
+ .ui-widget-content .ui-state-highlight a,
837
+ .ui-widget-header .ui-state-highlight a {
838
+ color: #363636;
839
+ }
840
+ .ui-state-error,
841
+ .ui-widget-content .ui-state-error,
842
+ .ui-widget-header .ui-state-error {
843
+ border: 1px solid #cd0a0a;
844
+ background: #b81900 url(../img/datepicker/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat;
845
+ color: #ffffff;
846
+ }
847
+ .ui-state-error a,
848
+ .ui-widget-content .ui-state-error a,
849
+ .ui-widget-header .ui-state-error a {
850
+ color: #ffffff;
851
+ }
852
+ .ui-state-error-text,
853
+ .ui-widget-content .ui-state-error-text,
854
+ .ui-widget-header .ui-state-error-text {
855
+ color: #ffffff;
856
+ }
857
+ .ui-priority-primary,
858
+ .ui-widget-content .ui-priority-primary,
859
+ .ui-widget-header .ui-priority-primary {
860
+ font-weight: bold;
861
+ }
862
+ .ui-priority-secondary,
863
+ .ui-widget-content .ui-priority-secondary,
864
+ .ui-widget-header .ui-priority-secondary {
865
+ opacity: .7;
866
+ filter:Alpha(Opacity=70);
867
+ font-weight: normal;
868
+ }
869
+ .ui-state-disabled,
870
+ .ui-widget-content .ui-state-disabled,
871
+ .ui-widget-header .ui-state-disabled {
872
+ opacity: .35;
873
+ filter:Alpha(Opacity=35);
874
+ background-image: none;
875
+ }
876
+ .ui-state-disabled .ui-icon {
877
+ filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
878
+ }
879
+
880
+ /* Icons
881
+ ----------------------------------*/
882
+
883
+ /* states and images */
884
+ .ui-icon {
885
+ width: 16px;
886
+ height: 16px;
887
+ background-position: 16px 16px;
888
+ }
889
+ .ui-icon,
890
+ .ui-widget-content .ui-icon {
891
+ background-image: url(../img/datepicker/ui-icons_222222_256x240.png);
892
+ }
893
+ .ui-widget-header .ui-icon {
894
+ background-image: url(../img/datepicker/ui-icons_ffffff_256x240.png);
895
+ }
896
+ .ui-state-default .ui-icon {
897
+ background-image: url(../img/datepicker/ui-icons_ef8c08_256x240.png);
898
+ }
899
+ .ui-state-hover .ui-icon,
900
+ .ui-state-focus .ui-icon {
901
+ background-image: url(../img/datepicker/ui-icons_ef8c08_256x240.png);
902
+ }
903
+ .ui-state-active .ui-icon {
904
+ background-image: url(../img/datepicker/ui-icons_ef8c08_256x240.png);
905
+ }
906
+ .ui-state-highlight .ui-icon {
907
+ background-image: url(../img/datepicker/ui-icons_228ef1_256x240.png);
908
+ }
909
+ .ui-state-error .ui-icon,
910
+ .ui-state-error-text .ui-icon {
911
+ background-image: url(../img/datepicker/ui-icons_ffd27a_256x240.png);
912
+ }
913
+
914
+ /* positioning */
915
+ .ui-icon-carat-1-n { background-position: 0 0; }
916
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
917
+ .ui-icon-carat-1-e { background-position: -32px 0; }
918
+ .ui-icon-carat-1-se { background-position: -48px 0; }
919
+ .ui-icon-carat-1-s { background-position: -64px 0; }
920
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
921
+ .ui-icon-carat-1-w { background-position: -96px 0; }
922
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
923
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
924
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
925
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
926
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
927
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
928
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
929
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
930
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
931
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
932
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
933
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
934
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
935
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
936
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
937
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
938
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
939
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
940
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
941
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
942
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
943
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
944
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
945
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
946
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
947
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
948
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
949
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
950
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
951
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
952
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
953
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
954
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
955
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
956
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
957
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
958
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
959
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
960
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
961
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
962
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
963
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
964
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
965
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
966
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
967
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
968
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
969
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
970
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
971
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
972
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
973
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
974
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
975
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
976
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
977
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
978
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
979
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
980
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
981
+ .ui-icon-extlink { background-position: -32px -80px; }
982
+ .ui-icon-newwin { background-position: -48px -80px; }
983
+ .ui-icon-refresh { background-position: -64px -80px; }
984
+ .ui-icon-shuffle { background-position: -80px -80px; }
985
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
986
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
987
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
988
+ .ui-icon-folder-open { background-position: -16px -96px; }
989
+ .ui-icon-document { background-position: -32px -96px; }
990
+ .ui-icon-document-b { background-position: -48px -96px; }
991
+ .ui-icon-note { background-position: -64px -96px; }
992
+ .ui-icon-mail-closed { background-position: -80px -96px; }
993
+ .ui-icon-mail-open { background-position: -96px -96px; }
994
+ .ui-icon-suitcase { background-position: -112px -96px; }
995
+ .ui-icon-comment { background-position: -128px -96px; }
996
+ .ui-icon-person { background-position: -144px -96px; }
997
+ .ui-icon-print { background-position: -160px -96px; }
998
+ .ui-icon-trash { background-position: -176px -96px; }
999
+ .ui-icon-locked { background-position: -192px -96px; }
1000
+ .ui-icon-unlocked { background-position: -208px -96px; }
1001
+ .ui-icon-bookmark { background-position: -224px -96px; }
1002
+ .ui-icon-tag { background-position: -240px -96px; }
1003
+ .ui-icon-home { background-position: 0 -112px; }
1004
+ .ui-icon-flag { background-position: -16px -112px; }
1005
+ .ui-icon-calendar { background-position: -32px -112px; }
1006
+ .ui-icon-cart { background-position: -48px -112px; }
1007
+ .ui-icon-pencil { background-position: -64px -112px; }
1008
+ .ui-icon-clock { background-position: -80px -112px; }
1009
+ .ui-icon-disk { background-position: -96px -112px; }
1010
+ .ui-icon-calculator { background-position: -112px -112px; }
1011
+ .ui-icon-zoomin { background-position: -128px -112px; }
1012
+ .ui-icon-zoomout { background-position: -144px -112px; }
1013
+ .ui-icon-search { background-position: -160px -112px; }
1014
+ .ui-icon-wrench { background-position: -176px -112px; }
1015
+ .ui-icon-gear { background-position: -192px -112px; }
1016
+ .ui-icon-heart { background-position: -208px -112px; }
1017
+ .ui-icon-star { background-position: -224px -112px; }
1018
+ .ui-icon-link { background-position: -240px -112px; }
1019
+ .ui-icon-cancel { background-position: 0 -128px; }
1020
+ .ui-icon-plus { background-position: -16px -128px; }
1021
+ .ui-icon-plusthick { background-position: -32px -128px; }
1022
+ .ui-icon-minus { background-position: -48px -128px; }
1023
+ .ui-icon-minusthick { background-position: -64px -128px; }
1024
+ .ui-icon-close { background-position: -80px -128px; }
1025
+ .ui-icon-closethick { background-position: -96px -128px; }
1026
+ .ui-icon-key { background-position: -112px -128px; }
1027
+ .ui-icon-lightbulb { background-position: -128px -128px; }
1028
+ .ui-icon-scissors { background-position: -144px -128px; }
1029
+ .ui-icon-clipboard { background-position: -160px -128px; }
1030
+ .ui-icon-copy { background-position: -176px -128px; }
1031
+ .ui-icon-contact { background-position: -192px -128px; }
1032
+ .ui-icon-image { background-position: -208px -128px; }
1033
+ .ui-icon-video { background-position: -224px -128px; }
1034
+ .ui-icon-script { background-position: -240px -128px; }
1035
+ .ui-icon-alert { background-position: 0 -144px; }
1036
+ .ui-icon-info { background-position: -16px -144px; }
1037
+ .ui-icon-notice { background-position: -32px -144px; }
1038
+ .ui-icon-help { background-position: -48px -144px; }
1039
+ .ui-icon-check { background-position: -64px -144px; }
1040
+ .ui-icon-bullet { background-position: -80px -144px; }
1041
+ .ui-icon-radio-on { background-position: -96px -144px; }
1042
+ .ui-icon-radio-off { background-position: -112px -144px; }
1043
+ .ui-icon-pin-w { background-position: -128px -144px; }
1044
+ .ui-icon-pin-s { background-position: -144px -144px; }
1045
+ .ui-icon-play { background-position: 0 -160px; }
1046
+ .ui-icon-pause { background-position: -16px -160px; }
1047
+ .ui-icon-seek-next { background-position: -32px -160px; }
1048
+ .ui-icon-seek-prev { background-position: -48px -160px; }
1049
+ .ui-icon-seek-end { background-position: -64px -160px; }
1050
+ .ui-icon-seek-start { background-position: -80px -160px; }
1051
+ /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
1052
+ .ui-icon-seek-first { background-position: -80px -160px; }
1053
+ .ui-icon-stop { background-position: -96px -160px; }
1054
+ .ui-icon-eject { background-position: -112px -160px; }
1055
+ .ui-icon-volume-off { background-position: -128px -160px; }
1056
+ .ui-icon-volume-on { background-position: -144px -160px; }
1057
+ .ui-icon-power { background-position: 0 -176px; }
1058
+ .ui-icon-signal-diag { background-position: -16px -176px; }
1059
+ .ui-icon-signal { background-position: -32px -176px; }
1060
+ .ui-icon-battery-0 { background-position: -48px -176px; }
1061
+ .ui-icon-battery-1 { background-position: -64px -176px; }
1062
+ .ui-icon-battery-2 { background-position: -80px -176px; }
1063
+ .ui-icon-battery-3 { background-position: -96px -176px; }
1064
+ .ui-icon-circle-plus { background-position: 0 -192px; }
1065
+ .ui-icon-circle-minus { background-position: -16px -192px; }
1066
+ .ui-icon-circle-close { background-position: -32px -192px; }
1067
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
1068
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
1069
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
1070
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
1071
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
1072
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
1073
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
1074
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
1075
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
1076
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
1077
+ .ui-icon-circle-check { background-position: -208px -192px; }
1078
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
1079
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
1080
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
1081
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
1082
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
1083
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
1084
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
1085
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
1086
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
1087
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
1088
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
1089
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
1090
+
1091
+
1092
+ /* Misc visuals
1093
+ ----------------------------------*/
1094
+
1095
+ /* Corner radius */
1096
+ .ui-corner-all,
1097
+ .ui-corner-top,
1098
+ .ui-corner-left,
1099
+ .ui-corner-tl {
1100
+ border-top-left-radius: 4px;
1101
+ }
1102
+ .ui-corner-all,
1103
+ .ui-corner-top,
1104
+ .ui-corner-right,
1105
+ .ui-corner-tr {
1106
+ border-top-right-radius: 4px;
1107
+ }
1108
+ .ui-corner-all,
1109
+ .ui-corner-bottom,
1110
+ .ui-corner-left,
1111
+ .ui-corner-bl {
1112
+ border-bottom-left-radius: 4px;
1113
+ }
1114
+ .ui-corner-all,
1115
+ .ui-corner-bottom,
1116
+ .ui-corner-right,
1117
+ .ui-corner-br {
1118
+ border-bottom-right-radius: 4px;
1119
+ }
1120
+
1121
+ /* Overlays */
1122
+ .ui-widget-overlay {
1123
+ background: #666666 url(../img/datepicker/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;
1124
+ opacity: .5;
1125
+ filter: Alpha(Opacity=50);
1126
+ }
1127
+ .ui-widget-shadow {
1128
+ margin: -5px 0 0 -5px;
1129
+ padding: 5px;
1130
+ background: #000000 url(../img/datepicker/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x;
1131
+ opacity: .2;
1132
+ filter: Alpha(Opacity=20);
1133
+ border-radius: 5px;
1134
+ }
1135
+
1136
+ /**
1137
+ * Melon skin from: https://github.com/rtsinani/jquery-datepicker-skins
1138
+ */
1139
+
1140
+ .wp-admin {
1141
+ font-size: 90%;
1142
+ }
1143
+
1144
+ .wp-admin .ui-widget {
1145
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
1146
+ background: #2e3641;
1147
+ border: none;
1148
+ border-radius: 0;
1149
+ -webkit-border-radius: 0;
1150
+ -moz-border-radius: 0;
1151
+ }
1152
+
1153
+ .wp-admin .ui-datepicker {
1154
+ padding: 0;
1155
+ }
1156
+
1157
+ .wp-admin .ui-datepicker-header {
1158
+ border: none;
1159
+ background: transparent;
1160
+ font-weight: normal;
1161
+ font-size: 15px;
1162
+ }
1163
+
1164
+ .wp-admin .ui-datepicker-header .ui-state-hover {
1165
+ background: transparent;
1166
+ border-color: transparent;
1167
+ cursor: pointer;
1168
+ border-radius: 0;
1169
+ -webkit-border-radius: 0;
1170
+ -moz-border-radius: 0;
1171
+ }
1172
+
1173
+ .wp-admin .ui-datepicker .ui-datepicker-title {
1174
+ margin-top: .4em;
1175
+ margin-bottom: .3em;
1176
+ color: #e9f0f4;
1177
+ }
1178
+
1179
+ .wp-admin .ui-datepicker .ui-datepicker-prev-hover,
1180
+ .wp-admin .ui-datepicker .ui-datepicker-next-hover,
1181
+ .wp-admin .ui-datepicker .ui-datepicker-next,
1182
+ .wp-admin .ui-datepicker .ui-datepicker-prev {
1183
+ top: .9em;
1184
+ border:none;
1185
+ }
1186
+
1187
+ .wp-admin .ui-datepicker .ui-datepicker-prev-hover {
1188
+ left: 2px;
1189
+ }
1190
+
1191
+ .wp-admin .ui-datepicker .ui-datepicker-next-hover {
1192
+ right: 2px;
1193
+ }
1194
+
1195
+ .wp-admin .ui-datepicker .ui-datepicker-next span,
1196
+ .wp-admin .ui-datepicker .ui-datepicker-prev span {
1197
+ background-image: url(../img/datepicker/ui-icons_ffffff_256x240.png);
1198
+ background-position: -32px 0;
1199
+ margin-top: 0;
1200
+ top: 0;
1201
+ font-weight: normal;
1202
+ }
1203
+
1204
+ .wp-admin .ui-datepicker .ui-datepicker-prev span {
1205
+ background-position: -96px 0;
1206
+ }
1207
+
1208
+ .wp-admin .ui-datepicker table {
1209
+ margin: 0;
1210
+ }
1211
+
1212
+ .wp-admin .ui-datepicker th {
1213
+ padding: 1em 0;
1214
+ color: #ccc;
1215
+ font-size: 13px;
1216
+ font-weight: normal;
1217
+ border: none;
1218
+ border-top: 1px solid #3a414d;
1219
+ }
1220
+
1221
+ .wp-admin .ui-datepicker td {
1222
+ background: #f97e76;
1223
+ border: none;
1224
+ padding: 0;
1225
+ }
1226
+
1227
+ .wp-admin td .ui-state-default {
1228
+ background: transparent;
1229
+ border: none;
1230
+ text-align: center;
1231
+ padding: .5em;
1232
+ margin: 0;
1233
+ font-weight: normal;
1234
+ color: #efefef;
1235
+ font-size: 16px;
1236
+ }
1237
+
1238
+ .wp-admin .ui-state-disabled {
1239
+ opacity: 1;
1240
+ }
1241
+
1242
+ .wp-admin .ui-state-disabled .ui-state-default {
1243
+ color: #fba49e;
1244
+ }
1245
+
1246
+ .wp-admin td .ui-state-active,
1247
+ .wp-admin td .ui-state-hover {
1248
+ background: #2e3641;
1249
+ }
1250
+
1251
+
1252
+ .clearfix {
1253
+ zoom: 1;
1254
+ }
1255
+ .clearfix:before,
1256
+ .clearfix:after {
1257
+ content: "";
1258
+ display: table;
1259
+ }
1260
+ .clearfix:after {
1261
+ clear: both;
1262
+ }
1263
+ a:focus {
1264
+ outline: 0 none !important;
1265
+ }
1266
+ .mailpoet_success {
1267
+ color: #090;
1268
+ }
1269
+ .mailpoet_error {
1270
+ color: #900;
1271
+ }
1272
+ .mailpoet_hidden {
1273
+ display: none;
1274
+ }
1275
+ .select2-container {
1276
+ width: 25em !important;
1277
+ }
1278
+ textarea.regular-text {
1279
+ width: 25em !important;
1280
+ }
1281
+ @media screen and (max-width: 782px) {
1282
+ .select2-container {
1283
+ width: 100% !important;
1284
+ }
1285
+ }
1286
+ progress {
1287
+ background-color: #efefef;
1288
+ height: 2em;
1289
+ border: 0;
1290
+ width: 100%;
1291
+ }
1292
+ progress::-webkit-progress-bar {
1293
+ background-color: #efefef;
1294
+ }
1295
+ progress::-webkit-progress-value {
1296
+ background-color: #69b1e9;
1297
+ border-radius: 5px;
1298
+ }
1299
+ progress::-moz-progress-bar {
1300
+ background-color: #69b1e9;
1301
+ border-radius: 5px;
1302
+ }
1303
+ body.mailpoet_modal_opened {
1304
+ overflow: hidden;
1305
+ }
1306
+ #mailpoet_modal_overlay {
1307
+ height: 100%;
1308
+ left: 0;
1309
+ overflow-y: auto;
1310
+ overflow-x: hidden;
1311
+ position: fixed;
1312
+ top: 0;
1313
+ width: 100%;
1314
+ z-index: 100000;
1315
+ background-color: rgba(0,0,0,0.6);
1316
+ }
1317
+ .mailpoet_modal_highlight {
1318
+ pointer-events: none;
1319
+ background-color: #f1f1f1;
1320
+ position: relative;
1321
+ z-index: 100001 !important;
1322
+ -webkit-box-shadow: 0px 0px 20px 2px rgba(255,255,255,0.75);
1323
+ box-shadow: 0px 0px 20px 2px rgba(255,255,255,0.75);
1324
+ }
1325
+ #mailpoet_modal_overlay.mailpoet_overlay_hidden {
1326
+ background-color: transparent;
1327
+ }
1328
+ #mailpoet_modal_overlay.mailpoet_overlay_loading {
1329
+ background-color: rgba(0,0,0,0.6) !important;
1330
+ display: block !important;
1331
+ }
1332
+ .mailpoet_modal_opened #mailpoet_modal_overlay {
1333
+ display: block;
1334
+ }
1335
+ #mailpoet_popup {
1336
+ display: none;
1337
+ position: absolute;
1338
+ z-index: 25;
1339
+ top: 48px;
1340
+ padding-bottom: 48px;
1341
+ margin: 0;
1342
+ }
1343
+ .mailpoet_popup_wrapper {
1344
+ background-color: #f0f0f0;
1345
+ overflow: hidden;
1346
+ position: relative;
1347
+ width: 100%;
1348
+ z-index: 0;
1349
+ }
1350
+ .mailpoet_overlay_hidden .mailpoet_popup_wrapper {
1351
+ border: 1px solid #333;
1352
+ }
1353
+ #mailpoet_popup_title {
1354
+ background-color: #222;
1355
+ border: 1px solid #333;
1356
+ height: 27px;
1357
+ margin: 0;
1358
+ padding: 0 30px 0 0;
1359
+ }
1360
+ #mailpoet_popup_title h2 {
1361
+ color: #cfcfcf;
1362
+ font-size: 12px;
1363
+ font-weight: normal;
1364
+ margin: 6px 0 0 10px;
1365
+ padding: 0;
1366
+ font-family: "Lucida Grande", Verdana, Arial, sans-serif;
1367
+ }
1368
+ .mailpoet_popup_body {
1369
+ padding: 10px 10px 10px 10px;
1370
+ }
1371
+ #mailpoet_modal_overlay.mailpoet_panel_overlay {
1372
+ top: 32px;
1373
+ overflow: hidden;
1374
+ }
1375
+ #mailpoet_panel {
1376
+ display: none;
1377
+ position: fixed;
1378
+ z-index: 100002;
1379
+ top: 0;
1380
+ bottom: 0;
1381
+ padding: 0;
1382
+ margin: 0;
1383
+ width: 100%;
1384
+ -webkit-transition: margin 350ms ease-out;
1385
+ -moz-transition: margin 350ms ease-out;
1386
+ -o-transition: margin 350ms ease-out;
1387
+ -ms-transition: margin 350ms ease-out;
1388
+ transition: margin 350ms ease-out;
1389
+ }
1390
+ .mailpoet_panel_wrapper {
1391
+ background-color: #f1f1f1;
1392
+ border: 1px solid #e1e1e1;
1393
+ border-top: 0 none;
1394
+ height: 100%;
1395
+ overflow-y: auto;
1396
+ overflow-x: hidden;
1397
+ width: 100%;
1398
+ top: 0;
1399
+ z-index: 0;
1400
+ }
1401
+ #mailpoet_panel_title {
1402
+ margin: 0;
1403
+ padding: 0;
1404
+ position: relative;
1405
+ height: 0;
1406
+ }
1407
+ #mailpoet_panel_title h2 {
1408
+ color: #cfcfcf;
1409
+ background-color: #222;
1410
+ border-left: 1px solid #444;
1411
+ border-right: 1px solid #444;
1412
+ font-size: 1em;
1413
+ font-weight: normal;
1414
+ margin: 0;
1415
+ padding: 0 30px 0 10px;
1416
+ font-family: "Lucida Grande", Verdana, Arial, sans-serif;
1417
+ line-height: 32px;
1418
+ }
1419
+ .mailpoet_panel_body {
1420
+ padding: 10px 10px 36px 10px;
1421
+ }
1422
+ #mailpoet_modal_close {
1423
+ background: url("../img/modal_close_button.png") 7px 7px no-repeat;
1424
+ height: 30px;
1425
+ overflow: hidden;
1426
+ padding: 0;
1427
+ position: absolute;
1428
+ width: 30px;
1429
+ z-index: 2;
1430
+ outline: 0 none;
1431
+ }
1432
+ #mailpoet_popup #mailpoet_modal_close {
1433
+ right: 0;
1434
+ top: 0;
1435
+ }
1436
+ #mailpoet_panel #mailpoet_modal_close {
1437
+ right: 10px;
1438
+ top: 7px;
1439
+ }
1440
+ #mailpoet_modal_close:focus {
1441
+ outline: 0 none;
1442
+ }
1443
+ .mailpoet_align_left {
1444
+ margin: 0;
1445
+ text-align: left;
1446
+ }
1447
+ .mailpoet_align_center {
1448
+ margin: 0;
1449
+ text-align: center;
1450
+ }
1451
+ .mailpoet_align_right {
1452
+ margin: 0;
1453
+ text-align: right;
1454
+ }
1455
+ @media screen and (max-width: 782px) {
1456
+ #mailpoet_modal_overlay.mailpoet_panel_overlay {
1457
+ top: 46px;
1458
+ }
1459
+ .mailpoet_panel_body {
1460
+ padding-bottom: 52px;
1461
+ }
1462
+ }
1463
+ #mailpoet_loading {
1464
+ width: 150px;
1465
+ height: 32px;
1466
+ position: relative;
1467
+ left: 50%;
1468
+ top: 50%;
1469
+ margin-left: -75px;
1470
+ margin-top: -16px;
1471
+ }
1472
+ .mailpoet_modal_loading {
1473
+ -webkit-animation-direction: linear;
1474
+ -moz-animation-direction: linear;
1475
+ -o-animation-direction: linear;
1476
+ -ms-animation-direction: linear;
1477
+ animation-direction: linear;
1478
+ -webkit-animation-duration: 1.95s;
1479
+ -moz-animation-duration: 1.95s;
1480
+ -o-animation-duration: 1.95s;
1481
+ -ms-animation-duration: 1.95s;
1482
+ animation-duration: 1.95s;
1483
+ -webkit-animation-iteration-count: infinite;
1484
+ -moz-animation-iteration-count: infinite;
1485
+ -o-animation-iteration-count: infinite;
1486
+ -ms-animation-iteration-count: infinite;
1487
+ animation-iteration-count: infinite;
1488
+ -webkit-animation-name: bounce_mailpoet_modal_loading;
1489
+ -moz-animation-name: bounce_mailpoet_modal_loading;
1490
+ -o-animation-name: bounce_mailpoet_modal_loading;
1491
+ -ms-animation-name: bounce_mailpoet_modal_loading;
1492
+ animation-name: bounce_mailpoet_modal_loading;
1493
+ border-radius: 21px;
1494
+ background-color: #e01d4e;
1495
+ float: left;
1496
+ height: 32px;
1497
+ margin-left: 17px;
1498
+ width: 32px;
1499
+ }
1500
+ #mailpoet_modal_loading_1 {
1501
+ -webkit-animation-delay: 0.39s;
1502
+ -moz-animation-delay: 0.39s;
1503
+ -o-animation-delay: 0.39s;
1504
+ -ms-animation-delay: 0.39s;
1505
+ animation-delay: 0.39s;
1506
+ }
1507
+ #mailpoet_modal_loading_2 {
1508
+ -webkit-animation-delay: 0.91s;
1509
+ -moz-animation-delay: 0.91s;
1510
+ -o-animation-delay: 0.91s;
1511
+ -ms-animation-delay: 0.91s;
1512
+ animation-delay: 0.91s;
1513
+ }
1514
+ #mailpoet_modal_loading_3 {
1515
+ -webkit-animation-delay: 1.17s;
1516
+ -moz-animation-delay: 1.17s;
1517
+ -o-animation-delay: 1.17s;
1518
+ -ms-animation-delay: 1.17s;
1519
+ animation-delay: 1.17s;
1520
+ }
1521
+ @-moz-keyframes bounce_mailpoet_modal_loading {
1522
+ 0%, 50% {
1523
+ background-color: #064e6d;
1524
+ }
1525
+ }
1526
+ @-webkit-keyframes bounce_mailpoet_modal_loading {
1527
+ 0%, 50% {
1528
+ background-color: #064e6d;
1529
+ }
1530
+ }
1531
+ @-o-keyframes bounce_mailpoet_modal_loading {
1532
+ 0%, 50% {
1533
+ background-color: #064e6d;
1534
+ }
1535
+ }
1536
+ @keyframes bounce_mailpoet_modal_loading {
1537
+ 0%, 50% {
1538
+ background-color: #064e6d;
1539
+ }
1540
+ }
1541
+ .mailpoet_notice {
1542
+ position: relative;
1543
+ }
1544
+ .mailpoet_notice_close {
1545
+ position: absolute;
1546
+ right: 0.5em;
1547
+ top: 0.5em;
1548
+ color: #999;
1549
+ text-decoration: none !important;
1550
+ }
1551
+ /* BASICS */
1552
+
1553
+ .CodeMirror {
1554
+ /* Set height, width, borders, and global font properties here */
1555
+ font-family: monospace;
1556
+ height: 300px;
1557
+ color: black;
1558
+ }
1559
+
1560
+ /* PADDING */
1561
+
1562
+ .CodeMirror-lines {
1563
+ padding: 4px 0; /* Vertical padding around content */
1564
+ }
1565
+ .CodeMirror pre {
1566
+ padding: 0 4px; /* Horizontal padding of content */
1567
+ }
1568
+
1569
+ .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
1570
+ background-color: white; /* The little square between H and V scrollbars */
1571
+ }
1572
+
1573
+ /* GUTTER */
1574
+
1575
+ .CodeMirror-gutters {
1576
+ border-right: 1px solid #ddd;
1577
+ background-color: #f7f7f7;
1578
+ white-space: nowrap;
1579
+ }
1580
+ .CodeMirror-linenumbers {}
1581
+ .CodeMirror-linenumber {
1582
+ padding: 0 3px 0 5px;
1583
+ min-width: 20px;
1584
+ text-align: right;
1585
+ color: #999;
1586
+ white-space: nowrap;
1587
+ }
1588
+
1589
+ .CodeMirror-guttermarker { color: black; }
1590
+ .CodeMirror-guttermarker-subtle { color: #999; }
1591
+
1592
+ /* CURSOR */
1593
+
1594
+ .CodeMirror-cursor {
1595
+ border-left: 1px solid black;
1596
+ border-right: none;
1597
+ width: 0;
1598
+ }
1599
+ /* Shown when moving in bi-directional text */
1600
+ .CodeMirror div.CodeMirror-secondarycursor {
1601
+ border-left: 1px solid silver;
1602
+ }
1603
+ .cm-fat-cursor .CodeMirror-cursor {
1604
+ width: auto;
1605
+ border: 0 !important;
1606
+ background: #7e7;
1607
+ }
1608
+ .cm-fat-cursor div.CodeMirror-cursors {
1609
+ z-index: 1;
1610
+ }
1611
+
1612
+ .cm-animate-fat-cursor {
1613
+ width: auto;
1614
+ border: 0;
1615
+ -webkit-animation: blink 1.06s steps(1) infinite;
1616
+ -moz-animation: blink 1.06s steps(1) infinite;
1617
+ animation: blink 1.06s steps(1) infinite;
1618
+ background-color: #7e7;
1619
+ }
1620
+ @-moz-keyframes blink {
1621
+ 0% {}
1622
+ 50% { background-color: transparent; }
1623
+ 100% {}
1624
+ }
1625
+ @-webkit-keyframes blink {
1626
+ 0% {}
1627
+ 50% { background-color: transparent; }
1628
+ 100% {}
1629
+ }
1630
+ @keyframes blink {
1631
+ 0% {}
1632
+ 50% { background-color: transparent; }
1633
+ 100% {}
1634
+ }
1635
+
1636
+ /* Can style cursor different in overwrite (non-insert) mode */
1637
+ .CodeMirror-overwrite .CodeMirror-cursor {}
1638
+
1639
+ .cm-tab { display: inline-block; text-decoration: inherit; }
1640
+
1641
+ .CodeMirror-rulers {
1642
+ position: absolute;
1643
+ left: 0; right: 0; top: -50px; bottom: -20px;
1644
+ overflow: hidden;
1645
+ }
1646
+ .CodeMirror-ruler {
1647
+ border-left: 1px solid #ccc;
1648
+ top: 0; bottom: 0;
1649
+ position: absolute;
1650
+ }
1651
+
1652
+ /* DEFAULT THEME */
1653
+
1654
+ .cm-s-default .cm-header {color: blue;}
1655
+ .cm-s-default .cm-quote {color: #090;}
1656
+ .cm-negative {color: #d44;}
1657
+ .cm-positive {color: #292;}
1658
+ .cm-header, .cm-strong {font-weight: bold;}
1659
+ .cm-em {font-style: italic;}
1660
+ .cm-link {text-decoration: underline;}
1661
+ .cm-strikethrough {text-decoration: line-through;}
1662
+
1663
+ .cm-s-default .cm-keyword {color: #708;}
1664
+ .cm-s-default .cm-atom {color: #219;}
1665
+ .cm-s-default .cm-number {color: #164;}
1666
+ .cm-s-default .cm-def {color: #00f;}
1667
+ .cm-s-default .cm-variable,
1668
+ .cm-s-default .cm-punctuation,
1669
+ .cm-s-default .cm-property,
1670
+ .cm-s-default .cm-operator {}
1671
+ .cm-s-default .cm-variable-2 {color: #05a;}
1672
+ .cm-s-default .cm-variable-3 {color: #085;}
1673
+ .cm-s-default .cm-comment {color: #a50;}
1674
+ .cm-s-default .cm-string {color: #a11;}
1675
+ .cm-s-default .cm-string-2 {color: #f50;}
1676
+ .cm-s-default .cm-meta {color: #555;}
1677
+ .cm-s-default .cm-qualifier {color: #555;}
1678
+ .cm-s-default .cm-builtin {color: #30a;}
1679
+ .cm-s-default .cm-bracket {color: #997;}
1680
+ .cm-s-default .cm-tag {color: #170;}
1681
+ .cm-s-default .cm-attribute {color: #00c;}
1682
+ .cm-s-default .cm-hr {color: #999;}
1683
+ .cm-s-default .cm-link {color: #00c;}
1684
+
1685
+ .cm-s-default .cm-error {color: #f00;}
1686
+ .cm-invalidchar {color: #f00;}
1687
+
1688
+ .CodeMirror-composing { border-bottom: 2px solid; }
1689
+
1690
+ /* Default styles for common addons */
1691
+
1692
+ div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
1693
+ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
1694
+ .CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }
1695
+ .CodeMirror-activeline-background {background: #e8f2ff;}
1696
+
1697
+ /* STOP */
1698
+
1699
+ /* The rest of this file contains styles related to the mechanics of
1700
+ the editor. You probably shouldn't touch them. */
1701
+
1702
+ .CodeMirror {
1703
+ position: relative;
1704
+ overflow: hidden;
1705
+ background: white;
1706
+ }
1707
+
1708
+ .CodeMirror-scroll {
1709
+ overflow: scroll !important; /* Things will break if this is overridden */
1710
+ /* 30px is the magic margin used to hide the element's real scrollbars */
1711
+ /* See overflow: hidden in .CodeMirror */
1712
+ margin-bottom: -30px; margin-right: -30px;
1713
+ padding-bottom: 30px;
1714
+ height: 100%;
1715
+ outline: none; /* Prevent dragging from highlighting the element */
1716
+ position: relative;
1717
+ }
1718
+ .CodeMirror-sizer {
1719
+ position: relative;
1720
+ border-right: 30px solid transparent;
1721
+ }
1722
+
1723
+ /* The fake, visible scrollbars. Used to force redraw during scrolling
1724
+ before actual scrolling happens, thus preventing shaking and
1725
+ flickering artifacts. */
1726
+ .CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
1727
+ position: absolute;
1728
+ z-index: 6;
1729
+ display: none;
1730
+ }
1731
+ .CodeMirror-vscrollbar {
1732
+ right: 0; top: 0;
1733
+ overflow-x: hidden;
1734
+ overflow-y: scroll;
1735
+ }
1736
+ .CodeMirror-hscrollbar {
1737
+ bottom: 0; left: 0;
1738
+ overflow-y: hidden;
1739
+ overflow-x: scroll;
1740
+ }
1741
+ .CodeMirror-scrollbar-filler {
1742
+ right: 0; bottom: 0;
1743
+ }
1744
+ .CodeMirror-gutter-filler {
1745
+ left: 0; bottom: 0;
1746
+ }
1747
+
1748
+ .CodeMirror-gutters {
1749
+ position: absolute; left: 0; top: 0;
1750
+ min-height: 100%;
1751
+ z-index: 3;
1752
+ }
1753
+ .CodeMirror-gutter {
1754
+ white-space: normal;
1755
+ height: 100%;
1756
+ display: inline-block;
1757
+ vertical-align: top;
1758
+ margin-bottom: -30px;
1759
+ }
1760
+ .CodeMirror-gutter-wrapper {
1761
+ position: absolute;
1762
+ z-index: 4;
1763
+ background: none !important;
1764
+ border: none !important;
1765
+ }
1766
+ .CodeMirror-gutter-background {
1767
+ position: absolute;
1768
+ top: 0; bottom: 0;
1769
+ z-index: 4;
1770
+ }
1771
+ .CodeMirror-gutter-elt {
1772
+ position: absolute;
1773
+ cursor: default;
1774
+ z-index: 4;
1775
+ }
1776
+ .CodeMirror-gutter-wrapper {
1777
+ -webkit-user-select: none;
1778
+ -moz-user-select: none;
1779
+ user-select: none;
1780
+ }
1781
+
1782
+ .CodeMirror-lines {
1783
+ cursor: text;
1784
+ min-height: 1px; /* prevents collapsing before first draw */
1785
+ }
1786
+ .CodeMirror pre {
1787
+ /* Reset some styles that the rest of the page might have set */
1788
+ -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
1789
+ border-width: 0;
1790
+ background: transparent;
1791
+ font-family: inherit;
1792
+ font-size: inherit;
1793
+ margin: 0;
1794
+ white-space: pre;
1795
+ word-wrap: normal;
1796
+ line-height: inherit;
1797
+ color: inherit;
1798
+ z-index: 2;
1799
+ position: relative;
1800
+ overflow: visible;
1801
+ -webkit-tap-highlight-color: transparent;
1802
+ -webkit-font-variant-ligatures: none;
1803
+ font-variant-ligatures: none;
1804
+ }
1805
+ .CodeMirror-wrap pre {
1806
+ word-wrap: break-word;
1807
+ white-space: pre-wrap;
1808
+ word-break: normal;
1809
+ }
1810
+
1811
+ .CodeMirror-linebackground {
1812
+ position: absolute;
1813
+ left: 0; right: 0; top: 0; bottom: 0;
1814
+ z-index: 0;
1815
+ }
1816
+
1817
+ .CodeMirror-linewidget {
1818
+ position: relative;
1819
+ z-index: 2;
1820
+ overflow: auto;
1821
+ }
1822
+
1823
+ .CodeMirror-widget {}
1824
+
1825
+ .CodeMirror-code {
1826
+ outline: none;
1827
+ }
1828
+
1829
+ /* Force content-box sizing for the elements where we expect it */
1830
+ .CodeMirror-scroll,
1831
+ .CodeMirror-sizer,
1832
+ .CodeMirror-gutter,
1833
+ .CodeMirror-gutters,
1834
+ .CodeMirror-linenumber {
1835
+ -moz-box-sizing: content-box;
1836
+ box-sizing: content-box;
1837
+ }
1838
+
1839
+ .CodeMirror-measure {
1840
+ position: absolute;
1841
+ width: 100%;
1842
+ height: 0;
1843
+ overflow: hidden;
1844
+ visibility: hidden;
1845
+ }
1846
+
1847
+ .CodeMirror-cursor {
1848
+ position: absolute;
1849
+ pointer-events: none;
1850
+ }
1851
+ .CodeMirror-measure pre { position: static; }
1852
+
1853
+ div.CodeMirror-cursors {
1854
+ visibility: hidden;
1855
+ position: relative;
1856
+ z-index: 3;
1857
+ }
1858
+ div.CodeMirror-dragcursors {
1859
+ visibility: visible;
1860
+ }
1861
+
1862
+ .CodeMirror-focused div.CodeMirror-cursors {
1863
+ visibility: visible;
1864
+ }
1865
+
1866
+ .CodeMirror-selected { background: #d9d9d9; }
1867
+ .CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
1868
+ .CodeMirror-crosshair { cursor: crosshair; }
1869
+ .CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }
1870
+ .CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }
1871
+
1872
+ .cm-searching {
1873
+ background: #ffa;
1874
+ background: rgba(255, 255, 0, .4);
1875
+ }
1876
+
1877
+ /* Used to force a border model for a node */
1878
+ .cm-force-border { padding-right: .1px; }
1879
+
1880
+ @media print {
1881
+ /* Hide the cursor when printing */
1882
+ .CodeMirror div.CodeMirror-cursors {
1883
+ visibility: hidden;
1884
+ }
1885
+ }
1886
+
1887
+ /* See issue #2901 */
1888
+ .cm-tab-wrap-hack:after { content: ''; }
1889
+
1890
+ /* Help users use markselection to safely style text background */
1891
+ span.CodeMirror-selectedtext { background: none; }
1892
+
1893
+ /* neo theme for codemirror */
1894
+
1895
+ /* Color scheme */
1896
+
1897
+ .cm-s-neo.CodeMirror {
1898
+ background-color:#ffffff;
1899
+ color:#2e383c;
1900
+ line-height:1.4375;
1901
+ }
1902
+ .cm-s-neo .cm-comment { color:#75787b; }
1903
+ .cm-s-neo .cm-keyword, .cm-s-neo .cm-property { color:#1d75b3; }
1904
+ .cm-s-neo .cm-atom,.cm-s-neo .cm-number { color:#75438a; }
1905
+ .cm-s-neo .cm-node,.cm-s-neo .cm-tag { color:#9c3328; }
1906
+ .cm-s-neo .cm-string { color:#b35e14; }
1907
+ .cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier { color:#047d65; }
1908
+
1909
+
1910
+ /* Editor styling */
1911
+
1912
+ .cm-s-neo pre {
1913
+ padding:0;
1914
+ }
1915
+
1916
+ .cm-s-neo .CodeMirror-gutters {
1917
+ border:none;
1918
+ border-right:10px solid transparent;
1919
+ background-color:transparent;
1920
+ }
1921
+
1922
+ .cm-s-neo .CodeMirror-linenumber {
1923
+ padding:0;
1924
+ color:#e0e2e5;
1925
+ }
1926
+
1927
+ .cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; }
1928
+ .cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; }
1929
+
1930
+ .cm-s-neo .CodeMirror-cursor {
1931
+ width: auto;
1932
+ border: 0;
1933
+ background: rgba(155,157,162,0.37);
1934
+ z-index: 1;
1935
+ }
1936
+
1937
+ #mailpoet_form_name {
1938
+ font-size: 23px;
1939
+ }
1940
+ #mailpoet_form_history {
1941
+ display: none;
1942
+ }
1943
+ #mailpoet_form_editor {
1944
+ padding: 20px;
1945
+ width: 300px;
1946
+ border: 1px solid #ccc;
1947
+ position: relative;
1948
+ background-color: #fff;
1949
+ -webkit-box-shadow: 0 0 5px rgba(0,0,0,0.2) inset 0 0 20px rgba(0,0,0,0.1);
1950
+ box-shadow: 0 0 5px rgba(0,0,0,0.2) inset 0 0 20px rgba(0,0,0,0.1);
1951
+ }
1952
+ #mailpoet_form_editor:before,
1953
+ #mailpoet_form_editor:after {
1954
+ position: absolute;
1955
+ width: 40%;
1956
+ height: 10px;
1957
+ content: ' ';
1958
+ left: 12px;
1959
+ bottom: 12px;
1960
+ background: transparent;
1961
+ -webkit-transform: skew(-5deg) rotate(-5deg);
1962
+ -moz-transform: skew(-5deg) rotate(-5deg);
1963
+ -ms-transform: skew(-5deg) rotate(-5deg);
1964
+ -o-transform: skew(-5deg) rotate(-5deg);
1965
+ -webkit-transform: skew(-5deg) rotate(-5deg);
1966
+ -moz-transform: skew(-5deg) rotate(-5deg);
1967
+ -o-transform: skew(-5deg) rotate(-5deg);
1968
+ -ms-transform: skew(-5deg) rotate(-5deg);
1969
+ transform: skew(-5deg) rotate(-5deg);
1970
+ rgba(0,0,0,0.3)
1971
+ rgba(0,0,0,0.3)
1972
+ -webkit-box-shadow: 0 6px 12px rgba(0,0,0,0.3);
1973
+ box-shadow: 0 6px 12px rgba(0,0,0,0.3);
1974
+ z-index: -1;
1975
+ }
1976
+ #mailpoet_form_editor:after {
1977
+ left: auto;
1978
+ right: 12px;
1979
+ -webkit-transform: skew(5deg) rotate(5deg);
1980
+ -moz-transform: skew(5deg) rotate(5deg);
1981
+ -ms-transform: skew(5deg) rotate(5deg);
1982
+ -o-transform: skew(5deg) rotate(5deg);
1983
+ -webkit-transform: skew(5deg) rotate(5deg);
1984
+ -moz-transform: skew(5deg) rotate(5deg);
1985
+ -o-transform: skew(5deg) rotate(5deg);
1986
+ -ms-transform: skew(5deg) rotate(5deg);
1987
+ transform: skew(5deg) rotate(5deg);
1988
+ }
1989
+ .mailpoet_warning {
1990
+ font-weight: bold;
1991
+ color: #900;
1992
+ }
1993
+ .block_placeholder {
1994
+ font-weight: bold;
1995
+ height: 0;
1996
+ overflow: hidden;
1997
+ line-height: 30px;
1998
+ text-align: center;
1999
+ border: 0 none;
2000
+ width: 298px;
2001
+ z-index: 9500;
2002
+ margin: 0 auto;
2003
+ text-indent: -9999px;
2004
+ }
2005
+ .block_placeholder.active {
2006
+ text-indent: 0;
2007
+ /*border:1px dashed #dfdfdf;*/
2008
+ /*background-color:#f5f5f5;*/
2009
+ background-color: #4cb7e1;
2010
+ display: block;
2011
+ overflow: auto;
2012
+ height: 30px;
2013
+ }
2014
+ .block_placeholder.hover {
2015
+ background-color: #0074a2;
2016
+ border-color: #0074a2;
2017
+ color: #fff;
2018
+ }
2019
+ .mailpoet_form_block {
2020
+ background-color: #fff;
2021
+ height: 20px;
2022
+ border: 0 none;
2023
+ }
2024
+ .mailpoet_form_block.highlighted {
2025
+ border: 1px solid #5897fb;
2026
+ padding: 9px 17px;
2027
+ }
2028
+ .mailpoet_form_block img {
2029
+ max-width: 100%;
2030
+ }
2031
+ .mailpoet_form_block p {
2032
+ margin: 5px 0;
2033
+ word-wrap: break-word;
2034
+ }
2035
+ .mailpoet_radio,
2036
+ .mailpoet_checkbox {
2037
+ margin: -2px 5px 0 0;
2038
+ }
2039
+ #mailpoet_form_wrapper {
2040
+ position: relative;
2041
+ margin: 20px 0 0 0;
2042
+ }
2043
+ #mailpoet_form_container {
2044
+ width: 340px;
2045
+ margin: 0;
2046
+ }
2047
+ #mailpoet_form_editor.loading,
2048
+ #mailpoet_form_toolbar.loading {
2049
+ background: url("loading.gif") no-repeat center center #fcfcfc;
2050
+ }
2051
+ #mailpoet_form_toolbar.loading {
2052
+ border: 1px solid #dfdfdf;
2053
+ }
2054
+ #mailpoet_form_toolbar.loading #mailpoet_toolbar_fields {
2055
+ visibility: hidden;
2056
+ z-index: 1;
2057
+ }
2058
+ #wysija-add-field {
2059
+ float: none;
2060
+ }
2061
+ #mailpoet_form_toolbar {
2062
+ z-index: 999;
2063
+ position: absolute;
2064
+ width: 400px;
2065
+ }
2066
+ #mailpoet_form_toolbar .mailpoet_form_toolbar_tabs {
2067
+ border-bottom: 1px solid #dfdfdf;
2068
+ line-height: 0;
2069
+ }
2070
+ #mailpoet_form_toolbar .add_custom_field {
2071
+ text-align: center;
2072
+ padding: 15px 0 5px 0;
2073
+ }
2074
+ #mailpoet_form_toolbar .mailpoet_form_toolbar_tabs li,
2075
+ #mailpoet_form_toolbar .mailpoet_form_toolbar_tabs a {
2076
+ margin: 0;
2077
+ height: 30px;
2078
+ line-height: 30px;
2079
+ padding: 0;
2080
+ display: -moz-inline-box;
2081
+ display: inline-block;
2082
+ *display: inline;
2083
+ *float: left;
2084
+ outline: 0 none;
2085
+ }
2086
+ #mailpoet_form_toolbar .mailpoet_form_toolbar_tabs a {
2087
+ outline: 0 none;
2088
+ text-decoration: none;
2089
+ color: #a6a6a6;
2090
+ }
2091
+ #mailpoet_form_toolbar .mailpoet_form_toolbar_tabs li {
2092
+ margin: 0 0 1px 0;
2093
+ }
2094
+ #mailpoet_form_toolbar .mailpoet_form_toolbar_tabs a {
2095
+ font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
2096
+ background-color: #f5f5f5;
2097
+ background: -webkit-linear-gradient(center top, #f9f9f9, #f5f5f5);
2098
+ background: -moz-linear-gradient(center top, #f9f9f9, #f5f5f5);
2099
+ background: -o-linear-gradient(center top, #f9f9f9, #f5f5f5);
2100
+ background: -ms-linear-gradient(center top, #f9f9f9, #f5f5f5);
2101
+ background: linear-gradient(center top, #f9f9f9, #f5f5f5);
2102
+ border: 1px solid #dfdfdf;
2103
+ border-radius: 3px 3px 0 0;
2104
+ -webkit-box-shadow: 0 1px 0 #fff inset;
2105
+ box-shadow: 0 1px 0 #fff inset;
2106
+ padding: 0 7px;
2107
+ }
2108
+ #mailpoet_form_toolbar .mailpoet_form_toolbar_tabs a:hover {
2109
+ background-color: #eee;
2110
+ }
2111
+ #mailpoet_form_toolbar .mailpoet_form_toolbar_tabs a.selected {
2112
+ color: #000;
2113
+ border-bottom: 0 none;
2114
+ background: #fcfcfc;
2115
+ filter: none;
2116
+ padding-bottom: 1px;
2117
+ }
2118
+ #mailpoet_form_toolbar .mailpoet_form_toolbar_tabs .last a,
2119
+ .wysija_params {
2120
+ display: none !important;
2121
+ }
2122
+ #mailpoet_form_toolbar .mailpoet_form_toolbar_tabs,
2123
+ #mailpoet_form_toolbar #mailpoet_toolbar_fields {
2124
+ position: relative;
2125
+ z-index: 9998;
2126
+ margin: 0;
2127
+ }
2128
+ #mailpoet_form_name_input {
2129
+ vertical-align: bottom;
2130
+ }
2131
+ .mailpoet_form_widget {
2132
+ width: 298px;
2133
+ height: 25px;
2134
+ line-height: 25px;
2135
+ z-index: 9999 !important;
2136
+ }
2137
+ .mailpoet_toolbar_section {
2138
+ margin-bottom: 0;
2139
+ background: none repeat scroll 0 0 #fff;
2140
+ border: 1px solid #e5e5e5;
2141
+ -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04);
2142
+ box-shadow: 0 1px 1px rgba(0,0,0,0.04);
2143
+ min-width: 255px;
2144
+ position: relative;
2145
+ cursor: pointer;
2146
+ overflow: hidden;
2147
+ max-height: 1000px;
2148
+ -webkit-transition: max-height 0.5s ease-in-out;
2149
+ -moz-transition: max-height 0.5s ease-in-out;
2150
+ -o-transition: max-height 0.5s ease-in-out;
2151
+ -ms-transition: max-height 0.5s ease-in-out;
2152
+ transition: max-height 0.5s ease-in-out;
2153
+ }
2154
+ .mailpoet_toolbar_section > div {
2155
+ padding: 10px 20px 20px 20px;
2156
+ overflow: auto;
2157
+ height: 100%;
2158
+ min-width: 255px;
2159
+ }
2160
+ .mailpoet_toolbar_section h3 {
2161
+ margin: 10px;
2162
+ position: relative;
2163
+ }
2164
+ .mailpoet_toolbar_section.closed {
2165
+ max-height: 38px;
2166
+ }
2167
+ .mailpoet_toolbar_section .mailpoet_toggle {
2168
+ position: absolute;
2169
+ top: 0;
2170
+ right: 0;
2171
+ height: 38px;
2172
+ width: 27px;
2173
+ }
2174
+ .mailpoet_toolbar_section .mailpoet_toggle:focus {
2175
+ outline: 0 none !important;
2176
+ -webkit-box-shadow: none !important;
2177
+ box-shadow: none !important;
2178
+ }
2179
+ .mailpoet_toolbar_section .mailpoet_toggle:before {
2180
+ right: 12px;
2181
+ font: 400 20px/1 dashicons;
2182
+ speak: none;
2183
+ display: inline-block;
2184
+ padding: 8px 10px;
2185
+ top: 0;
2186
+ position: relative;
2187
+ -webkit-font-smoothing: antialiased;
2188
+ -moz-osx-font-smoothing: grayscale;
2189
+ text-decoration: none !important;
2190
+ content: '\f142';
2191
+ }
2192
+ .mailpoet_toolbar_section.closed .mailpoet_toggle:before {
2193
+ content: '\f140';
2194
+ }
2195
+ #mailpoet_form_styles {
2196
+ margin: 10px;
2197
+ max-width: 318px;
2198
+ width: 318px;
2199
+ min-height: 300px;
2200
+ resize: vertical;
2201
+ }
2202
+ #mailpoet_form_toolbar a.mailpoet_form_field,
2203
+ .mailpoet_form_widget {
2204
+ height: 25px;
2205
+ line-height: 25px;
2206
+ background-color: #f5f5f5;
2207
+ background: -webkit-linear-gradient(center top, #f9f9f9, #ececec);
2208
+ background: -moz-linear-gradient(center top, #f9f9f9, #ececec);
2209
+ background: -o-linear-gradient(center top, #f9f9f9, #ececec);
2210
+ background: -ms-linear-gradient(center top, #f9f9f9, #ececec);
2211
+ background: linear-gradient(center top, #f9f9f9, #ececec);
2212
+ border: 1px solid #dfdfdf;
2213
+ border-radius: 3px;
2214
+ -webkit-box-shadow: 0 1px 0 #fff inset;
2215
+ box-shadow: 0 1px 0 #fff inset;
2216
+ display: block;
2217
+ font-size: 12px;
2218
+ font-weight: bold;
2219
+ padding: 0 7px;
2220
+ cursor: move;
2221
+ color: #222;
2222
+ text-shadow: 0 1px 0 #fff;
2223
+ }
2224
+ #mailpoet_form_toolbar a.mailpoet_form_field.disabled {
2225
+ cursor: pointer;
2226
+ color: #ccc;
2227
+ pointer-events: none;
2228
+ }
2229
+ .mailpoet_form_field_edit {
2230
+ position: absolute;
2231
+ right: 27px;
2232
+ bottom: 13px;
2233
+ }
2234
+ .mailpoet_form_field_delete {
2235
+ position: absolute;
2236
+ right: 7px;
2237
+ bottom: 13px;
2238
+ }
2239
+ #mailpoet_toolbar_fields li {
2240
+ padding: 0 0 10px 0;
2241
+ position: relative;
2242
+ }
2243
+ #mailpoet_toolbar_fields li.notice {
2244
+ font-style: italic;
2245
+ font-size: 11px;
2246
+ margin: 0 !important;
2247
+ border: 0 none !important;
2248
+ background: none !important;
2249
+ }
2250
+ .mailpoet_form_block {
2251
+ position: relative;
2252
+ margin: 0;
2253
+ padding: 10px 18px 10px 18px;
2254
+ display: inline-table;
2255
+ display: block;
2256
+ height: 1%;
2257
+ margin: 0;
2258
+ z-index: 98;
2259
+ }
2260
+ .mailpoet_form_block.dragging {
2261
+ z-index: 99000;
2262
+ pointer-events: none;
2263
+ }
2264
+ .mailpoet_form_block:after {
2265
+ content: ".";
2266
+ display: block;
2267
+ height: 0;
2268
+ clear: both;
2269
+ visibility: hidden;
2270
+ }
2271
+ .mailpoet_form_block.hover {
2272
+ border: 1px dashed #bbb;
2273
+ margin: 0 0 0 0;
2274
+ padding: 9px 17px 9px 17px;
2275
+ }
2276
+ .mailpoet_form_block.static {
2277
+ /*padding:0;
2278
+ margin:0;*/
2279
+ background-color: #999;
2280
+ }
2281
+ .mailpoet_form_block .wysija_controls {
2282
+ background-color: #dfdfdf;
2283
+ background: -webkit-linear-gradient(center top, #eee, #bbb);
2284
+ background: -moz-linear-gradient(center top, #eee, #bbb);
2285
+ background: -o-linear-gradient(center top, #eee, #bbb);
2286
+ background: -ms-linear-gradient(center top, #eee, #bbb);
2287
+ background: linear-gradient(center top, #eee, #bbb);
2288
+ border-radius: 2px;
2289
+ border: 1px solid #ccc;
2290
+ position: absolute;
2291
+ margin: 0;
2292
+ padding: 0;
2293
+ width: 298px;
2294
+ height: 20px;
2295
+ left: -1px;
2296
+ right: 0;
2297
+ top: -22px;
2298
+ }
2299
+ .mailpoet_form_block .wysija_controls li {
2300
+ float: left;
2301
+ width: 20px;
2302
+ height: 20px;
2303
+ }
2304
+ .mailpoet_form_block .wysija_controls a {
2305
+ cursor: pointer;
2306
+ float: left;
2307
+ font-size: 120%;
2308
+ font-weight: bold;
2309
+ height: 20px;
2310
+ line-height: 20px;
2311
+ text-align: center;
2312
+ width: 20px;
2313
+ color: #000;
2314
+ }
2315
+ .mailpoet_form_block .wysija_controls a.remove {
2316
+ margin: 0 0 0 1px;
2317
+ }
2318
+ .mailpoet_form_block .handle_container,
2319
+ .mailpoet_form_block .handle_container a {
2320
+ float: none;
2321
+ width: 40px !important;
2322
+ }
2323
+ .mailpoet_form_block .handle_container {
2324
+ left: 140px;
2325
+ top: 0;
2326
+ position: absolute;
2327
+ }
2328
+ .wysija_controls a span,
2329
+ .wysija_gallery .wysija_tools a span,
2330
+ .wysija_image .wysija_tools a span,
2331
+ .wysija_text .wysija_tools a span,
2332
+ #mailpoet_toolbar_fields a span {
2333
+ display: block;
2334
+ height: 20px;
2335
+ width: 20px;
2336
+ }
2337
+ .wysija_controls span input {
2338
+ margin: 2px 0 0 0;
2339
+ padding: 0;
2340
+ color: transparent;
2341
+ }
2342
+ .alignment-left span {
2343
+ background: url("../img/form_editor_icons.png") no-repeat 0 0;
2344
+ }
2345
+ .alignment-left.active span,
2346
+ .alignment-left:hover span {
2347
+ background: url("../img/form_editor_icons.png") no-repeat 0 -20px;
2348
+ }
2349
+ .alignment-center span {
2350
+ background: url("../img/form_editor_icons.png") no-repeat -20px 0;
2351
+ }
2352
+ .alignment-center.active span,
2353
+ .alignment-center:hover span {
2354
+ background: url("../img/form_editor_icons.png") no-repeat -20px -20px;
2355
+ }
2356
+ .alignment-right span {
2357
+ background: url("../img/form_editor_icons.png") no-repeat -40px 0;
2358
+ }
2359
+ .alignment-right.active span,
2360
+ .alignment-right:hover span {
2361
+ background: url("../img/form_editor_icons.png") no-repeat -40px -20px;
2362
+ }
2363
+ .add-link span {
2364
+ background: url("../img/form_editor_icons.png") no-repeat -60px 0;
2365
+ }
2366
+ .add-link.active span,
2367
+ .add-link:hover span {
2368
+ background: url("../img/form_editor_icons.png") no-repeat -60px -20px;
2369
+ }
2370
+ .remove-link span {
2371
+ background: url("../img/form_editor_icons.png") no-repeat -80px 0;
2372
+ }
2373
+ .remove-link.active span,
2374
+ .remove-link:hover span {
2375
+ background: url("../img/form_editor_icons.png") no-repeat -80px -20px;
2376
+ }
2377
+ .remove span,
2378
+ .delete span {
2379
+ background: url("../img/form_editor_icons.png") no-repeat -100px 0;
2380
+ }
2381
+ .remove.active span,
2382
+ .remove:hover span,
2383
+ .delete.active span,
2384
+ .delete:hover span {
2385
+ background: url("../img/form_editor_icons.png") no-repeat -100px -20px;
2386
+ }
2387
+ .handle span {
2388
+ background: url("../img/handle.png") no-repeat;
2389
+ cursor: move;
2390
+ width: 40px !important;
2391
+ }
2392
+ .duplicate span {
2393
+ background: url("../img/form_editor_icons.png") no-repeat -140px 0;
2394
+ }
2395
+ .duplicate.active span,
2396
+ .duplicate:hover span {
2397
+ background: url("../img/form_editor_icons.png") no-repeat -140px -20px;
2398
+ }
2399
+ .settings span {
2400
+ background: url("../img/form_editor_icons.png") no-repeat -160px 0;
2401
+ }
2402
+ .settings.active span,
2403
+ .settings:hover span {
2404
+ background: url("../img/form_editor_icons.png") no-repeat -160px -20px;
2405
+ }
2406
+ .icon-plus span {
2407
+ background: url("../img/form_editor_icons.png") no-repeat -200px 0;
2408
+ }
2409
+ .icon-plus.active span,
2410
+ .icon-plus:hover span {
2411
+ background: url("../img/form_editor_icons.png") no-repeat -200px -20px;
2412
+ }
2413
+ .icon-minus span {
2414
+ background: url("../img/form_editor_icons.png") no-repeat -220px 0;
2415
+ }
2416
+ .icon-minus.active span,
2417
+ .icon-minus:hover span {
2418
+ background: url("../img/form_editor_icons.png") no-repeat -220px -20px;
2419
+ }
2420
+ .wysija_options {
2421
+ display: none;
2422
+ }
2423
+ .wysija_settings {
2424
+ position: absolute;
2425
+ z-index: 1000;
2426
+ }
2427
+ .wysija_settings a {
2428
+ background-color: #f5f5f5;
2429
+ background: -webkit-linear-gradient(center top, #f9f9f9, #ececec);
2430
+ background: -moz-linear-gradient(center top, #f9f9f9, #ececec);
2431
+ background: -o-linear-gradient(center top, #f9f9f9, #ececec);
2432
+ background: -ms-linear-gradient(center top, #f9f9f9, #ececec);
2433
+ background: linear-gradient(center top, #f9f9f9, #ececec);
2434
+ border: 1px solid #dfdfdf;
2435
+ border-radius: 3px;
2436
+ -webkit-box-shadow: 0 1px 0 #fff inset;
2437
+ box-shadow: 0 1px 0 #fff inset;
2438
+ font-size: 12px;
2439
+ font-weight: normal;
2440
+ cursor: pointer;
2441
+ color: #222;
2442
+ text-shadow: 0 1px 0 #fff;
2443
+ text-decoration: none;
2444
+ display: block;
2445
+ padding: 5px 5px 3px 27px;
2446
+ }
2447
+ .wysija_settings a span {
2448
+ width: 20px;
2449
+ height: 20px;
2450
+ position: absolute;
2451
+ top: 3px;
2452
+ left: 5px;
2453
+ }
2454
+ .mailpoet_form_block label {
2455
+ margin: 0 5px 0 0;
2456
+ display: block;
2457
+ }
2458
+ #mailpoet_on_success textarea,
2459
+ #mailpoet_on_success select {
2460
+ width: 100%;
2461
+ }
2462
+ #mailpoet_on_success textarea {
2463
+ height: 50px;
2464
+ min-height: 50px;
2465
+ resize: vertical;
2466
+ }
2467
+ .mailpoet_form_block textarea {
2468
+ resize: none;
2469
+ }
2470
+ .mailpoet_form_block input,
2471
+ .mailpoet_form_block textarea {
2472
+ pointer-events: none;
2473
+ }
2474
+ #mailpoet_form_export textarea {
2475
+ width: 340px;
2476
+ height: 150px;
2477
+ min-height: 150px;
2478
+ resize: vertical;
2479
+ font-size: 85%;
2480
+ display: none;
2481
+ }
2482
+ .mailpoet_form_field_edit,
2483
+ .mailpoet_form_field_delete {
2484
+ text-decoration: none;
2485
+ }
2486
+ .mailpoet_form_field_edit:hover .dashicons-admin-generic:before,
2487
+ .mailpoet_form_field_delete:hover .dashicons-dismiss:before,
2488
+ .settings:hover .dashicons-admin-generic:before {
2489
+ color: #2ea2cc;
2490
+ }
2491
+ .mailpoet_form_field_edit span,
2492
+ .mailpoet_form_field_delete span {
2493
+ background: none !important;
2494
+ color: #999;
2495
+ }
2496
+ .mailpoet_form_field_delete span:before {
2497
+ font-size: 21px;
2498
+ }
2499
+ .CodeMirror {
2500
+ border: 1px solid #eee;
2501
+ }
2502
+ #mailpoet_form_segments.parsley-error + span .select2-selection {
2503
+ border: 1px solid #b94a48;
2504
+ }
2505
+ .mailpoet_listing_loading tbody tr,
2506
+ .mailpoet_form_loading tbody tr {
2507
+ opacity: 0.2;
2508
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
2509
+ filter: alpha(opacity=20);
2510
+ }
2511
+ .mailpoet_select_all {
2512
+ background-color: #f1f1f1;
2513
+ }
2514
+ .mailpoet_select_all td {
2515
+ text-align: center;
2516
+ }
2517
+ .mailpoet_listing_table th span {
2518
+ white-space: nowrap;
2519
+ }
2520
+ .mailpoet_listing_table thead .check-column,
2521
+ .mailpoet_listing_table tfoot .check-column {
2522
+ padding: 10px 0 0 3px;
2523
+ }
2524
+ .mailpoet_listing_table thead th.column-primary,
2525
+ .mailpoet_listing_table tfoot th.column-primary {
2526
+ width: 25em;
2527
+ }
2528
+ @media screen and (max-width: 782px) {
2529
+ .mailpoet_listing_table thead th.column-primary,
2530
+ .mailpoet_listing_table tfoot th.column-primary {
2531
+ width: 100%;
2532
+ }
2533
+ }
2534
+ #newsletters_container h2.nav-tab-wrapper {
2535
+ margin-bottom: 1rem;
2536
+ }
2537
+ .mailpoet_boxes.mailpoet_boxes_loading {
2538
+ opacity: 0.2;
2539
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
2540
+ filter: alpha(opacity=20);
2541
+ }
2542
+ .mailpoet_boxes li {
2543
+ float: left;
2544
+ position: relative;
2545
+ padding: 15px;
2546
+ margin: 15px 25px 0 0;
2547
+ width: 425px;
2548
+ height: 150px;
2549
+ border: 1px solid #dedede;
2550
+ background-color: #fff;
2551
+ }
2552
+ .mailpoet_boxes .mailpoet_thumbnail {
2553
+ background-color: #222;
2554
+ -webkit-background-size: 50% 50%;
2555
+ -moz-background-size: 50% 50%;
2556
+ background-size: 50% 50%;
2557
+ background-repeat: no-repeat;
2558
+ background-position: center;
2559
+ color: #222;
2560
+ border: 1px solid #ccc;
2561
+ width: 150px;
2562
+ height: 150px;
2563
+ margin-right: 15px;
2564
+ float: left;
2565
+ overflow: hidden;
2566
+ position: relative;
2567
+ }
2568
+ .mailpoet_boxes .mailpoet_thumbnail img {
2569
+ min-width: 150px;
2570
+ height: auto;
2571
+ width: 110%;
2572
+ position: relative;
2573
+ top: 50%;
2574
+ left: 50%;
2575
+ -webkit-transform: translate(-50%, -50%);
2576
+ -moz-transform: translate(-50%, -50%);
2577
+ -o-transform: translate(-50%, -50%);
2578
+ -ms-transform: translate(-50%, -50%);
2579
+ transform: translate(-50%, -50%);
2580
+ }
2581
+ .mailpoet_boxes .mailpoet_thumbnail .mailpoet_overlay {
2582
+ position: absolute;
2583
+ top: 0;
2584
+ left: 0;
2585
+ right: 0;
2586
+ bottom: 0;
2587
+ background-color: rgba(255,255,255,0);
2588
+ opacity: 0;
2589
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
2590
+ filter: alpha(opacity=0);
2591
+ -webkit-transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1) /* ease-in-out */;
2592
+ -moz-transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1) /* ease-in-out */;
2593
+ -o-transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1) /* ease-in-out */;
2594
+ -ms-transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1) /* ease-in-out */;
2595
+ transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1) /* ease-in-out */;
2596
+ }
2597
+ .mailpoet_boxes .mailpoet_thumbnail .mailpoet_overlay:hover {
2598
+ background-color: rgba(255,255,255,0.7);
2599
+ opacity: 1;
2600
+ -ms-filter: none;
2601
+ filter: none;
2602
+ }
2603
+ .mailpoet_boxes .mailpoet_thumbnail .mailpoet_overlay::after {
2604
+ content: " ";
2605
+ position: absolute;
2606
+ top: 0;
2607
+ left: 0;
2608
+ bottom: 0;
2609
+ right: 0;
2610
+ background: url("../img/preview_magnifying_glass.svg") no-repeat center center;
2611
+ }
2612
+ .mailpoet_boxes .mailpoet_description {
2613
+ float: left;
2614
+ width: 245px;
2615
+ max-height: 110px;
2616
+ padding-bottom: 0;
2617
+ overflow: hidden;
2618
+ }
2619
+ .mailpoet_boxes .mailpoet_description h3 {
2620
+ margin: 0 0 5px 0;
2621
+ overflow: hidden;
2622
+ max-width: 210px;
2623
+ line-height: 26.25px;
2624
+ font-size: 18.75px;
2625
+ }
2626
+ .mailpoet_boxes .mailpoet_description p {
2627
+ font-size: 13.125px;
2628
+ line-height: 13.125px;
2629
+ margin: 0;
2630
+ }
2631
+ .mailpoet_boxes .mailpoet_actions {
2632
+ position: absolute;
2633
+ bottom: 15px;
2634
+ right: 15px;
2635
+ }
2636
+ .mailpoet_boxes .mailpoet_delete {
2637
+ display: none;
2638
+ position: absolute;
2639
+ top: 15px;
2640
+ right: 15px;
2641
+ }
2642
+ .mailpoet_boxes li:hover .mailpoet_delete {
2643
+ display: block;
2644
+ }
2645
+ .mailpoet_boxes .mailpoet_delete a {
2646
+ color: #a00;
2647
+ }
2648
+ .mailpoet_boxes .mailpoet_delete a:hover {
2649
+ color: #f00;
2650
+ }
2651
+ [data-type="notification"] .mailpoet_thumbnail {
2652
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%2032%2032%22%20enable-background%3D%22new%200%200%2032%2032%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23ffffff%22%20d%3D%22M10%2C10v18h12l6-6V10H10z%20M21.746%2C18.747l-0.609%2C0.609c-0.368%2C0.374-0.578%2C0.822-0.63%2C1.344%20c-0.051%2C0.523%2C0.064%2C0.998%2C0.345%2C1.426l-1.487%2C1.479l-1.958-1.958l-2.275%2C2.267c-0.292%2C0.292-0.844%2C0.712-1.653%2C1.259%20c-0.81%2C0.547-1.288%2C0.747-1.434%2C0.601c-0.146-0.146%2C0.054-0.627%2C0.601-1.442c0.547-0.815%2C0.964-1.366%2C1.251-1.653l2.267-2.267%20l-1.958-1.966l1.487-1.479c0.422%2C0.282%2C0.896%2C0.397%2C1.422%2C0.345c0.526-0.052%2C0.972-0.264%2C1.34-0.638l0.609-0.609%20c0.374-0.368%2C0.586-0.815%2C0.638-1.34c0.051-0.525-0.064-1.002-0.345-1.43l1.479-1.479l5.167%2C5.159l-1.487%2C1.479%20c-0.422-0.282-0.896-0.397-1.422-0.345C22.569%2C18.16%2C22.12%2C18.373%2C21.746%2C18.747z%20M22%2C26.5V22h4.5L22%2C26.5z%22%2F%3E%3Cg%20opacity%3D%220.3%22%3E%3Cg%3E%3Cpath%20fill%3D%22%23ffffff%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M7%2C7v18h2V9h16V7H7z%20M22%2C4H4v18h2V6h16V4z%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
2653
+ }
2654
+ [data-type="welcome"] .mailpoet_thumbnail {
2655
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%2070%2070%22%20enable-background%3D%22new%200%200%2070%2070%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23ffffff%22%20d%3D%22M62.751%2C65.368L43.923%2C50.955l18.832-14.377l-5.395-4.118v-3.479l5.983%2C4.568%20v3.479l0.166%2C26.269C63.51%2C64.089%2C63.198%2C64.783%2C62.751%2C65.368z%20M31.502%2C49.5l-15.993-12v-30c0-1.657%2C1.343-3%2C2.999-3h33.985%20c1.656%2C0%2C2.999%2C1.343%2C2.999%2C3v30l-15.993%2C12H31.502z%20M47.5%2C13.5h-3v-3h-2v3h-3v2h3v3h2v-3h3V13.5z%20M44.504%2C33.316%20c0%2C0-0.012-1.304-2.653-2.478c-1.306-0.58-2.845-1.702-5.621-2.048c0.839-0.646%2C1.231-1.976%2C1.946-3.796%20c0.01-0.027%2C0.02-0.055%2C0.03-0.081c0.161%2C0.028%2C0.324%2C0.027%2C0.444-0.048c0.333-0.209%2C0.535-1.347%2C0.542-1.902%20c0.009-0.831-0.406-0.75-0.406-0.75s-0.009-0.003-0.021-0.006c0.002-0.066%2C0.006-0.133%2C0.006-0.199c0-0.751%2C0.152-2.021-0.047-2.728%20c-0.3-1.068-0.723-1.941-1.46-2.242c-0.97-0.396-2.341-1.536-2.788-1.536c-0.537%2C0-1.961%2C1.114-2.797%2C1.544%20c-0.707%2C0.363-1.154%2C1.175-1.453%2C2.241c-0.193%2C0.688-0.045%2C1.94-0.045%2C2.721c0%2C0.065%2C0.004%2C0.131%2C0.006%2C0.196%20c-0.02%2C0.005-0.034%2C0.009-0.034%2C0.009s-0.416-0.082-0.407%2C0.75c0.006%2C0.555%2C0.209%2C1.693%2C0.542%2C1.902%20c0.122%2C0.077%2C0.291%2C0.077%2C0.456%2C0.046c0.011%2C0.029%2C0.022%2C0.06%2C0.033%2C0.089c0.722%2C1.835%2C1.091%2C3.158%2C1.937%2C3.797%20c-2.748%2C0.354-4.277%2C1.467-5.575%2C2.046c-2.631%2C1.173-2.643%2C2.473-2.643%2C2.473v2.182l20.008-0.003V33.316z%20M26.795%2C50.955%20L8.05%2C65.305c-0.419-0.574-0.55-1.41-0.55-2.174V37.015l-0.015%2C0.011v-3.479l5.998-4.579v3.479L8.017%2C36.62L26.795%2C50.955z%20M29.137%2C52.659v-0.157h12.462v0.144l0.047-0.036L59.73%2C66.5H10.989l18.084-13.889L29.137%2C52.659z%22%2F%3E%3C%2Fsvg%3E%0A");
2656
+ }
2657
+ [data-type="standard"] .mailpoet_thumbnail {
2658
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%2070%2070%22%20enable-background%3D%22new%200%200%2070%2070%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23ffffff%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M62.751%2C65.368L43.923%2C50.955l18.832-14.377l-5.395-4.118v-3.479l5.983%2C4.568%20v3.479l0.166%2C26.269C63.51%2C64.089%2C63.198%2C64.783%2C62.751%2C65.368z%20M31.433%2C49.5l-15.955-12v-30c0-1.657%2C1.339-3%2C2.992-3h33.905%20c1.652%2C0%2C2.992%2C1.343%2C2.992%2C3v30l-15.955%2C12H31.433z%20M18.469%2C35.5H33.5v-2H18.469V35.5z%20M18.469%2C31.5H33.5v-2H18.469V31.5z%20M18.469%2C27.5H33.5v-2H18.469V27.5z%20M38.406%2C7.5H18.469v14h19.937V7.5z%20M52.375%2C7.5H40.408v2h11.967V7.5z%20M52.375%2C11.5H40.408v2%20h11.967V11.5z%20M52.375%2C15.5H40.408v2h11.967V15.5z%20M52.375%2C19.5H40.408v2h11.967V19.5z%20M52.375%2C25.5H37.5v2h14.875V25.5z%20M52.375%2C29.5H37.5v2h14.875V29.5z%20M52.375%2C33.5H37.5v2h14.875V33.5z%20M26.14%2C17.192L28.442%2C9.5l3.277%2C6.571l1.71-2.571l2.992%2C6%20h-2.992h-3.989h-0.997H25.45h-4.986l3.989-4L26.14%2C17.192z%20M22.469%2C12.5h-1c-0.552%2C0-1-0.448-1-1v-1c0-0.552%2C0.448-1%2C1-1h1%20c0.552%2C0%2C1%2C0.448%2C1%2C1v1C23.469%2C12.052%2C23.021%2C12.5%2C22.469%2C12.5z%20M26.795%2C50.955L8.05%2C65.305c-0.419-0.574-0.55-1.41-0.55-2.174%20V37.015l-0.015%2C0.011v-3.479l5.998-4.579v3.479L8.017%2C36.62L26.795%2C50.955z%20M29.137%2C52.659v-0.157h12.462v0.144l0.047-0.036%20L59.73%2C66.5H10.989l18.084-13.889L29.137%2C52.659z%22%2F%3E%3C%2Fsvg%3E%0A");
2659
+ }
2660
+ .mailpoet_boxes_preview {
2661
+ margin: -10px;
2662
+ padding: 10px 20px;
2663
+ }
2664
+ .mailpoet_breadcrumb {
2665
+ font-size: 0.9em;
2666
+ text-transform: uppercase;
2667
+ color: #444;
2668
+ }
2669
+ .mailpoet_breadcrumb .mailpoet_current {
2670
+ font-weight: bold;
2671
+ }
2672
+ .mailpoet_breadcrumb a {
2673
+ text-decoration: none;
2674
+ color: #444;
2675
+ }
2676
+ .mailpoet_breadcrumb a:hover {
2677
+ color: #222;
2678
+ }
2679
+ .mailpoet_form {
2680
+ margin: 0 0 20px 0;
2681
+ }
2682
+ .mailpoet_form td {
2683
+ vertical-align: top !important;
2684
+ }
2685
+ input.parsley-success,
2686
+ select.parsley-success,
2687
+ textarea.parsley-success {
2688
+ color: #468847;
2689
+ background-color: #dff0d8;
2690
+ border: 1px solid #d6e9c6;
2691
+ }
2692
+ input.parsley-error,
2693
+ select.parsley-error,
2694
+ textarea.parsley-error {
2695
+ color: #b94a48;
2696
+ background-color: #f2dede;
2697
+ border: 1px solid #eed3d7;
2698
+ }
2699
+ .parsley-errors-list {
2700
+ margin: 2px 0 3px;
2701
+ padding: 0;
2702
+ list-style-type: none;
2703
+ font-size: 0.9em;
2704
+ line-height: 0.9em;
2705
+ color: #b94a48;
2706
+ opacity: 0;
2707
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
2708
+ filter: alpha(opacity=0);
2709
+ -webkit-transition: all 0.3s ease-in;
2710
+ -moz-transition: all 0.3s ease-in;
2711
+ -o-transition: all 0.3s ease-in;
2712
+ -ms-transition: all 0.3s ease-in;
2713
+ transition: all 0.3s ease-in;
2714
+ -o-transition: all 0.3s ease-in;
2715
+ -moz-transition: all 0.3s ease-in;
2716
+ -webkit-transition: all 0.3s ease-in;
2717
+ }
2718
+ .parsley-errors-list.filled {
2719
+ opacity: 1;
2720
+ -ms-filter: none;
2721
+ filter: none;
2722
+ }
2723
+ .parsley-errors-list {
2724
+ margin-top: 8px;
2725
+ }
2726
+ .parsley-required,
2727
+ .parsley-custom-error-message {
2728
+ color: #b94a48;
2729
+ }
2730
+ #mailpoet_settings .mailpoet_panel {
2731
+ display: none;
2732
+ }
2733
+ #mailpoet_settings .form-table th {
2734
+ width: 20em;
2735
+ }
2736
+ #mailpoet_settings .mailpoet_sending_methods {
2737
+ margin: 25px 0 0 0;
2738
+ }
2739
+ #mailpoet_settings .mailpoet_sending_methods li {
2740
+ float: left;
2741
+ position: relative;
2742
+ padding: 15px 15px 0 15px;
2743
+ margin: 0 25px 25px 0;
2744
+ width: 300px;
2745
+ height: 250px;
2746
+ border: 1px solid #dedede;
2747
+ background-color: #fff;
2748
+ }
2749
+ #mailpoet_settings .mailpoet_sending_methods h3 {
2750
+ text-align: center;
2751
+ height: 54px;
2752
+ line-height: 54px;
2753
+ font-size: 1.5em;
2754
+ }
2755
+ #mailpoet_settings .mailpoet_sending_methods .mailpoet_description {
2756
+ font-size: 14px;
2757
+ }
2758
+ #mailpoet_settings .mailpoet_sending_methods .mailpoet_status {
2759
+ background-color: #2f2f2f;
2760
+ color: #fff;
2761
+ position: absolute;
2762
+ bottom: 0;
2763
+ left: 0;
2764
+ right: 0;
2765
+ -o-text-overflow: ellipsis;
2766
+ text-overflow: ellipsis;
2767
+ padding: 15px;
2768
+ }
2769
+ #mailpoet_settings .mailpoet_sending_methods .mailpoet_status span {
2770
+ visibility: hidden;
2771
+ font-weight: bold;
2772
+ }
2773
+ #mailpoet_settings .mailpoet_sending_methods .mailpoet_active .mailpoet_status span {
2774
+ visibility: visible;
2775
+ }
2776
+ #mailpoet_settings .mailpoet_sending_methods .mailpoet_active #mailpoet_mta_activate {
2777
+ visibility: hidden;
2778
+ }
2779
+ #mailpoet_settings .mailpoet_sending_methods .mailpoet_actions {
2780
+ bottom: 15px;
2781
+ color: #fff;
2782
+ padding: 0;
2783
+ position: absolute;
2784
+ right: 15px;
2785
+ }
2786
+ #mailpoet_settings .mailpoet_sending_methods .mailpoet_actions .button-secondary {
2787
+ margin: 0 -6px -4px 0;
2788
+ }
2789
+ @media screen and (max-width: 782px) {
2790
+ #mailpoet_settings .form-table th {
2791
+ width: auto;
2792
+ }
2793
+ #mailpoet_settings .mailpoet_sending_methods li {
2794
+ float: none;
2795
+ width: auto;
2796
+ margin-right: 0;
2797
+ }
2798
+ }
2799
+ .mailpoet_progress {
2800
+ background-color: #efefef;
2801
+ height: 25px;
2802
+ padding: 0;
2803
+ width: 100%;
2804
+ margin: 0;
2805
+ border-radius: 5px;
2806
+ position: relative;
2807
+ }
2808
+ .mailpoet_progress_label {
2809
+ position: absolute;
2810
+ width: 100%;
2811
+ text-align: center;
2812
+ display: inline-block;
2813
+ margin: 2px 0 0 0;
2814
+ }
2815
+ .mailpoet_progress_bar {
2816
+ position: absolute;
2817
+ display: inline-block;
2818
+ height: 100%;
2819
+ border-radius: 3px;
2820
+ -webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.5) inset;
2821
+ box-shadow: 0 1px 0 rgba(255,255,255,0.5) inset;
2822
+ background-color: #34c2e3;
2823
+ background-image: -webkit-linear-gradient(top, #34c2e3, #1ba4c4);
2824
+ background-image: -moz-linear-gradient(top, #34c2e3, #1ba4c4);
2825
+ background-image: -o-linear-gradient(top, #34c2e3, #1ba4c4);
2826
+ background-image: -ms-linear-gradient(top, #34c2e3, #1ba4c4);
2827
+ background-image: linear-gradient(to bottom, #34c2e3, #1ba4c4);
2828
+ }
2829
+ .mailpoet_progress_complete .mailpoet_progress_bar {
2830
+ background-color: #fecf23;
2831
+ background-image: -webkit-linear-gradient(top, #fecf23, #fd9215);
2832
+ background-image: -moz-linear-gradient(top, #fecf23, #fd9215);
2833
+ background-image: -o-linear-gradient(top, #fecf23, #fd9215);
2834
+ background-image: -ms-linear-gradient(top, #fecf23, #fd9215);
2835
+ background-image: linear-gradient(to bottom, #fecf23, #fd9215);
2836
+ }
2837
+ #subscribers_container .mailpoet_segments_unsubscribed {
2838
+ color: #a9a9a9;
2839
+ }
trunk/assets/css/importExport.css ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .mailpoet_hidden,
2
+ .mailpoet_validation_error {
3
+ display: none;
4
+ }
5
+ .form-table th {
6
+ width: 300px;
7
+ }
8
+ #paste_input {
9
+ width: 100%;
10
+ }
11
+ input[type="radio"] {
12
+ margin-right: 0.5em !important;
13
+ }
14
+ input[type="radio"] + span {
15
+ margin-right: 2.5em;
16
+ }
17
+ span.mailpoet_mailchimp-key-status.mailpoet_mailchimp-ok:before {
18
+ content: "\2713";
19
+ color: #0e90d2;
20
+ margin-left: 15px;
21
+ }
22
+ span.mailpoet_mailchimp-key-status.mailpoet_mailchimp-error:before {
23
+ content: "\2717";
24
+ color: #900;
25
+ margin-left: 15px;
26
+ }
27
+ #subscribers_data {
28
+ overflow: auto;
29
+ }
30
+ #subscribers_data table {
31
+ width: auto;
32
+ }
33
+ #subscribers_data td {
34
+ padding: 0.5em;
35
+ }
36
+ #subscribers_data > table > tbody > td {
37
+ padding: 0.5em;
38
+ }
39
+ #subscribers_data > table > tbody > tr:nth-child(odd) {
40
+ background: #f9f9f9;
41
+ }
42
+ #subscribers_data .mailpoet_header {
43
+ text-transform: uppercase;
44
+ font-weight: 600;
45
+ text-decoration: underline;
46
+ }
47
+ #subscribers_data th:first-child,
48
+ #subscribers_data td:first-child {
49
+ width: 10em !important;
50
+ text-align: center !important;
51
+ padding: 0 1em 0 1em !important;
52
+ vertical-align: inherit !important;
53
+ }
54
+ #subscribers_data > table > thead > tr > th > span {
55
+ width: 15em !important;
56
+ }
57
+ .mailpoet_data_match {
58
+ color: #0e90d2;
59
+ margin-left: 0.25em;
60
+ }
61
+ .mailpoet_import_error,
62
+ .mailpoet_validation_error {
63
+ color: #900;
64
+ }
65
+ tr.mailpoet_segments > td > a {
66
+ margin-left: 15px;
67
+ }
68
+ span.select2-search.select2-search--dropdown {
69
+ display: none !important;
70
+ }
trunk/assets/css/index.php ADDED
File without changes
trunk/assets/css/newsletter_editor.css ADDED
@@ -0,0 +1,2471 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .select2-container {
2
+ box-sizing: border-box;
3
+ display: inline-block;
4
+ margin: 0;
5
+ position: relative;
6
+ vertical-align: middle; }
7
+ .select2-container .select2-selection--single {
8
+ box-sizing: border-box;
9
+ cursor: pointer;
10
+ display: block;
11
+ height: 28px;
12
+ user-select: none;
13
+ -webkit-user-select: none; }
14
+ .select2-container .select2-selection--single .select2-selection__rendered {
15
+ display: block;
16
+ padding-left: 8px;
17
+ padding-right: 20px;
18
+ overflow: hidden;
19
+ text-overflow: ellipsis;
20
+ white-space: nowrap; }
21
+ .select2-container .select2-selection--single .select2-selection__clear {
22
+ position: relative; }
23
+ .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
24
+ padding-right: 8px;
25
+ padding-left: 20px; }
26
+ .select2-container .select2-selection--multiple {
27
+ box-sizing: border-box;
28
+ cursor: pointer;
29
+ display: block;
30
+ min-height: 32px;
31
+ user-select: none;
32
+ -webkit-user-select: none; }
33
+ .select2-container .select2-selection--multiple .select2-selection__rendered {
34
+ display: inline-block;
35
+ overflow: hidden;
36
+ padding-left: 8px;
37
+ text-overflow: ellipsis;
38
+ white-space: nowrap; }
39
+ .select2-container .select2-search--inline {
40
+ float: left; }
41
+ .select2-container .select2-search--inline .select2-search__field {
42
+ box-sizing: border-box;
43
+ border: none;
44
+ font-size: 100%;
45
+ margin-top: 5px;
46
+ padding: 0; }
47
+ .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
48
+ -webkit-appearance: none; }
49
+
50
+ .select2-dropdown {
51
+ background-color: white;
52
+ border: 1px solid #aaa;
53
+ border-radius: 4px;
54
+ box-sizing: border-box;
55
+ display: block;
56
+ position: absolute;
57
+ left: -100000px;
58
+ width: 100%;
59
+ z-index: 1051; }
60
+
61
+ .select2-results {
62
+ display: block; }
63
+
64
+ .select2-results__options {
65
+ list-style: none;
66
+ margin: 0;
67
+ padding: 0; }
68
+
69
+ .select2-results__option {
70
+ padding: 6px;
71
+ user-select: none;
72
+ -webkit-user-select: none; }
73
+ .select2-results__option[aria-selected] {
74
+ cursor: pointer; }
75
+
76
+ .select2-container--open .select2-dropdown {
77
+ left: 0; }
78
+
79
+ .select2-container--open .select2-dropdown--above {
80
+ border-bottom: none;
81
+ border-bottom-left-radius: 0;
82
+ border-bottom-right-radius: 0; }
83
+
84
+ .select2-container--open .select2-dropdown--below {
85
+ border-top: none;
86
+ border-top-left-radius: 0;
87
+ border-top-right-radius: 0; }
88
+
89
+ .select2-search--dropdown {
90
+ display: block;
91
+ padding: 4px; }
92
+ .select2-search--dropdown .select2-search__field {
93
+ padding: 4px;
94
+ width: 100%;
95
+ box-sizing: border-box; }
96
+ .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
97
+ -webkit-appearance: none; }
98
+ .select2-search--dropdown.select2-search--hide {
99
+ display: none; }
100
+
101
+ .select2-close-mask {
102
+ border: 0;
103
+ margin: 0;
104
+ padding: 0;
105
+ display: block;
106
+ position: fixed;
107
+ left: 0;
108
+ top: 0;
109
+ min-height: 100%;
110
+ min-width: 100%;
111
+ height: auto;
112
+ width: auto;
113
+ opacity: 0;
114
+ z-index: 99;
115
+ background-color: #fff;
116
+ filter: alpha(opacity=0); }
117
+
118
+ .select2-hidden-accessible {
119
+ border: 0 !important;
120
+ clip: rect(0 0 0 0) !important;
121
+ height: 1px !important;
122
+ margin: -1px !important;
123
+ overflow: hidden !important;
124
+ padding: 0 !important;
125
+ position: absolute !important;
126
+ width: 1px !important; }
127
+
128
+ .select2-container--default .select2-selection--single {
129
+ background-color: #fff;
130
+ border: 1px solid #aaa;
131
+ border-radius: 4px; }
132
+ .select2-container--default .select2-selection--single .select2-selection__rendered {
133
+ color: #444;
134
+ line-height: 28px; }
135
+ .select2-container--default .select2-selection--single .select2-selection__clear {
136
+ cursor: pointer;
137
+ float: right;
138
+ font-weight: bold; }
139
+ .select2-container--default .select2-selection--single .select2-selection__placeholder {
140
+ color: #999; }
141
+ .select2-container--default .select2-selection--single .select2-selection__arrow {
142
+ height: 26px;
143
+ position: absolute;
144
+ top: 1px;
145
+ right: 1px;
146
+ width: 20px; }
147
+ .select2-container--default .select2-selection--single .select2-selection__arrow b {
148
+ border-color: #888 transparent transparent transparent;
149
+ border-style: solid;
150
+ border-width: 5px 4px 0 4px;
151
+ height: 0;
152
+ left: 50%;
153
+ margin-left: -4px;
154
+ margin-top: -2px;
155
+ position: absolute;
156
+ top: 50%;
157
+ width: 0; }
158
+
159
+ .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
160
+ float: left; }
161
+
162
+ .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
163
+ left: 1px;
164
+ right: auto; }
165
+
166
+ .select2-container--default.select2-container--disabled .select2-selection--single {
167
+ background-color: #eee;
168
+ cursor: default; }
169
+ .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
170
+ display: none; }
171
+
172
+ .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
173
+ border-color: transparent transparent #888 transparent;
174
+ border-width: 0 4px 5px 4px; }
175
+
176
+ .select2-container--default .select2-selection--multiple {
177
+ background-color: white;
178
+ border: 1px solid #aaa;
179
+ border-radius: 4px;
180
+ cursor: text; }
181
+ .select2-container--default .select2-selection--multiple .select2-selection__rendered {
182
+ box-sizing: border-box;
183
+ list-style: none;
184
+ margin: 0;
185
+ padding: 0 5px;
186
+ width: 100%; }
187
+ .select2-container--default .select2-selection--multiple .select2-selection__rendered li {
188
+ list-style: none; }
189
+ .select2-container--default .select2-selection--multiple .select2-selection__placeholder {
190
+ color: #999;
191
+ margin-top: 5px;
192
+ float: left; }
193
+ .select2-container--default .select2-selection--multiple .select2-selection__clear {
194
+ cursor: pointer;
195
+ float: right;
196
+ font-weight: bold;
197
+ margin-top: 5px;
198
+ margin-right: 10px; }
199
+ .select2-container--default .select2-selection--multiple .select2-selection__choice {
200
+ background-color: #e4e4e4;
201
+ border: 1px solid #aaa;
202
+ border-radius: 4px;
203
+ cursor: default;
204
+ float: left;
205
+ margin-right: 5px;
206
+ margin-top: 5px;
207
+ padding: 0 5px; }
208
+ .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
209
+ color: #999;
210
+ cursor: pointer;
211
+ display: inline-block;
212
+ font-weight: bold;
213
+ margin-right: 2px; }
214
+ .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
215
+ color: #333; }
216
+
217
+ .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
218
+ float: right; }
219
+
220
+ .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
221
+ margin-left: 5px;
222
+ margin-right: auto; }
223
+
224
+ .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
225
+ margin-left: 2px;
226
+ margin-right: auto; }
227
+
228
+ .select2-container--default.select2-container--focus .select2-selection--multiple {
229
+ border: solid black 1px;
230
+ outline: 0; }
231
+
232
+ .select2-container--default.select2-container--disabled .select2-selection--multiple {
233
+ background-color: #eee;
234
+ cursor: default; }
235
+
236
+ .select2-container--default.select2-container--disabled .select2-selection__choice__remove {
237
+ display: none; }
238
+
239
+ .select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
240
+ border-top-left-radius: 0;
241
+ border-top-right-radius: 0; }
242
+
243
+ .select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
244
+ border-bottom-left-radius: 0;
245
+ border-bottom-right-radius: 0; }
246
+
247
+ .select2-container--default .select2-search--dropdown .select2-search__field {
248
+ border: 1px solid #aaa; }
249
+
250
+ .select2-container--default .select2-search--inline .select2-search__field {
251
+ background: transparent;
252
+ border: none;
253
+ outline: 0;
254
+ box-shadow: none;
255
+ -webkit-appearance: textfield; }
256
+
257
+ .select2-container--default .select2-results > .select2-results__options {
258
+ max-height: 200px;
259
+ overflow-y: auto; }
260
+
261
+ .select2-container--default .select2-results__option[role=group] {
262
+ padding: 0; }
263
+
264
+ .select2-container--default .select2-results__option[aria-disabled=true] {
265
+ color: #999; }
266
+
267
+ .select2-container--default .select2-results__option[aria-selected=true] {
268
+ background-color: #ddd; }
269
+
270
+ .select2-container--default .select2-results__option .select2-results__option {
271
+ padding-left: 1em; }
272
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__group {
273
+ padding-left: 0; }
274
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option {
275
+ margin-left: -1em;
276
+ padding-left: 2em; }
277
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
278
+ margin-left: -2em;
279
+ padding-left: 3em; }
280
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
281
+ margin-left: -3em;
282
+ padding-left: 4em; }
283
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
284
+ margin-left: -4em;
285
+ padding-left: 5em; }
286
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
287
+ margin-left: -5em;
288
+ padding-left: 6em; }
289
+
290
+ .select2-container--default .select2-results__option--highlighted[aria-selected] {
291
+ background-color: #5897fb;
292
+ color: white; }
293
+
294
+ .select2-container--default .select2-results__group {
295
+ cursor: default;
296
+ display: block;
297
+ padding: 6px; }
298
+
299
+ .select2-container--classic .select2-selection--single {
300
+ background-color: #f7f7f7;
301
+ border: 1px solid #aaa;
302
+ border-radius: 4px;
303
+ outline: 0;
304
+ background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
305
+ background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
306
+ background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
307
+ background-repeat: repeat-x;
308
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
309
+ .select2-container--classic .select2-selection--single:focus {
310
+ border: 1px solid #5897fb; }
311
+ .select2-container--classic .select2-selection--single .select2-selection__rendered {
312
+ color: #444;
313
+ line-height: 28px; }
314
+ .select2-container--classic .select2-selection--single .select2-selection__clear {
315
+ cursor: pointer;
316
+ float: right;
317
+ font-weight: bold;
318
+ margin-right: 10px; }
319
+ .select2-container--classic .select2-selection--single .select2-selection__placeholder {
320
+ color: #999; }
321
+ .select2-container--classic .select2-selection--single .select2-selection__arrow {
322
+ background-color: #ddd;
323
+ border: none;
324
+ border-left: 1px solid #aaa;
325
+ border-top-right-radius: 4px;
326
+ border-bottom-right-radius: 4px;
327
+ height: 26px;
328
+ position: absolute;
329
+ top: 1px;
330
+ right: 1px;
331
+ width: 20px;
332
+ background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
333
+ background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
334
+ background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
335
+ background-repeat: repeat-x;
336
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }
337
+ .select2-container--classic .select2-selection--single .select2-selection__arrow b {
338
+ border-color: #888 transparent transparent transparent;
339
+ border-style: solid;
340
+ border-width: 5px 4px 0 4px;
341
+ height: 0;
342
+ left: 50%;
343
+ margin-left: -4px;
344
+ margin-top: -2px;
345
+ position: absolute;
346
+ top: 50%;
347
+ width: 0; }
348
+
349
+ .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear {
350
+ float: left; }
351
+
352
+ .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow {
353
+ border: none;
354
+ border-right: 1px solid #aaa;
355
+ border-radius: 0;
356
+ border-top-left-radius: 4px;
357
+ border-bottom-left-radius: 4px;
358
+ left: 1px;
359
+ right: auto; }
360
+
361
+ .select2-container--classic.select2-container--open .select2-selection--single {
362
+ border: 1px solid #5897fb; }
363
+ .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
364
+ background: transparent;
365
+ border: none; }
366
+ .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
367
+ border-color: transparent transparent #888 transparent;
368
+ border-width: 0 4px 5px 4px; }
369
+
370
+ .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {
371
+ border-top: none;
372
+ border-top-left-radius: 0;
373
+ border-top-right-radius: 0;
374
+ background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
375
+ background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
376
+ background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
377
+ background-repeat: repeat-x;
378
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
379
+
380
+ .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {
381
+ border-bottom: none;
382
+ border-bottom-left-radius: 0;
383
+ border-bottom-right-radius: 0;
384
+ background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
385
+ background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
386
+ background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
387
+ background-repeat: repeat-x;
388
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }
389
+
390
+ .select2-container--classic .select2-selection--multiple {
391
+ background-color: white;
392
+ border: 1px solid #aaa;
393
+ border-radius: 4px;
394
+ cursor: text;
395
+ outline: 0; }
396
+ .select2-container--classic .select2-selection--multiple:focus {
397
+ border: 1px solid #5897fb; }
398
+ .select2-container--classic .select2-selection--multiple .select2-selection__rendered {
399
+ list-style: none;
400
+ margin: 0;
401
+ padding: 0 5px; }
402
+ .select2-container--classic .select2-selection--multiple .select2-selection__clear {
403
+ display: none; }
404
+ .select2-container--classic .select2-selection--multiple .select2-selection__choice {
405
+ background-color: #e4e4e4;
406
+ border: 1px solid #aaa;
407
+ border-radius: 4px;
408
+ cursor: default;
409
+ float: left;
410
+ margin-right: 5px;
411
+ margin-top: 5px;
412
+ padding: 0 5px; }
413
+ .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {
414
+ color: #888;
415
+ cursor: pointer;
416
+ display: inline-block;
417
+ font-weight: bold;
418
+ margin-right: 2px; }
419
+ .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
420
+ color: #555; }
421
+
422
+ .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
423
+ float: right; }
424
+
425
+ .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
426
+ margin-left: 5px;
427
+ margin-right: auto; }
428
+
429
+ .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
430
+ margin-left: 2px;
431
+ margin-right: auto; }
432
+
433
+ .select2-container--classic.select2-container--open .select2-selection--multiple {
434
+ border: 1px solid #5897fb; }
435
+
436
+ .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
437
+ border-top: none;
438
+ border-top-left-radius: 0;
439
+ border-top-right-radius: 0; }
440
+
441
+ .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
442
+ border-bottom: none;
443
+ border-bottom-left-radius: 0;
444
+ border-bottom-right-radius: 0; }
445
+
446
+ .select2-container--classic .select2-search--dropdown .select2-search__field {
447
+ border: 1px solid #aaa;
448
+ outline: 0; }
449
+
450
+ .select2-container--classic .select2-search--inline .select2-search__field {
451
+ outline: 0;
452
+ box-shadow: none; }
453
+
454
+ .select2-container--classic .select2-dropdown {
455
+ background-color: white;
456
+ border: 1px solid transparent; }
457
+
458
+ .select2-container--classic .select2-dropdown--above {
459
+ border-bottom: none; }
460
+
461
+ .select2-container--classic .select2-dropdown--below {
462
+ border-top: none; }
463
+
464
+ .select2-container--classic .select2-results > .select2-results__options {
465
+ max-height: 200px;
466
+ overflow-y: auto; }
467
+
468
+ .select2-container--classic .select2-results__option[role=group] {
469
+ padding: 0; }
470
+
471
+ .select2-container--classic .select2-results__option[aria-disabled=true] {
472
+ color: grey; }
473
+
474
+ .select2-container--classic .select2-results__option--highlighted[aria-selected] {
475
+ background-color: #3875d7;
476
+ color: white; }
477
+
478
+ .select2-container--classic .select2-results__group {
479
+ cursor: default;
480
+ display: block;
481
+ padding: 6px; }
482
+
483
+ .select2-container--classic.select2-container--open .select2-dropdown {
484
+ border-color: #5897fb; }
485
+
486
+ /***
487
+ Spectrum Colorpicker v1.8.0
488
+ https://github.com/bgrins/spectrum
489
+ Author: Brian Grinstead
490
+ License: MIT
491
+ ***/
492
+
493
+ .sp-container {
494
+ position:absolute;
495
+ top:0;
496
+ left:0;
497
+ display:inline-block;
498
+ *display: inline;
499
+ *zoom: 1;
500
+ /* https://github.com/bgrins/spectrum/issues/40 */
501
+ z-index: 9999994;
502
+ overflow: hidden;
503
+ }
504
+ .sp-container.sp-flat {
505
+ position: relative;
506
+ }
507
+
508
+ /* Fix for * { box-sizing: border-box; } */
509
+ .sp-container,
510
+ .sp-container * {
511
+ -webkit-box-sizing: content-box;
512
+ -moz-box-sizing: content-box;
513
+ box-sizing: content-box;
514
+ }
515
+
516
+ /* http://ansciath.tumblr.com/post/7347495869/css-aspect-ratio */
517
+ .sp-top {
518
+ position:relative;
519
+ width: 100%;
520
+ display:inline-block;
521
+ }
522
+ .sp-top-inner {
523
+ position:absolute;
524
+ top:0;
525
+ left:0;
526
+ bottom:0;
527
+ right:0;
528
+ }
529
+ .sp-color {
530
+ position: absolute;
531
+ top:0;
532
+ left:0;
533
+ bottom:0;
534
+ right:20%;
535
+ }
536
+ .sp-hue {
537
+ position: absolute;
538
+ top:0;
539
+ right:0;
540
+ bottom:0;
541
+ left:84%;
542
+ height: 100%;
543
+ }
544
+
545
+ .sp-clear-enabled .sp-hue {
546
+ top:33px;
547
+ height: 77.5%;
548
+ }
549
+
550
+ .sp-fill {
551
+ padding-top: 80%;
552
+ }
553
+ .sp-sat, .sp-val {
554
+ position: absolute;
555
+ top:0;
556
+ left:0;
557
+ right:0;
558
+ bottom:0;
559
+ }
560
+
561
+ .sp-alpha-enabled .sp-top {
562
+ margin-bottom: 18px;
563
+ }
564
+ .sp-alpha-enabled .sp-alpha {
565
+ display: block;
566
+ }
567
+ .sp-alpha-handle {
568
+ position:absolute;
569
+ top:-4px;
570
+ bottom: -4px;
571
+ width: 6px;
572
+ left: 50%;
573
+ cursor: pointer;
574
+ border: 1px solid black;
575
+ background: white;
576
+ opacity: .8;
577
+ }
578
+ .sp-alpha {
579
+ display: none;
580
+ position: absolute;
581
+ bottom: -14px;
582
+ right: 0;
583
+ left: 0;
584
+ height: 8px;
585
+ }
586
+ .sp-alpha-inner {
587
+ border: solid 1px #333;
588
+ }
589
+
590
+ .sp-clear {
591
+ display: none;
592
+ }
593
+
594
+ .sp-clear.sp-clear-display {
595
+ background-position: center;
596
+ }
597
+
598
+ .sp-clear-enabled .sp-clear {
599
+ display: block;
600
+ position:absolute;
601
+ top:0px;
602
+ right:0;
603
+ bottom:0;
604
+ left:84%;
605
+ height: 28px;
606
+ }
607
+
608
+ /* Don't allow text selection */
609
+ .sp-container, .sp-replacer, .sp-preview, .sp-dragger, .sp-slider, .sp-alpha, .sp-clear, .sp-alpha-handle, .sp-container.sp-dragging .sp-input, .sp-container button {
610
+ -webkit-user-select:none;
611
+ -moz-user-select: -moz-none;
612
+ -o-user-select:none;
613
+ user-select: none;
614
+ }
615
+
616
+ .sp-container.sp-input-disabled .sp-input-container {
617
+ display: none;
618
+ }
619
+ .sp-container.sp-buttons-disabled .sp-button-container {
620
+ display: none;
621
+ }
622
+ .sp-container.sp-palette-buttons-disabled .sp-palette-button-container {
623
+ display: none;
624
+ }
625
+ .sp-palette-only .sp-picker-container {
626
+ display: none;
627
+ }
628
+ .sp-palette-disabled .sp-palette-container {
629
+ display: none;
630
+ }
631
+
632
+ .sp-initial-disabled .sp-initial {
633
+ display: none;
634
+ }
635
+
636
+
637
+ /* Gradients for hue, saturation and value instead of images. Not pretty... but it works */
638
+ .sp-sat {
639
+ background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0)));
640
+ background-image: -webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0));
641
+ background-image: -moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0));
642
+ background-image: -o-linear-gradient(left, #fff, rgba(204, 154, 129, 0));
643
+ background-image: -ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0));
644
+ background-image: linear-gradient(to right, #fff, rgba(204, 154, 129, 0));
645
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)";
646
+ filter : progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81');
647
+ }
648
+ .sp-val {
649
+ background-image: -webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0)));
650
+ background-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0));
651
+ background-image: -moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));
652
+ background-image: -o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));
653
+ background-image: -ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));
654
+ background-image: linear-gradient(to top, #000, rgba(204, 154, 129, 0));
655
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)";
656
+ filter : progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000');
657
+ }
658
+
659
+ .sp-hue {
660
+ background: -moz-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
661
+ background: -ms-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
662
+ background: -o-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
663
+ background: -webkit-gradient(linear, left top, left bottom, from(#ff0000), color-stop(0.17, #ffff00), color-stop(0.33, #00ff00), color-stop(0.5, #00ffff), color-stop(0.67, #0000ff), color-stop(0.83, #ff00ff), to(#ff0000));
664
+ background: -webkit-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
665
+ background: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);
666
+ }
667
+
668
+ /* IE filters do not support multiple color stops.
669
+ Generate 6 divs, line them up, and do two color gradients for each.
670
+ Yes, really.
671
+ */
672
+ .sp-1 {
673
+ height:17%;
674
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ffff00');
675
+ }
676
+ .sp-2 {
677
+ height:16%;
678
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00', endColorstr='#00ff00');
679
+ }
680
+ .sp-3 {
681
+ height:17%;
682
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00', endColorstr='#00ffff');
683
+ }
684
+ .sp-4 {
685
+ height:17%;
686
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff', endColorstr='#0000ff');
687
+ }
688
+ .sp-5 {
689
+ height:16%;
690
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff', endColorstr='#ff00ff');
691
+ }
692
+ .sp-6 {
693
+ height:17%;
694
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff', endColorstr='#ff0000');
695
+ }
696
+
697
+ .sp-hidden {
698
+ display: none !important;
699
+ }
700
+
701
+ /* Clearfix hack */
702
+ .sp-cf:before, .sp-cf:after { content: ""; display: table; }
703
+ .sp-cf:after { clear: both; }
704
+ .sp-cf { *zoom: 1; }
705
+
706
+ /* Mobile devices, make hue slider bigger so it is easier to slide */
707
+ @media (max-device-width: 480px) {
708
+ .sp-color { right: 40%; }
709
+ .sp-hue { left: 63%; }
710
+ .sp-fill { padding-top: 60%; }
711
+ }
712
+ .sp-dragger {
713
+ border-radius: 5px;
714
+ height: 5px;
715
+ width: 5px;
716
+ border: 1px solid #fff;
717
+ background: #000;
718
+ cursor: pointer;
719
+ position:absolute;
720
+ top:0;
721
+ left: 0;
722
+ }
723
+ .sp-slider {
724
+ position: absolute;
725
+ top:0;
726
+ cursor:pointer;
727
+ height: 3px;
728
+ left: -1px;
729
+ right: -1px;
730
+ border: 1px solid #000;
731
+ background: white;
732
+ opacity: .8;
733
+ }
734
+
735
+ /*
736
+ Theme authors:
737
+ Here are the basic themeable display options (colors, fonts, global widths).
738
+ See http://bgrins.github.io/spectrum/themes/ for instructions.
739
+ */
740
+
741
+ .sp-container {
742
+ border-radius: 0;
743
+ background-color: #ECECEC;
744
+ border: solid 1px #f0c49B;
745
+ padding: 0;
746
+ }
747
+ .sp-container, .sp-container button, .sp-container input, .sp-color, .sp-hue, .sp-clear {
748
+ font: normal 12px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif;
749
+ -webkit-box-sizing: border-box;
750
+ -moz-box-sizing: border-box;
751
+ -ms-box-sizing: border-box;
752
+ box-sizing: border-box;
753
+ }
754
+ .sp-top {
755
+ margin-bottom: 3px;
756
+ }
757
+ .sp-color, .sp-hue, .sp-clear {
758
+ border: solid 1px #666;
759
+ }
760
+
761
+ /* Input */
762
+ .sp-input-container {
763
+ float:right;
764
+ width: 100px;
765
+ margin-bottom: 4px;
766
+ }
767
+ .sp-initial-disabled .sp-input-container {
768
+ width: 100%;
769
+ }
770
+ .sp-input {
771
+ font-size: 12px !important;
772
+ border: 1px inset;
773
+ padding: 4px 5px;
774
+ margin: 0;
775
+ width: 100%;
776
+ background:transparent;
777
+ border-radius: 3px;
778
+ color: #222;
779
+ }
780
+ .sp-input:focus {
781
+ border: 1px solid orange;
782
+ }
783
+ .sp-input.sp-validation-error {
784
+ border: 1px solid red;
785
+ background: #fdd;
786
+ }
787
+ .sp-picker-container , .sp-palette-container {
788
+ float:left;
789
+ position: relative;
790
+ padding: 10px;
791
+ padding-bottom: 300px;
792
+ margin-bottom: -290px;
793
+ }
794
+ .sp-picker-container {
795
+ width: 172px;
796
+ border-left: solid 1px #fff;
797
+ }
798
+
799
+ /* Palettes */
800
+ .sp-palette-container {
801
+ border-right: solid 1px #ccc;
802
+ }
803
+
804
+ .sp-palette-only .sp-palette-container {
805
+ border: 0;
806
+ }
807
+
808
+ .sp-palette .sp-thumb-el {
809
+ display: block;
810
+ position:relative;
811
+ float:left;
812
+ width: 24px;
813
+ height: 15px;
814
+ margin: 3px;
815
+ cursor: pointer;
816
+ border:solid 2px transparent;
817
+ }
818
+ .sp-palette .sp-thumb-el:hover, .sp-palette .sp-thumb-el.sp-thumb-active {
819
+ border-color: orange;
820
+ }
821
+ .sp-thumb-el {
822
+ position:relative;
823
+ }
824
+
825
+ /* Initial */
826
+ .sp-initial {
827
+ float: left;
828
+ border: solid 1px #333;
829
+ }
830
+ .sp-initial span {
831
+ width: 30px;
832
+ height: 25px;
833
+ border:none;
834
+ display:block;
835
+ float:left;
836
+ margin:0;
837
+ }
838
+
839
+ .sp-initial .sp-clear-display {
840
+ background-position: center;
841
+ }
842
+
843
+ /* Buttons */
844
+ .sp-palette-button-container,
845
+ .sp-button-container {
846
+ float: right;
847
+ }
848
+
849
+ /* Replacer (the little preview div that shows up instead of the <input>) */
850
+ .sp-replacer {
851
+ margin:0;
852
+ overflow:hidden;
853
+ cursor:pointer;
854
+ padding: 4px;
855
+ display:inline-block;
856
+ *zoom: 1;
857
+ *display: inline;
858
+ border: solid 1px #91765d;
859
+ background: #eee;
860
+ color: #333;
861
+ vertical-align: middle;
862
+ }
863
+ .sp-replacer:hover, .sp-replacer.sp-active {
864
+ border-color: #F0C49B;
865
+ color: #111;
866
+ }
867
+ .sp-replacer.sp-disabled {
868
+ cursor:default;
869
+ border-color: silver;
870
+ color: silver;
871
+ }
872
+ .sp-dd {
873
+ padding: 2px 0;
874
+ height: 16px;
875
+ line-height: 16px;
876
+ float:left;
877
+ font-size:10px;
878
+ }
879
+ .sp-preview {
880
+ position:relative;
881
+ width:25px;
882
+ height: 20px;
883
+ border: solid 1px #222;
884
+ margin-right: 5px;
885
+ float:left;
886
+ z-index: 0;
887
+ }
888
+
889
+ .sp-palette {
890
+ *width: 220px;
891
+ max-width: 220px;
892
+ }
893
+ .sp-palette .sp-thumb-el {
894
+ width:16px;
895
+ height: 16px;
896
+ margin:2px 1px;
897
+ border: solid 1px #d0d0d0;
898
+ }
899
+
900
+ .sp-container {
901
+ padding-bottom:0;
902
+ }
903
+
904
+
905
+ /* Buttons: http://hellohappy.org/css3-buttons/ */
906
+ .sp-container button {
907
+ background-color: #eeeeee;
908
+ background-image: -webkit-linear-gradient(top, #eeeeee, #cccccc);
909
+ background-image: -moz-linear-gradient(top, #eeeeee, #cccccc);
910
+ background-image: -ms-linear-gradient(top, #eeeeee, #cccccc);
911
+ background-image: -o-linear-gradient(top, #eeeeee, #cccccc);
912
+ background-image: linear-gradient(to bottom, #eeeeee, #cccccc);
913
+ border: 1px solid #ccc;
914
+ border-bottom: 1px solid #bbb;
915
+ border-radius: 3px;
916
+ color: #333;
917
+ font-size: 14px;
918
+ line-height: 1;
919
+ padding: 5px 4px;
920
+ text-align: center;
921
+ text-shadow: 0 1px 0 #eee;
922
+ vertical-align: middle;
923
+ }
924
+ .sp-container button:hover {
925
+ background-color: #dddddd;
926
+ background-image: -webkit-linear-gradient(top, #dddddd, #bbbbbb);
927
+ background-image: -moz-linear-gradient(top, #dddddd, #bbbbbb);
928
+ background-image: -ms-linear-gradient(top, #dddddd, #bbbbbb);
929
+ background-image: -o-linear-gradient(top, #dddddd, #bbbbbb);
930
+ background-image: linear-gradient(to bottom, #dddddd, #bbbbbb);
931
+ border: 1px solid #bbb;
932
+ border-bottom: 1px solid #999;
933
+ cursor: pointer;
934
+ text-shadow: 0 1px 0 #ddd;
935
+ }
936
+ .sp-container button:active {
937
+ border: 1px solid #aaa;
938
+ border-bottom: 1px solid #888;
939
+ -webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
940
+ -moz-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
941
+ -ms-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
942
+ -o-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
943
+ box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
944
+ }
945
+ .sp-cancel {
946
+ font-size: 11px;
947
+ color: #d93f3f !important;
948
+ margin:0;
949
+ padding:2px;
950
+ margin-right: 5px;
951
+ vertical-align: middle;
952
+ text-decoration:none;
953
+
954
+ }
955
+ .sp-cancel:hover {
956
+ color: #d93f3f !important;
957
+ text-decoration: underline;
958
+ }
959
+
960
+
961
+ .sp-palette span:hover, .sp-palette span.sp-thumb-active {
962
+ border-color: #000;
963
+ }
964
+
965
+ .sp-preview, .sp-alpha, .sp-thumb-el {
966
+ position:relative;
967
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);
968
+ }
969
+ .sp-preview-inner, .sp-alpha-inner, .sp-thumb-inner {
970
+ display:block;
971
+ position:absolute;
972
+ top:0;left:0;bottom:0;right:0;
973
+ }
974
+
975
+ .sp-palette .sp-thumb-inner {
976
+ background-position: 50% 50%;
977
+ background-repeat: no-repeat;
978
+ }
979
+
980
+ .sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner {
981
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=);
982
+ }
983
+
984
+ .sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner {
985
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=);
986
+ }
987
+
988
+ .sp-clear-display {
989
+ background-repeat:no-repeat;
990
+ background-position: center;
991
+ background-image: url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==);
992
+ }
993
+
994
+ @-moz-keyframes fadeIn {
995
+ 0% {
996
+ opacity: 0.3;
997
+ }
998
+ 100% {
999
+ opacity: 1;
1000
+ }
1001
+ }
1002
+ @-webkit-keyframes fadeIn {
1003
+ 0% {
1004
+ opacity: 0.3;
1005
+ }
1006
+ 100% {
1007
+ opacity: 1;
1008
+ }
1009
+ }
1010
+ @-o-keyframes fadeIn {
1011
+ 0% {
1012
+ opacity: 0.3;
1013
+ }
1014
+ 100% {
1015
+ opacity: 1;
1016
+ }
1017
+ }
1018
+ @keyframes fadeIn {
1019
+ 0% {
1020
+ opacity: 0.3;
1021
+ }
1022
+ 100% {
1023
+ opacity: 1;
1024
+ }
1025
+ }
1026
+ a {
1027
+ color: #2ea1cd;
1028
+ text-decoration: none;
1029
+ }
1030
+ .mailpoet_hidden {
1031
+ display: none !important;
1032
+ }
1033
+ input.mailpoet_color {
1034
+ width: 5em;
1035
+ }
1036
+ select.mailpoet_font-family {
1037
+ width: 8em;
1038
+ }
1039
+ select.mailpoet_font-size {
1040
+ width: 5em;
1041
+ }
1042
+ .mailpoet_input,
1043
+ .mailpoet_select {
1044
+ -webkit-border-radius: 1px;
1045
+ -moz-border-radius: 1px;
1046
+ border-radius: 1px;
1047
+ -webkit-box-shadow: none !important;
1048
+ -moz-box-shadow: none !important;
1049
+ box-shadow: none !important;
1050
+ appearance: none;
1051
+ padding: 3px;
1052
+ line-height: 22px;
1053
+ }
1054
+ .mailpoet_input {
1055
+ width: 283px;
1056
+ border: 1px solid #e5e5e5;
1057
+ }
1058
+ .mailpoet_input_small {
1059
+ width: 48px;
1060
+ }
1061
+ .mailpoet_input_medium {
1062
+ width: 150px;
1063
+ }
1064
+ .mailpoet_input_full {
1065
+ width: 100%;
1066
+ box-sizing: border-box;
1067
+ }
1068
+ .mailpoet_range {
1069
+ width: 283px;
1070
+ -webkit-appearance: none;
1071
+ padding: 0;
1072
+ vertical-align: middle;
1073
+ }
1074
+ .mailpoet_range:focus {
1075
+ outline: none;
1076
+ }
1077
+ .mailpoet_range::-webkit-slider-runnable-track {
1078
+ width: 100%;
1079
+ height: 12px;
1080
+ cursor: pointer;
1081
+ animate: 0.2s;
1082
+ background: #fff;
1083
+ -webkit-border-radius: 3px;
1084
+ -moz-border-radius: 3px;
1085
+ border-radius: 3px;
1086
+ border: 1px solid #ddd;
1087
+ }
1088
+ .mailpoet_range::-webkit-slider-thumb {
1089
+ border: 1px solid #333;
1090
+ height: 26px;
1091
+ width: 13px;
1092
+ -webkit-border-radius: 3px;
1093
+ -moz-border-radius: 3px;
1094
+ border-radius: 3px;
1095
+ background: #a4a4a4;
1096
+ cursor: pointer;
1097
+ -webkit-appearance: none;
1098
+ margin-top: -8.666666666666666px;
1099
+ }
1100
+ .mailpoet_range:hover::-webkit-slider-thumb {
1101
+ background: #0074a2;
1102
+ }
1103
+ .mailpoet_range::-moz-range-track {
1104
+ width: 100%;
1105
+ height: 12px;
1106
+ cursor: pointer;
1107
+ animate: 0.2s;
1108
+ background: #fff;
1109
+ -webkit-border-radius: 3px;
1110
+ -moz-border-radius: 3px;
1111
+ border-radius: 3px;
1112
+ border: 1px solid #ddd;
1113
+ }
1114
+ .mailpoet_range::-moz-range-thumb {
1115
+ border: 1px solid #333;
1116
+ height: 26px;
1117
+ width: 13px;
1118
+ -webkit-border-radius: 3px;
1119
+ -moz-border-radius: 3px;
1120
+ border-radius: 3px;
1121
+ background: #a4a4a4;
1122
+ cursor: pointer;
1123
+ }
1124
+ .mailpoet_range:hover::-moz-range-thumb {
1125
+ background: #0074a2;
1126
+ }
1127
+ .mailpoet_range::-ms-fill-lower {
1128
+ border: 1px solid #ddd;
1129
+ background: #fff;
1130
+ }
1131
+ .mailpoet_range::-ms-fill-upper {
1132
+ border: 1px solid #ddd;
1133
+ background: #fff;
1134
+ }
1135
+ .mailpoet_range::-ms-track {
1136
+ width: 100%;
1137
+ height: 12px;
1138
+ cursor: pointer;
1139
+ animate: 0.2s;
1140
+ background: transparent;
1141
+ border-color: transparent;
1142
+ border-width: 24px 0;
1143
+ color: transparent;
1144
+ }
1145
+ .mailpoet_range::-ms-thumb {
1146
+ border: 1px solid #333;
1147
+ height: 26px;
1148
+ width: 13px;
1149
+ -webkit-border-radius: 3px;
1150
+ -moz-border-radius: 3px;
1151
+ border-radius: 3px;
1152
+ background: #a4a4a4;
1153
+ cursor: pointer;
1154
+ }
1155
+ .mailpoet_range:hover::-ms-thumb {
1156
+ background: #0074a2;
1157
+ }
1158
+ .mailpoet_range:focus::-ms-fill-lower {
1159
+ border: 1px solid #ddd;
1160
+ background: #fff;
1161
+ }
1162
+ .mailpoet_range:focus::-ms-fill-upper {
1163
+ border: 1px solid #ddd;
1164
+ background: #fff;
1165
+ }
1166
+ .mailpoet_range_small {
1167
+ width: 100px;
1168
+ }
1169
+ .mailpoet_range_medium {
1170
+ width: 180px;
1171
+ }
1172
+ .mailpoet_select {
1173
+ border-color: #e5e5e5;
1174
+ color: #656565;
1175
+ margin: 0;
1176
+ }
1177
+ .mailpoet_select_large {
1178
+ width: 139px;
1179
+ }
1180
+ .mailpoet_select_medium {
1181
+ width: 103px;
1182
+ }
1183
+ .mailpoet_select_small {
1184
+ width: 68px;
1185
+ }
1186
+ .mailpoet_select_half_width {
1187
+ width: 50%;
1188
+ }
1189
+ #mailpoet_editor_content ol,
1190
+ #mailpoet_editor_content ul {
1191
+ list-style-position: inside;
1192
+ margin-left: 0;
1193
+ }
1194
+ #mailpoet_editor_content ul {
1195
+ list-style-type: disc;
1196
+ }
1197
+ .mailpoet_button {
1198
+ margin: 0;
1199
+ border: 1px solid #ddd;
1200
+ background-color: #f8f8f8;
1201
+ padding: 6px 20px;
1202
+ color: #a4a4a4;
1203
+ -webkit-border-radius: 3px;
1204
+ -moz-border-radius: 3px;
1205
+ border-radius: 3px;
1206
+ line-height: normal;
1207
+ vertical-align: top;
1208
+ }
1209
+ .mailpoet_button_full {
1210
+ width: 100%;
1211
+ box-sizing: border-box;
1212
+ }
1213
+ .mailpoet_button_primary {
1214
+ border-color: #0074a2;
1215
+ background-color: #2ea1cd;
1216
+ color: #fff;
1217
+ }
1218
+ .mailpoet_button_primary:hover {
1219
+ background-color: #1e8cbe;
1220
+ }
1221
+ .mailpoet_button_group {
1222
+ display: inline;
1223
+ }
1224
+ .mailpoet_button_group .mailpoet_button:first-child {
1225
+ margin-right: 0;
1226
+ padding: 6px 12px 6px;
1227
+ border-top-right-radius: 0;
1228
+ border-bottom-right-radius: 0;
1229
+ }
1230
+ .mailpoet_button_group .mailpoet_button:last-child {
1231
+ margin-left: 0;
1232
+ padding-left: 10px;
1233
+ padding-right: 10px;
1234
+ border-left: 0;
1235
+ border-top-left-radius: 0;
1236
+ border-bottom-left-radius: 0;
1237
+ }
1238
+ .mailpoet_text_content p {
1239
+ margin: 1em 0;
1240
+ }
1241
+ .mailpoet_separator {
1242
+ margin: 17px 20px;
1243
+ }
1244
+ .mailpoet_option_offset_left_small {
1245
+ margin-left: 10px;
1246
+ }
1247
+ input.mailpoet_option_offset_left_small {
1248
+ margin-left: 10px !important;
1249
+ }
1250
+ #mailpoet_editor {
1251
+ width: 100%;
1252
+ clear: both;
1253
+ }
1254
+ #mailpoet_editor_heading {
1255
+ padding-left: 15px;
1256
+ margin-left: 2px;
1257
+ }
1258
+ #mailpoet_editor_main_wrapper {
1259
+ border: 1px solid #ddd;
1260
+ border-left: 0;
1261
+ position: relative;
1262
+ min-width: 1050px;
1263
+ }
1264
+ #mailpoet_editor_content_container {
1265
+ width: 100%;
1266
+ padding-right: 330px;
1267
+ box-sizing: border-box;
1268
+ }
1269
+ #mailpoet_editor_sidebar {
1270
+ float: right;
1271
+ width: 330px;
1272
+ box-sizing: border-box;
1273
+ }
1274
+ .mailpoet_newsletter_wrapper {
1275
+ max-width: 660px;
1276
+ width: 660px;
1277
+ margin: auto;
1278
+ position: relative;
1279
+ }
1280
+ .mailpoet_form_field {
1281
+ margin-top: 15px;
1282
+ margin-bottom: 15px;
1283
+ }
1284
+ .mailpoet_form_field_title {
1285
+ clear: both;
1286
+ margin-bottom: 5px;
1287
+ }
1288
+ .mailpoet_form_field_title_small {
1289
+ width: 120px;
1290
+ }
1291
+ .mailpoet_form_field_title_inline {
1292
+ display: inline-block;
1293
+ margin-bottom: 0;
1294
+ margin-top: 6px;
1295
+ }
1296
+ .mailpoet_form_field_optional {
1297
+ font-size: 0.8em;
1298
+ color: #a4a4a4;
1299
+ }
1300
+ .mailpoet_form_field_radio_option,
1301
+ .mailpoet_form_field_checkbox_option {
1302
+ display: inline-block;
1303
+ vertical-align: top;
1304
+ margin-right: 5px;
1305
+ line-height: 30px;
1306
+ }
1307
+ .mailpoet_form_field_radio_option:last-child,
1308
+ .mailpoet_form_field_checkbox_option:last-child {
1309
+ margin-right: 0;
1310
+ }
1311
+ .mailpoet_form_field_input_option {
1312
+ display: inline-block;
1313
+ }
1314
+ .mailpoet_form_field_input_option input[type=checkbox] {
1315
+ vertical-align: top;
1316
+ }
1317
+ .mailpoet_form_field_input_option input[type=text] {
1318
+ vertical-align: middle;
1319
+ }
1320
+ .mailpoet_form_field_block {
1321
+ display: block;
1322
+ }
1323
+ .mailpoet_heading_form_field {
1324
+ margin-top: 5px;
1325
+ margin-bottom: 5px;
1326
+ }
1327
+ .mailpoet_input_title,
1328
+ .mailpoet_input_preheader {
1329
+ width: 500px;
1330
+ padding: 3px;
1331
+ line-height: normal;
1332
+ }
1333
+ .mailpoet_input_title {
1334
+ font-size: 23px;
1335
+ }
1336
+ .mailpoet_breadcrumbs {
1337
+ float: right;
1338
+ clear: both;
1339
+ margin-bottom: 13px;
1340
+ margin-right: 17px;
1341
+ font-size: 0.9em;
1342
+ text-transform: uppercase;
1343
+ }
1344
+ #mailpoet_editor_sidebar {
1345
+ border-left: #ddd;
1346
+ border-bottom: #ddd;
1347
+ color: #656565;
1348
+ font-size: 13px;
1349
+ }
1350
+ #mailpoet_editor_sidebar .mailpoet_sidebar_region {
1351
+ margin-bottom: 0;
1352
+ border-left: 1px solid #ddd;
1353
+ border-bottom: 1px solid #ddd;
1354
+ border-top: 0;
1355
+ border-right: 0;
1356
+ }
1357
+ #mailpoet_editor_sidebar .mailpoet_sidebar_region.closed .mailpoet_region_content {
1358
+ display: none;
1359
+ }
1360
+ #mailpoet_editor_sidebar .mailpoet_region_content {
1361
+ padding: 0 20px;
1362
+ margin-top: 12px;
1363
+ }
1364
+ #mailpoet_editor_sidebar,
1365
+ #mailpoet_editor_sidebar .postbox {
1366
+ background-color: #f8f8f8;
1367
+ }
1368
+ #mailpoet_editor_sidebar .postbox {
1369
+ padding-bottom: 20px;
1370
+ }
1371
+ #mailpoet_editor_sidebar .postbox.closed {
1372
+ padding-bottom: 0;
1373
+ }
1374
+ #mailpoet_editor_sidebar .postbox.closed h3 {
1375
+ color: #a4a4a4;
1376
+ cursor: pointer;
1377
+ }
1378
+ #mailpoet_editor_sidebar .postbox h3,
1379
+ #mailpoet_editor_sidebar .postbox:hover h3 {
1380
+ margin: 0;
1381
+ padding: 17px 20px;
1382
+ text-transform: uppercase;
1383
+ color: #0074a2;
1384
+ }
1385
+ #mailpoet_editor_sidebar .postbox h3,
1386
+ #mailpoet_editor_sidebar .postbox .handlediv {
1387
+ cursor: auto;
1388
+ border: 0;
1389
+ }
1390
+ #mailpoet_editor_sidebar .postbox .handlediv::before {
1391
+ top: 18px;
1392
+ right: 18px;
1393
+ font: 400 20px/1 dashicons;
1394
+ speak: none;
1395
+ display: inline-block;
1396
+ position: relative;
1397
+ -webkit-font-smoothing: antialiased;
1398
+ -moz-osx-font-smoothing: grayscale;
1399
+ text-decoration: none !important;
1400
+ content: '\f142';
1401
+ color: #0074a2;
1402
+ }
1403
+ #mailpoet_editor_sidebar .postbox.closed .handlediv::before {
1404
+ content: '\f140';
1405
+ color: #a4a4a4;
1406
+ }
1407
+ #mailpoet_editor_sidebar .postbox.closed:hover .handlediv::before {
1408
+ color: #0074a2;
1409
+ }
1410
+ .mailpoet_widget {
1411
+ display: inline-block;
1412
+ width: 70px;
1413
+ text-align: center;
1414
+ float: left;
1415
+ padding: 0 13px 15px 13px;
1416
+ }
1417
+ .mailpoet_widget:nth-child(3n+1) {
1418
+ clear: left;
1419
+ }
1420
+ .mailpoet_widget .mailpoet_widget_icon {
1421
+ width: 70px;
1422
+ height: 70px;
1423
+ background-color: #fff;
1424
+ -webkit-border-radius: 3px;
1425
+ -moz-border-radius: 3px;
1426
+ border-radius: 3px;
1427
+ -webkit-box-shadow: 1px 2px #d8d8d8;
1428
+ -moz-box-shadow: 1px 2px #d8d8d8;
1429
+ box-shadow: 1px 2px #d8d8d8;
1430
+ color: #aaa;
1431
+ fill: #aaa;
1432
+ text-align: center;
1433
+ line-height: 70px;
1434
+ box-sizing: border-box;
1435
+ margin-bottom: 9px;
1436
+ /* Vertically align widget icon glyphs */
1437
+ }
1438
+ .mailpoet_widget .mailpoet_widget_icon > * {
1439
+ vertical-align: middle;
1440
+ width: 30px;
1441
+ height: 30px;
1442
+ font-size: 30px;
1443
+ }
1444
+ .mailpoet_widget .mailpoet_widget_icon:hover {
1445
+ color: #0074a2;
1446
+ fill: #0074a2;
1447
+ border: 1px solid #0074a2;
1448
+ }
1449
+ .mailpoet_widget.mailpoet_droppable_active {
1450
+ color: #0074a2;
1451
+ fill: #0074a2;
1452
+ }
1453
+ .mailpoet_widget.mailpoet_droppable_active .mailpoet_widget_icon {
1454
+ border: 1px solid #0074a2;
1455
+ color: #0074a2;
1456
+ fill: #0074a2;
1457
+ -webkit-box-shadow: none;
1458
+ -moz-box-shadow: none;
1459
+ box-shadow: none;
1460
+ }
1461
+ .mailpoet_widget.mailpoet_droppable_active .mailpoet_widget_title {
1462
+ display: none;
1463
+ }
1464
+ .mailpoet_editor_settings {
1465
+ color: #656565;
1466
+ font-size: 13px;
1467
+ }
1468
+ .mailpoet_editor_settings p {
1469
+ font-size: 1em;
1470
+ }
1471
+ .mailpoet_editor_settings h3 {
1472
+ font-size: 1.4em;
1473
+ color: #0074a2;
1474
+ text-transform: uppercase;
1475
+ }
1476
+ .mailpoet_sidepanel_field {
1477
+ margin-top: 15px;
1478
+ margin-bottom: 15px;
1479
+ }
1480
+ .mailpoet_sidepanel_field_title {
1481
+ clear: both;
1482
+ margin-bottom: 5px;
1483
+ }
1484
+ .mailpoet_sidepanel_field_title_small {
1485
+ width: 120px;
1486
+ }
1487
+ .mailpoet_sidepanel_field_title_inline {
1488
+ display: inline-block;
1489
+ vertical-align: middle;
1490
+ line-height: 30px;
1491
+ margin-bottom: 0;
1492
+ }
1493
+ .mailpoet_sidepanel_field_optional {
1494
+ font-size: 0.8em;
1495
+ color: #a4a4a4;
1496
+ }
1497
+ .mailpoet_sidepanel_radio_option,
1498
+ .mailpoet_sidepanel_checkbox_option {
1499
+ display: inline-block;
1500
+ vertical-align: top;
1501
+ margin-right: 15px;
1502
+ line-height: 30px;
1503
+ }
1504
+ .mailpoet_sidepanel_radio_option:last-child,
1505
+ .mailpoet_sidepanel_checkbox_option:last-child {
1506
+ margin-right: 0;
1507
+ }
1508
+ .mailpoet_sidepanel_input_option {
1509
+ display: inline-block;
1510
+ }
1511
+ .mailpoet_sidepanel_input_option input[type=checkbox] {
1512
+ vertical-align: top;
1513
+ }
1514
+ .mailpoet_sidepanel_input_option input[type=text] {
1515
+ vertical-align: middle;
1516
+ }
1517
+ #mailpoet_editor_bottom {
1518
+ margin-top: 39px;
1519
+ margin-left: 29px;
1520
+ }
1521
+ .mailpoet_save_options {
1522
+ -webkit-border-radius: 3px;
1523
+ -moz-border-radius: 3px;
1524
+ border-radius: 3px;
1525
+ float: left;
1526
+ overflow: hidden;
1527
+ margin: 5px 0 0 0;
1528
+ clear: both;
1529
+ vertical-align: top;
1530
+ background: #fff;
1531
+ border: 1px solid #ddd;
1532
+ }
1533
+ .mailpoet_save_option {
1534
+ margin: 0;
1535
+ }
1536
+ .mailpoet_save_option > a {
1537
+ display: block;
1538
+ padding-left: 20px;
1539
+ padding-right: 20px;
1540
+ line-height: 2em;
1541
+ }
1542
+ .mailpoet_save_option:hover {
1543
+ background-color: #2ea1cd;
1544
+ color: #fff;
1545
+ }
1546
+ .mailpoet_save_option:hover > a {
1547
+ color: #fff;
1548
+ }
1549
+ .mailpoet_save_show_options {
1550
+ padding: 6px 3px 4px;
1551
+ }
1552
+ .mailpoet_save_show_options.mailpoet_save_show_options_active .mailpoet_save_show_options_icon::before {
1553
+ content: '\f142';
1554
+ }
1555
+ .mailpoet_save_show_options_icon {
1556
+ vertical-align: middle;
1557
+ }
1558
+ .mailpoet_save_show_options_icon::before {
1559
+ content: '\f140';
1560
+ }
1561
+ .mailpoet_save_as_template_container,
1562
+ .mailpoet_export_template_container {
1563
+ -webkit-border-radius: 3px;
1564
+ -moz-border-radius: 3px;
1565
+ border-radius: 3px;
1566
+ display: inline-block;
1567
+ clear: both;
1568
+ margin-top: 5px;
1569
+ padding: 0 10px;
1570
+ background-color: #fff;
1571
+ border: 1px solid #ddd;
1572
+ }
1573
+ .mailpoet_save_as_template_title,
1574
+ .mailpoet_export_template_title {
1575
+ font-size: 1.1em;
1576
+ }
1577
+ .mailpoet_editor_last_saved {
1578
+ color: #a4a4a4;
1579
+ font-size: 0.9em;
1580
+ display: inline;
1581
+ }
1582
+ .mailpoet_save_error {
1583
+ color: #d54e21;
1584
+ }
1585
+ .mailpoet_tools {
1586
+ position: absolute;
1587
+ top: 0;
1588
+ right: 0;
1589
+ z-index: 20;
1590
+ padding: 2px;
1591
+ text-align: right;
1592
+ overflow: hidden;
1593
+ }
1594
+ .mailpoet_tools .mailpoet_tool_slider {
1595
+ position: relative;
1596
+ right: -100%;
1597
+ transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1);
1598
+ opacity: 0;
1599
+ }
1600
+ .mailpoet_tools.mailpoet_display_tools .mailpoet_tool_slider {
1601
+ right: 0;
1602
+ opacity: 1;
1603
+ }
1604
+ .mailpoet_tools a {
1605
+ vertical-align: top;
1606
+ }
1607
+ .mailpoet_container_horizontal + .mailpoet_tools {
1608
+ left: 100%;
1609
+ right: initial;
1610
+ padding-left: 5px;
1611
+ }
1612
+ .mailpoet_container_horizontal + .mailpoet_tools .mailpoet_tool_slider {
1613
+ left: -100%;
1614
+ right: initial;
1615
+ }
1616
+ .mailpoet_container_horizontal + .mailpoet_tools.mailpoet_display_tools .mailpoet_tool_slider {
1617
+ left: 0;
1618
+ }
1619
+ .mailpoet_container_horizontal + .mailpoet_tools .mailpoet_tool {
1620
+ width: 24px;
1621
+ height: 24px;
1622
+ display: block;
1623
+ }
1624
+ .mailpoet_container_horizontal + .mailpoet_tools .mailpoet_tool .mailpoet_tool_icon {
1625
+ width: 24px;
1626
+ height: 24px;
1627
+ }
1628
+ .mailpoet_container_horizontal + .mailpoet_tools .mailpoet_delete_block_activate {
1629
+ max-width: 100%;
1630
+ max-height: 24px;
1631
+ opacity: 1;
1632
+ display: block;
1633
+ }
1634
+ .mailpoet_container_horizontal + .mailpoet_tools .mailpoet_delete_block_confirm,
1635
+ .mailpoet_container_horizontal + .mailpoet_tools .mailpoet_delete_block_cancel {
1636
+ max-width: 100%;
1637
+ max-height: 0;
1638
+ opacity: 0;
1639
+ overflow: hidden;
1640
+ display: block;
1641
+ margin: 0;
1642
+ }
1643
+ .mailpoet_container_horizontal + .mailpoet_tools .mailpoet_delete_block_activated {
1644
+ width: auto;
1645
+ height: auto;
1646
+ }
1647
+ .mailpoet_container_horizontal + .mailpoet_tools .mailpoet_delete_block_activated .mailpoet_delete_block_activate {
1648
+ overflow: hidden;
1649
+ max-height: 0;
1650
+ opacity: 0;
1651
+ }
1652
+ .mailpoet_container_horizontal + .mailpoet_tools .mailpoet_delete_block_activated .mailpoet_delete_block_confirm,
1653
+ .mailpoet_container_horizontal + .mailpoet_tools .mailpoet_delete_block_activated .mailpoet_delete_block_cancel {
1654
+ max-height: 48px;
1655
+ opacity: 1;
1656
+ }
1657
+ .mailpoet_tool {
1658
+ display: inline-block;
1659
+ width: 20px;
1660
+ height: 20px;
1661
+ padding: 2px;
1662
+ }
1663
+ .mailpoet_tool:hover {
1664
+ filter: progid:DXImageTransform.Microsoft.Dropshadow(OffX=1, OffY=2, Color='#d2d2d4');
1665
+ -webkit-filter: drop-shadow(1px 2px 0px #d2d2d4);
1666
+ -ms-filter: progid:DXImageTransform.Microsoft.Dropshadow(OffX=1, OffY=2, Color='#d2d2d4');
1667
+ filter: drop-shadow(1px 2px 0px #d2d2d4);
1668
+ }
1669
+ .mailpoet_tool .mailpoet_tool_icon {
1670
+ fill: #333;
1671
+ width: 20px;
1672
+ height: 20px;
1673
+ }
1674
+ .mailpoet_tool .mailpoet_tool_icon .mailpoet_tool_icon_foreground {
1675
+ fill: #fff;
1676
+ }
1677
+ .mailpoet_tool .mailpoet_tool_icon:hover {
1678
+ fill: #bbb;
1679
+ }
1680
+ .mailpoet_tool .mailpoet_tool_icon:hover .mailpoet_tool_icon_foreground {
1681
+ fill: #fff;
1682
+ }
1683
+ .mailpoet_tool .mailpoet_tool_icon:active {
1684
+ fill: #0074a2;
1685
+ }
1686
+ .mailpoet_tool .mailpoet_tool_icon:active .mailpoet_tool_icon_foreground {
1687
+ fill: #fff;
1688
+ }
1689
+ .mailpoet_tool .mailpoet_delete_block_confirmation {
1690
+ position: absolute;
1691
+ top: 0;
1692
+ right: 0;
1693
+ width: 200px;
1694
+ }
1695
+ .mailpoet_delete_block {
1696
+ display: inline-block;
1697
+ padding: 2px;
1698
+ vertical-align: top;
1699
+ transition: background 250ms cubic-bezier(0.42, 0, 0.58, 1) /* ease-in-out */;
1700
+ }
1701
+ .mailpoet_delete_block .mailpoet_tool {
1702
+ padding: 0;
1703
+ }
1704
+ .mailpoet_delete_block .mailpoet_delete_block_activate {
1705
+ max-width: 20px;
1706
+ display: inline-block;
1707
+ opacity: 1;
1708
+ transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1) /* ease-in-out */;
1709
+ }
1710
+ .mailpoet_delete_block .mailpoet_delete_block_confirm,
1711
+ .mailpoet_delete_block .mailpoet_delete_block_cancel {
1712
+ max-width: 0;
1713
+ opacity: 0;
1714
+ overflow: hidden;
1715
+ display: inline-block;
1716
+ transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1) /* ease-in-out */;
1717
+ }
1718
+ .mailpoet_delete_block_activated {
1719
+ height: auto;
1720
+ width: auto;
1721
+ -webkit-border-radius: 3px;
1722
+ -moz-border-radius: 3px;
1723
+ border-radius: 3px;
1724
+ background-color: #e64047;
1725
+ padding: 3px 5px;
1726
+ }
1727
+ .mailpoet_delete_block_activated .mailpoet_delete_block_activate {
1728
+ overflow: hidden;
1729
+ max-width: 0;
1730
+ opacity: 0;
1731
+ }
1732
+ .mailpoet_delete_block_activated .mailpoet_delete_block_confirm,
1733
+ .mailpoet_delete_block_activated .mailpoet_delete_block_cancel {
1734
+ max-width: 100%;
1735
+ opacity: 1;
1736
+ }
1737
+ .mailpoet_delete_block_activated .mailpoet_delete_block_cancel {
1738
+ margin-left: 3px;
1739
+ }
1740
+ .mailpoet_delete_block_confirm {
1741
+ color: #fff;
1742
+ }
1743
+ .mailpoet_delete_block_confirm:hover {
1744
+ color: #fff;
1745
+ text-decoration: underline;
1746
+ }
1747
+ .mailpoet_delete_block_cancel {
1748
+ color: #f4c6c8;
1749
+ }
1750
+ .mailpoet_delete_block_cancel:hover {
1751
+ color: #f4c6c8;
1752
+ text-decoration: underline;
1753
+ }
1754
+ .mailpoet_newsletter_layer_selector.mailpoet_container_layer_active .mailpoet_tool_icon {
1755
+ fill: #0074a2;
1756
+ z-index: 100001 !important;
1757
+ }
1758
+ .mailpoet_newsletter_layer_selector.mailpoet_container_layer_active .mailpoet_tool_icon .mailpoet_tool_icon_foreground {
1759
+ fill: #fff;
1760
+ }
1761
+ .mailpoet_container_layer_active .mailpoet_block {
1762
+ pointer-events: none;
1763
+ opacity: 0.4;
1764
+ }
1765
+ .mailpoet_container_layer_active .mailpoet_container_block {
1766
+ pointer-events: auto;
1767
+ opacity: 1;
1768
+ }
1769
+ .mailpoet_container_layer_active .mailpoet_container_block > .mailpoet_tools {
1770
+ display: block !important;
1771
+ }
1772
+ .mailpoet_container_layer_active > .mailpoet_tools {
1773
+ z-index: 100001 !important;
1774
+ }
1775
+ .mailpoet_layer_overlay {
1776
+ height: 100%;
1777
+ left: 0;
1778
+ overflow-y: auto;
1779
+ overflow-x: hidden;
1780
+ position: fixed;
1781
+ top: 0;
1782
+ width: 100%;
1783
+ z-index: 100000;
1784
+ background-color: rgba(0,0,0,0.6);
1785
+ margin: 0 !important;
1786
+ }
1787
+ .mailpoet_layer_highlight {
1788
+ pointer-events: none;
1789
+ background-color: #f1f1f1;
1790
+ position: relative;
1791
+ z-index: 100001 !important;
1792
+ }
1793
+ .mailpoet_drop_marker {
1794
+ background-color: #0074a2;
1795
+ position: absolute;
1796
+ min-width: 2px;
1797
+ min-height: 2px;
1798
+ z-index: 1;
1799
+ -webkit-box-shadow: 0px 0px 1px 0px #0074a2;
1800
+ -moz-box-shadow: 0px 0px 1px 0px #0074a2;
1801
+ box-shadow: 0px 0px 1px 0px #0074a2;
1802
+ }
1803
+ .mailpoet_drop_marker::before,
1804
+ .mailpoet_drop_marker::after {
1805
+ position: absolute;
1806
+ margin-top: -18px;
1807
+ font: 400 40px/1 dashicons;
1808
+ color: #0074a2;
1809
+ }
1810
+ .mailpoet_drop_marker::before {
1811
+ left: -25px;
1812
+ content: "\f139";
1813
+ }
1814
+ .mailpoet_drop_marker::after {
1815
+ right: -23px;
1816
+ content: "\f141";
1817
+ }
1818
+ .mailpoet_drop_marker.mailpoet_drop_marker_middle,
1819
+ .mailpoet_drop_marker.mailpoet_drop_marker_first.mailpoet_drop_marker_after,
1820
+ .mailpoet_drop_marker.mailpoet_drop_marker_last.mailpoet_drop_marker_before {
1821
+ margin-top: -1px;
1822
+ }
1823
+ .mailpoet_drop_marker.mailpoet_drop_marker_last.mailpoet_drop_marker_after {
1824
+ margin-top: -2px;
1825
+ }
1826
+ #mailpoet_editor .mailpoet_droppable_active {
1827
+ z-index: 21000;
1828
+ }
1829
+ .mailpoet_block.mailpoet_droppable_active {
1830
+ border: 1px dashed #0074a2 !important;
1831
+ width: 660px;
1832
+ }
1833
+ .mailpoet_block.mailpoet_droppable_active .mailpoet_tools {
1834
+ display: none !important;
1835
+ }
1836
+ .mailpoet_widget.mailpoet_droppable_active {
1837
+ padding: 0;
1838
+ margin: 0;
1839
+ z-index: 2;
1840
+ animation-name: fadeIn;
1841
+ animation-duration: 300ms;
1842
+ animation-fill-mode: forwards;
1843
+ animation-timing-function: ease-in;
1844
+ }
1845
+ .mailpoet_widget.mailpoet_droppable_active .mailpoet_widget_icon {
1846
+ padding: 0;
1847
+ margin: 0;
1848
+ }
1849
+ .mailpoet_drop_active > .mailpoet_container > div > .mailpoet_container_empty {
1850
+ background-color: #0074a2;
1851
+ -webkit-box-shadow: inset 1px 2px 1px #025c80;
1852
+ -moz-box-shadow: inset 1px 2px 1px #025c80;
1853
+ box-shadow: inset 1px 2px 1px #025c80;
1854
+ color: #fff;
1855
+ }
1856
+ .mailpoet_resize_handle_container {
1857
+ position: absolute;
1858
+ bottom: 0;
1859
+ text-align: center;
1860
+ width: 100%;
1861
+ }
1862
+ .mailpoet_resize_handle {
1863
+ padding: 6px 15px 10px 6px;
1864
+ position: relative;
1865
+ top: 5px;
1866
+ background: #0074a2;
1867
+ -webkit-border-radius: 3px;
1868
+ -moz-border-radius: 3px;
1869
+ border-radius: 3px;
1870
+ display: inline-block;
1871
+ width: 30px;
1872
+ cursor: ns-resize;
1873
+ z-index: 2;
1874
+ }
1875
+ .mailpoet_resize_handle .mailpoet_resize_handle_text,
1876
+ .mailpoet_resize_handle .mailpoet_resize_handle_icon {
1877
+ pointer-events: none;
1878
+ }
1879
+ .mailpoet_resize_handle_text {
1880
+ line-height: 1.5em;
1881
+ font-size: 11px;
1882
+ font-weight: bold;
1883
+ color: #fff;
1884
+ text-align: center;
1885
+ }
1886
+ .mailpoet_resize_handle_icon {
1887
+ position: absolute;
1888
+ top: 9px;
1889
+ right: 1px;
1890
+ }
1891
+ .mailpoet_resize_handle_icon > svg {
1892
+ width: 15px;
1893
+ height: 15px;
1894
+ fill: #fff;
1895
+ }
1896
+ .mailpoet_block.mailpoet_resize_active > .mailpoet_block_highlight {
1897
+ border: 1px dashed #0074a2;
1898
+ }
1899
+ .mailpoet_block.mailpoet_resize_active > .mailpoet_block_highlight .mailpoet_resize_handle {
1900
+ display: inline-block;
1901
+ }
1902
+ .mailpoet_block {
1903
+ box-sizing: border-box;
1904
+ position: relative;
1905
+ float: left;
1906
+ background-color: inherit;
1907
+ box-sizing: border-box;
1908
+ margin-bottom: 20px;
1909
+ padding-left: 20px;
1910
+ padding-right: 20px;
1911
+ }
1912
+ .mailpoet_block > .mailpoet_block_highlight {
1913
+ position: absolute;
1914
+ top: 0;
1915
+ right: 0;
1916
+ bottom: 0;
1917
+ left: 0;
1918
+ pointer-events: none;
1919
+ border: 1px solid rgba(255,255,255,0);
1920
+ }
1921
+ .mailpoet_block:hover > .mailpoet_block_highlight,
1922
+ .mailpoet_block.mailpoet_highlight > .mailpoet_block_highlight {
1923
+ border: 1px dashed #0074a2;
1924
+ }
1925
+ .mailpoet_block:last-child {
1926
+ margin-bottom: 0;
1927
+ }
1928
+ .mailpoet_content {
1929
+ position: relative;
1930
+ line-height: 1.6em;
1931
+ }
1932
+ .mailpoet_content p,
1933
+ .mailpoet_content h1,
1934
+ .mailpoet_content h2,
1935
+ .mailpoet_content h3,
1936
+ .mailpoet_content h4,
1937
+ .mailpoet_content h5,
1938
+ .mailpoet_content h6 {
1939
+ line-height: 1.6em;
1940
+ padding: 0;
1941
+ margin: 0;
1942
+ font-style: normal;
1943
+ font-weight: normal;
1944
+ }
1945
+ .mailpoet_content h1,
1946
+ .mailpoet_content h2,
1947
+ .mailpoet_content h3,
1948
+ .mailpoet_content h4,
1949
+ .mailpoet_content h5,
1950
+ .mailpoet_content h6 {
1951
+ margin-bottom: 0.3em;
1952
+ }
1953
+ .mailpoet_content p {
1954
+ margin-top: 0;
1955
+ margin-bottom: 0;
1956
+ font-weight: normal;
1957
+ }
1958
+ .mailpoet_content ul {
1959
+ padding: 0;
1960
+ margin-top: 10px;
1961
+ margin-bottom: 10px;
1962
+ }
1963
+ .mailpoet_content li {
1964
+ margin-top: 0;
1965
+ font-weight: normal;
1966
+ margin-bottom: 10px;
1967
+ }
1968
+ .mailpoet_content blockquote {
1969
+ margin: 0 0 1.6em;
1970
+ padding-left: 10px;
1971
+ border-left: 2px #565656 solid;
1972
+ }
1973
+ .mailpoet_container {
1974
+ width: 100%;
1975
+ min-height: 15px;
1976
+ position: relative;
1977
+ }
1978
+ .mailpoet_container_block {
1979
+ margin-left: 0;
1980
+ margin-right: 0;
1981
+ position: relative;
1982
+ box-sizing: border-box;
1983
+ border: 0;
1984
+ padding-left: 0;
1985
+ padding-right: 0;
1986
+ }
1987
+ .mailpoet_container_block:hover > .mailpoet_block_highlight {
1988
+ border: 0;
1989
+ }
1990
+ .mailpoet_container_vertical > * {
1991
+ width: 100%;
1992
+ box-sizing: border-box;
1993
+ }
1994
+ .mailpoet_container_horizontal > * {
1995
+ vertical-align: top;
1996
+ }
1997
+ #mailpoet_editor_content .mailpoet_container {
1998
+ box-sizing: border-box;
1999
+ float: left;
2000
+ }
2001
+ #mailpoet_editor_content > .mailpoet_container_block {
2002
+ width: 660px;
2003
+ border: 0;
2004
+ }
2005
+ #mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block {
2006
+ margin-bottom: 0;
2007
+ }
2008
+ #mailpoet_editor_content .mailpoet_container_horizontal > .mailpoet_container_block {
2009
+ margin-bottom: 0;
2010
+ width: 660px;
2011
+ }
2012
+ #mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(2),
2013
+ #mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(2) ~ .mailpoet_block {
2014
+ width: 330px;
2015
+ }
2016
+ #mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(3),
2017
+ #mailpoet_editor_content > .mailpoet_container_block > .mailpoet_container > .mailpoet_container_block > .mailpoet_container_horizontal > .mailpoet_block:first-child:nth-last-child(3) ~ .mailpoet_block {
2018
+ width: 220px;
2019
+ }
2020
+ .mailpoet_container_empty {
2021
+ text-align: center;
2022
+ background-color: #f2f2f2;
2023
+ margin: 20px;
2024
+ padding: 15px;
2025
+ -webkit-box-shadow: inset 1px 2px 1px #a4a4a4;
2026
+ -moz-box-shadow: inset 1px 2px 1px #a4a4a4;
2027
+ box-shadow: inset 1px 2px 1px #a4a4a4;
2028
+ color: #656565;
2029
+ -webkit-border-radius: 3px;
2030
+ -moz-border-radius: 3px;
2031
+ border-radius: 3px;
2032
+ transition: background 250ms cubic-bezier(0.42, 0, 0.58, 1) /* ease-in-out */;
2033
+ }
2034
+ .mailpoet_automated_latest_content_block {
2035
+ padding: 0;
2036
+ }
2037
+ .mailpoet_automated_latest_content_block_overlay {
2038
+ position: absolute;
2039
+ z-index: 19;
2040
+ width: 100%;
2041
+ height: 100%;
2042
+ background: rgba(255,255,255,0);
2043
+ transition: background 0.15s ease-out;
2044
+ }
2045
+ .mailpoet_automated_latest_content_block:hover .mailpoet_automated_latest_content_block_overlay {
2046
+ background: rgba(255,255,255,0.7);
2047
+ cursor: pointer;
2048
+ }
2049
+ .mailpoet_automated_latest_content_block_posts {
2050
+ overflow: auto;
2051
+ pointer-events: none;
2052
+ }
2053
+ .mailpoet_automated_latest_content_block_posts > .mailpoet_block {
2054
+ width: 100%;
2055
+ }
2056
+ .mailpoet_automated_latest_content_display_options {
2057
+ transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1) /* ease-in-out */;
2058
+ max-height: 2000px;
2059
+ opacity: 1;
2060
+ overflow-y: hidden;
2061
+ }
2062
+ .mailpoet_automated_latest_content_display_options.mailpoet_closed {
2063
+ max-height: 0px;
2064
+ opacity: 0;
2065
+ }
2066
+ .mailpoet_automated_latest_content_show_amount {
2067
+ width: 25px;
2068
+ }
2069
+ .mailpoet_automated_latest_content_content_type {
2070
+ width: 180px;
2071
+ }
2072
+ .mailpoet_posts_block {
2073
+ padding-left: 0;
2074
+ padding-right: 0;
2075
+ }
2076
+ .mailpoet_posts_block_posts {
2077
+ overflow: auto;
2078
+ }
2079
+ .mailpoet_posts_block_posts > .mailpoet_block {
2080
+ width: 100%;
2081
+ }
2082
+ .mailpoet_post_selection_filter_row {
2083
+ margin-top: 5px;
2084
+ margin-bottom: 5px;
2085
+ }
2086
+ .mailpoet_posts_categories_and_tags {
2087
+ width: 100%;
2088
+ }
2089
+ .mailpoet_settings_posts_display_options,
2090
+ .mailpoet_settings_posts_selection {
2091
+ transition: all 250ms cubic-bezier(0.42, 0, 0.58, 1) /* ease-in-out */;
2092
+ max-height: 2000px;
2093
+ opacity: 1;
2094
+ overflow-y: hidden;
2095
+ }
2096
+ .mailpoet_settings_posts_display_options.mailpoet_closed,
2097
+ .mailpoet_settings_posts_selection.mailpoet_closed {
2098
+ max-height: 0px;
2099
+ opacity: 0;
2100
+ }
2101
+ .mailpoet_settings_posts_show_display_options,
2102
+ .mailpoet_settings_posts_show_post_selection {
2103
+ display: block;
2104
+ margin-top: 10px;
2105
+ }
2106
+ .mailpoet_post_selection_container {
2107
+ margin-top: 20px;
2108
+ margin-bottom: 20px;
2109
+ }
2110
+ .mailpoet_settings_posts_single_post {
2111
+ -webkit-border-radius: 1px;
2112
+ -moz-border-radius: 1px;
2113
+ border-radius: 1px;
2114
+ width: 100%;
2115
+ margin-top: 5px;
2116
+ margin-bottom: 5px;
2117
+ height: 38px;
2118
+ line-height: 38px;
2119
+ overflow: hidden;
2120
+ border: 1px solid #ddd;
2121
+ background-color: #fff;
2122
+ }
2123
+ .mailpoet_settings_posts_single_post:hover {
2124
+ border-color: #0074a2;
2125
+ }
2126
+ .mailpoet_settings_posts_single_post .mailpoet_select_post_checkbox {
2127
+ margin-left: 10px;
2128
+ margin-right: 8px;
2129
+ }
2130
+ .mailpoet_button_block {
2131
+ overflow: hidden;
2132
+ }
2133
+ .mailpoet_button_block .mailpoet_editor_button {
2134
+ display: block;
2135
+ margin: auto;
2136
+ line-height: 2em;
2137
+ text-align: center;
2138
+ text-decoration: none;
2139
+ box-sizing: border-box;
2140
+ max-width: 100%;
2141
+ }
2142
+ .mailpoet_button_block .mailpoet_editor_button:hover {
2143
+ cursor: all-scroll;
2144
+ }
2145
+ .mailpoet_divider_block {
2146
+ padding-left: 0;
2147
+ padding-right: 0;
2148
+ margin-bottom: 0;
2149
+ cursor: all-scroll;
2150
+ }
2151
+ .mailpoet_divider {
2152
+ margin-left: 20px;
2153
+ margin-right: 20px;
2154
+ }
2155
+ .mailpoet_field_divider_style {
2156
+ max-width: 660px;
2157
+ margin: auto;
2158
+ display: block;
2159
+ width: 100%;
2160
+ border: 1px solid transparent;
2161
+ }
2162
+ .mailpoet_active_divider_style {
2163
+ border: 1px solid #adadad;
2164
+ background: #daebf2;
2165
+ }
2166
+ .mailpoet_field_divider_style:hover {
2167
+ border: 1px solid #0074a2;
2168
+ }
2169
+ .mailpoet_divider_selector img {
2170
+ width: 100%;
2171
+ }
2172
+ .mailpoet_field_divider_style {
2173
+ padding: 10px 0;
2174
+ }
2175
+ .mailpoet_image_block img {
2176
+ vertical-align: bottom;
2177
+ max-width: 100%;
2178
+ width: auto;
2179
+ height: auto;
2180
+ }
2181
+ .mailpoet_image_block.mailpoet_full_image {
2182
+ padding-left: 0;
2183
+ padding-right: 0;
2184
+ margin-bottom: 0;
2185
+ }
2186
+ .mailpoet_image_block .mailpoet_content a:hover {
2187
+ cursor: all-scroll;
2188
+ }
2189
+ .mailpoet_social_block {
2190
+ padding-top: 0px;
2191
+ padding-bottom: 0px;
2192
+ }
2193
+ .mailpoet_social_block .mailpoet_social {
2194
+ text-align: center;
2195
+ }
2196
+ .mailpoet_social span {
2197
+ display: inline-block;
2198
+ padding: 2px 3px;
2199
+ }
2200
+ .mailpoet_social span,
2201
+ .mailpoet_social a,
2202
+ .mailpoet_social img {
2203
+ vertical-align: top;
2204
+ }
2205
+ .mailpoet_social a {
2206
+ cursor: all-scroll;
2207
+ }
2208
+ .mailpoet_social_icon_set {
2209
+ border: 1px solid transparent;
2210
+ padding: 5px;
2211
+ margin-bottom: 5px;
2212
+ }
2213
+ .mailpoet_social_icon_set:hover {
2214
+ border: 1px solid #0074a2;
2215
+ }
2216
+ .mailpoet_social_icon_set img {
2217
+ width: 32px;
2218
+ height: 32px;
2219
+ vertical-align: middle;
2220
+ padding: 2px 3px;
2221
+ }
2222
+ .mailpoet_active_icon_set {
2223
+ border: 1px dashed #adadad;
2224
+ background-color: #daebf2;
2225
+ }
2226
+ .mailpoet_social_icon_settings {
2227
+ position: relative;
2228
+ padding: 28px 9px 8px 9px;
2229
+ margin-bottom: 9px;
2230
+ background: #fff;
2231
+ border: 1px solid #ddd;
2232
+ }
2233
+ .mailpoet_social_icon_settings_row {
2234
+ clear: both;
2235
+ overflow: auto;
2236
+ margin-bottom: 10px;
2237
+ line-height: 30px;
2238
+ }
2239
+ .mailpoet_social_icon_settings_label {
2240
+ margin-right: 5px;
2241
+ text-align: left;
2242
+ }
2243
+ .mailpoet_social_icon_settings_label .mailpoet_social_icon_image {
2244
+ width: 30px;
2245
+ height: 30px;
2246
+ }
2247
+ .mailpoet_social_icon_settings_label.mailpoet_social_icon_image_label {
2248
+ line-height: initial;
2249
+ }
2250
+ .mailpoet_social_icon_settings_form_element {
2251
+ float: left;
2252
+ width: 100%;
2253
+ }
2254
+ .mailpoet_social_icon_settings_form_element input,
2255
+ .mailpoet_social_icon_settings_form_element select {
2256
+ width: 100%;
2257
+ height: 30px;
2258
+ box-sizing: border-box;
2259
+ margin: 0;
2260
+ vertical-align: middle;
2261
+ display: inline-block;
2262
+ }
2263
+ .mailpoet_social_icon_settings_tool {
2264
+ position: absolute;
2265
+ top: 10px;
2266
+ }
2267
+ .mailpoet_social_icon_settings_tool .mailpoet_tool_icon {
2268
+ fill: #333;
2269
+ width: 16px;
2270
+ height: 16px;
2271
+ }
2272
+ .mailpoet_social_icon_settings_tool .mailpoet_tool_icon:hover {
2273
+ fill: #bbb;
2274
+ }
2275
+ .mailpoet_social_icon_settings_tool .mailpoet_tool_icon:active {
2276
+ fill: #0074a2;
2277
+ }
2278
+ .mailpoet_social_icon_settings_tool .mailpoet_tool_icon:active {
2279
+ filter: progid:DXImageTransform.Microsoft.Dropshadow(OffX=1, OffY=2, Color='#d2d2d4');
2280
+ -webkit-filter: drop-shadow(1px 2px 0px #d2d2d4);
2281
+ -ms-filter: progid:DXImageTransform.Microsoft.Dropshadow(OffX=1, OffY=2, Color='#d2d2d4');
2282
+ filter: drop-shadow(1px 2px 0px #d2d2d4);
2283
+ }
2284
+ .mailpoet_social_icon_settings_move_icon {
2285
+ right: 5px;
2286
+ }
2287
+ .mailpoet_social_icon_settings_delete_icon {
2288
+ right: 26px;
2289
+ }
2290
+ .mailpoet_spacer {
2291
+ text-align: center;
2292
+ }
2293
+ .mailpoet_spacer_block {
2294
+ padding-left: 0;
2295
+ padding-right: 0;
2296
+ margin-bottom: 0;
2297
+ cursor: all-scroll;
2298
+ }
2299
+ .mailpoet_text_block {
2300
+ padding-left: 0;
2301
+ padding-right: 0;
2302
+ }
2303
+ .mailpoet_text_block > .mailpoet_content {
2304
+ overflow: hidden;
2305
+ padding-top: 0;
2306
+ padding-bottom: 0px;
2307
+ padding-left: 20px;
2308
+ padding-right: 20px;
2309
+ }
2310
+ .mailpoet_text_block > .mailpoet_content > *:last-child {
2311
+ margin-bottom: 0;
2312
+ }
2313
+ .mailpoet_header_block {
2314
+ padding-left: 0;
2315
+ padding-right: 0;
2316
+ margin-bottom: 0;
2317
+ }
2318
+ .mailpoet_header_block .mailpoet_content {
2319
+ padding: 10px 20px;
2320
+ }
2321
+ .mailpoet_header_block .mailpoet_content > *:last-child {
2322
+ margin-bottom: 0;
2323
+ }
2324
+ .mailpoet_footer_block {
2325
+ padding-left: 0;
2326
+ padding-right: 0;
2327
+ margin-bottom: 0;
2328
+ }
2329
+ .mailpoet_footer_block .mailpoet_content {
2330
+ padding: 10px 20px;
2331
+ }
2332
+ .mailpoet_footer_block .mailpoet_content > *:last-child {
2333
+ margin-bottom: 0;
2334
+ }
2335
+ .select2-dropdown {
2336
+ z-index: 101000 !important;
2337
+ }
2338
+ .select2-container {
2339
+ border: none;
2340
+ padding: 0;
2341
+ }
2342
+ .select2 input,
2343
+ .select2 input:focus {
2344
+ border-color: none;
2345
+ -webkit-box-shadow: none;
2346
+ -moz-box-shadow: none;
2347
+ box-shadow: none;
2348
+ margin: 0;
2349
+ padding: 0;
2350
+ }
2351
+ .mailpoet_editor_settings .select2-container {
2352
+ width: 100% !important;
2353
+ }
2354
+ div.mce-toolbar-grp.mce-container {
2355
+ position: absolute;
2356
+ }
2357
+ .mce-tinymce.mce-tinymce-inline {
2358
+ -webkit-border-radius: 3px;
2359
+ -moz-border-radius: 3px;
2360
+ border-radius: 3px;
2361
+ background-color: #f8f8f8;
2362
+ border: 1px solid #ddd;
2363
+ -webkit-box-shadow: 0px 0px 3px 1px rgba(0,0,0,0.05);
2364
+ -moz-box-shadow: 0px 0px 3px 1px rgba(0,0,0,0.05);
2365
+ box-shadow: 0px 0px 3px 1px rgba(0,0,0,0.05);
2366
+ }
2367
+ .mce-window div.mce-container-body.mce-abs-layout {
2368
+ overflow: hidden;
2369
+ }
2370
+ .mce-window .mce-window-head div.mce-dragh {
2371
+ width: -webkit-calc(100% - 36px);
2372
+ width: calc(100% - 36px);
2373
+ }
2374
+ .mce-i-mailpoet_shortcodes:before {
2375
+ font: 400 20px/1 dashicons !important;
2376
+ content: "\f307";
2377
+ }
2378
+ .mce-edit-focus {
2379
+ outline: none;
2380
+ }
2381
+ #wp-link li,
2382
+ #wp-link div.query-notice,
2383
+ clear: both,
2384
+ margin-bottom: 0,
2385
+ border-bottom: 1px solid #f1f1f1,
2386
+ color: #333,
2387
+ padding: 4px 6px,
2388
+ cursor: pointer,
2389
+ position: relative,
2390
+ #wpbody-content > * {
2391
+ margin-left: 20px;
2392
+ }
2393
+ #wpbody-content > .wrap {
2394
+ margin-left: 0;
2395
+ }
2396
+ #wpcontent {
2397
+ margin-left: 160px;
2398
+ padding-left: 0;
2399
+ }
2400
+ .folded #wpcontent {
2401
+ margin-left: 36px;
2402
+ }
2403
+ .wrap {
2404
+ margin-left: 0;
2405
+ margin-right: 0;
2406
+ }
2407
+ #wpadminbar {
2408
+ z-index: 50000;
2409
+ }
2410
+ body {
2411
+ overflow-x: auto;
2412
+ }
2413
+ .media-sidebar {
2414
+ display: none;
2415
+ }
2416
+ #mailpoet-media-manager .attachments-browser .attachments,
2417
+ #mailpoet-media-manager .attachments-browser .uploader-inline {
2418
+ margin-right: 0;
2419
+ }
2420
+ #mailpoet-media-manager .attachments-browser .attachments,
2421
+ #mailpoet-media-manager .attachments-browser .media-toolbar,
2422
+ #mailpoet-media-manager .attachments-browser .uploader-inline {
2423
+ right: 0;
2424
+ }
2425
+ #media-attachment-date-filters {
2426
+ max-width: calc(100% - 12px);
2427
+ }
2428
+ .sp-replacer {
2429
+ -webkit-border-radius: 3px;
2430
+ -moz-border-radius: 3px;
2431
+ border-radius: 3px;
2432
+ padding: 0;
2433
+ border: 0;
2434
+ -webkit-box-shadow: 1px 2px #d8d8d8;
2435
+ -moz-box-shadow: 1px 2px #d8d8d8;
2436
+ box-shadow: 1px 2px #d8d8d8;
2437
+ }
2438
+ .sp-preview {
2439
+ border-width: 0;
2440
+ margin-right: 0;
2441
+ width: 25px;
2442
+ height: 25px;
2443
+ }
2444
+ .sp-dd {
2445
+ display: none;
2446
+ }
2447
+ .mailpoet_panel_body {
2448
+ margin: 19px;
2449
+ padding: 0;
2450
+ }
2451
+ .mailpoet_panel_wrapper {
2452
+ background-color: #f8f8f8;
2453
+ border: 1px solid #ddd;
2454
+ }
2455
+ #mailpoet_modal_close {
2456
+ display: none;
2457
+ }
2458
+ .wrap > .mailpoet_notice,
2459
+ .update-nag {
2460
+ margin-left: 17px !important;
2461
+ }
2462
+ .mailpoet_button_group .button:first-child {
2463
+ border-right: 0;
2464
+ border-top-right-radius: 0;
2465
+ border-bottom-right-radius: 0;
2466
+ }
2467
+ .mailpoet_button_group .button:last-child {
2468
+ border-left: 0;
2469
+ border-top-left-radius: 0;
2470
+ border-bottom-left-radius: 0;
2471
+ }
trunk/assets/css/public.css ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ input.parsley-success,
2
+ select.parsley-success,
3
+ textarea.parsley-success {
4
+ color: #468847;
5
+ background-color: #dff0d8;
6
+ border: 1px solid #d6e9c6;
7
+ }
8
+ input.parsley-error,
9
+ select.parsley-error,
10
+ textarea.parsley-error {
11
+ color: #b94a48;
12
+ background-color: #f2dede;
13
+ border: 1px solid #eed3d7;
14
+ }
15
+ .parsley-errors-list {
16
+ margin: 2px 0 3px;
17
+ padding: 0;
18
+ list-style-type: none;
19
+ font-size: 0.9em;
20
+ line-height: 0.9em;
21
+ color: #b94a48;
22
+ opacity: 0;
23
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
24
+ filter: alpha(opacity=0);
25
+ -webkit-transition: all 0.3s ease-in;
26
+ -moz-transition: all 0.3s ease-in;
27
+ -o-transition: all 0.3s ease-in;
28
+ -ms-transition: all 0.3s ease-in;
29
+ transition: all 0.3s ease-in;
30
+ -o-transition: all 0.3s ease-in;
31
+ -moz-transition: all 0.3s ease-in;
32
+ -webkit-transition: all 0.3s ease-in;
33
+ }
34
+ .parsley-errors-list.filled {
35
+ opacity: 1;
36
+ -ms-filter: none;
37
+ filter: none;
38
+ }
39
+ .parsley-errors-list {
40
+ margin-top: 8px;
41
+ }
42
+ .parsley-required,
43
+ .parsley-custom-error-message {
44
+ color: #b94a48;
45
+ }
46
+ /* labels */
47
+ .mailpoet_text_label,
48
+ .mailpoet_textarea_label,
49
+ .mailpoet_select_label,
50
+ .mailpoet_radio_label,
51
+ .mailpoet_checkbox_label,
52
+ .mailpoet_list_label,
53
+ .mailpoet_date_label {
54
+ display: block;
55
+ }
trunk/assets/css/rtl.css ADDED
File without changes
trunk/assets/img/blank_templates/fake-logo.png ADDED
Binary file
trunk/assets/img/blank_templates/index.php ADDED
File without changes
trunk/assets/img/datepicker/animated-overlay.gif ADDED
Binary file
trunk/assets/img/datepicker/cal_logo.png ADDED
Binary file
trunk/assets/img/datepicker/index.php ADDED
File without changes
trunk/assets/img/datepicker/ui-bg_diagonals-thick_18_b81900_40x40.png ADDED
Binary file
trunk/assets/img/datepicker/ui-bg_diagonals-thick_20_666666_40x40.png ADDED
Binary file
trunk/assets/img/datepicker/ui-bg_flat_10_000000_40x100.png ADDED
Binary file
trunk/assets/img/datepicker/ui-bg_glass_100_f6f6f6_1x400.png ADDED
Binary file
trunk/assets/img/datepicker/ui-bg_glass_100_fdf5ce_1x400.png ADDED
Binary file
trunk/assets/img/datepicker/ui-bg_glass_65_ffffff_1x400.png ADDED
Binary file
trunk/assets/img/datepicker/ui-bg_gloss-wave_35_f6a828_500x100.png ADDED
Binary file
trunk/assets/img/datepicker/ui-bg_highlight-soft_100_eeeeee_1x100.png ADDED
Binary file
trunk/assets/img/datepicker/ui-bg_highlight-soft_75_ffe45c_1x100.png ADDED
Binary file
trunk/assets/img/datepicker/ui-icons_222222_256x240.png ADDED
Binary file
trunk/assets/img/datepicker/ui-icons_228ef1_256x240.png ADDED
Binary file
trunk/assets/img/datepicker/ui-icons_454545_256x240.png ADDED
Binary file
trunk/assets/img/datepicker/ui-icons_ef8c08_256x240.png ADDED
Binary file
trunk/assets/img/datepicker/ui-icons_ffd27a_256x240.png ADDED
Binary file
trunk/assets/img/datepicker/ui-icons_ffffff_256x240.png ADDED
Binary file
trunk/assets/img/form_editor_icons.png ADDED
Binary file
trunk/assets/img/handle.png ADDED
Binary file
trunk/assets/img/index.php ADDED
File without changes
trunk/assets/img/mailpoet_logo.png ADDED
Binary file
trunk/assets/img/menu_icon.png ADDED
Binary file
trunk/assets/img/modal_close_button.png ADDED
Binary file
trunk/assets/img/newsletter_editor/200x83.jpg ADDED
Binary file
trunk/assets/img/newsletter_editor/300x125.jpg ADDED
Binary file
trunk/assets/img/newsletter_editor/600x250.jpg ADDED
Binary file
trunk/assets/img/newsletter_editor/block-icons/auto-post.svg ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="76.5 166.5 459 459" enable-background="new 76.5 166.5 459 459" xml:space="preserve">
3
+ <path d="M191.25,281.25V625.5h229.5L535.5,510.75v-229.5H191.25z M415.893,448.536l-11.647,11.647
4
+ c-7.038,7.152-11.054,15.721-12.049,25.704c-0.976,10.002,1.224,19.087,6.599,27.272l-28.439,28.285l-37.446-37.446l-43.51,43.356
5
+ c-5.584,5.584-16.142,13.617-31.613,24.078c-15.492,10.461-24.633,14.286-27.425,11.494c-2.792-2.792,1.033-11.991,11.494-27.578
6
+ s18.437-26.125,23.925-31.613l43.356-43.356l-37.447-37.601l28.438-28.285c8.071,5.393,17.136,7.593,27.196,6.598
7
+ c10.06-0.994,18.59-5.049,25.628-12.201l11.646-11.647c7.153-7.038,11.208-15.587,12.202-25.627
8
+ c0.976-10.041-1.224-19.164-6.598-27.349l28.285-28.286l98.819,98.666l-28.439,28.286c-8.07-5.394-17.136-7.593-27.195-6.598
9
+ C431.632,437.31,423.045,441.384,415.893,448.536z M420.75,596.813V510.75h86.063L420.75,596.813z"/>
10
+ <g opacity="0.3">
11
+ <g>
12
+ <path d="M133.875,223.875v344.25h38.25v-306h306v-38.25H133.875z M420.75,166.5H76.5v344.25h38.25v-306h306V166.5z"/>
13
+ </g>
14
+ </g>
15
+ </svg>
trunk/assets/img/newsletter_editor/block-icons/button.svg ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="0 195.188 573.75 446.946" enable-background="new 0 195.188 573.75 446.946" xml:space="preserve">
3
+ <path d="M535.5,482.062h-20.655c-12.967,90.468-90.574,160.071-184.618,160.071c-94.068,0-171.65-69.604-184.646-160.071H38.25
4
+ c-21.133,0-38.25-17.117-38.25-38.25V233.438c0-21.133,17.117-38.25,38.25-38.25H535.5c21.114,0,38.25,17.117,38.25,38.25v210.375
5
+ C573.75,464.945,556.614,482.062,535.5,482.062z M463.889,382.016c0-11.045-9.259-20.009-20.703-20.009
6
+ c-11.419,0-19.677,8.964-19.677,20.009v43.34c0,3.682-4.095,6.67-7.884,6.67c-3.814,0-7.909-2.988-7.909-6.67v-50.01
7
+ c0-11.045-8.258-20.009-19.676-20.009s-18.677,8.964-18.677,20.009v50.01c0,3.682-5.097,6.67-8.909,6.67
8
+ c-3.815,0-9.671-2.988-9.671-6.67v-56.681c0-11.046-8.258-20.01-19.703-20.01c-11.418,0-18.702,8.964-18.702,20.01v56.681
9
+ c0,3.682-6.27,6.67-10.084,6.67c-3.815,0-11.458-2.988-11.458-6.67V288.64c0-11.046-8.258-20.01-19.677-20.01
10
+ s-17.715,8.964-17.715,20.01v173.413c0,3.685-11.419,6.67-15.233,6.67c-3.815,0-3.335-2.985-3.335-6.67v-85.532
11
+ c-2.16-0.747-15.794-2.269-18.222-2.269c-11.419,0-20.09,10.085-20.09,21.131v73.34c0,66.297,74.622,120.058,143.187,120.058
12
+ s124.138-53.761,124.138-120.058V382.016L463.889,382.016z"/>
13
+ </svg>
trunk/assets/img/newsletter_editor/block-icons/divider.svg ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="124.312 348.188 382.5 114.75" enable-background="new 124.312 348.188 382.5 114.75" xml:space="preserve">
3
+ <rect x="124.312" y="348.188" width="382.5" height="38.25"/>
4
+ <rect x="124.312" y="424.688" width="382.5" height="38.25"/>
5
+ </svg>
trunk/assets/img/newsletter_editor/block-icons/document.svg ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="123.987 156.766 383.169 497.575" enable-background="new 123.987 156.766 383.169 497.575" xml:space="preserve">
3
+ <g>
4
+ <g>
5
+ <path d="M379.421,156.766H123.987v497.575h383.169V281.173L379.421,156.766z M449.438,577.688h-267.75v-38.25h267.75V577.688z
6
+ M449.438,482.063h-267.75v-38.25h267.75V482.063z M449.438,386.438h-267.75v-38.25h267.75V386.438z M373.454,289.531V186.677
7
+ l101.764,102.854H373.454z"/>
8
+ </g>
9
+ </g>
10
+ </svg>
trunk/assets/img/newsletter_editor/block-icons/footer.svg ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="77.063 89.506 459 612" enable-background="new 77.063 89.506 459 612" xml:space="preserve">
3
+ <path opacity="0.3" enable-background="new " d="M516.938,89.506H96.188c-10.557,0-19.125,8.568-19.125,19.125v38.25
4
+ c0,10.557,8.568,19.125,19.125,19.125h420.75c10.558,0,19.125-8.568,19.125-19.125v-38.25
5
+ C536.063,98.074,527.494,89.506,516.938,89.506z"/>
6
+ <path opacity="0.3" enable-background="new " d="M516.938,205.131H96.188c-10.557,0-19.125,8.568-19.125,19.125v304.25
7
+ c0,10.557,8.568,19.125,19.125,19.125h420.75c10.558,0,19.125-8.568,19.125-19.125v-304.25
8
+ C536.063,213.699,527.494,205.131,516.938,205.131z"/>
9
+ <path d="M516.938,586.756H96.188c-10.557,0-19.125,8.567-19.125,19.125v76.5c0,10.557,8.568,19.125,19.125,19.125h420.75
10
+ c10.558,0,19.125-8.568,19.125-19.125v-76.5C536.063,595.323,527.494,586.756,516.938,586.756z"/>
11
+ </svg>
trunk/assets/img/newsletter_editor/block-icons/gallery.svg ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="19.125 166.5 573.75 459" enable-background="new 19.125 166.5 573.75 459" xml:space="preserve">
3
+ <g>
4
+ <g>
5
+ <path d="M19.125,376.875h267.75V166.5H19.125V376.875z M38.25,185.625h229.5V357.75H38.25V185.625z M57.375,338.625h191.25
6
+ l-191.25-114.75V338.625z M210.375,204.75c-10.461,0-19.45,3.768-26.966,11.284S172.125,232.539,172.125,243
7
+ s3.768,19.45,11.284,26.966s16.505,11.284,26.966,11.284s19.45-3.768,26.966-11.284s11.284-16.505,11.284-26.966
8
+ s-3.768-19.45-11.284-26.966S220.836,204.75,210.375,204.75z M516.375,281.25c10.461,0,19.45-3.768,26.966-11.284
9
+ c7.517-7.516,11.284-16.505,11.284-26.966s-3.768-19.45-11.284-26.966c-7.516-7.516-16.505-11.284-26.966-11.284
10
+ s-19.45,3.768-26.966,11.284c-7.517,7.516-11.284,16.505-11.284,26.966s3.768,19.45,11.284,26.966
11
+ C496.925,277.482,505.914,281.25,516.375,281.25z M325.125,166.5v210.375h267.75V166.5H325.125z M573.75,357.75h-229.5V185.625
12
+ h229.5V357.75z M363.375,223.875v114.75h191.25L363.375,223.875z M19.125,625.5h267.75V415.125H19.125V625.5z M38.25,434.25h229.5
13
+ v172.125H38.25V434.25z M210.375,453.375c-10.461,0-19.45,3.768-26.966,11.284c-7.516,7.516-11.284,16.505-11.284,26.966
14
+ s3.768,19.45,11.284,26.966c7.516,7.517,16.505,11.284,26.966,11.284s19.45-3.768,26.966-11.284
15
+ c7.516-7.516,11.284-16.505,11.284-26.966s-3.768-19.45-11.284-26.966C229.825,457.143,220.836,453.375,210.375,453.375z
16
+ M57.375,587.25h191.25L57.375,472.5V587.25z M516.375,453.375c-10.461,0-19.45,3.768-26.966,11.284
17
+ c-7.517,7.516-11.284,16.505-11.284,26.966s3.768,19.45,11.284,26.966c7.516,7.517,16.505,11.284,26.966,11.284
18
+ s19.45-3.768,26.966-11.284c7.517-7.516,11.284-16.505,11.284-26.966s-3.768-19.45-11.284-26.966
19
+ C535.825,457.143,526.836,453.375,516.375,453.375z M363.375,587.25h191.25L363.375,472.5V587.25z M325.125,625.5h267.75V415.125
20
+ h-267.75V625.5z M344.25,434.25h229.5v172.125h-229.5V434.25z"/>
21
+ </g>
22
+ </g>
23
+ </svg>
trunk/assets/img/newsletter_editor/block-icons/header.svg ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="77.063 89.506 459 612" enable-background="new 77.063 89.506 459 612" xml:space="preserve">
3
+ <path d="M516.938,89.506H96.188c-10.557,0-19.125,8.568-19.125,19.125v38.25c0,10.557,8.568,19.125,19.125,19.125h420.75
4
+ c10.558,0,19.125-8.568,19.125-19.125v-38.25C536.063,98.074,527.494,89.506,516.938,89.506z"/>
5
+ <path opacity="0.3" enable-background="new " d="M516.938,205.131H96.188c-10.557,0-19.125,8.568-19.125,19.125v304.25
6
+ c0,10.557,8.568,19.125,19.125,19.125h420.75c10.558,0,19.125-8.568,19.125-19.125v-304.25
7
+ C536.063,213.699,527.494,205.131,516.938,205.131z"/>
8
+ <path opacity="0.3" enable-background="new " d="M516.938,586.756H96.188c-10.557,0-19.125,8.567-19.125,19.125v76.5
9
+ c0,10.557,8.568,19.125,19.125,19.125h420.75c10.558,0,19.125-8.568,19.125-19.125v-76.5
10
+ C536.063,595.323,527.494,586.756,516.938,586.756z"/>
11
+ </svg>
trunk/assets/img/newsletter_editor/block-icons/image.svg ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="38.25 185.625 535.5 420.75" enable-background="new 38.25 185.625 535.5 420.75" xml:space="preserve">
3
+ <path d="M459,606.375H38.25v-306v-38.25v-76.5h535.5v420.75h-76.5H459z M535.5,223.875h-459v344.25h459V223.875z M114.75,529.875
4
+ v-229.5l382.5,229.5H114.75z M420.75,415.125c-20.903,0-38.881-7.516-53.933-22.567c-15.052-15.051-22.567-33.01-22.567-53.933
5
+ c0-20.904,7.516-38.881,22.567-53.933s33.029-22.567,53.933-22.567s38.881,7.516,53.933,22.567s22.567,33.029,22.567,53.933
6
+ c0,20.923-7.516,38.881-22.567,53.933C459.631,407.609,441.653,415.125,420.75,415.125z"/>
7
+ </svg>
trunk/assets/img/newsletter_editor/block-icons/index.php ADDED
File without changes
trunk/assets/img/newsletter_editor/block-icons/podcast.svg ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="114.425 147.203 383.169 497.575" enable-background="new 114.425 147.203 383.169 497.575" xml:space="preserve">
3
+ <path d="M114.425,147.203v497.575h383.169V271.611L369.878,147.222H114.425V147.203z M363.892,177.114l101.764,102.854H363.892
4
+ V177.114z M389.021,527.235c-8.3,8.09-18.513,12.126-30.657,12.126c-14.478,0-25.972-4.036-34.482-12.126
5
+ c-8.3-8.3-12.45-18.245-12.45-29.854c0-11.609,4.15-21.458,12.45-29.549c12.125-11.818,27.464-15.032,45.977-9.639v-71.527
6
+ l-95.797,18.666v103.236c0,11.398-6.809,23.008-20.426,34.827c-6.598,5.393-16.811,8.09-30.657,8.09
7
+ c-12.125,0-22.357-4.15-30.658-12.432c-8.51-8.3-12.775-18.13-12.775-29.548c0-11.188,4.246-21.152,12.775-29.854
8
+ c8.3-8.09,18.513-12.125,30.658-12.125c9.371,0,15.759,0.727,19.163,2.181V364.903c0-9.333,3.825-14.727,11.494-16.161
9
+ c5.948-1.454,51.198-9.543,135.711-24.25c3.614-0.421,6.483,0.612,8.626,3.117c2.563,2.486,3.824,5.489,3.824,9.027V497.42
10
+ C401.797,508.569,397.532,518.534,389.021,527.235L389.021,527.235z"/>
11
+ </svg>
trunk/assets/img/newsletter_editor/block-icons/post.svg ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="133.875 223.875 344.25 344.25" enable-background="new 133.875 223.875 344.25 344.25" xml:space="preserve">
3
+ <path d="M133.875,223.875v344.25h229.5l114.75-114.75v-229.5H133.875z M358.518,391.161l-11.647,11.647
4
+ c-7.038,7.152-11.054,15.721-12.049,25.704c-0.976,10.002,1.224,19.087,6.599,27.272L312.98,484.07l-37.447-37.446l-43.509,43.356
5
+ c-5.584,5.584-16.142,13.617-31.613,24.078c-15.492,10.461-24.633,14.286-27.425,11.494c-2.792-2.792,1.033-11.991,11.494-27.578
6
+ s18.437-26.125,23.925-31.613l43.356-43.356l-37.447-37.6l28.439-28.286c8.07,5.393,17.136,7.592,27.195,6.598
7
+ c10.06-0.994,18.59-5.049,25.628-12.202l11.646-11.647c7.153-7.038,11.208-15.587,12.202-25.627
8
+ c0.976-10.041-1.224-19.164-6.598-27.349l28.285-28.286l98.819,98.666l-28.439,28.286c-8.07-5.393-17.136-7.592-27.195-6.598
9
+ C374.257,379.935,365.67,384.009,358.518,391.161z M363.375,539.438v-86.063h86.063L363.375,539.438z"/>
10
+ </svg>
trunk/assets/img/newsletter_editor/block-icons/spacer.svg ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="239.062 263.438 153 284.25" enable-background="new 239.062 263.438 153 284.25" xml:space="preserve">
3
+ <path d="M315.563,263.438l76.5,76.538h-153L315.563,263.438z M315.563,547.688l-76.5-76.537h153L315.563,547.688z"/>
4
+ </svg>
trunk/assets/img/newsletter_editor/block-icons/text.svg ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="143.342 252.486 325.183 286.798" enable-background="new 143.342 252.486 325.183 286.798" xml:space="preserve">
3
+ <path d="M337.154,398.353h-70.667l23.409-59.823c5.202-13.12,9.983-26.622,13.445-41.788h0.86
4
+ c2.161,15.166,6.503,29.089,11.265,41.788L337.154,398.353z M372.708,497.496h-24.71v41.788h120.526v-41.788h-24.289
5
+ l-100.139-245.01h-69.806l-106.66,245.01h-24.289v41.788h112.723v-41.788h-29.051l21.688-54.907H353.2L372.708,497.496z"/>
6
+ </svg>
trunk/assets/img/newsletter_editor/block-tools/index.php ADDED
File without changes
trunk/assets/img/newsletter_editor/block-tools/move-horizontal.svg ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <svg class="mailpoet_tool_icon" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="1.5 91.5 609 609" enable-background="new 1.5 91.5 609 609" xml:space="preserve">
3
+ <circle class="mailpoet_tool_icon_foreground" fill="#AA3333" cx="306" cy="396.5" r="269.5"/>
4
+ <path d="M306,91.5C137.829,91.5,1.5,227.829,1.5,396S137.829,700.5,306,700.5S610.5,564.171,610.5,396S474.171,91.5,306,91.5z
5
+ M134.688,453.103c-31.521,0-57.104-25.579-57.104-57.103c0-31.522,25.583-57.104,57.104-57.104s57.104,25.583,57.104,57.104
6
+ C191.792,427.521,166.21,453.103,134.688,453.103z M306,453.103c-31.521,0-57.104-25.579-57.104-57.103
7
+ c0-31.522,25.583-57.104,57.104-57.104c31.521,0,57.103,25.583,57.103,57.104C363.103,427.521,337.521,453.103,306,453.103z
8
+ M477.311,453.103c-31.521,0-57.104-25.579-57.104-57.103c0-31.522,25.582-57.104,57.104-57.104
9
+ c31.522,0,57.104,25.583,57.104,57.104C534.415,427.521,508.832,453.103,477.311,453.103z"/>
10
+ </svg>
trunk/assets/img/newsletter_editor/block-tools/move-without-bg.svg ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <svg class="mailpoet_tool_icon" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 4 16" enable-background="new 0 0 4 16" xml:space="preserve">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M2,0c1.104,0,2,0.896,2,2S3.104,4,2,4S0,3.104,0,2S0.896,0,2,0z"/>
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M2,6c1.104,0,2,0.896,2,2s-0.896,2-2,2S0,9.104,0,8S0.896,6,2,6z"/>
4
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M2,12c1.104,0,2,0.896,2,2s-0.896,2-2,2s-2-0.896-2-2S0.896,12,2,12z"/>
5
+ </svg>
trunk/assets/img/newsletter_editor/block-tools/move.svg ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <svg class="mailpoet_tool_icon" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="1.5 91.5 609 609" enable-background="new 1.5 91.5 609 609" xml:space="preserve">
3
+ <circle class="mailpoet_tool_icon_foreground" fill="#AA3333" cx="306.5" cy="396" r="269.5"/>
4
+ <path d="M1.5,396c0,168.171,136.329,304.5,304.5,304.5S610.5,564.171,610.5,396S474.171,91.5,306,91.5S1.5,227.829,1.5,396z
5
+ M363.103,567.313c0,31.521-25.579,57.104-57.103,57.104c-31.522,0-57.104-25.583-57.104-57.104
6
+ c0-31.521,25.583-57.104,57.104-57.104C337.521,510.208,363.103,535.79,363.103,567.313z M363.103,396
7
+ c0,31.521-25.579,57.104-57.103,57.104c-31.522,0-57.104-25.583-57.104-57.104s25.583-57.103,57.104-57.103
8
+ C337.521,338.897,363.103,364.479,363.103,396z M363.103,224.689c0,31.521-25.579,57.104-57.103,57.104
9
+ c-31.522,0-57.104-25.582-57.104-57.104c0-31.522,25.583-57.104,57.104-57.104C337.521,167.585,363.103,193.168,363.103,224.689z"/>
10
+ </svg>
trunk/assets/img/newsletter_editor/block-tools/settings-column.svg ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg class="mailpoet_tool_icon" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ width="612px" height="612px" viewBox="-3.14 90 612 612" enable-background="new -3.14 90 612 612" xml:space="preserve">
3
+ <circle class="mailpoet_tool_icon_foreground" fill="#AA3333" cx="302.86" cy="396.5" r="269.5"/>
4
+ <g id="Layer_1_1_">
5
+ <g>
6
+ <path d="M302.86,327.403c-37.957,0-68.598,30.641-68.598,68.598s30.641,68.598,68.598,68.598
7
+ c37.958,0,68.598-30.641,68.598-68.598S340.817,327.403,302.86,327.403z"/>
8
+ <path d="M302.86,90c-168.999,0-306,137-306,306c0,168.999,137.001,306,306,306c169,0,306-137.003,306-306
9
+ C608.86,227.002,471.859,90,302.86,90z M497.219,430.298h-49.848c-3.888,16.006-10.062,30.87-18.521,44.132l35.214,35.213
10
+ l-48.018,48.019l-35.214-35.214c-13.261,8.229-28.125,14.404-43.672,18.062v49.851h-68.598v-49.851
11
+ c-15.549-3.657-30.411-9.833-43.672-18.062l-35.213,35.214l-48.478-48.477l35.213-35.213
12
+ c-8.232-13.263-14.405-28.126-18.064-43.674H108.5v-67.91h49.619c3.659-16.006,10.061-30.869,18.293-44.36l-35.213-35.213
13
+ l48.017-48.018l35.213,35.214c13.262-8.46,28.354-14.635,44.131-18.522v-49.848h68.598v49.848
14
+ c15.546,3.659,30.411,9.834,43.671,18.064l35.214-35.213l48.475,48.475l-35.213,35.213c8.231,13.491,14.636,28.354,18.293,44.36
15
+ h49.619L497.219,430.298L497.219,430.298z"/>
16
+ </g>
17
+ </g>
18
+ </svg>
trunk/assets/img/newsletter_editor/block-tools/settings-without-bg.svg ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg class="mailpoet_tool_icon" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 16.018 16.014" enable-background="new 0 0 16.018 16.014" xml:space="preserve">
2
+ <path d="M16.018,9.185c0,0.157-0.126,0.344-0.292,0.375l-1.93,0.292c-0.114,0.334-0.24,0.647-0.406,0.95
3
+ c0.354,0.51,0.729,0.969,1.116,1.438c0.063,0.073,0.104,0.167,0.104,0.26s-0.031,0.167-0.094,0.24
4
+ c-0.25,0.333-1.658,1.866-2.012,1.866c-0.094,0-0.188-0.042-0.271-0.094l-1.439-1.125c-0.303,0.156-0.625,0.292-0.95,0.396
5
+ c-0.073,0.636-0.135,1.314-0.301,1.939c-0.042,0.167-0.188,0.292-0.376,0.292H6.851c-0.188,0-0.354-0.135-0.375-0.313l-0.292-1.918
6
+ c-0.323-0.104-0.636-0.229-0.938-0.385l-1.471,1.115c-0.073,0.063-0.166,0.094-0.261,0.094c-0.093,0-0.188-0.042-0.261-0.115
7
+ c-0.552-0.5-1.282-1.146-1.72-1.751C1.48,12.667,1.46,12.584,1.46,12.5c0-0.094,0.031-0.167,0.083-0.24
8
+ c0.355-0.479,0.74-0.938,1.095-1.428C2.461,10.499,2.315,10.154,2.21,9.8L0.302,9.519C0.125,9.487,0,9.321,0,9.143V6.829
9
+ c0-0.157,0.125-0.345,0.281-0.376l1.939-0.292c0.104-0.333,0.24-0.647,0.407-0.959c-0.354-0.501-0.729-0.97-1.116-1.439
10
+ C1.449,3.69,1.408,3.607,1.408,3.513c0-0.093,0.042-0.167,0.094-0.239C1.752,2.93,3.16,1.407,3.514,1.407
11
+ c0.095,0,0.188,0.042,0.271,0.104l1.439,1.115C5.527,2.471,5.85,2.335,6.173,2.231c0.073-0.636,0.135-1.314,0.302-1.939
12
+ C6.517,0.125,6.663,0,6.851,0h2.315c0.188,0,0.354,0.135,0.376,0.313l0.292,1.918c0.323,0.104,0.636,0.229,0.938,0.385l1.481-1.115
13
+ c0.063-0.063,0.156-0.094,0.25-0.094s0.188,0.042,0.261,0.104c0.553,0.51,1.283,1.157,1.721,1.772
14
+ c0.052,0.063,0.073,0.146,0.073,0.229c0,0.094-0.031,0.167-0.083,0.24c-0.355,0.479-0.741,0.938-1.096,1.428
15
+ c0.177,0.333,0.323,0.678,0.428,1.022l1.908,0.292c0.177,0.031,0.303,0.198,0.303,0.375V9.185z M8.008,5.338
16
+ c-1.47,0-2.669,1.199-2.669,2.669s1.2,2.669,2.669,2.669c1.47,0,2.67-1.199,2.67-2.669S9.479,5.338,8.008,5.338z"/>
17
+ </svg>
trunk/assets/img/newsletter_editor/block-tools/settings.svg ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg class="mailpoet_tool_icon" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ width="612px" height="612px" viewBox="-3.14 90 612 612" enable-background="new -3.14 90 612 612" xml:space="preserve">
3
+ <circle class="mailpoet_tool_icon_foreground" fill="#AA3333" cx="302.86" cy="396.5" r="269.5"/>
4
+ <g id="Layer_1_1_">
5
+ <g>
6
+ <path d="M302.86,327.403c-37.957,0-68.598,30.641-68.598,68.598s30.641,68.598,68.598,68.598
7
+ c37.958,0,68.598-30.641,68.598-68.598S340.817,327.403,302.86,327.403z"/>
8
+ <path d="M302.86,90c-168.999,0-306,137-306,306c0,168.999,137.001,306,306,306c169,0,306-137.003,306-306
9
+ C608.86,227.002,471.859,90,302.86,90z M497.219,430.298h-49.848c-3.888,16.006-10.062,30.87-18.521,44.132l35.214,35.213
10
+ l-48.018,48.019l-35.214-35.214c-13.261,8.229-28.125,14.404-43.672,18.062v49.851h-68.598v-49.851
11
+ c-15.549-3.657-30.411-9.833-43.672-18.062l-35.213,35.214l-48.478-48.477l35.213-35.213
12
+ c-8.232-13.263-14.405-28.126-18.064-43.674H108.5v-67.91h49.619c3.659-16.006,10.061-30.869,18.293-44.36l-35.213-35.213
13
+ l48.017-48.018l35.213,35.214c13.262-8.46,28.354-14.635,44.131-18.522v-49.848h68.598v49.848
14
+ c15.546,3.659,30.411,9.834,43.671,18.064l35.214-35.213l48.475,48.475l-35.213,35.213c8.231,13.491,14.636,28.354,18.293,44.36
15
+ h49.619L497.219,430.298L497.219,430.298z"/>
16
+ </g>
17
+ </g>
18
+ </svg>
trunk/assets/img/newsletter_editor/block-tools/trash-without-bg.svg ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg class="mailpoet_tool_icon" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 15 16" enable-background="new 0 0 15 16" xml:space="preserve">
2
+ <path d="M14.991,3.666c0,0.187-0.149,0.332-0.34,0.332h-1.022v9.853c0,1.143-0.767,2.121-1.704,2.121H3.066
3
+ c-0.937,0-1.704-0.936-1.704-2.079V3.998H0.341C0.149,3.998,0,3.853,0,3.666V3c0-0.187,0.149-0.333,0.341-0.333h3.29l0.745-1.735
4
+ c0.214-0.509,0.853-0.925,1.417-0.925h3.407c0.564,0,1.203,0.416,1.416,0.925l0.745,1.735h3.29c0.191,0,0.34,0.146,0.34,0.333V3.666
5
+ z M5.452,5.661c0-0.187-0.149-0.333-0.341-0.333H4.429c-0.191,0-0.34,0.146-0.34,0.333v7.316c0,0.188,0.149,0.333,0.34,0.333h0.682
6
+ c0.191,0,0.341-0.146,0.341-0.333V5.661z M9.88,2.667L9.369,1.452C9.337,1.41,9.242,1.348,9.188,1.337H5.813
7
+ C5.75,1.348,5.664,1.41,5.632,1.452L5.111,2.667H9.88z M8.177,5.661c0-0.187-0.149-0.333-0.341-0.333H7.155
8
+ c-0.191,0-0.341,0.146-0.341,0.333v7.316c0,0.188,0.149,0.333,0.341,0.333h0.682c0.191,0,0.341-0.146,0.341-0.333V5.661z
9
+ M10.903,5.661c0-0.187-0.149-0.333-0.341-0.333H9.88c-0.191,0-0.34,0.146-0.34,0.333v7.316c0,0.188,0.149,0.333,0.34,0.333h0.682
10
+ c0.191,0,0.341-0.146,0.341-0.333V5.661z"/>
11
+ <rect id="_x3C_Slice_x3E_" fill="none" width="15" height="16"/>
12
+ </svg>
trunk/assets/img/newsletter_editor/block-tools/trash.svg ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svg class="mailpoet_tool_icon" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ width="611.631px" height="611.632px" viewBox="0 93.684 611.631 611.632" enable-background="new 0 93.684 611.631 611.632"
3
+ xml:space="preserve">
4
+ <circle class="mailpoet_tool_icon_foreground" fill="#AA3333" cx="306" cy="403.5" r="269.5"/>
5
+ <rect id="_x3C_Slice_x3E_" y="69.6" fill="none" width="612" height="652.8"/>
6
+ <g>
7
+ <path d="M314.959,324.106h-18.286c-5.128,0-9.156,3.92-9.156,8.942v196.446c0,5.049,4,8.939,9.156,8.939h18.313
8
+ c5.128,0,9.154-3.92,9.154-8.939V333.048h-0.025C324.115,328.026,320.114,324.106,314.959,324.106z"/>
9
+ <path d="M241.789,324.106h-18.313c-5.128,0-9.129,3.92-9.129,8.942v196.446c0,5.049,4.001,8.939,9.129,8.939h18.313
10
+ c5.129,0,9.156-3.92,9.156-8.939V333.048C250.945,328.026,246.944,324.106,241.789,324.106z"/>
11
+ <path d="M305.816,93.684C136.918,93.684,0,230.602,0,399.5c0,168.896,136.918,305.816,305.816,305.816
12
+ c168.896,0,305.815-136.919,305.815-305.816C611.633,230.602,474.714,93.684,305.816,93.684z M507.082,279.479
13
+ c0,5.021-4,8.915-9.129,8.915h-27.442v264.569c0,30.691-20.595,56.951-45.755,56.951H186.877c-25.16,0-45.755-25.133-45.755-55.824
14
+ V288.394h-27.416c-5.155,0-9.156-3.894-9.156-8.915v-17.883c0-5.021,4.001-8.942,9.156-8.942h88.342l20.004-46.587
15
+ c5.746-13.667,22.904-24.837,38.049-24.837h91.483c15.145,0,32.302,11.17,38.021,24.837l20.005,46.587h88.342
16
+ c5.129,0,9.129,3.92,9.129,8.942L507.082,279.479L507.082,279.479z"/>
17
+ <path d="M356.123,220.029c-0.859-1.128-3.41-2.792-4.861-3.088h-90.624c-1.691,0.295-4,1.96-4.86,3.088l-13.99,32.625h128.055
18
+ L356.123,220.029z"/>
19
+ <path d="M388.156,324.106h-18.313c-5.129,0-9.129,3.92-9.129,8.942v196.446c0,5.049,4,8.939,9.129,8.939h18.313
20
+ c5.129,0,9.157-3.92,9.157-8.939V333.048C397.313,328.026,393.313,324.106,388.156,324.106z"/>
21
+ </g>
22
+ </svg>
trunk/assets/img/newsletter_editor/image-missing.png ADDED
Binary file
trunk/assets/img/newsletter_editor/image-missing.svg ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="96.191px" height="83.052px" viewBox="178.5 368.448 96.191 83.052" enable-background="new 178.5 368.448 96.191 83.052"
6
+ xml:space="preserve">
7
+ <g id="Layer_2">
8
+ </g>
9
+ <g id="Layer_1">
10
+ <polygon fill="none" points="206.548,426.416 206.548,405.566 202.318,403.02 202.318,430.646 248.198,430.646 241.175,426.416
11
+ "/>
12
+ <path fill="none" d="M202.318,392.581v0.82l50.753,30.561v-31.381H202.318z M240.383,413.728c-2.312,0-4.299-0.831-5.963-2.495
13
+ c-1.665-1.664-2.496-3.649-2.496-5.964c0-2.312,0.831-4.299,2.496-5.963c1.664-1.663,3.651-2.495,5.963-2.495
14
+ s4.299,0.83,5.963,2.495c1.665,1.664,2.496,3.651,2.496,5.963c0,2.314-0.831,4.3-2.496,5.964
15
+ C244.682,412.896,242.694,413.728,240.383,413.728z"/>
16
+ <polygon fill="#AAAAAA" points="202.318,392.581 253.071,392.581 253.071,423.962 257.301,426.508 257.301,388.352
17
+ 198.089,388.352 198.089,390.854 202.318,393.401 "/>
18
+ <polygon fill="#AAAAAA" points="241.175,426.416 206.548,405.566 206.548,426.416 "/>
19
+ <path fill="#AAAAAA" d="M246.346,399.306c-1.664-1.665-3.651-2.495-5.963-2.495s-4.299,0.832-5.963,2.495
20
+ c-1.665,1.664-2.496,3.651-2.496,5.963c0,2.314,0.831,4.3,2.496,5.964c1.664,1.664,3.651,2.495,5.963,2.495
21
+ s4.299-0.831,5.963-2.495c1.665-1.664,2.496-3.649,2.496-5.964C248.842,402.957,248.011,400.97,246.346,399.306z"/>
22
+ <polygon fill="#AAAAAA" points="202.318,430.646 202.318,403.02 198.089,400.473 198.089,401.04 198.089,434.875 244.612,434.875
23
+ 248.842,434.875 255.223,434.875 248.198,430.646 "/>
24
+ <path fill="#AAAAAA" d="M266.745,434.095c-0.552,0.917-1.743,1.214-2.66,0.661l-77.229-46.503c-0.917-0.553-1.213-1.744-0.66-2.661
25
+ l1.844-3.104c0.553-0.917,1.744-1.213,2.661-0.661l77.229,46.504c0.917,0.553,1.212,1.743,0.66,2.661L266.745,434.095z"/>
26
+ </g>
27
+ </svg>
trunk/assets/img/newsletter_editor/index.php ADDED
File without changes
trunk/assets/img/newsletter_editor/layout-icons/1-column.svg ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="86.063 85.506 459 612" enable-background="new 86.063 85.506 459 612" xml:space="preserve">
3
+ <path d="M525.938,85.506h-420.75c-10.557,0-19.125,8.568-19.125,19.125v573.75c0,10.557,8.568,19.125,19.125,19.125h420.75
4
+ c10.558,0,19.125-8.568,19.125-19.125v-573.75C545.063,94.074,536.494,85.506,525.938,85.506z"/>
5
+ </svg>
trunk/assets/img/newsletter_editor/layout-icons/2-column.svg ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="86.063 85.506 440.854 612" enable-background="new 86.063 85.506 440.854 612" xml:space="preserve">
3
+ <path d="M264.938,85.506h-159.75c-10.557,0-19.125,8.568-19.125,19.125v573.75c0,10.557,8.568,19.125,19.125,19.125h159.75
4
+ c10.557,0,19.125-8.568,19.125-19.125v-573.75C284.062,94.074,275.494,85.506,264.938,85.506z"/>
5
+ <path d="M507.792,85.506h-160.75c-10.558,0-19.125,8.568-19.125,19.125v573.75c0,10.557,8.567,19.125,19.125,19.125h160.75
6
+ c10.557,0,19.125-8.568,19.125-19.125v-573.75C526.917,94.074,518.349,85.506,507.792,85.506z"/>
7
+ </svg>
trunk/assets/img/newsletter_editor/layout-icons/3-column.svg ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="86.063 85.506 439.937 612" enable-background="new 86.063 85.506 439.937 612" xml:space="preserve">
3
+ <path d="M192.938,85.506h-87.75c-10.557,0-19.125,8.568-19.125,19.125v573.75c0,10.557,8.568,19.125,19.125,19.125h87.75
4
+ c10.557,0,19.125-8.568,19.125-19.125v-573.75C212.062,94.074,203.494,85.506,192.938,85.506z"/>
5
+ <path d="M349.875,85.506h-87.75c-10.557,0-19.125,8.568-19.125,19.125v573.75c0,10.557,8.568,19.125,19.125,19.125h87.75
6
+ c10.557,0,19.125-8.568,19.125-19.125v-573.75C369,94.074,360.432,85.506,349.875,85.506z"/>
7
+ <path d="M506.875,85.506h-87.75c-10.557,0-19.125,8.568-19.125,19.125v573.75c0,10.557,8.568,19.125,19.125,19.125h87.75
8
+ c10.557,0,19.125-8.568,19.125-19.125v-573.75C526,94.074,517.432,85.506,506.875,85.506z"/>
9
+ </svg>
trunk/assets/img/newsletter_editor/layout-icons/index.php ADDED
File without changes
trunk/assets/img/newsletter_editor/social-icons/01-social/Email.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/01-social/Facebook.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/01-social/Google-Plus.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/01-social/Instagram.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/01-social/LinkedIn.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/01-social/Pinterest.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/01-social/Twitter.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/01-social/Website.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/01-social/Youtube.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/01-social/index.php ADDED
File without changes
trunk/assets/img/newsletter_editor/social-icons/02-grey/Email.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/02-grey/Facebook.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/02-grey/Google-Plus.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/02-grey/Instagram.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/02-grey/LinkedIn.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/02-grey/Pinterest.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/02-grey/Twitter.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/02-grey/Website.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/02-grey/Youtube.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/02-grey/index.php ADDED
File without changes
trunk/assets/img/newsletter_editor/social-icons/03-circles/Email.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/03-circles/Facebook.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/03-circles/Google-Plus.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/03-circles/Instagram.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/03-circles/LinkedIn.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/03-circles/Pinterest.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/03-circles/Twitter.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/03-circles/Website.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/03-circles/Youtube.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/03-circles/index.php ADDED
File without changes
trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Email.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Facebook.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Google-Plus.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Instagram.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/LinkedIn.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Pinterest.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Twitter.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Website.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/Youtube.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/04-full-flat-roundrect/index.php ADDED
File without changes
trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Email.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Facebook.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Google-Plus.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Instagram.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/LinkedIn.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Pinterest.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Twitter.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Website.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/Youtube.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/05-full-gradient-square/index.php ADDED
File without changes
trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Email.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Facebook.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Google-Plus.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Instagram.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/LinkedIn.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Pinterest.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Twitter.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Website.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/Youtube.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/06-full-symbol-color/index.php ADDED
File without changes
trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Email.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Facebook.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Google-Plus.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Instagram.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/LinkedIn.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Pinterest.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Twitter.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Website.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/Youtube.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/07-full-symbol-black/index.php ADDED
File without changes
trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Email.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Facebook.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Google-Plus.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Instagram.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/LinkedIn.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Pinterest.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Twitter.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Website.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/Youtube.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/08-full-symbol-grey/index.php ADDED
File without changes
trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Email.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Facebook.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Google-Plus.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Instagram.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/LinkedIn.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Pinterest.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Twitter.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Website.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/Youtube.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/09-line-roundrect/index.php ADDED
File without changes
trunk/assets/img/newsletter_editor/social-icons/10-line-square/Email.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/10-line-square/Facebook.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/10-line-square/Google-Plus.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/10-line-square/Instagram.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/10-line-square/LinkedIn.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/10-line-square/Pinterest.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/10-line-square/Twitter.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/10-line-square/Website.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/10-line-square/Youtube.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/10-line-square/index.php ADDED
File without changes
trunk/assets/img/newsletter_editor/social-icons/custom.png ADDED
Binary file
trunk/assets/img/newsletter_editor/social-icons/index.php ADDED
File without changes
trunk/assets/img/post_notifications_template/ALC-widget-icon.png ADDED
Binary file
trunk/assets/img/post_notifications_template/index.php ADDED
File without changes
trunk/assets/img/post_notifications_template/settings-icon-highlight.png ADDED
Binary file
trunk/assets/img/preview_magnifying_glass.svg ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="47.002px" height="38.003px" viewBox="0 0 47.002 38.003" enable-background="new 0 0 47.002 38.003" xml:space="preserve">
6
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="#565656" d="M46.328,36.365c-1.188,1.725-3.553,2.158-5.273,0.962L25.479,26.52
7
+ c-1.104-0.763-1.674-2.007-1.631-3.257c-2.006,2.157-4.642,3.606-7.594,4.145c-3.626,0.663-7.288-0.13-10.311-2.227
8
+ c-3.024-2.098-5.054-5.253-5.714-8.887c-0.661-3.636,0.127-7.31,2.221-10.344c4.325-6.264,12.927-7.834,19.177-3.5
9
+ c5.672,3.938,7.486,11.412,4.537,17.443c1.152-0.486,2.519-0.392,3.627,0.377l15.58,10.808C47.09,32.274,47.52,34.641,46.328,36.365
10
+ z M23.235,12.09c-0.459-2.534-1.874-4.734-3.982-6.196C14.897,2.87,8.896,3.963,5.878,8.331c-3.014,4.373-1.922,10.388,2.435,13.408
11
+ c4.356,3.025,10.356,1.932,13.374-2.438C23.146,17.187,23.696,14.625,23.235,12.09z"/>
12
+ </svg>
trunk/assets/img/sample_templates/coffee/coffee-grain.jpg ADDED
Binary file
trunk/assets/img/sample_templates/coffee/header-v2.jpg ADDED
Binary file
trunk/assets/img/sample_templates/coffee/index.php ADDED
File without changes
trunk/assets/img/sample_templates/coffee/map-v2.jpg ADDED
Binary file
trunk/assets/img/sample_templates/coffee/sandwich.jpg ADDED
Binary file
trunk/assets/img/sample_templates/discount/bicycle-header2.png ADDED
Binary file
trunk/assets/img/sample_templates/discount/bicycle-header3.png ADDED
Binary file
trunk/assets/img/sample_templates/discount/index.php ADDED
File without changes
trunk/assets/img/sample_templates/discount/orange-bicycle.jpg ADDED
Binary file
trunk/assets/img/sample_templates/discount/red-icycle.jpg ADDED
Binary file
trunk/assets/img/sample_templates/index.php ADDED
File without changes
trunk/assets/img/sample_templates/restaurant/boyga-1329911-639x852.jpg ADDED
Binary file
trunk/assets/img/sample_templates/restaurant/burger.jpg ADDED
Binary file
trunk/assets/img/sample_templates/restaurant/header.jpg ADDED
Binary file
trunk/assets/img/sample_templates/restaurant/index.php ADDED
File without changes
trunk/assets/img/sample_templates/restaurant/macaroni-w-salad-1323787.jpg ADDED
Binary file
trunk/assets/img/sample_templates/travel/gallery1.jpg ADDED
Binary file
trunk/assets/img/sample_templates/travel/gallery2.jpg ADDED
Binary file
trunk/assets/img/sample_templates/travel/gallery3.jpg ADDED
Binary file
trunk/assets/img/sample_templates/travel/gallery4.jpg ADDED
Binary file
trunk/assets/img/sample_templates/travel/glow-worms.jpg ADDED
Binary file
trunk/assets/img/sample_templates/travel/header.png ADDED
Binary file
trunk/assets/img/sample_templates/travel/holiday-park.jpg ADDED
Binary file
trunk/assets/img/sample_templates/travel/index.php ADDED
File without changes
trunk/assets/img/sample_templates/travel/luge.jpg ADDED
Binary file
trunk/assets/img/welcome_template/beacon.png ADDED
Binary file
trunk/assets/img/welcome_template/index.php ADDED
File without changes
trunk/assets/img/welcome_template/mailpoet-logo.png ADDED
Binary file
trunk/assets/index.php ADDED
File without changes
trunk/assets/js/admin.js ADDED
@@ -0,0 +1,63117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ webpackJsonp([0],[
2
+ /* 0 */
3
+ /***/ function(module, exports, __webpack_require__) {
4
+
5
+ __webpack_require__(1);
6
+ __webpack_require__(405);
7
+ __webpack_require__(425);
8
+ __webpack_require__(428);
9
+ __webpack_require__(430);
10
+ __webpack_require__(433);
11
+ __webpack_require__(437);
12
+ module.exports = __webpack_require__(438);
13
+
14
+
15
+ /***/ },
16
+ /* 1 */
17
+ /***/ function(module, exports, __webpack_require__) {
18
+
19
+ 'use strict';
20
+
21
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
22
+
23
+ var _react = __webpack_require__(2);
24
+
25
+ var _react2 = _interopRequireDefault(_react);
26
+
27
+ var _reactDom = __webpack_require__(33);
28
+
29
+ var _reactDom2 = _interopRequireDefault(_reactDom);
30
+
31
+ var _reactRouter = __webpack_require__(180);
32
+
33
+ var _history = __webpack_require__(236);
34
+
35
+ var _subscribersListJsx = __webpack_require__(265);
36
+
37
+ var _subscribersListJsx2 = _interopRequireDefault(_subscribersListJsx);
38
+
39
+ var _subscribersFormJsx = __webpack_require__(280);
40
+
41
+ var _subscribersFormJsx2 = _interopRequireDefault(_subscribersFormJsx);
42
+
43
+ var history = (0, _reactRouter.useRouterHistory)(_history.createHashHistory)({ queryKey: false });
44
+
45
+ var App = _react2['default'].createClass({
46
+ displayName: 'App',
47
+
48
+ render: function render() {
49
+ return this.props.children;
50
+ }
51
+ });
52
+
53
+ var container = document.getElementById('subscribers_container');
54
+
55
+ if (container) {
56
+ _reactDom2['default'].render(_react2['default'].createElement(
57
+ _reactRouter.Router,
58
+ { history: history },
59
+ _react2['default'].createElement(
60
+ _reactRouter.Route,
61
+ { path: '/', component: App },
62
+ _react2['default'].createElement(_reactRouter.IndexRoute, { component: _subscribersListJsx2['default'] }),
63
+ _react2['default'].createElement(_reactRouter.Route, { path: 'new', component: _subscribersFormJsx2['default'] }),
64
+ _react2['default'].createElement(_reactRouter.Route, { path: 'edit/:id', component: _subscribersFormJsx2['default'] }),
65
+ _react2['default'].createElement(_reactRouter.Route, { path: '*', component: _subscribersListJsx2['default'] })
66
+ )
67
+ ), container);
68
+ }
69
+
70
+ /***/ },
71
+ /* 2 */
72
+ /***/ function(module, exports, __webpack_require__) {
73
+
74
+ 'use strict';
75
+
76
+ module.exports = __webpack_require__(3);
77
+
78
+
79
+ /***/ },
80
+ /* 3 */
81
+ /***/ function(module, exports, __webpack_require__) {
82
+
83
+ /* WEBPACK VAR INJECTION */(function(process) {/**
84
+ * Copyright 2013-present, Facebook, Inc.
85
+ * All rights reserved.
86
+ *
87
+ * This source code is licensed under the BSD-style license found in the
88
+ * LICENSE file in the root directory of this source tree. An additional grant
89
+ * of patent rights can be found in the PATENTS file in the same directory.
90
+ *
91
+ */
92
+
93
+ 'use strict';
94
+
95
+ var _assign = __webpack_require__(5);
96
+
97
+ var ReactChildren = __webpack_require__(6);
98
+ var ReactComponent = __webpack_require__(19);
99
+ var ReactPureComponent = __webpack_require__(22);
100
+ var ReactClass = __webpack_require__(23);
101
+ var ReactDOMFactories = __webpack_require__(25);
102
+ var ReactElement = __webpack_require__(10);
103
+ var ReactPropTypes = __webpack_require__(30);
104
+ var ReactVersion = __webpack_require__(31);
105
+
106
+ var onlyChild = __webpack_require__(32);
107
+ var warning = __webpack_require__(12);
108
+
109
+ var createElement = ReactElement.createElement;
110
+ var createFactory = ReactElement.createFactory;
111
+ var cloneElement = ReactElement.cloneElement;
112
+
113
+ if (process.env.NODE_ENV !== 'production') {
114
+ var ReactElementValidator = __webpack_require__(26);
115
+ createElement = ReactElementValidator.createElement;
116
+ createFactory = ReactElementValidator.createFactory;
117
+ cloneElement = ReactElementValidator.cloneElement;
118
+ }
119
+
120
+ var __spread = _assign;
121
+
122
+ if (process.env.NODE_ENV !== 'production') {
123
+ var warned = false;
124
+ __spread = function () {
125
+ 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;
126
+ warned = true;
127
+ return _assign.apply(null, arguments);
128
+ };
129
+ }
130
+
131
+ var React = {
132
+
133
+ // Modern
134
+
135
+ Children: {
136
+ map: ReactChildren.map,
137
+ forEach: ReactChildren.forEach,
138
+ count: ReactChildren.count,
139
+ toArray: ReactChildren.toArray,
140
+ only: onlyChild
141
+ },
142
+
143
+ Component: ReactComponent,
144
+ PureComponent: ReactPureComponent,
145
+
146
+ createElement: createElement,
147
+ cloneElement: cloneElement,
148
+ isValidElement: ReactElement.isValidElement,
149
+
150
+ // Classic
151
+
152
+ PropTypes: ReactPropTypes,
153
+ createClass: ReactClass.createClass,
154
+ createFactory: createFactory,
155
+ createMixin: function (mixin) {
156
+ // Currently a noop. Will be used to validate and trace mixins.
157
+ return mixin;
158
+ },
159
+
160
+ // This looks DOM specific but these are actually isomorphic helpers
161
+ // since they are just generating DOM strings.
162
+ DOM: ReactDOMFactories,
163
+
164
+ version: ReactVersion,
165
+
166
+ // Deprecated hook for JSX spread, don't use this for anything.
167
+ __spread: __spread
168
+ };
169
+
170
+ module.exports = React;
171
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
172
+
173
+ /***/ },
174
+ /* 4 */
175
+ /***/ function(module, exports) {
176
+
177
+ // shim for using process in browser
178
+ var process = module.exports = {};
179
+
180
+ // cached from whatever global is present so that test runners that stub it
181
+ // don't break things. But we need to wrap it in a try catch in case it is
182
+ // wrapped in strict mode code which doesn't define any globals. It's inside a
183
+ // function because try/catches deoptimize in certain engines.
184
+
185
+ var cachedSetTimeout;
186
+ var cachedClearTimeout;
187
+
188
+ function defaultSetTimout() {
189
+ throw new Error('setTimeout has not been defined');
190
+ }
191
+ function defaultClearTimeout () {
192
+ throw new Error('clearTimeout has not been defined');
193
+ }
194
+ (function () {
195
+ try {
196
+ if (typeof setTimeout === 'function') {
197
+ cachedSetTimeout = setTimeout;
198
+ } else {
199
+ cachedSetTimeout = defaultSetTimout;
200
+ }
201
+ } catch (e) {
202
+ cachedSetTimeout = defaultSetTimout;
203
+ }
204
+ try {
205
+ if (typeof clearTimeout === 'function') {
206
+ cachedClearTimeout = clearTimeout;
207
+ } else {
208
+ cachedClearTimeout = defaultClearTimeout;
209
+ }
210
+ } catch (e) {
211
+ cachedClearTimeout = defaultClearTimeout;
212
+ }
213
+ } ())
214
+ function runTimeout(fun) {
215
+ if (cachedSetTimeout === setTimeout) {
216
+ //normal enviroments in sane situations
217
+ return setTimeout(fun, 0);
218
+ }
219
+ // if setTimeout wasn't available but was latter defined
220
+ if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
221
+ cachedSetTimeout = setTimeout;
222
+ return setTimeout(fun, 0);
223
+ }
224
+ try {
225
+ // when when somebody has screwed with setTimeout but no I.E. maddness
226
+ return cachedSetTimeout(fun, 0);
227
+ } catch(e){
228
+ try {
229
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
230
+ return cachedSetTimeout.call(null, fun, 0);
231
+ } catch(e){
232
+ // 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
233
+ return cachedSetTimeout.call(this, fun, 0);
234
+ }
235
+ }
236
+
237
+
238
+ }
239
+ function runClearTimeout(marker) {
240
+ if (cachedClearTimeout === clearTimeout) {
241
+ //normal enviroments in sane situations
242
+ return clearTimeout(marker);
243
+ }
244
+ // if clearTimeout wasn't available but was latter defined
245
+ if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
246
+ cachedClearTimeout = clearTimeout;
247
+ return clearTimeout(marker);
248
+ }
249
+ try {
250
+ // when when somebody has screwed with setTimeout but no I.E. maddness
251
+ return cachedClearTimeout(marker);
252
+ } catch (e){
253
+ try {
254
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
255
+ return cachedClearTimeout.call(null, marker);
256
+ } catch (e){
257
+ // 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.
258
+ // Some versions of I.E. have different rules for clearTimeout vs setTimeout
259
+ return cachedClearTimeout.call(this, marker);
260
+ }
261
+ }
262
+
263
+
264
+
265
+ }
266
+ var queue = [];
267
+ var draining = false;
268
+ var currentQueue;
269
+ var queueIndex = -1;
270
+
271
+ function cleanUpNextTick() {
272
+ if (!draining || !currentQueue) {
273
+ return;
274
+ }
275
+ draining = false;
276
+ if (currentQueue.length) {
277
+ queue = currentQueue.concat(queue);
278
+ } else {
279
+ queueIndex = -1;
280
+ }
281
+ if (queue.length) {
282
+ drainQueue();
283
+ }
284
+ }
285
+
286
+ function drainQueue() {
287
+ if (draining) {
288
+ return;
289
+ }
290
+ var timeout = runTimeout(cleanUpNextTick);
291
+ draining = true;
292
+
293
+ var len = queue.length;
294
+ while(len) {
295
+ currentQueue = queue;
296
+ queue = [];
297
+ while (++queueIndex < len) {
298
+ if (currentQueue) {
299
+ currentQueue[queueIndex].run();
300
+ }
301
+ }
302
+ queueIndex = -1;
303
+ len = queue.length;
304
+ }
305
+ currentQueue = null;
306
+ draining = false;
307
+ runClearTimeout(timeout);
308
+ }
309
+
310
+ process.nextTick = function (fun) {
311
+ var args = new Array(arguments.length - 1);
312
+ if (arguments.length > 1) {
313
+ for (var i = 1; i < arguments.length; i++) {
314
+ args[i - 1] = arguments[i];
315
+ }
316
+ }
317
+ queue.push(new Item(fun, args));
318
+ if (queue.length === 1 && !draining) {
319
+ runTimeout(drainQueue);
320
+ }
321
+ };
322
+
323
+ // v8 likes predictible objects
324
+ function Item(fun, array) {
325
+ this.fun = fun;
326
+ this.array = array;
327
+ }
328
+ Item.prototype.run = function () {
329
+ this.fun.apply(null, this.array);
330
+ };
331
+ process.title = 'browser';
332
+ process.browser = true;
333
+ process.env = {};
334
+ process.argv = [];
335
+ process.version = ''; // empty string to avoid regexp issues
336
+ process.versions = {};
337
+
338
+ function noop() {}
339
+
340
+ process.on = noop;
341
+ process.addListener = noop;
342
+ process.once = noop;
343
+ process.off = noop;
344
+ process.removeListener = noop;
345
+ process.removeAllListeners = noop;
346
+ process.emit = noop;
347
+
348
+ process.binding = function (name) {
349
+ throw new Error('process.binding is not supported');
350
+ };
351
+
352
+ process.cwd = function () { return '/' };
353
+ process.chdir = function (dir) {
354
+ throw new Error('process.chdir is not supported');
355
+ };
356
+ process.umask = function() { return 0; };
357
+
358
+
359
+ /***/ },
360
+ /* 5 */
361
+ /***/ function(module, exports) {
362
+
363
+ 'use strict';
364
+ /* eslint-disable no-unused-vars */
365
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
366
+ var propIsEnumerable = Object.prototype.propertyIsEnumerable;
367
+
368
+ function toObject(val) {
369
+ if (val === null || val === undefined) {
370
+ throw new TypeError('Object.assign cannot be called with null or undefined');
371
+ }
372
+
373
+ return Object(val);
374
+ }
375
+
376
+ function shouldUseNative() {
377
+ try {
378
+ if (!Object.assign) {
379
+ return false;
380
+ }
381
+
382
+ // Detect buggy property enumeration order in older V8 versions.
383
+
384
+ // https://bugs.chromium.org/p/v8/issues/detail?id=4118
385
+ var test1 = new String('abc'); // eslint-disable-line
386
+ test1[5] = 'de';
387
+ if (Object.getOwnPropertyNames(test1)[0] === '5') {
388
+ return false;
389
+ }
390
+
391
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3056
392
+ var test2 = {};
393
+ for (var i = 0; i < 10; i++) {
394
+ test2['_' + String.fromCharCode(i)] = i;
395
+ }
396
+ var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
397
+ return test2[n];
398
+ });
399
+ if (order2.join('') !== '0123456789') {
400
+ return false;
401
+ }
402
+
403
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3056
404
+ var test3 = {};
405
+ 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
406
+ test3[letter] = letter;
407
+ });
408
+ if (Object.keys(Object.assign({}, test3)).join('') !==
409
+ 'abcdefghijklmnopqrst') {
410
+ return false;
411
+ }
412
+
413
+ return true;
414
+ } catch (e) {
415
+ // We don't expect any of the above to throw, but better to be safe.
416
+ return false;
417
+ }
418
+ }
419
+
420
+ module.exports = shouldUseNative() ? Object.assign : function (target, source) {
421
+ var from;
422
+ var to = toObject(target);
423
+ var symbols;
424
+
425
+ for (var s = 1; s < arguments.length; s++) {
426
+ from = Object(arguments[s]);
427
+
428
+ for (var key in from) {
429
+ if (hasOwnProperty.call(from, key)) {
430
+ to[key] = from[key];
431
+ }
432
+ }
433
+
434
+ if (Object.getOwnPropertySymbols) {
435
+ symbols = Object.getOwnPropertySymbols(from);
436
+ for (var i = 0; i < symbols.length; i++) {
437
+ if (propIsEnumerable.call(from, symbols[i])) {
438
+ to[symbols[i]] = from[symbols[i]];
439
+ }
440
+ }
441
+ }
442
+ }
443
+
444
+ return to;
445
+ };
446
+
447
+
448
+ /***/ },
449
+ /* 6 */
450
+ /***/ function(module, exports, __webpack_require__) {
451
+
452
+ /**
453
+ * Copyright 2013-present, Facebook, Inc.
454
+ * All rights reserved.
455
+ *
456
+ * This source code is licensed under the BSD-style license found in the
457
+ * LICENSE file in the root directory of this source tree. An additional grant
458
+ * of patent rights can be found in the PATENTS file in the same directory.
459
+ *
460
+ */
461
+
462
+ 'use strict';
463
+
464
+ var PooledClass = __webpack_require__(7);
465
+ var ReactElement = __webpack_require__(10);
466
+
467
+ var emptyFunction = __webpack_require__(13);
468
+ var traverseAllChildren = __webpack_require__(16);
469
+
470
+ var twoArgumentPooler = PooledClass.twoArgumentPooler;
471
+ var fourArgumentPooler = PooledClass.fourArgumentPooler;
472
+
473
+ var userProvidedKeyEscapeRegex = /\/+/g;
474
+ function escapeUserProvidedKey(text) {
475
+ return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');
476
+ }
477
+
478
+ /**
479
+ * PooledClass representing the bookkeeping associated with performing a child
480
+ * traversal. Allows avoiding binding callbacks.
481
+ *
482
+ * @constructor ForEachBookKeeping
483
+ * @param {!function} forEachFunction Function to perform traversal with.
484
+ * @param {?*} forEachContext Context to perform context with.
485
+ */
486
+ function ForEachBookKeeping(forEachFunction, forEachContext) {
487
+ this.func = forEachFunction;
488
+ this.context = forEachContext;
489
+ this.count = 0;
490
+ }
491
+ ForEachBookKeeping.prototype.destructor = function () {
492
+ this.func = null;
493
+ this.context = null;
494
+ this.count = 0;
495
+ };
496
+ PooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);
497
+
498
+ function forEachSingleChild(bookKeeping, child, name) {
499
+ var func = bookKeeping.func,
500
+ context = bookKeeping.context;
501
+
502
+ func.call(context, child, bookKeeping.count++);
503
+ }
504
+
505
+ /**
506
+ * Iterates through children that are typically specified as `props.children`.
507
+ *
508
+ * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach
509
+ *
510
+ * The provided forEachFunc(child, index) will be called for each
511
+ * leaf child.
512
+ *
513
+ * @param {?*} children Children tree container.
514
+ * @param {function(*, int)} forEachFunc
515
+ * @param {*} forEachContext Context for forEachContext.
516
+ */
517
+ function forEachChildren(children, forEachFunc, forEachContext) {
518
+ if (children == null) {
519
+ return children;
520
+ }
521
+ var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);
522
+ traverseAllChildren(children, forEachSingleChild, traverseContext);
523
+ ForEachBookKeeping.release(traverseContext);
524
+ }
525
+
526
+ /**
527
+ * PooledClass representing the bookkeeping associated with performing a child
528
+ * mapping. Allows avoiding binding callbacks.
529
+ *
530
+ * @constructor MapBookKeeping
531
+ * @param {!*} mapResult Object containing the ordered map of results.
532
+ * @param {!function} mapFunction Function to perform mapping with.
533
+ * @param {?*} mapContext Context to perform mapping with.
534
+ */
535
+ function MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {
536
+ this.result = mapResult;
537
+ this.keyPrefix = keyPrefix;
538
+ this.func = mapFunction;
539
+ this.context = mapContext;
540
+ this.count = 0;
541
+ }
542
+ MapBookKeeping.prototype.destructor = function () {
543
+ this.result = null;
544
+ this.keyPrefix = null;
545
+ this.func = null;
546
+ this.context = null;
547
+ this.count = 0;
548
+ };
549
+ PooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);
550
+
551
+ function mapSingleChildIntoContext(bookKeeping, child, childKey) {
552
+ var result = bookKeeping.result,
553
+ keyPrefix = bookKeeping.keyPrefix,
554
+ func = bookKeeping.func,
555
+ context = bookKeeping.context;
556
+
557
+
558
+ var mappedChild = func.call(context, child, bookKeeping.count++);
559
+ if (Array.isArray(mappedChild)) {
560
+ mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);
561
+ } else if (mappedChild != null) {
562
+ if (ReactElement.isValidElement(mappedChild)) {
563
+ mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,
564
+ // Keep both the (mapped) and old keys if they differ, just as
565
+ // traverseAllChildren used to do for objects as children
566
+ keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);
567
+ }
568
+ result.push(mappedChild);
569
+ }
570
+ }
571
+
572
+ function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {
573
+ var escapedPrefix = '';
574
+ if (prefix != null) {
575
+ escapedPrefix = escapeUserProvidedKey(prefix) + '/';
576
+ }
577
+ var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);
578
+ traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);
579
+ MapBookKeeping.release(traverseContext);
580
+ }
581
+
582
+ /**
583
+ * Maps children that are typically specified as `props.children`.
584
+ *
585
+ * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map
586
+ *
587
+ * The provided mapFunction(child, key, index) will be called for each
588
+ * leaf child.
589
+ *
590
+ * @param {?*} children Children tree container.
591
+ * @param {function(*, int)} func The map function.
592
+ * @param {*} context Context for mapFunction.
593
+ * @return {object} Object containing the ordered map of results.
594
+ */
595
+ function mapChildren(children, func, context) {
596
+ if (children == null) {
597
+ return children;
598
+ }
599
+ var result = [];
600
+ mapIntoWithKeyPrefixInternal(children, result, null, func, context);
601
+ return result;
602
+ }
603
+
604
+ function forEachSingleChildDummy(traverseContext, child, name) {
605
+ return null;
606
+ }
607
+
608
+ /**
609
+ * Count the number of children that are typically specified as
610
+ * `props.children`.
611
+ *
612
+ * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count
613
+ *
614
+ * @param {?*} children Children tree container.
615
+ * @return {number} The number of children.
616
+ */
617
+ function countChildren(children, context) {
618
+ return traverseAllChildren(children, forEachSingleChildDummy, null);
619
+ }
620
+
621
+ /**
622
+ * Flatten a children object (typically specified as `props.children`) and
623
+ * return an array with appropriately re-keyed children.
624
+ *
625
+ * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray
626
+ */
627
+ function toArray(children) {
628
+ var result = [];
629
+ mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);
630
+ return result;
631
+ }
632
+
633
+ var ReactChildren = {
634
+ forEach: forEachChildren,
635
+ map: mapChildren,
636
+ mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,
637
+ count: countChildren,
638
+ toArray: toArray
639
+ };
640
+
641
+ module.exports = ReactChildren;
642
+
643
+ /***/ },
644
+ /* 7 */
645
+ /***/ function(module, exports, __webpack_require__) {
646
+
647
+ /* WEBPACK VAR INJECTION */(function(process) {/**
648
+ * Copyright 2013-present, Facebook, Inc.
649
+ * All rights reserved.
650
+ *
651
+ * This source code is licensed under the BSD-style license found in the
652
+ * LICENSE file in the root directory of this source tree. An additional grant
653
+ * of patent rights can be found in the PATENTS file in the same directory.
654
+ *
655
+ *
656
+ */
657
+
658
+ 'use strict';
659
+
660
+ var _prodInvariant = __webpack_require__(8);
661
+
662
+ var invariant = __webpack_require__(9);
663
+
664
+ /**
665
+ * Static poolers. Several custom versions for each potential number of
666
+ * arguments. A completely generic pooler is easy to implement, but would
667
+ * require accessing the `arguments` object. In each of these, `this` refers to
668
+ * the Class itself, not an instance. If any others are needed, simply add them
669
+ * here, or in their own files.
670
+ */
671
+ var oneArgumentPooler = function (copyFieldsFrom) {
672
+ var Klass = this;
673
+ if (Klass.instancePool.length) {
674
+ var instance = Klass.instancePool.pop();
675
+ Klass.call(instance, copyFieldsFrom);
676
+ return instance;
677
+ } else {
678
+ return new Klass(copyFieldsFrom);
679
+ }
680
+ };
681
+
682
+ var twoArgumentPooler = function (a1, a2) {
683
+ var Klass = this;
684
+ if (Klass.instancePool.length) {
685
+ var instance = Klass.instancePool.pop();
686
+ Klass.call(instance, a1, a2);
687
+ return instance;
688
+ } else {
689
+ return new Klass(a1, a2);
690
+ }
691
+ };
692
+
693
+ var threeArgumentPooler = function (a1, a2, a3) {
694
+ var Klass = this;
695
+ if (Klass.instancePool.length) {
696
+ var instance = Klass.instancePool.pop();
697
+ Klass.call(instance, a1, a2, a3);
698
+ return instance;
699
+ } else {
700
+ return new Klass(a1, a2, a3);
701
+ }
702
+ };
703
+
704
+ var fourArgumentPooler = function (a1, a2, a3, a4) {
705
+ var Klass = this;
706
+ if (Klass.instancePool.length) {
707
+ var instance = Klass.instancePool.pop();
708
+ Klass.call(instance, a1, a2, a3, a4);
709
+ return instance;
710
+ } else {
711
+ return new Klass(a1, a2, a3, a4);
712
+ }
713
+ };
714
+
715
+ var fiveArgumentPooler = function (a1, a2, a3, a4, a5) {
716
+ var Klass = this;
717
+ if (Klass.instancePool.length) {
718
+ var instance = Klass.instancePool.pop();
719
+ Klass.call(instance, a1, a2, a3, a4, a5);
720
+ return instance;
721
+ } else {
722
+ return new Klass(a1, a2, a3, a4, a5);
723
+ }
724
+ };
725
+
726
+ var standardReleaser = function (instance) {
727
+ var Klass = this;
728
+ !(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;
729
+ instance.destructor();
730
+ if (Klass.instancePool.length < Klass.poolSize) {
731
+ Klass.instancePool.push(instance);
732
+ }
733
+ };
734
+
735
+ var DEFAULT_POOL_SIZE = 10;
736
+ var DEFAULT_POOLER = oneArgumentPooler;
737
+
738
+ /**
739
+ * Augments `CopyConstructor` to be a poolable class, augmenting only the class
740
+ * itself (statically) not adding any prototypical fields. Any CopyConstructor
741
+ * you give this may have a `poolSize` property, and will look for a
742
+ * prototypical `destructor` on instances.
743
+ *
744
+ * @param {Function} CopyConstructor Constructor that can be used to reset.
745
+ * @param {Function} pooler Customizable pooler.
746
+ */
747
+ var addPoolingTo = function (CopyConstructor, pooler) {
748
+ // Casting as any so that flow ignores the actual implementation and trusts
749
+ // it to match the type we declared
750
+ var NewKlass = CopyConstructor;
751
+ NewKlass.instancePool = [];
752
+ NewKlass.getPooled = pooler || DEFAULT_POOLER;
753
+ if (!NewKlass.poolSize) {
754
+ NewKlass.poolSize = DEFAULT_POOL_SIZE;
755
+ }
756
+ NewKlass.release = standardReleaser;
757
+ return NewKlass;
758
+ };
759
+
760
+ var PooledClass = {
761
+ addPoolingTo: addPoolingTo,
762
+ oneArgumentPooler: oneArgumentPooler,
763
+ twoArgumentPooler: twoArgumentPooler,
764
+ threeArgumentPooler: threeArgumentPooler,
765
+ fourArgumentPooler: fourArgumentPooler,
766
+ fiveArgumentPooler: fiveArgumentPooler
767
+ };
768
+
769
+ module.exports = PooledClass;
770
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
771
+
772
+ /***/ },
773
+ /* 8 */
774
+ /***/ function(module, exports) {
775
+
776
+ /**
777
+ * Copyright (c) 2013-present, Facebook, Inc.
778
+ * All rights reserved.
779
+ *
780
+ * This source code is licensed under the BSD-style license found in the
781
+ * LICENSE file in the root directory of this source tree. An additional grant
782
+ * of patent rights can be found in the PATENTS file in the same directory.
783
+ *
784
+ *
785
+ */
786
+ 'use strict';
787
+
788
+ /**
789
+ * WARNING: DO NOT manually require this module.
790
+ * This is a replacement for `invariant(...)` used by the error code system
791
+ * and will _only_ be required by the corresponding babel pass.
792
+ * It always throws.
793
+ */
794
+
795
+ function reactProdInvariant(code) {
796
+ var argCount = arguments.length - 1;
797
+
798
+ var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;
799
+
800
+ for (var argIdx = 0; argIdx < argCount; argIdx++) {
801
+ message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);
802
+ }
803
+
804
+ message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';
805
+
806
+ var error = new Error(message);
807
+ error.name = 'Invariant Violation';
808
+ error.framesToPop = 1; // we don't care about reactProdInvariant's own frame
809
+
810
+ throw error;
811
+ }
812
+
813
+ module.exports = reactProdInvariant;
814
+
815
+ /***/ },
816
+ /* 9 */
817
+ /***/ function(module, exports, __webpack_require__) {
818
+
819
+ /* WEBPACK VAR INJECTION */(function(process) {/**
820
+ * Copyright (c) 2013-present, Facebook, Inc.
821
+ * All rights reserved.
822
+ *
823
+ * This source code is licensed under the BSD-style license found in the
824
+ * LICENSE file in the root directory of this source tree. An additional grant
825
+ * of patent rights can be found in the PATENTS file in the same directory.
826
+ *
827
+ */
828
+
829
+ 'use strict';
830
+
831
+ /**
832
+ * Use invariant() to assert state which your program assumes to be true.
833
+ *
834
+ * Provide sprintf-style format (only %s is supported) and arguments
835
+ * to provide information about what broke and what you were
836
+ * expecting.
837
+ *
838
+ * The invariant message will be stripped in production, but the invariant
839
+ * will remain to ensure logic does not differ in production.
840
+ */
841
+
842
+ function invariant(condition, format, a, b, c, d, e, f) {
843
+ if (process.env.NODE_ENV !== 'production') {
844
+ if (format === undefined) {
845
+ throw new Error('invariant requires an error message argument');
846
+ }
847
+ }
848
+
849
+ if (!condition) {
850
+ var error;
851
+ if (format === undefined) {
852
+ error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
853
+ } else {
854
+ var args = [a, b, c, d, e, f];
855
+ var argIndex = 0;
856
+ error = new Error(format.replace(/%s/g, function () {
857
+ return args[argIndex++];
858
+ }));
859
+ error.name = 'Invariant Violation';
860
+ }
861
+
862
+ error.framesToPop = 1; // we don't care about invariant's own frame
863
+ throw error;
864
+ }
865
+ }
866
+
867
+ module.exports = invariant;
868
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
869
+
870
+ /***/ },
871
+ /* 10 */
872
+ /***/ function(module, exports, __webpack_require__) {
873
+
874
+ /* WEBPACK VAR INJECTION */(function(process) {/**
875
+ * Copyright 2014-present, Facebook, Inc.
876
+ * All rights reserved.
877
+ *
878
+ * This source code is licensed under the BSD-style license found in the
879
+ * LICENSE file in the root directory of this source tree. An additional grant
880
+ * of patent rights can be found in the PATENTS file in the same directory.
881
+ *
882
+ */
883
+
884
+ 'use strict';
885
+
886
+ var _assign = __webpack_require__(5);
887
+
888
+ var ReactCurrentOwner = __webpack_require__(11);
889
+
890
+ var warning = __webpack_require__(12);
891
+ var canDefineProperty = __webpack_require__(14);
892
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
893
+
894
+ var REACT_ELEMENT_TYPE = __webpack_require__(15);
895
+
896
+ var RESERVED_PROPS = {
897
+ key: true,
898
+ ref: true,
899
+ __self: true,
900
+ __source: true
901
+ };
902
+
903
+ var specialPropKeyWarningShown, specialPropRefWarningShown;
904
+
905
+ function hasValidRef(config) {
906
+ if (process.env.NODE_ENV !== 'production') {
907
+ if (hasOwnProperty.call(config, 'ref')) {
908
+ var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;
909
+ if (getter && getter.isReactWarning) {
910
+ return false;
911
+ }
912
+ }
913
+ }
914
+ return config.ref !== undefined;
915
+ }
916
+
917
+ function hasValidKey(config) {
918
+ if (process.env.NODE_ENV !== 'production') {
919
+ if (hasOwnProperty.call(config, 'key')) {
920
+ var getter = Object.getOwnPropertyDescriptor(config, 'key').get;
921
+ if (getter && getter.isReactWarning) {
922
+ return false;
923
+ }
924
+ }
925
+ }
926
+ return config.key !== undefined;
927
+ }
928
+
929
+ function defineKeyPropWarningGetter(props, displayName) {
930
+ var warnAboutAccessingKey = function () {
931
+ if (!specialPropKeyWarningShown) {
932
+ specialPropKeyWarningShown = true;
933
+ 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;
934
+ }
935
+ };
936
+ warnAboutAccessingKey.isReactWarning = true;
937
+ Object.defineProperty(props, 'key', {
938
+ get: warnAboutAccessingKey,
939
+ configurable: true
940
+ });
941
+ }
942
+
943
+ function defineRefPropWarningGetter(props, displayName) {
944
+ var warnAboutAccessingRef = function () {
945
+ if (!specialPropRefWarningShown) {
946
+ specialPropRefWarningShown = true;
947
+ 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;
948
+ }
949
+ };
950
+ warnAboutAccessingRef.isReactWarning = true;
951
+ Object.defineProperty(props, 'ref', {
952
+ get: warnAboutAccessingRef,
953
+ configurable: true
954
+ });
955
+ }
956
+
957
+ /**
958
+ * Factory method to create a new React element. This no longer adheres to
959
+ * the class pattern, so do not use new to call it. Also, no instanceof check
960
+ * will work. Instead test $$typeof field against Symbol.for('react.element') to check
961
+ * if something is a React Element.
962
+ *
963
+ * @param {*} type
964
+ * @param {*} key
965
+ * @param {string|object} ref
966
+ * @param {*} self A *temporary* helper to detect places where `this` is
967
+ * different from the `owner` when React.createElement is called, so that we
968
+ * can warn. We want to get rid of owner and replace string `ref`s with arrow
969
+ * functions, and as long as `this` and owner are the same, there will be no
970
+ * change in behavior.
971
+ * @param {*} source An annotation object (added by a transpiler or otherwise)
972
+ * indicating filename, line number, and/or other information.
973
+ * @param {*} owner
974
+ * @param {*} props
975
+ * @internal
976
+ */
977
+ var ReactElement = function (type, key, ref, self, source, owner, props) {
978
+ var element = {
979
+ // This tag allow us to uniquely identify this as a React Element
980
+ $$typeof: REACT_ELEMENT_TYPE,
981
+
982
+ // Built-in properties that belong on the element
983
+ type: type,
984
+ key: key,
985
+ ref: ref,
986
+ props: props,
987
+
988
+ // Record the component responsible for creating this element.
989
+ _owner: owner
990
+ };
991
+
992
+ if (process.env.NODE_ENV !== 'production') {
993
+ // The validation flag is currently mutative. We put it on
994
+ // an external backing store so that we can freeze the whole object.
995
+ // This can be replaced with a WeakMap once they are implemented in
996
+ // commonly used development environments.
997
+ element._store = {};
998
+
999
+ // To make comparing ReactElements easier for testing purposes, we make
1000
+ // the validation flag non-enumerable (where possible, which should
1001
+ // include every environment we run tests in), so the test framework
1002
+ // ignores it.
1003
+ if (canDefineProperty) {
1004
+ Object.defineProperty(element._store, 'validated', {
1005
+ configurable: false,
1006
+ enumerable: false,
1007
+ writable: true,
1008
+ value: false
1009
+ });
1010
+ // self and source are DEV only properties.
1011
+ Object.defineProperty(element, '_self', {
1012
+ configurable: false,
1013
+ enumerable: false,
1014
+ writable: false,
1015
+ value: self
1016
+ });
1017
+ // Two elements created in two different places should be considered
1018
+ // equal for testing purposes and therefore we hide it from enumeration.
1019
+ Object.defineProperty(element, '_source', {
1020
+ configurable: false,
1021
+ enumerable: false,
1022
+ writable: false,
1023
+ value: source
1024
+ });
1025
+ } else {
1026
+ element._store.validated = false;
1027
+ element._self = self;
1028
+ element._source = source;
1029
+ }
1030
+ if (Object.freeze) {
1031
+ Object.freeze(element.props);
1032
+ Object.freeze(element);
1033
+ }
1034
+ }
1035
+
1036
+ return element;
1037
+ };
1038
+
1039
+ /**
1040
+ * Create and return a new ReactElement of the given type.
1041
+ * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement
1042
+ */
1043
+ ReactElement.createElement = function (type, config, children) {
1044
+ var propName;
1045
+
1046
+ // Reserved names are extracted
1047
+ var props = {};
1048
+
1049
+ var key = null;
1050
+ var ref = null;
1051
+ var self = null;
1052
+ var source = null;
1053
+
1054
+ if (config != null) {
1055
+ if (hasValidRef(config)) {
1056
+ ref = config.ref;
1057
+ }
1058
+ if (hasValidKey(config)) {
1059
+ key = '' + config.key;
1060
+ }
1061
+
1062
+ self = config.__self === undefined ? null : config.__self;
1063
+ source = config.__source === undefined ? null : config.__source;
1064
+ // Remaining properties are added to a new props object
1065
+ for (propName in config) {
1066
+ if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
1067
+ props[propName] = config[propName];
1068
+ }
1069
+ }
1070
+ }
1071
+
1072
+ // Children can be more than one argument, and those are transferred onto
1073
+ // the newly allocated props object.
1074
+ var childrenLength = arguments.length - 2;
1075
+ if (childrenLength === 1) {
1076
+ props.children = children;
1077
+ } else if (childrenLength > 1) {
1078
+ var childArray = Array(childrenLength);
1079
+ for (var i = 0; i < childrenLength; i++) {
1080
+ childArray[i] = arguments[i + 2];
1081
+ }
1082
+ if (process.env.NODE_ENV !== 'production') {
1083
+ if (Object.freeze) {
1084
+ Object.freeze(childArray);
1085
+ }
1086
+ }
1087
+ props.children = childArray;
1088
+ }
1089
+
1090
+ // Resolve default props
1091
+ if (type && type.defaultProps) {
1092
+ var defaultProps = type.defaultProps;
1093
+ for (propName in defaultProps) {
1094
+ if (props[propName] === undefined) {
1095
+ props[propName] = defaultProps[propName];
1096
+ }
1097
+ }
1098
+ }
1099
+ if (process.env.NODE_ENV !== 'production') {
1100
+ if (key || ref) {
1101
+ if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {
1102
+ var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;
1103
+ if (key) {
1104
+ defineKeyPropWarningGetter(props, displayName);
1105
+ }
1106
+ if (ref) {
1107
+ defineRefPropWarningGetter(props, displayName);
1108
+ }
1109
+ }
1110
+ }
1111
+ }
1112
+ return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
1113
+ };
1114
+
1115
+ /**
1116
+ * Return a function that produces ReactElements of a given type.
1117
+ * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory
1118
+ */
1119
+ ReactElement.createFactory = function (type) {
1120
+ var factory = ReactElement.createElement.bind(null, type);
1121
+ // Expose the type on the factory and the prototype so that it can be
1122
+ // easily accessed on elements. E.g. `<Foo />.type === Foo`.
1123
+ // This should not be named `constructor` since this may not be the function
1124
+ // that created the element, and it may not even be a constructor.
1125
+ // Legacy hook TODO: Warn if this is accessed
1126
+ factory.type = type;
1127
+ return factory;
1128
+ };
1129
+
1130
+ ReactElement.cloneAndReplaceKey = function (oldElement, newKey) {
1131
+ var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);
1132
+
1133
+ return newElement;
1134
+ };
1135
+
1136
+ /**
1137
+ * Clone and return a new ReactElement using element as the starting point.
1138
+ * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement
1139
+ */
1140
+ ReactElement.cloneElement = function (element, config, children) {
1141
+ var propName;
1142
+
1143
+ // Original props are copied
1144
+ var props = _assign({}, element.props);
1145
+
1146
+ // Reserved names are extracted
1147
+ var key = element.key;
1148
+ var ref = element.ref;
1149
+ // Self is preserved since the owner is preserved.
1150
+ var self = element._self;
1151
+ // Source is preserved since cloneElement is unlikely to be targeted by a
1152
+ // transpiler, and the original source is probably a better indicator of the
1153
+ // true owner.
1154
+ var source = element._source;
1155
+
1156
+ // Owner will be preserved, unless ref is overridden
1157
+ var owner = element._owner;
1158
+
1159
+ if (config != null) {
1160
+ if (hasValidRef(config)) {
1161
+ // Silently steal the ref from the parent.
1162
+ ref = config.ref;
1163
+ owner = ReactCurrentOwner.current;
1164
+ }
1165
+ if (hasValidKey(config)) {
1166
+ key = '' + config.key;
1167
+ }
1168
+
1169
+ // Remaining properties override existing props
1170
+ var defaultProps;
1171
+ if (element.type && element.type.defaultProps) {
1172
+ defaultProps = element.type.defaultProps;
1173
+ }
1174
+ for (propName in config) {
1175
+ if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
1176
+ if (config[propName] === undefined && defaultProps !== undefined) {
1177
+ // Resolve default props
1178
+ props[propName] = defaultProps[propName];
1179
+ } else {
1180
+ props[propName] = config[propName];
1181
+ }
1182
+ }
1183
+ }
1184
+ }
1185
+
1186
+ // Children can be more than one argument, and those are transferred onto
1187
+ // the newly allocated props object.
1188
+ var childrenLength = arguments.length - 2;
1189
+ if (childrenLength === 1) {
1190
+ props.children = children;
1191
+ } else if (childrenLength > 1) {
1192
+ var childArray = Array(childrenLength);
1193
+ for (var i = 0; i < childrenLength; i++) {
1194
+ childArray[i] = arguments[i + 2];
1195
+ }
1196
+ props.children = childArray;
1197
+ }
1198
+
1199
+ return ReactElement(element.type, key, ref, self, source, owner, props);
1200
+ };
1201
+
1202
+ /**
1203
+ * Verifies the object is a ReactElement.
1204
+ * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement
1205
+ * @param {?object} object
1206
+ * @return {boolean} True if `object` is a valid component.
1207
+ * @final
1208
+ */
1209
+ ReactElement.isValidElement = function (object) {
1210
+ return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
1211
+ };
1212
+
1213
+ module.exports = ReactElement;
1214
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
1215
+
1216
+ /***/ },
1217
+ /* 11 */
1218
+ /***/ function(module, exports) {
1219
+
1220
+ /**
1221
+ * Copyright 2013-present, Facebook, Inc.
1222
+ * All rights reserved.
1223
+ *
1224
+ * This source code is licensed under the BSD-style license found in the
1225
+ * LICENSE file in the root directory of this source tree. An additional grant
1226
+ * of patent rights can be found in the PATENTS file in the same directory.
1227
+ *
1228
+ *
1229
+ */
1230
+
1231
+ 'use strict';
1232
+
1233
+ /**
1234
+ * Keeps track of the current owner.
1235
+ *
1236
+ * The current owner is the component who should own any components that are
1237
+ * currently being constructed.
1238
+ */
1239
+ var ReactCurrentOwner = {
1240
+
1241
+ /**
1242
+ * @internal
1243
+ * @type {ReactComponent}
1244
+ */
1245
+ current: null
1246
+
1247
+ };
1248
+
1249
+ module.exports = ReactCurrentOwner;
1250
+
1251
+ /***/ },
1252
+ /* 12 */
1253
+ /***/ function(module, exports, __webpack_require__) {
1254
+
1255
+ /* WEBPACK VAR INJECTION */(function(process) {/**
1256
+ * Copyright 2014-2015, Facebook, Inc.
1257
+ * All rights reserved.
1258
+ *
1259
+ * This source code is licensed under the BSD-style license found in the
1260
+ * LICENSE file in the root directory of this source tree. An additional grant
1261
+ * of patent rights can be found in the PATENTS file in the same directory.
1262
+ *
1263
+ */
1264
+
1265
+ 'use strict';
1266
+
1267
+ var emptyFunction = __webpack_require__(13);
1268
+
1269
+ /**
1270
+ * Similar to invariant but only logs a warning if the condition is not met.
1271
+ * This can be used to log issues in development environments in critical
1272
+ * paths. Removing the logging code for production environments will keep the
1273
+ * same logic and follow the same code paths.
1274
+ */
1275
+
1276
+ var warning = emptyFunction;
1277
+
1278
+ if (process.env.NODE_ENV !== 'production') {
1279
+ (function () {
1280
+ var printWarning = function printWarning(format) {
1281
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1282
+ args[_key - 1] = arguments[_key];
1283
+ }
1284
+
1285
+ var argIndex = 0;
1286
+ var message = 'Warning: ' + format.replace(/%s/g, function () {
1287
+ return args[argIndex++];
1288
+ });
1289
+ if (typeof console !== 'undefined') {
1290
+ console.error(message);
1291
+ }
1292
+ try {
1293
+ // --- Welcome to debugging React ---
1294
+ // This error was thrown as a convenience so that you can use this stack
1295
+ // to find the callsite that caused this warning to fire.
1296
+ throw new Error(message);
1297
+ } catch (x) {}
1298
+ };
1299
+
1300
+ warning = function warning(condition, format) {
1301
+ if (format === undefined) {
1302
+ throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');
1303
+ }
1304
+
1305
+ if (format.indexOf('Failed Composite propType: ') === 0) {
1306
+ return; // Ignore CompositeComponent proptype check.
1307
+ }
1308
+
1309
+ if (!condition) {
1310
+ for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
1311
+ args[_key2 - 2] = arguments[_key2];
1312
+ }
1313
+
1314
+ printWarning.apply(undefined, [format].concat(args));
1315
+ }
1316
+ };
1317
+ })();
1318
+ }
1319
+
1320
+ module.exports = warning;
1321
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
1322
+
1323
+ /***/ },
1324
+ /* 13 */
1325
+ /***/ function(module, exports) {
1326
+
1327
+ "use strict";
1328
+
1329
+ /**
1330
+ * Copyright (c) 2013-present, Facebook, Inc.
1331
+ * All rights reserved.
1332
+ *
1333
+ * This source code is licensed under the BSD-style license found in the
1334
+ * LICENSE file in the root directory of this source tree. An additional grant
1335
+ * of patent rights can be found in the PATENTS file in the same directory.
1336
+ *
1337
+ *
1338
+ */
1339
+
1340
+ function makeEmptyFunction(arg) {
1341
+ return function () {
1342
+ return arg;
1343
+ };
1344
+ }
1345
+
1346
+ /**
1347
+ * This function accepts and discards inputs; it has no side effects. This is
1348
+ * primarily useful idiomatically for overridable function endpoints which
1349
+ * always need to be callable, since JS lacks a null-call idiom ala Cocoa.
1350
+ */
1351
+ var emptyFunction = function emptyFunction() {};
1352
+
1353
+ emptyFunction.thatReturns = makeEmptyFunction;
1354
+ emptyFunction.thatReturnsFalse = makeEmptyFunction(false);
1355
+ emptyFunction.thatReturnsTrue = makeEmptyFunction(true);
1356
+ emptyFunction.thatReturnsNull = makeEmptyFunction(null);
1357
+ emptyFunction.thatReturnsThis = function () {
1358
+ return this;
1359
+ };
1360
+ emptyFunction.thatReturnsArgument = function (arg) {
1361
+ return arg;
1362
+ };
1363
+
1364
+ module.exports = emptyFunction;
1365
+
1366
+ /***/ },
1367
+ /* 14 */
1368
+ /***/ function(module, exports, __webpack_require__) {
1369
+
1370
+ /* WEBPACK VAR INJECTION */(function(process) {/**
1371
+ * Copyright 2013-present, Facebook, Inc.
1372
+ * All rights reserved.
1373
+ *
1374
+ * This source code is licensed under the BSD-style license found in the
1375
+ * LICENSE file in the root directory of this source tree. An additional grant
1376
+ * of patent rights can be found in the PATENTS file in the same directory.
1377
+ *
1378
+ *
1379
+ */
1380
+
1381
+ 'use strict';
1382
+
1383
+ var canDefineProperty = false;
1384
+ if (process.env.NODE_ENV !== 'production') {
1385
+ try {
1386
+ // $FlowFixMe https://github.com/facebook/flow/issues/285
1387
+ Object.defineProperty({}, 'x', { get: function () {} });
1388
+ canDefineProperty = true;
1389
+ } catch (x) {
1390
+ // IE will fail on defineProperty
1391
+ }
1392
+ }
1393
+
1394
+ module.exports = canDefineProperty;
1395
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
1396
+
1397
+ /***/ },
1398
+ /* 15 */
1399
+ /***/ function(module, exports) {
1400
+
1401
+ /**
1402
+ * Copyright 2014-present, Facebook, Inc.
1403
+ * All rights reserved.
1404
+ *
1405
+ * This source code is licensed under the BSD-style license found in the
1406
+ * LICENSE file in the root directory of this source tree. An additional grant
1407
+ * of patent rights can be found in the PATENTS file in the same directory.
1408
+ *
1409
+ *
1410
+ */
1411
+
1412
+ 'use strict';
1413
+
1414
+ // The Symbol used to tag the ReactElement type. If there is no native Symbol
1415
+ // nor polyfill, then a plain number is used for performance.
1416
+
1417
+ var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;
1418
+
1419
+ module.exports = REACT_ELEMENT_TYPE;
1420
+
1421
+ /***/ },
1422
+ /* 16 */
1423
+ /***/ function(module, exports, __webpack_require__) {
1424
+
1425
+ /* WEBPACK VAR INJECTION */(function(process) {/**
1426
+ * Copyright 2013-present, Facebook, Inc.
1427
+ * All rights reserved.
1428
+ *
1429
+ * This source code is licensed under the BSD-style license found in the
1430
+ * LICENSE file in the root directory of this source tree. An additional grant
1431
+ * of patent rights can be found in the PATENTS file in the same directory.
1432
+ *
1433
+ */
1434
+
1435
+ 'use strict';
1436
+
1437
+ var _prodInvariant = __webpack_require__(8);
1438
+
1439
+ var ReactCurrentOwner = __webpack_require__(11);
1440
+ var REACT_ELEMENT_TYPE = __webpack_require__(15);
1441
+
1442
+ var getIteratorFn = __webpack_require__(17);
1443
+ var invariant = __webpack_require__(9);
1444
+ var KeyEscapeUtils = __webpack_require__(18);
1445
+ var warning = __webpack_require__(12);
1446
+
1447
+ var SEPARATOR = '.';
1448
+ var SUBSEPARATOR = ':';
1449
+
1450
+ /**
1451
+ * This is inlined from ReactElement since this file is shared between
1452
+ * isomorphic and renderers. We could extract this to a
1453
+ *
1454
+ */
1455
+
1456
+ /**
1457
+ * TODO: Test that a single child and an array with one item have the same key
1458
+ * pattern.
1459
+ */
1460
+
1461
+ var didWarnAboutMaps = false;
1462
+
1463
+ /**
1464
+ * Generate a key string that identifies a component within a set.
1465
+ *
1466
+ * @param {*} component A component that could contain a manual key.
1467
+ * @param {number} index Index that is used if a manual key is not provided.
1468
+ * @return {string}
1469
+ */
1470
+ function getComponentKey(component, index) {
1471
+ // Do some typechecking here since we call this blindly. We want to ensure
1472
+ // that we don't block potential future ES APIs.
1473
+ if (component && typeof component === 'object' && component.key != null) {
1474
+ // Explicit key
1475
+ return KeyEscapeUtils.escape(component.key);
1476
+ }
1477
+ // Implicit key determined by the index in the set
1478
+ return index.toString(36);
1479
+ }
1480
+
1481
+ /**
1482
+ * @param {?*} children Children tree container.
1483
+ * @param {!string} nameSoFar Name of the key path so far.
1484
+ * @param {!function} callback Callback to invoke with each child found.
1485
+ * @param {?*} traverseContext Used to pass information throughout the traversal
1486
+ * process.
1487
+ * @return {!number} The number of children in this subtree.
1488
+ */
1489
+ function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {
1490
+ var type = typeof children;
1491
+
1492
+ if (type === 'undefined' || type === 'boolean') {
1493
+ // All of the above are perceived as null.
1494
+ children = null;
1495
+ }
1496
+
1497
+ if (children === null || type === 'string' || type === 'number' ||
1498
+ // The following is inlined from ReactElement. This means we can optimize
1499
+ // some checks. React Fiber also inlines this logic for similar purposes.
1500
+ type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {
1501
+ callback(traverseContext, children,
1502
+ // If it's the only child, treat the name as if it was wrapped in an array
1503
+ // so that it's consistent if the number of children grows.
1504
+ nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);
1505
+ return 1;
1506
+ }
1507
+
1508
+ var child;
1509
+ var nextName;
1510
+ var subtreeCount = 0; // Count of children found in the current subtree.
1511
+ var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;
1512
+
1513
+ if (Array.isArray(children)) {
1514
+ for (var i = 0; i < children.length; i++) {
1515
+ child = children[i];
1516
+ nextName = nextNamePrefix + getComponentKey(child, i);
1517
+ subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
1518
+ }
1519
+ } else {
1520
+ var iteratorFn = getIteratorFn(children);
1521
+ if (iteratorFn) {
1522
+ var iterator = iteratorFn.call(children);
1523
+ var step;
1524
+ if (iteratorFn !== children.entries) {
1525
+ var ii = 0;
1526
+ while (!(step = iterator.next()).done) {
1527
+ child = step.value;
1528
+ nextName = nextNamePrefix + getComponentKey(child, ii++);
1529
+ subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
1530
+ }
1531
+ } else {
1532
+ if (process.env.NODE_ENV !== 'production') {
1533
+ var mapsAsChildrenAddendum = '';
1534
+ if (ReactCurrentOwner.current) {
1535
+ var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();
1536
+ if (mapsAsChildrenOwnerName) {
1537
+ mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';
1538
+ }
1539
+ }
1540
+ 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;
1541
+ didWarnAboutMaps = true;
1542
+ }
1543
+ // Iterator will provide entry [k,v] tuples rather than values.
1544
+ while (!(step = iterator.next()).done) {
1545
+ var entry = step.value;
1546
+ if (entry) {
1547
+ child = entry[1];
1548
+ nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);
1549
+ subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
1550
+ }
1551
+ }
1552
+ }
1553
+ } else if (type === 'object') {
1554
+ var addendum = '';
1555
+ if (process.env.NODE_ENV !== 'production') {
1556
+ 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.';
1557
+ if (children._isReactElement) {
1558
+ 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.';
1559
+ }
1560
+ if (ReactCurrentOwner.current) {
1561
+ var name = ReactCurrentOwner.current.getName();
1562
+ if (name) {
1563
+ addendum += ' Check the render method of `' + name + '`.';
1564
+ }
1565
+ }
1566
+ }
1567
+ var childrenString = String(children);
1568
+ 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;
1569
+ }
1570
+ }
1571
+
1572
+ return subtreeCount;
1573
+ }
1574
+
1575
+ /**
1576
+ * Traverses children that are typically specified as `props.children`, but
1577
+ * might also be specified through attributes:
1578
+ *
1579
+ * - `traverseAllChildren(this.props.children, ...)`
1580
+ * - `traverseAllChildren(this.props.leftPanelChildren, ...)`
1581
+ *
1582
+ * The `traverseContext` is an optional argument that is passed through the
1583
+ * entire traversal. It can be used to store accumulations or anything else that
1584
+ * the callback might find relevant.
1585
+ *
1586
+ * @param {?*} children Children tree object.
1587
+ * @param {!function} callback To invoke upon traversing each child.
1588
+ * @param {?*} traverseContext Context for traversal.
1589
+ * @return {!number} The number of children in this subtree.
1590
+ */
1591
+ function traverseAllChildren(children, callback, traverseContext) {
1592
+ if (children == null) {
1593
+ return 0;
1594
+ }
1595
+
1596
+ return traverseAllChildrenImpl(children, '', callback, traverseContext);
1597
+ }
1598
+
1599
+ module.exports = traverseAllChildren;
1600
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
1601
+
1602
+ /***/ },
1603
+ /* 17 */
1604
+ /***/ function(module, exports) {
1605
+
1606
+ /**
1607
+ * Copyright 2013-present, Facebook, Inc.
1608
+ * All rights reserved.
1609
+ *
1610
+ * This source code is licensed under the BSD-style license found in the
1611
+ * LICENSE file in the root directory of this source tree. An additional grant
1612
+ * of patent rights can be found in the PATENTS file in the same directory.
1613
+ *
1614
+ *
1615
+ */
1616
+
1617
+ 'use strict';
1618
+
1619
+ /* global Symbol */
1620
+
1621
+ var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
1622
+ var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
1623
+
1624
+ /**
1625
+ * Returns the iterator method function contained on the iterable object.
1626
+ *
1627
+ * Be sure to invoke the function with the iterable as context:
1628
+ *
1629
+ * var iteratorFn = getIteratorFn(myIterable);
1630
+ * if (iteratorFn) {
1631
+ * var iterator = iteratorFn.call(myIterable);
1632
+ * ...
1633
+ * }
1634
+ *
1635
+ * @param {?object} maybeIterable
1636
+ * @return {?function}
1637
+ */
1638
+ function getIteratorFn(maybeIterable) {
1639
+ var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
1640
+ if (typeof iteratorFn === 'function') {
1641
+ return iteratorFn;
1642
+ }
1643
+ }
1644
+
1645
+ module.exports = getIteratorFn;
1646
+
1647
+ /***/ },
1648
+ /* 18 */
1649
+ /***/ function(module, exports) {
1650
+
1651
+ /**
1652
+ * Copyright 2013-present, Facebook, Inc.
1653
+ * All rights reserved.
1654
+ *
1655
+ * This source code is licensed under the BSD-style license found in the
1656
+ * LICENSE file in the root directory of this source tree. An additional grant
1657
+ * of patent rights can be found in the PATENTS file in the same directory.
1658
+ *
1659
+ *
1660
+ */
1661
+
1662
+ 'use strict';
1663
+
1664
+ /**
1665
+ * Escape and wrap key so it is safe to use as a reactid
1666
+ *
1667
+ * @param {string} key to be escaped.
1668
+ * @return {string} the escaped key.
1669
+ */
1670
+
1671
+ function escape(key) {
1672
+ var escapeRegex = /[=:]/g;
1673
+ var escaperLookup = {
1674
+ '=': '=0',
1675
+ ':': '=2'
1676
+ };
1677
+ var escapedString = ('' + key).replace(escapeRegex, function (match) {
1678
+ return escaperLookup[match];
1679
+ });
1680
+
1681
+ return '$' + escapedString;
1682
+ }
1683
+
1684
+ /**
1685
+ * Unescape and unwrap key for human-readable display
1686
+ *
1687
+ * @param {string} key to unescape.
1688
+ * @return {string} the unescaped key.
1689
+ */
1690
+ function unescape(key) {
1691
+ var unescapeRegex = /(=0|=2)/g;
1692
+ var unescaperLookup = {
1693
+ '=0': '=',
1694
+ '=2': ':'
1695
+ };
1696
+ var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);
1697
+
1698
+ return ('' + keySubstring).replace(unescapeRegex, function (match) {
1699
+ return unescaperLookup[match];
1700
+ });
1701
+ }
1702
+
1703
+ var KeyEscapeUtils = {
1704
+ escape: escape,
1705
+ unescape: unescape
1706
+ };
1707
+
1708
+ module.exports = KeyEscapeUtils;
1709
+
1710
+ /***/ },
1711
+ /* 19 */
1712
+ /***/ function(module, exports, __webpack_require__) {
1713
+
1714
+ /* WEBPACK VAR INJECTION */(function(process) {/**
1715
+ * Copyright 2013-present, Facebook, Inc.
1716
+ * All rights reserved.
1717
+ *
1718
+ * This source code is licensed under the BSD-style license found in the
1719
+ * LICENSE file in the root directory of this source tree. An additional grant
1720
+ * of patent rights can be found in the PATENTS file in the same directory.
1721
+ *
1722
+ */
1723
+
1724
+ 'use strict';
1725
+
1726
+ var _prodInvariant = __webpack_require__(8);
1727
+
1728
+ var ReactNoopUpdateQueue = __webpack_require__(20);
1729
+
1730
+ var canDefineProperty = __webpack_require__(14);
1731
+ var emptyObject = __webpack_require__(21);
1732
+ var invariant = __webpack_require__(9);
1733
+ var warning = __webpack_require__(12);
1734
+
1735
+ /**
1736
+ * Base class helpers for the updating state of a component.
1737
+ */
1738
+ function ReactComponent(props, context, updater) {
1739
+ this.props = props;
1740
+ this.context = context;
1741
+ this.refs = emptyObject;
1742
+ // We initialize the default updater but the real one gets injected by the
1743
+ // renderer.
1744
+ this.updater = updater || ReactNoopUpdateQueue;
1745
+ }
1746
+
1747
+ ReactComponent.prototype.isReactComponent = {};
1748
+
1749
+ /**
1750
+ * Sets a subset of the state. Always use this to mutate
1751
+ * state. You should treat `this.state` as immutable.
1752
+ *
1753
+ * There is no guarantee that `this.state` will be immediately updated, so
1754
+ * accessing `this.state` after calling this method may return the old value.
1755
+ *
1756
+ * There is no guarantee that calls to `setState` will run synchronously,
1757
+ * as they may eventually be batched together. You can provide an optional
1758
+ * callback that will be executed when the call to setState is actually
1759
+ * completed.
1760
+ *
1761
+ * When a function is provided to setState, it will be called at some point in
1762
+ * the future (not synchronously). It will be called with the up to date
1763
+ * component arguments (state, props, context). These values can be different
1764
+ * from this.* because your function may be called after receiveProps but before
1765
+ * shouldComponentUpdate, and this new state, props, and context will not yet be
1766
+ * assigned to this.
1767
+ *
1768
+ * @param {object|function} partialState Next partial state or function to
1769
+ * produce next partial state to be merged with current state.
1770
+ * @param {?function} callback Called after state is updated.
1771
+ * @final
1772
+ * @protected
1773
+ */
1774
+ ReactComponent.prototype.setState = function (partialState, callback) {
1775
+ !(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;
1776
+ this.updater.enqueueSetState(this, partialState);
1777
+ if (callback) {
1778
+ this.updater.enqueueCallback(this, callback, 'setState');
1779
+ }
1780
+ };
1781
+
1782
+ /**
1783
+ * Forces an update. This should only be invoked when it is known with
1784
+ * certainty that we are **not** in a DOM transaction.
1785
+ *
1786
+ * You may want to call this when you know that some deeper aspect of the
1787
+ * component's state has changed but `setState` was not called.
1788
+ *
1789
+ * This will not invoke `shouldComponentUpdate`, but it will invoke
1790
+ * `componentWillUpdate` and `componentDidUpdate`.
1791
+ *
1792
+ * @param {?function} callback Called after update is complete.
1793
+ * @final
1794
+ * @protected
1795
+ */
1796
+ ReactComponent.prototype.forceUpdate = function (callback) {
1797
+ this.updater.enqueueForceUpdate(this);
1798
+ if (callback) {
1799
+ this.updater.enqueueCallback(this, callback, 'forceUpdate');
1800
+ }
1801
+ };
1802
+
1803
+ /**
1804
+ * Deprecated APIs. These APIs used to exist on classic React classes but since
1805
+ * we would like to deprecate them, we're not going to move them over to this
1806
+ * modern base class. Instead, we define a getter that warns if it's accessed.
1807
+ */
1808
+ if (process.env.NODE_ENV !== 'production') {
1809
+ var deprecatedAPIs = {
1810
+ isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],
1811
+ replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']
1812
+ };
1813
+ var defineDeprecationWarning = function (methodName, info) {
1814
+ if (canDefineProperty) {
1815
+ Object.defineProperty(ReactComponent.prototype, methodName, {
1816
+ get: function () {
1817
+ process.env.NODE_ENV !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0;
1818
+ return undefined;
1819
+ }
1820
+ });
1821
+ }
1822
+ };
1823
+ for (var fnName in deprecatedAPIs) {
1824
+ if (deprecatedAPIs.hasOwnProperty(fnName)) {
1825
+ defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
1826
+ }
1827
+ }
1828
+ }
1829
+
1830
+ module.exports = ReactComponent;
1831
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
1832
+
1833
+ /***/ },
1834
+ /* 20 */
1835
+ /***/ function(module, exports, __webpack_require__) {
1836
+
1837
+ /* WEBPACK VAR INJECTION */(function(process) {/**
1838
+ * Copyright 2015-present, Facebook, Inc.
1839
+ * All rights reserved.
1840
+ *
1841
+ * This source code is licensed under the BSD-style license found in the
1842
+ * LICENSE file in the root directory of this source tree. An additional grant
1843
+ * of patent rights can be found in the PATENTS file in the same directory.
1844
+ *
1845
+ */
1846
+
1847
+ 'use strict';
1848
+
1849
+ var warning = __webpack_require__(12);
1850
+
1851
+ function warnNoop(publicInstance, callerName) {
1852
+ if (process.env.NODE_ENV !== 'production') {
1853
+ var constructor = publicInstance.constructor;
1854
+ 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;
1855
+ }
1856
+ }
1857
+
1858
+ /**
1859
+ * This is the abstract API for an update queue.
1860
+ */
1861
+ var ReactNoopUpdateQueue = {
1862
+
1863
+ /**
1864
+ * Checks whether or not this composite component is mounted.
1865
+ * @param {ReactClass} publicInstance The instance we want to test.
1866
+ * @return {boolean} True if mounted, false otherwise.
1867
+ * @protected
1868
+ * @final
1869
+ */
1870
+ isMounted: function (publicInstance) {
1871
+ return false;
1872
+ },
1873
+
1874
+ /**
1875
+ * Enqueue a callback that will be executed after all the pending updates
1876
+ * have processed.
1877
+ *
1878
+ * @param {ReactClass} publicInstance The instance to use as `this` context.
1879
+ * @param {?function} callback Called after state is updated.
1880
+ * @internal
1881
+ */
1882
+ enqueueCallback: function (publicInstance, callback) {},
1883
+
1884
+ /**
1885
+ * Forces an update. This should only be invoked when it is known with
1886
+ * certainty that we are **not** in a DOM transaction.
1887
+ *
1888
+ * You may want to call this when you know that some deeper aspect of the
1889
+ * component's state has changed but `setState` was not called.
1890
+ *
1891
+ * This will not invoke `shouldComponentUpdate`, but it will invoke
1892
+ * `componentWillUpdate` and `componentDidUpdate`.
1893
+ *
1894
+ * @param {ReactClass} publicInstance The instance that should rerender.
1895
+ * @internal
1896
+ */
1897
+ enqueueForceUpdate: function (publicInstance) {
1898
+ warnNoop(publicInstance, 'forceUpdate');
1899
+ },
1900
+
1901
+ /**
1902
+ * Replaces all of the state. Always use this or `setState` to mutate state.
1903
+ * You should treat `this.state` as immutable.
1904
+ *
1905
+ * There is no guarantee that `this.state` will be immediately updated, so
1906
+ * accessing `this.state` after calling this method may return the old value.
1907
+ *
1908
+ * @param {ReactClass} publicInstance The instance that should rerender.
1909
+ * @param {object} completeState Next state.
1910
+ * @internal
1911
+ */
1912
+ enqueueReplaceState: function (publicInstance, completeState) {
1913
+ warnNoop(publicInstance, 'replaceState');
1914
+ },
1915
+
1916
+ /**
1917
+ * Sets a subset of the state. This only exists because _pendingState is
1918
+ * internal. This provides a merging strategy that is not available to deep
1919
+ * properties which is confusing. TODO: Expose pendingState or don't use it
1920
+ * during the merge.
1921
+ *
1922
+ * @param {ReactClass} publicInstance The instance that should rerender.
1923
+ * @param {object} partialState Next partial state to be merged with state.
1924
+ * @internal
1925
+ */
1926
+ enqueueSetState: function (publicInstance, partialState) {
1927
+ warnNoop(publicInstance, 'setState');
1928
+ }
1929
+ };
1930
+
1931
+ module.exports = ReactNoopUpdateQueue;
1932
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
1933
+
1934
+ /***/ },
1935
+ /* 21 */
1936
+ /***/ function(module, exports, __webpack_require__) {
1937
+
1938
+ /* WEBPACK VAR INJECTION */(function(process) {/**
1939
+ * Copyright (c) 2013-present, Facebook, Inc.
1940
+ * All rights reserved.
1941
+ *
1942
+ * This source code is licensed under the BSD-style license found in the
1943
+ * LICENSE file in the root directory of this source tree. An additional grant
1944
+ * of patent rights can be found in the PATENTS file in the same directory.
1945
+ *
1946
+ */
1947
+
1948
+ 'use strict';
1949
+
1950
+ var emptyObject = {};
1951
+
1952
+ if (process.env.NODE_ENV !== 'production') {
1953
+ Object.freeze(emptyObject);
1954
+ }
1955
+
1956
+ module.exports = emptyObject;
1957
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
1958
+
1959
+ /***/ },
1960
+ /* 22 */
1961
+ /***/ function(module, exports, __webpack_require__) {
1962
+
1963
+ /**
1964
+ * Copyright 2013-present, Facebook, Inc.
1965
+ * All rights reserved.
1966
+ *
1967
+ * This source code is licensed under the BSD-style license found in the
1968
+ * LICENSE file in the root directory of this source tree. An additional grant
1969
+ * of patent rights can be found in the PATENTS file in the same directory.
1970
+ *
1971
+ */
1972
+
1973
+ 'use strict';
1974
+
1975
+ var _assign = __webpack_require__(5);
1976
+
1977
+ var ReactComponent = __webpack_require__(19);
1978
+ var ReactNoopUpdateQueue = __webpack_require__(20);
1979
+
1980
+ var emptyObject = __webpack_require__(21);
1981
+
1982
+ /**
1983
+ * Base class helpers for the updating state of a component.
1984
+ */
1985
+ function ReactPureComponent(props, context, updater) {
1986
+ // Duplicated from ReactComponent.
1987
+ this.props = props;
1988
+ this.context = context;
1989
+ this.refs = emptyObject;
1990
+ // We initialize the default updater but the real one gets injected by the
1991
+ // renderer.
1992
+ this.updater = updater || ReactNoopUpdateQueue;
1993
+ }
1994
+
1995
+ function ComponentDummy() {}
1996
+ ComponentDummy.prototype = ReactComponent.prototype;
1997
+ ReactPureComponent.prototype = new ComponentDummy();
1998
+ ReactPureComponent.prototype.constructor = ReactPureComponent;
1999
+ // Avoid an extra prototype jump for these methods.
2000
+ _assign(ReactPureComponent.prototype, ReactComponent.prototype);
2001
+ ReactPureComponent.prototype.isPureReactComponent = true;
2002
+
2003
+ module.exports = ReactPureComponent;
2004
+
2005
+ /***/ },
2006
+ /* 23 */
2007
+ /***/ function(module, exports, __webpack_require__) {
2008
+
2009
+ /* WEBPACK VAR INJECTION */(function(process) {/**
2010
+ * Copyright 2013-present, Facebook, Inc.
2011
+ * All rights reserved.
2012
+ *
2013
+ * This source code is licensed under the BSD-style license found in the
2014
+ * LICENSE file in the root directory of this source tree. An additional grant
2015
+ * of patent rights can be found in the PATENTS file in the same directory.
2016
+ *
2017
+ */
2018
+
2019
+ 'use strict';
2020
+
2021
+ var _prodInvariant = __webpack_require__(8),
2022
+ _assign = __webpack_require__(5);
2023
+
2024
+ var ReactComponent = __webpack_require__(19);
2025
+ var ReactElement = __webpack_require__(10);
2026
+ var ReactPropTypeLocationNames = __webpack_require__(24);
2027
+ var ReactNoopUpdateQueue = __webpack_require__(20);
2028
+
2029
+ var emptyObject = __webpack_require__(21);
2030
+ var invariant = __webpack_require__(9);
2031
+ var warning = __webpack_require__(12);
2032
+
2033
+ var MIXINS_KEY = 'mixins';
2034
+
2035
+ // Helper function to allow the creation of anonymous functions which do not
2036
+ // have .name set to the name of the variable being assigned to.
2037
+ function identity(fn) {
2038
+ return fn;
2039
+ }
2040
+
2041
+ /**
2042
+ * Policies that describe methods in `ReactClassInterface`.
2043
+ */
2044
+
2045
+
2046
+ var injectedMixins = [];
2047
+
2048
+ /**
2049
+ * Composite components are higher-level components that compose other composite
2050
+ * or host components.
2051
+ *
2052
+ * To create a new type of `ReactClass`, pass a specification of
2053
+ * your new class to `React.createClass`. The only requirement of your class
2054
+ * specification is that you implement a `render` method.
2055
+ *
2056
+ * var MyComponent = React.createClass({
2057
+ * render: function() {
2058
+ * return <div>Hello World</div>;
2059
+ * }
2060
+ * });
2061
+ *
2062
+ * The class specification supports a specific protocol of methods that have
2063
+ * special meaning (e.g. `render`). See `ReactClassInterface` for
2064
+ * more the comprehensive protocol. Any other properties and methods in the
2065
+ * class specification will be available on the prototype.
2066
+ *
2067
+ * @interface ReactClassInterface
2068
+ * @internal
2069
+ */
2070
+ var ReactClassInterface = {
2071
+
2072
+ /**
2073
+ * An array of Mixin objects to include when defining your component.
2074
+ *
2075
+ * @type {array}
2076
+ * @optional
2077
+ */
2078
+ mixins: 'DEFINE_MANY',
2079
+
2080
+ /**
2081
+ * An object containing properties and methods that should be defined on
2082
+ * the component's constructor instead of its prototype (static methods).
2083
+ *
2084
+ * @type {object}
2085
+ * @optional
2086
+ */
2087
+ statics: 'DEFINE_MANY',
2088
+
2089
+ /**
2090
+ * Definition of prop types for this component.
2091
+ *
2092
+ * @type {object}
2093
+ * @optional
2094
+ */
2095
+ propTypes: 'DEFINE_MANY',
2096
+
2097
+ /**
2098
+ * Definition of context types for this component.
2099
+ *
2100
+ * @type {object}
2101
+ * @optional
2102
+ */
2103
+ contextTypes: 'DEFINE_MANY',
2104
+
2105
+ /**
2106
+ * Definition of context types this component sets for its children.
2107
+ *
2108
+ * @type {object}
2109
+ * @optional
2110
+ */
2111
+ childContextTypes: 'DEFINE_MANY',
2112
+
2113
+ // ==== Definition methods ====
2114
+
2115
+ /**
2116
+ * Invoked when the component is mounted. Values in the mapping will be set on
2117
+ * `this.props` if that prop is not specified (i.e. using an `in` check).
2118
+ *
2119
+ * This method is invoked before `getInitialState` and therefore cannot rely
2120
+ * on `this.state` or use `this.setState`.
2121
+ *
2122
+ * @return {object}
2123
+ * @optional
2124
+ */
2125
+ getDefaultProps: 'DEFINE_MANY_MERGED',
2126
+
2127
+ /**
2128
+ * Invoked once before the component is mounted. The return value will be used
2129
+ * as the initial value of `this.state`.
2130
+ *
2131
+ * getInitialState: function() {
2132
+ * return {
2133
+ * isOn: false,
2134
+ * fooBaz: new BazFoo()
2135
+ * }
2136
+ * }
2137
+ *
2138
+ * @return {object}
2139
+ * @optional
2140
+ */
2141
+ getInitialState: 'DEFINE_MANY_MERGED',
2142
+
2143
+ /**
2144
+ * @return {object}
2145
+ * @optional
2146
+ */
2147
+ getChildContext: 'DEFINE_MANY_MERGED',
2148
+
2149
+ /**
2150
+ * Uses props from `this.props` and state from `this.state` to render the
2151
+ * structure of the component.
2152
+ *
2153
+ * No guarantees are made about when or how often this method is invoked, so
2154
+ * it must not have side effects.
2155
+ *
2156
+ * render: function() {
2157
+ * var name = this.props.name;
2158
+ * return <div>Hello, {name}!</div>;
2159
+ * }
2160
+ *
2161
+ * @return {ReactComponent}
2162
+ * @nosideeffects
2163
+ * @required
2164
+ */
2165
+ render: 'DEFINE_ONCE',
2166
+
2167
+ // ==== Delegate methods ====
2168
+
2169
+ /**
2170
+ * Invoked when the component is initially created and about to be mounted.
2171
+ * This may have side effects, but any external subscriptions or data created
2172
+ * by this method must be cleaned up in `componentWillUnmount`.
2173
+ *
2174
+ * @optional
2175
+ */
2176
+ componentWillMount: 'DEFINE_MANY',
2177
+
2178
+ /**
2179
+ * Invoked when the component has been mounted and has a DOM representation.
2180
+ * However, there is no guarantee that the DOM node is in the document.
2181
+ *
2182
+ * Use this as an opportunity to operate on the DOM when the component has
2183
+ * been mounted (initialized and rendered) for the first time.
2184
+ *
2185
+ * @param {DOMElement} rootNode DOM element representing the component.
2186
+ * @optional
2187
+ */
2188
+ componentDidMount: 'DEFINE_MANY',
2189
+
2190
+ /**
2191
+ * Invoked before the component receives new props.
2192
+ *
2193
+ * Use this as an opportunity to react to a prop transition by updating the
2194
+ * state using `this.setState`. Current props are accessed via `this.props`.
2195
+ *
2196
+ * componentWillReceiveProps: function(nextProps, nextContext) {
2197
+ * this.setState({
2198
+ * likesIncreasing: nextProps.likeCount > this.props.likeCount
2199
+ * });
2200
+ * }
2201
+ *
2202
+ * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop
2203
+ * transition may cause a state change, but the opposite is not true. If you
2204
+ * need it, you are probably looking for `componentWillUpdate`.
2205
+ *
2206
+ * @param {object} nextProps
2207
+ * @optional
2208
+ */
2209
+ componentWillReceiveProps: 'DEFINE_MANY',
2210
+
2211
+ /**
2212
+ * Invoked while deciding if the component should be updated as a result of
2213
+ * receiving new props, state and/or context.
2214
+ *
2215
+ * Use this as an opportunity to `return false` when you're certain that the
2216
+ * transition to the new props/state/context will not require a component
2217
+ * update.
2218
+ *
2219
+ * shouldComponentUpdate: function(nextProps, nextState, nextContext) {
2220
+ * return !equal(nextProps, this.props) ||
2221
+ * !equal(nextState, this.state) ||
2222
+ * !equal(nextContext, this.context);
2223
+ * }
2224
+ *
2225
+ * @param {object} nextProps
2226
+ * @param {?object} nextState
2227
+ * @param {?object} nextContext
2228
+ * @return {boolean} True if the component should update.
2229
+ * @optional
2230
+ */
2231
+ shouldComponentUpdate: 'DEFINE_ONCE',
2232
+
2233
+ /**
2234
+ * Invoked when the component is about to update due to a transition from
2235
+ * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`
2236
+ * and `nextContext`.
2237
+ *
2238
+ * Use this as an opportunity to perform preparation before an update occurs.
2239
+ *
2240
+ * NOTE: You **cannot** use `this.setState()` in this method.
2241
+ *
2242
+ * @param {object} nextProps
2243
+ * @param {?object} nextState
2244
+ * @param {?object} nextContext
2245
+ * @param {ReactReconcileTransaction} transaction
2246
+ * @optional
2247
+ */
2248
+ componentWillUpdate: 'DEFINE_MANY',
2249
+
2250
+ /**
2251
+ * Invoked when the component's DOM representation has been updated.
2252
+ *
2253
+ * Use this as an opportunity to operate on the DOM when the component has
2254
+ * been updated.
2255
+ *
2256
+ * @param {object} prevProps
2257
+ * @param {?object} prevState
2258
+ * @param {?object} prevContext
2259
+ * @param {DOMElement} rootNode DOM element representing the component.
2260
+ * @optional
2261
+ */
2262
+ componentDidUpdate: 'DEFINE_MANY',
2263
+
2264
+ /**
2265
+ * Invoked when the component is about to be removed from its parent and have
2266
+ * its DOM representation destroyed.
2267
+ *
2268
+ * Use this as an opportunity to deallocate any external resources.
2269
+ *
2270
+ * NOTE: There is no `componentDidUnmount` since your component will have been
2271
+ * destroyed by that point.
2272
+ *
2273
+ * @optional
2274
+ */
2275
+ componentWillUnmount: 'DEFINE_MANY',
2276
+
2277
+ // ==== Advanced methods ====
2278
+
2279
+ /**
2280
+ * Updates the component's currently mounted DOM representation.
2281
+ *
2282
+ * By default, this implements React's rendering and reconciliation algorithm.
2283
+ * Sophisticated clients may wish to override this.
2284
+ *
2285
+ * @param {ReactReconcileTransaction} transaction
2286
+ * @internal
2287
+ * @overridable
2288
+ */
2289
+ updateComponent: 'OVERRIDE_BASE'
2290
+
2291
+ };
2292
+
2293
+ /**
2294
+ * Mapping from class specification keys to special processing functions.
2295
+ *
2296
+ * Although these are declared like instance properties in the specification
2297
+ * when defining classes using `React.createClass`, they are actually static
2298
+ * and are accessible on the constructor instead of the prototype. Despite
2299
+ * being static, they must be defined outside of the "statics" key under
2300
+ * which all other static methods are defined.
2301
+ */
2302
+ var RESERVED_SPEC_KEYS = {
2303
+ displayName: function (Constructor, displayName) {
2304
+ Constructor.displayName = displayName;
2305
+ },
2306
+ mixins: function (Constructor, mixins) {
2307
+ if (mixins) {
2308
+ for (var i = 0; i < mixins.length; i++) {
2309
+ mixSpecIntoComponent(Constructor, mixins[i]);
2310
+ }
2311
+ }
2312
+ },
2313
+ childContextTypes: function (Constructor, childContextTypes) {
2314
+ if (process.env.NODE_ENV !== 'production') {
2315
+ validateTypeDef(Constructor, childContextTypes, 'childContext');
2316
+ }
2317
+ Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);
2318
+ },
2319
+ contextTypes: function (Constructor, contextTypes) {
2320
+ if (process.env.NODE_ENV !== 'production') {
2321
+ validateTypeDef(Constructor, contextTypes, 'context');
2322
+ }
2323
+ Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);
2324
+ },
2325
+ /**
2326
+ * Special case getDefaultProps which should move into statics but requires
2327
+ * automatic merging.
2328
+ */
2329
+ getDefaultProps: function (Constructor, getDefaultProps) {
2330
+ if (Constructor.getDefaultProps) {
2331
+ Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);
2332
+ } else {
2333
+ Constructor.getDefaultProps = getDefaultProps;
2334
+ }
2335
+ },
2336
+ propTypes: function (Constructor, propTypes) {
2337
+ if (process.env.NODE_ENV !== 'production') {
2338
+ validateTypeDef(Constructor, propTypes, 'prop');
2339
+ }
2340
+ Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);
2341
+ },
2342
+ statics: function (Constructor, statics) {
2343
+ mixStaticSpecIntoComponent(Constructor, statics);
2344
+ },
2345
+ autobind: function () {} };
2346
+
2347
+ function validateTypeDef(Constructor, typeDef, location) {
2348
+ for (var propName in typeDef) {
2349
+ if (typeDef.hasOwnProperty(propName)) {
2350
+ // use a warning instead of an invariant so components
2351
+ // don't show up in prod but only in __DEV__
2352
+ 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;
2353
+ }
2354
+ }
2355
+ }
2356
+
2357
+ function validateMethodOverride(isAlreadyDefined, name) {
2358
+ var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;
2359
+
2360
+ // Disallow overriding of base class methods unless explicitly allowed.
2361
+ if (ReactClassMixin.hasOwnProperty(name)) {
2362
+ !(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;
2363
+ }
2364
+
2365
+ // Disallow defining methods more than once unless explicitly allowed.
2366
+ if (isAlreadyDefined) {
2367
+ !(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;
2368
+ }
2369
+ }
2370
+
2371
+ /**
2372
+ * Mixin helper which handles policy validation and reserved
2373
+ * specification keys when building React classes.
2374
+ */
2375
+ function mixSpecIntoComponent(Constructor, spec) {
2376
+ if (!spec) {
2377
+ if (process.env.NODE_ENV !== 'production') {
2378
+ var typeofSpec = typeof spec;
2379
+ var isMixinValid = typeofSpec === 'object' && spec !== null;
2380
+
2381
+ 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;
2382
+ }
2383
+
2384
+ return;
2385
+ }
2386
+
2387
+ !(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;
2388
+ !!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;
2389
+
2390
+ var proto = Constructor.prototype;
2391
+ var autoBindPairs = proto.__reactAutoBindPairs;
2392
+
2393
+ // By handling mixins before any other properties, we ensure the same
2394
+ // chaining order is applied to methods with DEFINE_MANY policy, whether
2395
+ // mixins are listed before or after these methods in the spec.
2396
+ if (spec.hasOwnProperty(MIXINS_KEY)) {
2397
+ RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);
2398
+ }
2399
+
2400
+ for (var name in spec) {
2401
+ if (!spec.hasOwnProperty(name)) {
2402
+ continue;
2403
+ }
2404
+
2405
+ if (name === MIXINS_KEY) {
2406
+ // We have already handled mixins in a special case above.
2407
+ continue;
2408
+ }
2409
+
2410
+ var property = spec[name];
2411
+ var isAlreadyDefined = proto.hasOwnProperty(name);
2412
+ validateMethodOverride(isAlreadyDefined, name);
2413
+
2414
+ if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {
2415
+ RESERVED_SPEC_KEYS[name](Constructor, property);
2416
+ } else {
2417
+ // Setup methods on prototype:
2418
+ // The following member methods should not be automatically bound:
2419
+ // 1. Expected ReactClass methods (in the "interface").
2420
+ // 2. Overridden methods (that were mixed in).
2421
+ var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);
2422
+ var isFunction = typeof property === 'function';
2423
+ var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;
2424
+
2425
+ if (shouldAutoBind) {
2426
+ autoBindPairs.push(name, property);
2427
+ proto[name] = property;
2428
+ } else {
2429
+ if (isAlreadyDefined) {
2430
+ var specPolicy = ReactClassInterface[name];
2431
+
2432
+ // These cases should already be caught by validateMethodOverride.
2433
+ !(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;
2434
+
2435
+ // For methods which are defined more than once, call the existing
2436
+ // methods before calling the new property, merging if appropriate.
2437
+ if (specPolicy === 'DEFINE_MANY_MERGED') {
2438
+ proto[name] = createMergedResultFunction(proto[name], property);
2439
+ } else if (specPolicy === 'DEFINE_MANY') {
2440
+ proto[name] = createChainedFunction(proto[name], property);
2441
+ }
2442
+ } else {
2443
+ proto[name] = property;
2444
+ if (process.env.NODE_ENV !== 'production') {
2445
+ // Add verbose displayName to the function, which helps when looking
2446
+ // at profiling tools.
2447
+ if (typeof property === 'function' && spec.displayName) {
2448
+ proto[name].displayName = spec.displayName + '_' + name;
2449
+ }
2450
+ }
2451
+ }
2452
+ }
2453
+ }
2454
+ }
2455
+ }
2456
+
2457
+ function mixStaticSpecIntoComponent(Constructor, statics) {
2458
+ if (!statics) {
2459
+ return;
2460
+ }
2461
+ for (var name in statics) {
2462
+ var property = statics[name];
2463
+ if (!statics.hasOwnProperty(name)) {
2464
+ continue;
2465
+ }
2466
+
2467
+ var isReserved = name in RESERVED_SPEC_KEYS;
2468
+ !!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;
2469
+
2470
+ var isInherited = name in Constructor;
2471
+ !!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;
2472
+ Constructor[name] = property;
2473
+ }
2474
+ }
2475
+
2476
+ /**
2477
+ * Merge two objects, but throw if both contain the same key.
2478
+ *
2479
+ * @param {object} one The first object, which is mutated.
2480
+ * @param {object} two The second object
2481
+ * @return {object} one after it has been mutated to contain everything in two.
2482
+ */
2483
+ function mergeIntoWithNoDuplicateKeys(one, two) {
2484
+ !(one && two && typeof one === 'object' && typeof two === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0;
2485
+
2486
+ for (var key in two) {
2487
+ if (two.hasOwnProperty(key)) {
2488
+ !(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;
2489
+ one[key] = two[key];
2490
+ }
2491
+ }
2492
+ return one;
2493
+ }
2494
+
2495
+ /**
2496
+ * Creates a function that invokes two functions and merges their return values.
2497
+ *
2498
+ * @param {function} one Function to invoke first.
2499
+ * @param {function} two Function to invoke second.
2500
+ * @return {function} Function that invokes the two argument functions.
2501
+ * @private
2502
+ */
2503
+ function createMergedResultFunction(one, two) {
2504
+ return function mergedResult() {
2505
+ var a = one.apply(this, arguments);
2506
+ var b = two.apply(this, arguments);
2507
+ if (a == null) {
2508
+ return b;
2509
+ } else if (b == null) {
2510
+ return a;
2511
+ }
2512
+ var c = {};
2513
+ mergeIntoWithNoDuplicateKeys(c, a);
2514
+ mergeIntoWithNoDuplicateKeys(c, b);
2515
+ return c;
2516
+ };
2517
+ }
2518
+
2519
+ /**
2520
+ * Creates a function that invokes two functions and ignores their return vales.
2521
+ *
2522
+ * @param {function} one Function to invoke first.
2523
+ * @param {function} two Function to invoke second.
2524
+ * @return {function} Function that invokes the two argument functions.
2525
+ * @private
2526
+ */
2527
+ function createChainedFunction(one, two) {
2528
+ return function chainedFunction() {
2529
+ one.apply(this, arguments);
2530
+ two.apply(this, arguments);
2531
+ };
2532
+ }
2533
+
2534
+ /**
2535
+ * Binds a method to the component.
2536
+ *
2537
+ * @param {object} component Component whose method is going to be bound.
2538
+ * @param {function} method Method to be bound.
2539
+ * @return {function} The bound method.
2540
+ */
2541
+ function bindAutoBindMethod(component, method) {
2542
+ var boundMethod = method.bind(component);
2543
+ if (process.env.NODE_ENV !== 'production') {
2544
+ boundMethod.__reactBoundContext = component;
2545
+ boundMethod.__reactBoundMethod = method;
2546
+ boundMethod.__reactBoundArguments = null;
2547
+ var componentName = component.constructor.displayName;
2548
+ var _bind = boundMethod.bind;
2549
+ boundMethod.bind = function (newThis) {
2550
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
2551
+ args[_key - 1] = arguments[_key];
2552
+ }
2553
+
2554
+ // User is trying to bind() an autobound method; we effectively will
2555
+ // ignore the value of "this" that the user is trying to use, so
2556
+ // let's warn.
2557
+ if (newThis !== component && newThis !== null) {
2558
+ process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0;
2559
+ } else if (!args.length) {
2560
+ 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;
2561
+ return boundMethod;
2562
+ }
2563
+ var reboundMethod = _bind.apply(boundMethod, arguments);
2564
+ reboundMethod.__reactBoundContext = component;
2565
+ reboundMethod.__reactBoundMethod = method;
2566
+ reboundMethod.__reactBoundArguments = args;
2567
+ return reboundMethod;
2568
+ };
2569
+ }
2570
+ return boundMethod;
2571
+ }
2572
+
2573
+ /**
2574
+ * Binds all auto-bound methods in a component.
2575
+ *
2576
+ * @param {object} component Component whose method is going to be bound.
2577
+ */
2578
+ function bindAutoBindMethods(component) {
2579
+ var pairs = component.__reactAutoBindPairs;
2580
+ for (var i = 0; i < pairs.length; i += 2) {
2581
+ var autoBindKey = pairs[i];
2582
+ var method = pairs[i + 1];
2583
+ component[autoBindKey] = bindAutoBindMethod(component, method);
2584
+ }
2585
+ }
2586
+
2587
+ /**
2588
+ * Add more to the ReactClass base class. These are all legacy features and
2589
+ * therefore not already part of the modern ReactComponent.
2590
+ */
2591
+ var ReactClassMixin = {
2592
+
2593
+ /**
2594
+ * TODO: This will be deprecated because state should always keep a consistent
2595
+ * type signature and the only use case for this, is to avoid that.
2596
+ */
2597
+ replaceState: function (newState, callback) {
2598
+ this.updater.enqueueReplaceState(this, newState);
2599
+ if (callback) {
2600
+ this.updater.enqueueCallback(this, callback, 'replaceState');
2601
+ }
2602
+ },
2603
+
2604
+ /**
2605
+ * Checks whether or not this composite component is mounted.
2606
+ * @return {boolean} True if mounted, false otherwise.
2607
+ * @protected
2608
+ * @final
2609
+ */
2610
+ isMounted: function () {
2611
+ return this.updater.isMounted(this);
2612
+ }
2613
+ };
2614
+
2615
+ var ReactClassComponent = function () {};
2616
+ _assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);
2617
+
2618
+ /**
2619
+ * Module for creating composite components.
2620
+ *
2621
+ * @class ReactClass
2622
+ */
2623
+ var ReactClass = {
2624
+
2625
+ /**
2626
+ * Creates a composite component class given a class specification.
2627
+ * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass
2628
+ *
2629
+ * @param {object} spec Class specification (which must define `render`).
2630
+ * @return {function} Component constructor function.
2631
+ * @public
2632
+ */
2633
+ createClass: function (spec) {
2634
+ // To keep our warnings more understandable, we'll use a little hack here to
2635
+ // ensure that Constructor.name !== 'Constructor'. This makes sure we don't
2636
+ // unnecessarily identify a class without displayName as 'Constructor'.
2637
+ var Constructor = identity(function (props, context, updater) {
2638
+ // This constructor gets overridden by mocks. The argument is used
2639
+ // by mocks to assert on what gets mounted.
2640
+
2641
+ if (process.env.NODE_ENV !== 'production') {
2642
+ 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;
2643
+ }
2644
+
2645
+ // Wire up auto-binding
2646
+ if (this.__reactAutoBindPairs.length) {
2647
+ bindAutoBindMethods(this);
2648
+ }
2649
+
2650
+ this.props = props;
2651
+ this.context = context;
2652
+ this.refs = emptyObject;
2653
+ this.updater = updater || ReactNoopUpdateQueue;
2654
+
2655
+ this.state = null;
2656
+
2657
+ // ReactClasses doesn't have constructors. Instead, they use the
2658
+ // getInitialState and componentWillMount methods for initialization.
2659
+
2660
+ var initialState = this.getInitialState ? this.getInitialState() : null;
2661
+ if (process.env.NODE_ENV !== 'production') {
2662
+ // We allow auto-mocks to proceed as if they're returning null.
2663
+ if (initialState === undefined && this.getInitialState._isMockFunction) {
2664
+ // This is probably bad practice. Consider warning here and
2665
+ // deprecating this convenience.
2666
+ initialState = null;
2667
+ }
2668
+ }
2669
+ !(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;
2670
+
2671
+ this.state = initialState;
2672
+ });
2673
+ Constructor.prototype = new ReactClassComponent();
2674
+ Constructor.prototype.constructor = Constructor;
2675
+ Constructor.prototype.__reactAutoBindPairs = [];
2676
+
2677
+ injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));
2678
+
2679
+ mixSpecIntoComponent(Constructor, spec);
2680
+
2681
+ // Initialize the defaultProps property after all mixins have been merged.
2682
+ if (Constructor.getDefaultProps) {
2683
+ Constructor.defaultProps = Constructor.getDefaultProps();
2684
+ }
2685
+
2686
+ if (process.env.NODE_ENV !== 'production') {
2687
+ // This is a tag to indicate that the use of these method names is ok,
2688
+ // since it's used with createClass. If it's not, then it's likely a
2689
+ // mistake so we'll warn you to use the static property, property
2690
+ // initializer or constructor respectively.
2691
+ if (Constructor.getDefaultProps) {
2692
+ Constructor.getDefaultProps.isReactClassApproved = {};
2693
+ }
2694
+ if (Constructor.prototype.getInitialState) {
2695
+ Constructor.prototype.getInitialState.isReactClassApproved = {};
2696
+ }
2697
+ }
2698
+
2699
+ !Constructor.prototype.render ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0;
2700
+
2701
+ if (process.env.NODE_ENV !== 'production') {
2702
+ 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;
2703
+ 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;
2704
+ }
2705
+
2706
+ // Reduce time spent doing lookups by setting these on the prototype.
2707
+ for (var methodName in ReactClassInterface) {
2708
+ if (!Constructor.prototype[methodName]) {
2709
+ Constructor.prototype[methodName] = null;
2710
+ }
2711
+ }
2712
+
2713
+ return Constructor;
2714
+ },
2715
+
2716
+ injection: {
2717
+ injectMixin: function (mixin) {
2718
+ injectedMixins.push(mixin);
2719
+ }
2720
+ }
2721
+
2722
+ };
2723
+
2724
+ module.exports = ReactClass;
2725
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
2726
+
2727
+ /***/ },
2728
+ /* 24 */
2729
+ /***/ function(module, exports, __webpack_require__) {
2730
+
2731
+ /* WEBPACK VAR INJECTION */(function(process) {/**
2732
+ * Copyright 2013-present, Facebook, Inc.
2733
+ * All rights reserved.
2734
+ *
2735
+ * This source code is licensed under the BSD-style license found in the
2736
+ * LICENSE file in the root directory of this source tree. An additional grant
2737
+ * of patent rights can be found in the PATENTS file in the same directory.
2738
+ *
2739
+ *
2740
+ */
2741
+
2742
+ 'use strict';
2743
+
2744
+ var ReactPropTypeLocationNames = {};
2745
+
2746
+ if (process.env.NODE_ENV !== 'production') {
2747
+ ReactPropTypeLocationNames = {
2748
+ prop: 'prop',
2749
+ context: 'context',
2750
+ childContext: 'child context'
2751
+ };
2752
+ }
2753
+
2754
+ module.exports = ReactPropTypeLocationNames;
2755
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
2756
+
2757
+ /***/ },
2758
+ /* 25 */
2759
+ /***/ function(module, exports, __webpack_require__) {
2760
+
2761
+ /* WEBPACK VAR INJECTION */(function(process) {/**
2762
+ * Copyright 2013-present, Facebook, Inc.
2763
+ * All rights reserved.
2764
+ *
2765
+ * This source code is licensed under the BSD-style license found in the
2766
+ * LICENSE file in the root directory of this source tree. An additional grant
2767
+ * of patent rights can be found in the PATENTS file in the same directory.
2768
+ *
2769
+ */
2770
+
2771
+ 'use strict';
2772
+
2773
+ var ReactElement = __webpack_require__(10);
2774
+
2775
+ /**
2776
+ * Create a factory that creates HTML tag elements.
2777
+ *
2778
+ * @private
2779
+ */
2780
+ var createDOMFactory = ReactElement.createFactory;
2781
+ if (process.env.NODE_ENV !== 'production') {
2782
+ var ReactElementValidator = __webpack_require__(26);
2783
+ createDOMFactory = ReactElementValidator.createFactory;
2784
+ }
2785
+
2786
+ /**
2787
+ * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.
2788
+ * This is also accessible via `React.DOM`.
2789
+ *
2790
+ * @public
2791
+ */
2792
+ var ReactDOMFactories = {
2793
+ a: createDOMFactory('a'),
2794
+ abbr: createDOMFactory('abbr'),
2795
+ address: createDOMFactory('address'),
2796
+ area: createDOMFactory('area'),
2797
+ article: createDOMFactory('article'),
2798
+ aside: createDOMFactory('aside'),
2799
+ audio: createDOMFactory('audio'),
2800
+ b: createDOMFactory('b'),
2801
+ base: createDOMFactory('base'),
2802
+ bdi: createDOMFactory('bdi'),
2803
+ bdo: createDOMFactory('bdo'),
2804
+ big: createDOMFactory('big'),
2805
+ blockquote: createDOMFactory('blockquote'),
2806
+ body: createDOMFactory('body'),
2807
+ br: createDOMFactory('br'),
2808
+ button: createDOMFactory('button'),
2809
+ canvas: createDOMFactory('canvas'),
2810
+ caption: createDOMFactory('caption'),
2811
+ cite: createDOMFactory('cite'),
2812
+ code: createDOMFactory('code'),
2813
+ col: createDOMFactory('col'),
2814
+ colgroup: createDOMFactory('colgroup'),
2815
+ data: createDOMFactory('data'),
2816
+ datalist: createDOMFactory('datalist'),
2817
+ dd: createDOMFactory('dd'),
2818
+ del: createDOMFactory('del'),
2819
+ details: createDOMFactory('details'),
2820
+ dfn: createDOMFactory('dfn'),
2821
+ dialog: createDOMFactory('dialog'),
2822
+ div: createDOMFactory('div'),
2823
+ dl: createDOMFactory('dl'),
2824
+ dt: createDOMFactory('dt'),
2825
+ em: createDOMFactory('em'),
2826
+ embed: createDOMFactory('embed'),
2827
+ fieldset: createDOMFactory('fieldset'),
2828
+ figcaption: createDOMFactory('figcaption'),
2829
+ figure: createDOMFactory('figure'),
2830
+ footer: createDOMFactory('footer'),
2831
+ form: createDOMFactory('form'),
2832
+ h1: createDOMFactory('h1'),
2833
+ h2: createDOMFactory('h2'),
2834
+ h3: createDOMFactory('h3'),
2835
+ h4: createDOMFactory('h4'),
2836
+ h5: createDOMFactory('h5'),
2837
+ h6: createDOMFactory('h6'),
2838
+ head: createDOMFactory('head'),
2839
+ header: createDOMFactory('header'),
2840
+ hgroup: createDOMFactory('hgroup'),
2841
+ hr: createDOMFactory('hr'),
2842
+ html: createDOMFactory('html'),
2843
+ i: createDOMFactory('i'),
2844
+ iframe: createDOMFactory('iframe'),
2845
+ img: createDOMFactory('img'),
2846
+ input: createDOMFactory('input'),
2847
+ ins: createDOMFactory('ins'),
2848
+ kbd: createDOMFactory('kbd'),
2849
+ keygen: createDOMFactory('keygen'),
2850
+ label: createDOMFactory('label'),
2851
+ legend: createDOMFactory('legend'),
2852
+ li: createDOMFactory('li'),
2853
+ link: createDOMFactory('link'),
2854
+ main: createDOMFactory('main'),
2855
+ map: createDOMFactory('map'),
2856
+ mark: createDOMFactory('mark'),
2857
+ menu: createDOMFactory('menu'),
2858
+ menuitem: createDOMFactory('menuitem'),
2859
+ meta: createDOMFactory('meta'),
2860
+ meter: createDOMFactory('meter'),
2861
+ nav: createDOMFactory('nav'),
2862
+ noscript: createDOMFactory('noscript'),
2863
+ object: createDOMFactory('object'),
2864
+ ol: createDOMFactory('ol'),
2865
+ optgroup: createDOMFactory('optgroup'),
2866
+ option: createDOMFactory('option'),
2867
+ output: createDOMFactory('output'),
2868
+ p: createDOMFactory('p'),
2869
+ param: createDOMFactory('param'),
2870
+ picture: createDOMFactory('picture'),
2871
+ pre: createDOMFactory('pre'),
2872
+ progress: createDOMFactory('progress'),
2873
+ q: createDOMFactory('q'),
2874
+ rp: createDOMFactory('rp'),
2875
+ rt: createDOMFactory('rt'),
2876
+ ruby: createDOMFactory('ruby'),
2877
+ s: createDOMFactory('s'),
2878
+ samp: createDOMFactory('samp'),
2879
+ script: createDOMFactory('script'),
2880
+ section: createDOMFactory('section'),
2881
+ select: createDOMFactory('select'),
2882
+ small: createDOMFactory('small'),
2883
+ source: createDOMFactory('source'),
2884
+ span: createDOMFactory('span'),
2885
+ strong: createDOMFactory('strong'),
2886
+ style: createDOMFactory('style'),
2887
+ sub: createDOMFactory('sub'),
2888
+ summary: createDOMFactory('summary'),
2889
+ sup: createDOMFactory('sup'),
2890
+ table: createDOMFactory('table'),
2891
+ tbody: createDOMFactory('tbody'),
2892
+ td: createDOMFactory('td'),
2893
+ textarea: createDOMFactory('textarea'),
2894
+ tfoot: createDOMFactory('tfoot'),
2895
+ th: createDOMFactory('th'),
2896
+ thead: createDOMFactory('thead'),
2897
+ time: createDOMFactory('time'),
2898
+ title: createDOMFactory('title'),
2899
+ tr: createDOMFactory('tr'),
2900
+ track: createDOMFactory('track'),
2901
+ u: createDOMFactory('u'),
2902
+ ul: createDOMFactory('ul'),
2903
+ 'var': createDOMFactory('var'),
2904
+ video: createDOMFactory('video'),
2905
+ wbr: createDOMFactory('wbr'),
2906
+
2907
+ // SVG
2908
+ circle: createDOMFactory('circle'),
2909
+ clipPath: createDOMFactory('clipPath'),
2910
+ defs: createDOMFactory('defs'),
2911
+ ellipse: createDOMFactory('ellipse'),
2912
+ g: createDOMFactory('g'),
2913
+ image: createDOMFactory('image'),
2914
+ line: createDOMFactory('line'),
2915
+ linearGradient: createDOMFactory('linearGradient'),
2916
+ mask: createDOMFactory('mask'),
2917
+ path: createDOMFactory('path'),
2918
+ pattern: createDOMFactory('pattern'),
2919
+ polygon: createDOMFactory('polygon'),
2920
+ polyline: createDOMFactory('polyline'),
2921
+ radialGradient: createDOMFactory('radialGradient'),
2922
+ rect: createDOMFactory('rect'),
2923
+ stop: createDOMFactory('stop'),
2924
+ svg: createDOMFactory('svg'),
2925
+ text: createDOMFactory('text'),
2926
+ tspan: createDOMFactory('tspan')
2927
+ };
2928
+
2929
+ module.exports = ReactDOMFactories;
2930
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
2931
+
2932
+ /***/ },
2933
+ /* 26 */
2934
+ /***/ function(module, exports, __webpack_require__) {
2935
+
2936
+ /* WEBPACK VAR INJECTION */(function(process) {/**
2937
+ * Copyright 2014-present, Facebook, Inc.
2938
+ * All rights reserved.
2939
+ *
2940
+ * This source code is licensed under the BSD-style license found in the
2941
+ * LICENSE file in the root directory of this source tree. An additional grant
2942
+ * of patent rights can be found in the PATENTS file in the same directory.
2943
+ *
2944
+ */
2945
+
2946
+ /**
2947
+ * ReactElementValidator provides a wrapper around a element factory
2948
+ * which validates the props passed to the element. This is intended to be
2949
+ * used only in DEV and could be replaced by a static type checker for languages
2950
+ * that support it.
2951
+ */
2952
+
2953
+ 'use strict';
2954
+
2955
+ var ReactCurrentOwner = __webpack_require__(11);
2956
+ var ReactComponentTreeHook = __webpack_require__(27);
2957
+ var ReactElement = __webpack_require__(10);
2958
+
2959
+ var checkReactTypeSpec = __webpack_require__(28);
2960
+
2961
+ var canDefineProperty = __webpack_require__(14);
2962
+ var getIteratorFn = __webpack_require__(17);
2963
+ var warning = __webpack_require__(12);
2964
+
2965
+ function getDeclarationErrorAddendum() {
2966
+ if (ReactCurrentOwner.current) {
2967
+ var name = ReactCurrentOwner.current.getName();
2968
+ if (name) {
2969
+ return ' Check the render method of `' + name + '`.';
2970
+ }
2971
+ }
2972
+ return '';
2973
+ }
2974
+
2975
+ /**
2976
+ * Warn if there's no key explicitly set on dynamic arrays of children or
2977
+ * object keys are not valid. This allows us to keep track of children between
2978
+ * updates.
2979
+ */
2980
+ var ownerHasKeyUseWarning = {};
2981
+
2982
+ function getCurrentComponentErrorInfo(parentType) {
2983
+ var info = getDeclarationErrorAddendum();
2984
+
2985
+ if (!info) {
2986
+ var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;
2987
+ if (parentName) {
2988
+ info = ' Check the top-level render call using <' + parentName + '>.';
2989
+ }
2990
+ }
2991
+ return info;
2992
+ }
2993
+
2994
+ /**
2995
+ * Warn if the element doesn't have an explicit key assigned to it.
2996
+ * This element is in an array. The array could grow and shrink or be
2997
+ * reordered. All children that haven't already been validated are required to
2998
+ * have a "key" property assigned to it. Error statuses are cached so a warning
2999
+ * will only be shown once.
3000
+ *
3001
+ * @internal
3002
+ * @param {ReactElement} element Element that requires a key.
3003
+ * @param {*} parentType element's parent's type.
3004
+ */
3005
+ function validateExplicitKey(element, parentType) {
3006
+ if (!element._store || element._store.validated || element.key != null) {
3007
+ return;
3008
+ }
3009
+ element._store.validated = true;
3010
+
3011
+ var memoizer = ownerHasKeyUseWarning.uniqueKey || (ownerHasKeyUseWarning.uniqueKey = {});
3012
+
3013
+ var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
3014
+ if (memoizer[currentComponentErrorInfo]) {
3015
+ return;
3016
+ }
3017
+ memoizer[currentComponentErrorInfo] = true;
3018
+
3019
+ // Usually the current owner is the offender, but if it accepts children as a
3020
+ // property, it may be the creator of the child that's responsible for
3021
+ // assigning it a key.
3022
+ var childOwner = '';
3023
+ if (element && element._owner && element._owner !== ReactCurrentOwner.current) {
3024
+ // Give the component that originally created this child.
3025
+ childOwner = ' It was passed a child from ' + element._owner.getName() + '.';
3026
+ }
3027
+
3028
+ 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;
3029
+ }
3030
+
3031
+ /**
3032
+ * Ensure that every element either is passed in a static location, in an
3033
+ * array with an explicit keys property defined, or in an object literal
3034
+ * with valid key property.
3035
+ *
3036
+ * @internal
3037
+ * @param {ReactNode} node Statically passed child of any type.
3038
+ * @param {*} parentType node's parent's type.
3039
+ */
3040
+ function validateChildKeys(node, parentType) {
3041
+ if (typeof node !== 'object') {
3042
+ return;
3043
+ }
3044
+ if (Array.isArray(node)) {
3045
+ for (var i = 0; i < node.length; i++) {
3046
+ var child = node[i];
3047
+ if (ReactElement.isValidElement(child)) {
3048
+ validateExplicitKey(child, parentType);
3049
+ }
3050
+ }
3051
+ } else if (ReactElement.isValidElement(node)) {
3052
+ // This element was passed in a valid location.
3053
+ if (node._store) {
3054
+ node._store.validated = true;
3055
+ }
3056
+ } else if (node) {
3057
+ var iteratorFn = getIteratorFn(node);
3058
+ // Entry iterators provide implicit keys.
3059
+ if (iteratorFn) {
3060
+ if (iteratorFn !== node.entries) {
3061
+ var iterator = iteratorFn.call(node);
3062
+ var step;
3063
+ while (!(step = iterator.next()).done) {
3064
+ if (ReactElement.isValidElement(step.value)) {
3065
+ validateExplicitKey(step.value, parentType);
3066
+ }
3067
+ }
3068
+ }
3069
+ }
3070
+ }
3071
+ }
3072
+
3073
+ /**
3074
+ * Given an element, validate that its props follow the propTypes definition,
3075
+ * provided by the type.
3076
+ *
3077
+ * @param {ReactElement} element
3078
+ */
3079
+ function validatePropTypes(element) {
3080
+ var componentClass = element.type;
3081
+ if (typeof componentClass !== 'function') {
3082
+ return;
3083
+ }
3084
+ var name = componentClass.displayName || componentClass.name;
3085
+ if (componentClass.propTypes) {
3086
+ checkReactTypeSpec(componentClass.propTypes, element.props, 'prop', name, element, null);
3087
+ }
3088
+ if (typeof componentClass.getDefaultProps === 'function') {
3089
+ 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;
3090
+ }
3091
+ }
3092
+
3093
+ var ReactElementValidator = {
3094
+
3095
+ createElement: function (type, props, children) {
3096
+ var validType = typeof type === 'string' || typeof type === 'function';
3097
+ // We warn in this case but don't throw. We expect the element creation to
3098
+ // succeed and there will likely be errors in render.
3099
+ if (!validType) {
3100
+ process.env.NODE_ENV !== 'production' ? warning(false, 'React.createElement: type should not be null, undefined, boolean, or ' + 'number. It should be a string (for DOM elements) or a ReactClass ' + '(for composite components).%s', getDeclarationErrorAddendum()) : void 0;
3101
+ }
3102
+
3103
+ var element = ReactElement.createElement.apply(this, arguments);
3104
+
3105
+ // The result can be nullish if a mock or a custom function is used.
3106
+ // TODO: Drop this when these are no longer allowed as the type argument.
3107
+ if (element == null) {
3108
+ return element;
3109
+ }
3110
+
3111
+ // Skip key warning if the type isn't valid since our key validation logic
3112
+ // doesn't expect a non-string/function type and can throw confusing errors.
3113
+ // We don't want exception behavior to differ between dev and prod.
3114
+ // (Rendering will throw with a helpful message and as soon as the type is
3115
+ // fixed, the key warnings will appear.)
3116
+ if (validType) {
3117
+ for (var i = 2; i < arguments.length; i++) {
3118
+ validateChildKeys(arguments[i], type);
3119
+ }
3120
+ }
3121
+
3122
+ validatePropTypes(element);
3123
+
3124
+ return element;
3125
+ },
3126
+
3127
+ createFactory: function (type) {
3128
+ var validatedFactory = ReactElementValidator.createElement.bind(null, type);
3129
+ // Legacy hook TODO: Warn if this is accessed
3130
+ validatedFactory.type = type;
3131
+
3132
+ if (process.env.NODE_ENV !== 'production') {
3133
+ if (canDefineProperty) {
3134
+ Object.defineProperty(validatedFactory, 'type', {
3135
+ enumerable: false,
3136
+ get: function () {
3137
+ process.env.NODE_ENV !== 'production' ? warning(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.') : void 0;
3138
+ Object.defineProperty(this, 'type', {
3139
+ value: type
3140
+ });
3141
+ return type;
3142
+ }
3143
+ });
3144
+ }
3145
+ }
3146
+
3147
+ return validatedFactory;
3148
+ },
3149
+
3150
+ cloneElement: function (element, props, children) {
3151
+ var newElement = ReactElement.cloneElement.apply(this, arguments);
3152
+ for (var i = 2; i < arguments.length; i++) {
3153
+ validateChildKeys(arguments[i], newElement.type);
3154
+ }
3155
+ validatePropTypes(newElement);
3156
+ return newElement;
3157
+ }
3158
+
3159
+ };
3160
+
3161
+ module.exports = ReactElementValidator;
3162
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
3163
+
3164
+ /***/ },
3165
+ /* 27 */
3166
+ /***/ function(module, exports, __webpack_require__) {
3167
+
3168
+ /* WEBPACK VAR INJECTION */(function(process) {/**
3169
+ * Copyright 2016-present, Facebook, Inc.
3170
+ * All rights reserved.
3171
+ *
3172
+ * This source code is licensed under the BSD-style license found in the
3173
+ * LICENSE file in the root directory of this source tree. An additional grant
3174
+ * of patent rights can be found in the PATENTS file in the same directory.
3175
+ *
3176
+ *
3177
+ */
3178
+
3179
+ 'use strict';
3180
+
3181
+ var _prodInvariant = __webpack_require__(8);
3182
+
3183
+ var ReactCurrentOwner = __webpack_require__(11);
3184
+
3185
+ var invariant = __webpack_require__(9);
3186
+ var warning = __webpack_require__(12);
3187
+
3188
+ function isNative(fn) {
3189
+ // Based on isNative() from Lodash
3190
+ var funcToString = Function.prototype.toString;
3191
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
3192
+ var reIsNative = RegExp('^' + funcToString
3193
+ // Take an example native function source for comparison
3194
+ .call(hasOwnProperty)
3195
+ // Strip regex characters so we can use it for regex
3196
+ .replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
3197
+ // Remove hasOwnProperty from the template to make it generic
3198
+ .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$');
3199
+ try {
3200
+ var source = funcToString.call(fn);
3201
+ return reIsNative.test(source);
3202
+ } catch (err) {
3203
+ return false;
3204
+ }
3205
+ }
3206
+
3207
+ var canUseCollections =
3208
+ // Array.from
3209
+ typeof Array.from === 'function' &&
3210
+ // Map
3211
+ typeof Map === 'function' && isNative(Map) &&
3212
+ // Map.prototype.keys
3213
+ Map.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&
3214
+ // Set
3215
+ typeof Set === 'function' && isNative(Set) &&
3216
+ // Set.prototype.keys
3217
+ Set.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);
3218
+
3219
+ var setItem;
3220
+ var getItem;
3221
+ var removeItem;
3222
+ var getItemIDs;
3223
+ var addRoot;
3224
+ var removeRoot;
3225
+ var getRootIDs;
3226
+
3227
+ if (canUseCollections) {
3228
+ var itemMap = new Map();
3229
+ var rootIDSet = new Set();
3230
+
3231
+ setItem = function (id, item) {
3232
+ itemMap.set(id, item);
3233
+ };
3234
+ getItem = function (id) {
3235
+ return itemMap.get(id);
3236
+ };
3237
+ removeItem = function (id) {
3238
+ itemMap['delete'](id);
3239
+ };
3240
+ getItemIDs = function () {
3241
+ return Array.from(itemMap.keys());
3242
+ };
3243
+
3244
+ addRoot = function (id) {
3245
+ rootIDSet.add(id);
3246
+ };
3247
+ removeRoot = function (id) {
3248
+ rootIDSet['delete'](id);
3249
+ };
3250
+ getRootIDs = function () {
3251
+ return Array.from(rootIDSet.keys());
3252
+ };
3253
+ } else {
3254
+ var itemByKey = {};
3255
+ var rootByKey = {};
3256
+
3257
+ // Use non-numeric keys to prevent V8 performance issues:
3258
+ // https://github.com/facebook/react/pull/7232
3259
+ var getKeyFromID = function (id) {
3260
+ return '.' + id;
3261
+ };
3262
+ var getIDFromKey = function (key) {
3263
+ return parseInt(key.substr(1), 10);
3264
+ };
3265
+
3266
+ setItem = function (id, item) {
3267
+ var key = getKeyFromID(id);
3268
+ itemByKey[key] = item;
3269
+ };
3270
+ getItem = function (id) {
3271
+ var key = getKeyFromID(id);
3272
+ return itemByKey[key];
3273
+ };
3274
+ removeItem = function (id) {
3275
+ var key = getKeyFromID(id);
3276
+ delete itemByKey[key];
3277
+ };
3278
+ getItemIDs = function () {
3279
+ return Object.keys(itemByKey).map(getIDFromKey);
3280
+ };
3281
+
3282
+ addRoot = function (id) {
3283
+ var key = getKeyFromID(id);
3284
+ rootByKey[key] = true;
3285
+ };
3286
+ removeRoot = function (id) {
3287
+ var key = getKeyFromID(id);
3288
+ delete rootByKey[key];
3289
+ };
3290
+ getRootIDs = function () {
3291
+ return Object.keys(rootByKey).map(getIDFromKey);
3292
+ };
3293
+ }
3294
+
3295
+ var unmountedIDs = [];
3296
+
3297
+ function purgeDeep(id) {
3298
+ var item = getItem(id);
3299
+ if (item) {
3300
+ var childIDs = item.childIDs;
3301
+
3302
+ removeItem(id);
3303
+ childIDs.forEach(purgeDeep);
3304
+ }
3305
+ }
3306
+
3307
+ function describeComponentFrame(name, source, ownerName) {
3308
+ return '\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');
3309
+ }
3310
+
3311
+ function getDisplayName(element) {
3312
+ if (element == null) {
3313
+ return '#empty';
3314
+ } else if (typeof element === 'string' || typeof element === 'number') {
3315
+ return '#text';
3316
+ } else if (typeof element.type === 'string') {
3317
+ return element.type;
3318
+ } else {
3319
+ return element.type.displayName || element.type.name || 'Unknown';
3320
+ }
3321
+ }
3322
+
3323
+ function describeID(id) {
3324
+ var name = ReactComponentTreeHook.getDisplayName(id);
3325
+ var element = ReactComponentTreeHook.getElement(id);
3326
+ var ownerID = ReactComponentTreeHook.getOwnerID(id);
3327
+ var ownerName;
3328
+ if (ownerID) {
3329
+ ownerName = ReactComponentTreeHook.getDisplayName(ownerID);
3330
+ }
3331
+ process.env.NODE_ENV !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;
3332
+ return describeComponentFrame(name, element && element._source, ownerName);
3333
+ }
3334
+
3335
+ var ReactComponentTreeHook = {
3336
+ onSetChildren: function (id, nextChildIDs) {
3337
+ var item = getItem(id);
3338
+ !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;
3339
+ item.childIDs = nextChildIDs;
3340
+
3341
+ for (var i = 0; i < nextChildIDs.length; i++) {
3342
+ var nextChildID = nextChildIDs[i];
3343
+ var nextChild = getItem(nextChildID);
3344
+ !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;
3345
+ !(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;
3346
+ !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;
3347
+ if (nextChild.parentID == null) {
3348
+ nextChild.parentID = id;
3349
+ // TODO: This shouldn't be necessary but mounting a new root during in
3350
+ // componentWillMount currently causes not-yet-mounted components to
3351
+ // be purged from our tree data so their parent id is missing.
3352
+ }
3353
+ !(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;
3354
+ }
3355
+ },
3356
+ onBeforeMountComponent: function (id, element, parentID) {
3357
+ var item = {
3358
+ element: element,
3359
+ parentID: parentID,
3360
+ text: null,
3361
+ childIDs: [],
3362
+ isMounted: false,
3363
+ updateCount: 0
3364
+ };
3365
+ setItem(id, item);
3366
+ },
3367
+ onBeforeUpdateComponent: function (id, element) {
3368
+ var item = getItem(id);
3369
+ if (!item || !item.isMounted) {
3370
+ // We may end up here as a result of setState() in componentWillUnmount().
3371
+ // In this case, ignore the element.
3372
+ return;
3373
+ }
3374
+ item.element = element;
3375
+ },
3376
+ onMountComponent: function (id) {
3377
+ var item = getItem(id);
3378
+ !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;
3379
+ item.isMounted = true;
3380
+ var isRoot = item.parentID === 0;
3381
+ if (isRoot) {
3382
+ addRoot(id);
3383
+ }
3384
+ },
3385
+ onUpdateComponent: function (id) {
3386
+ var item = getItem(id);
3387
+ if (!item || !item.isMounted) {
3388
+ // We may end up here as a result of setState() in componentWillUnmount().
3389
+ // In this case, ignore the element.
3390
+ return;
3391
+ }
3392
+ item.updateCount++;
3393
+ },
3394
+ onUnmountComponent: function (id) {
3395
+ var item = getItem(id);
3396
+ if (item) {
3397
+ // We need to check if it exists.
3398
+ // `item` might not exist if it is inside an error boundary, and a sibling
3399
+ // error boundary child threw while mounting. Then this instance never
3400
+ // got a chance to mount, but it still gets an unmounting event during
3401
+ // the error boundary cleanup.
3402
+ item.isMounted = false;
3403
+ var isRoot = item.parentID === 0;
3404
+ if (isRoot) {
3405
+ removeRoot(id);
3406
+ }
3407
+ }
3408
+ unmountedIDs.push(id);
3409
+ },
3410
+ purgeUnmountedComponents: function () {
3411
+ if (ReactComponentTreeHook._preventPurging) {
3412
+ // Should only be used for testing.
3413
+ return;
3414
+ }
3415
+
3416
+ for (var i = 0; i < unmountedIDs.length; i++) {
3417
+ var id = unmountedIDs[i];
3418
+ purgeDeep(id);
3419
+ }
3420
+ unmountedIDs.length = 0;
3421
+ },
3422
+ isMounted: function (id) {
3423
+ var item = getItem(id);
3424
+ return item ? item.isMounted : false;
3425
+ },
3426
+ getCurrentStackAddendum: function (topElement) {
3427
+ var info = '';
3428
+ if (topElement) {
3429
+ var name = getDisplayName(topElement);
3430
+ var owner = topElement._owner;
3431
+ info += describeComponentFrame(name, topElement._source, owner && owner.getName());
3432
+ }
3433
+
3434
+ var currentOwner = ReactCurrentOwner.current;
3435
+ var id = currentOwner && currentOwner._debugID;
3436
+
3437
+ info += ReactComponentTreeHook.getStackAddendumByID(id);
3438
+ return info;
3439
+ },
3440
+ getStackAddendumByID: function (id) {
3441
+ var info = '';
3442
+ while (id) {
3443
+ info += describeID(id);
3444
+ id = ReactComponentTreeHook.getParentID(id);
3445
+ }
3446
+ return info;
3447
+ },
3448
+ getChildIDs: function (id) {
3449
+ var item = getItem(id);
3450
+ return item ? item.childIDs : [];
3451
+ },
3452
+ getDisplayName: function (id) {
3453
+ var element = ReactComponentTreeHook.getElement(id);
3454
+ if (!element) {
3455
+ return null;
3456
+ }
3457
+ return getDisplayName(element);
3458
+ },
3459
+ getElement: function (id) {
3460
+ var item = getItem(id);
3461
+ return item ? item.element : null;
3462
+ },
3463
+ getOwnerID: function (id) {
3464
+ var element = ReactComponentTreeHook.getElement(id);
3465
+ if (!element || !element._owner) {
3466
+ return null;
3467
+ }
3468
+ return element._owner._debugID;
3469
+ },
3470
+ getParentID: function (id) {
3471
+ var item = getItem(id);
3472
+ return item ? item.parentID : null;
3473
+ },
3474
+ getSource: function (id) {
3475
+ var item = getItem(id);
3476
+ var element = item ? item.element : null;
3477
+ var source = element != null ? element._source : null;
3478
+ return source;
3479
+ },
3480
+ getText: function (id) {
3481
+ var element = ReactComponentTreeHook.getElement(id);
3482
+ if (typeof element === 'string') {
3483
+ return element;
3484
+ } else if (typeof element === 'number') {
3485
+ return '' + element;
3486
+ } else {
3487
+ return null;
3488
+ }
3489
+ },
3490
+ getUpdateCount: function (id) {
3491
+ var item = getItem(id);
3492
+ return item ? item.updateCount : 0;
3493
+ },
3494
+
3495
+
3496
+ getRootIDs: getRootIDs,
3497
+ getRegisteredIDs: getItemIDs
3498
+ };
3499
+
3500
+ module.exports = ReactComponentTreeHook;
3501
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
3502
+
3503
+ /***/ },
3504
+ /* 28 */
3505
+ /***/ function(module, exports, __webpack_require__) {
3506
+
3507
+ /* WEBPACK VAR INJECTION */(function(process) {/**
3508
+ * Copyright 2013-present, Facebook, Inc.
3509
+ * All rights reserved.
3510
+ *
3511
+ * This source code is licensed under the BSD-style license found in the
3512
+ * LICENSE file in the root directory of this source tree. An additional grant
3513
+ * of patent rights can be found in the PATENTS file in the same directory.
3514
+ *
3515
+ */
3516
+
3517
+ 'use strict';
3518
+
3519
+ var _prodInvariant = __webpack_require__(8);
3520
+
3521
+ var ReactPropTypeLocationNames = __webpack_require__(24);
3522
+ var ReactPropTypesSecret = __webpack_require__(29);
3523
+
3524
+ var invariant = __webpack_require__(9);
3525
+ var warning = __webpack_require__(12);
3526
+
3527
+ var ReactComponentTreeHook;
3528
+
3529
+ if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {
3530
+ // Temporary hack.
3531
+ // Inline requires don't work well with Jest:
3532
+ // https://github.com/facebook/react/issues/7240
3533
+ // Remove the inline requires when we don't need them anymore:
3534
+ // https://github.com/facebook/react/pull/7178
3535
+ ReactComponentTreeHook = __webpack_require__(27);
3536
+ }
3537
+
3538
+ var loggedTypeFailures = {};
3539
+
3540
+ /**
3541
+ * Assert that the values match with the type specs.
3542
+ * Error messages are memorized and will only be shown once.
3543
+ *
3544
+ * @param {object} typeSpecs Map of name to a ReactPropType
3545
+ * @param {object} values Runtime values that need to be type-checked
3546
+ * @param {string} location e.g. "prop", "context", "child context"
3547
+ * @param {string} componentName Name of the component for error messages.
3548
+ * @param {?object} element The React element that is being type-checked
3549
+ * @param {?number} debugID The React component instance that is being type-checked
3550
+ * @private
3551
+ */
3552
+ function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) {
3553
+ for (var typeSpecName in typeSpecs) {
3554
+ if (typeSpecs.hasOwnProperty(typeSpecName)) {
3555
+ var error;
3556
+ // Prop type validation may throw. In case they do, we don't want to
3557
+ // fail the render phase where it didn't fail before. So we log it.
3558
+ // After these have been cleaned up, we'll let them throw.
3559
+ try {
3560
+ // This is intentionally an invariant that gets caught. It's the same
3561
+ // behavior as without this statement except with a better message.
3562
+ !(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;
3563
+ error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
3564
+ } catch (ex) {
3565
+ error = ex;
3566
+ }
3567
+ 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;
3568
+ if (error instanceof Error && !(error.message in loggedTypeFailures)) {
3569
+ // Only monitor this failure once because there tends to be a lot of the
3570
+ // same error.
3571
+ loggedTypeFailures[error.message] = true;
3572
+
3573
+ var componentStackInfo = '';
3574
+
3575
+ if (process.env.NODE_ENV !== 'production') {
3576
+ if (!ReactComponentTreeHook) {
3577
+ ReactComponentTreeHook = __webpack_require__(27);
3578
+ }
3579
+ if (debugID !== null) {
3580
+ componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID);
3581
+ } else if (element !== null) {
3582
+ componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element);
3583
+ }
3584
+ }
3585
+
3586
+ process.env.NODE_ENV !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0;
3587
+ }
3588
+ }
3589
+ }
3590
+ }
3591
+
3592
+ module.exports = checkReactTypeSpec;
3593
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
3594
+
3595
+ /***/ },
3596
+ /* 29 */
3597
+ /***/ function(module, exports) {
3598
+
3599
+ /**
3600
+ * Copyright 2013-present, Facebook, Inc.
3601
+ * All rights reserved.
3602
+ *
3603
+ * This source code is licensed under the BSD-style license found in the
3604
+ * LICENSE file in the root directory of this source tree. An additional grant
3605
+ * of patent rights can be found in the PATENTS file in the same directory.
3606
+ *
3607
+ *
3608
+ */
3609
+
3610
+ 'use strict';
3611
+
3612
+ var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
3613
+
3614
+ module.exports = ReactPropTypesSecret;
3615
+
3616
+ /***/ },
3617
+ /* 30 */
3618
+ /***/ function(module, exports, __webpack_require__) {
3619
+
3620
+ /* WEBPACK VAR INJECTION */(function(process) {/**
3621
+ * Copyright 2013-present, Facebook, Inc.
3622
+ * All rights reserved.
3623
+ *
3624
+ * This source code is licensed under the BSD-style license found in the
3625
+ * LICENSE file in the root directory of this source tree. An additional grant
3626
+ * of patent rights can be found in the PATENTS file in the same directory.
3627
+ *
3628
+ */
3629
+
3630
+ 'use strict';
3631
+
3632
+ var ReactElement = __webpack_require__(10);
3633
+ var ReactPropTypeLocationNames = __webpack_require__(24);
3634
+ var ReactPropTypesSecret = __webpack_require__(29);
3635
+
3636
+ var emptyFunction = __webpack_require__(13);
3637
+ var getIteratorFn = __webpack_require__(17);
3638
+ var warning = __webpack_require__(12);
3639
+
3640
+ /**
3641
+ * Collection of methods that allow declaration and validation of props that are
3642
+ * supplied to React components. Example usage:
3643
+ *
3644
+ * var Props = require('ReactPropTypes');
3645
+ * var MyArticle = React.createClass({
3646
+ * propTypes: {
3647
+ * // An optional string prop named "description".
3648
+ * description: Props.string,
3649
+ *
3650
+ * // A required enum prop named "category".
3651
+ * category: Props.oneOf(['News','Photos']).isRequired,
3652
+ *
3653
+ * // A prop named "dialog" that requires an instance of Dialog.
3654
+ * dialog: Props.instanceOf(Dialog).isRequired
3655
+ * },
3656
+ * render: function() { ... }
3657
+ * });
3658
+ *
3659
+ * A more formal specification of how these methods are used:
3660
+ *
3661
+ * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
3662
+ * decl := ReactPropTypes.{type}(.isRequired)?
3663
+ *
3664
+ * Each and every declaration produces a function with the same signature. This
3665
+ * allows the creation of custom validation functions. For example:
3666
+ *
3667
+ * var MyLink = React.createClass({
3668
+ * propTypes: {
3669
+ * // An optional string or URI prop named "href".
3670
+ * href: function(props, propName, componentName) {
3671
+ * var propValue = props[propName];
3672
+ * if (propValue != null && typeof propValue !== 'string' &&
3673
+ * !(propValue instanceof URI)) {
3674
+ * return new Error(
3675
+ * 'Expected a string or an URI for ' + propName + ' in ' +
3676
+ * componentName
3677
+ * );
3678
+ * }
3679
+ * }
3680
+ * },
3681
+ * render: function() {...}
3682
+ * });
3683
+ *
3684
+ * @internal
3685
+ */
3686
+
3687
+ var ANONYMOUS = '<<anonymous>>';
3688
+
3689
+ var ReactPropTypes = {
3690
+ array: createPrimitiveTypeChecker('array'),
3691
+ bool: createPrimitiveTypeChecker('boolean'),
3692
+ func: createPrimitiveTypeChecker('function'),
3693
+ number: createPrimitiveTypeChecker('number'),
3694
+ object: createPrimitiveTypeChecker('object'),
3695
+ string: createPrimitiveTypeChecker('string'),
3696
+ symbol: createPrimitiveTypeChecker('symbol'),
3697
+
3698
+ any: createAnyTypeChecker(),
3699
+ arrayOf: createArrayOfTypeChecker,
3700
+ element: createElementTypeChecker(),
3701
+ instanceOf: createInstanceTypeChecker,
3702
+ node: createNodeChecker(),
3703
+ objectOf: createObjectOfTypeChecker,
3704
+ oneOf: createEnumTypeChecker,
3705
+ oneOfType: createUnionTypeChecker,
3706
+ shape: createShapeTypeChecker
3707
+ };
3708
+
3709
+ /**
3710
+ * inlined Object.is polyfill to avoid requiring consumers ship their own
3711
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
3712
+ */
3713
+ /*eslint-disable no-self-compare*/
3714
+ function is(x, y) {
3715
+ // SameValue algorithm
3716
+ if (x === y) {
3717
+ // Steps 1-5, 7-10
3718
+ // Steps 6.b-6.e: +0 != -0
3719
+ return x !== 0 || 1 / x === 1 / y;
3720
+ } else {
3721
+ // Step 6.a: NaN == NaN
3722
+ return x !== x && y !== y;
3723
+ }
3724
+ }
3725
+ /*eslint-enable no-self-compare*/
3726
+
3727
+ /**
3728
+ * We use an Error-like object for backward compatibility as people may call
3729
+ * PropTypes directly and inspect their output. However we don't use real
3730
+ * Errors anymore. We don't inspect their stack anyway, and creating them
3731
+ * is prohibitively expensive if they are created too often, such as what
3732
+ * happens in oneOfType() for any type before the one that matched.
3733
+ */
3734
+ function PropTypeError(message) {
3735
+ this.message = message;
3736
+ this.stack = '';
3737
+ }
3738
+ // Make `instanceof Error` still work for returned errors.
3739
+ PropTypeError.prototype = Error.prototype;
3740
+
3741
+ function createChainableTypeChecker(validate) {
3742
+ if (process.env.NODE_ENV !== 'production') {
3743
+ var manualPropTypeCallCache = {};
3744
+ }
3745
+ function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
3746
+ componentName = componentName || ANONYMOUS;
3747
+ propFullName = propFullName || propName;
3748
+ if (process.env.NODE_ENV !== 'production') {
3749
+ if (secret !== ReactPropTypesSecret && typeof console !== 'undefined') {
3750
+ var cacheKey = componentName + ':' + propName;
3751
+ if (!manualPropTypeCallCache[cacheKey]) {
3752
+ process.env.NODE_ENV !== 'production' ? warning(false, 'You are manually calling a React.PropTypes validation ' + 'function for the `%s` prop on `%s`. This is deprecated ' + 'and will not work in production with the next major version. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', propFullName, componentName) : void 0;
3753
+ manualPropTypeCallCache[cacheKey] = true;
3754
+ }
3755
+ }
3756
+ }
3757
+ if (props[propName] == null) {
3758
+ var locationName = ReactPropTypeLocationNames[location];
3759
+ if (isRequired) {
3760
+ if (props[propName] === null) {
3761
+ return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
3762
+ }
3763
+ return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
3764
+ }
3765
+ return null;
3766
+ } else {
3767
+ return validate(props, propName, componentName, location, propFullName);
3768
+ }
3769
+ }
3770
+
3771
+ var chainedCheckType = checkType.bind(null, false);
3772
+ chainedCheckType.isRequired = checkType.bind(null, true);
3773
+
3774
+ return chainedCheckType;
3775
+ }
3776
+
3777
+ function createPrimitiveTypeChecker(expectedType) {
3778
+ function validate(props, propName, componentName, location, propFullName, secret) {
3779
+ var propValue = props[propName];
3780
+ var propType = getPropType(propValue);
3781
+ if (propType !== expectedType) {
3782
+ var locationName = ReactPropTypeLocationNames[location];
3783
+ // `propValue` being instance of, say, date/regexp, pass the 'object'
3784
+ // check, but we can offer a more precise error message here rather than
3785
+ // 'of type `object`'.
3786
+ var preciseType = getPreciseType(propValue);
3787
+
3788
+ return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
3789
+ }
3790
+ return null;
3791
+ }
3792
+ return createChainableTypeChecker(validate);
3793
+ }
3794
+
3795
+ function createAnyTypeChecker() {
3796
+ return createChainableTypeChecker(emptyFunction.thatReturns(null));
3797
+ }
3798
+
3799
+ function createArrayOfTypeChecker(typeChecker) {
3800
+ function validate(props, propName, componentName, location, propFullName) {
3801
+ if (typeof typeChecker !== 'function') {
3802
+ return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
3803
+ }
3804
+ var propValue = props[propName];
3805
+ if (!Array.isArray(propValue)) {
3806
+ var locationName = ReactPropTypeLocationNames[location];
3807
+ var propType = getPropType(propValue);
3808
+ return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
3809
+ }
3810
+ for (var i = 0; i < propValue.length; i++) {
3811
+ var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
3812
+ if (error instanceof Error) {
3813
+ return error;
3814
+ }
3815
+ }
3816
+ return null;
3817
+ }
3818
+ return createChainableTypeChecker(validate);
3819
+ }
3820
+
3821
+ function createElementTypeChecker() {
3822
+ function validate(props, propName, componentName, location, propFullName) {
3823
+ var propValue = props[propName];
3824
+ if (!ReactElement.isValidElement(propValue)) {
3825
+ var locationName = ReactPropTypeLocationNames[location];
3826
+ var propType = getPropType(propValue);
3827
+ return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
3828
+ }
3829
+ return null;
3830
+ }
3831
+ return createChainableTypeChecker(validate);
3832
+ }
3833
+
3834
+ function createInstanceTypeChecker(expectedClass) {
3835
+ function validate(props, propName, componentName, location, propFullName) {
3836
+ if (!(props[propName] instanceof expectedClass)) {
3837
+ var locationName = ReactPropTypeLocationNames[location];
3838
+ var expectedClassName = expectedClass.name || ANONYMOUS;
3839
+ var actualClassName = getClassName(props[propName]);
3840
+ return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
3841
+ }
3842
+ return null;
3843
+ }
3844
+ return createChainableTypeChecker(validate);
3845
+ }
3846
+
3847
+ function createEnumTypeChecker(expectedValues) {
3848
+ if (!Array.isArray(expectedValues)) {
3849
+ process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;
3850
+ return emptyFunction.thatReturnsNull;
3851
+ }
3852
+
3853
+ function validate(props, propName, componentName, location, propFullName) {
3854
+ var propValue = props[propName];
3855
+ for (var i = 0; i < expectedValues.length; i++) {
3856
+ if (is(propValue, expectedValues[i])) {
3857
+ return null;
3858
+ }
3859
+ }
3860
+
3861
+ var locationName = ReactPropTypeLocationNames[location];
3862
+ var valuesString = JSON.stringify(expectedValues);
3863
+ return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
3864
+ }
3865
+ return createChainableTypeChecker(validate);
3866
+ }
3867
+
3868
+ function createObjectOfTypeChecker(typeChecker) {
3869
+ function validate(props, propName, componentName, location, propFullName) {
3870
+ if (typeof typeChecker !== 'function') {
3871
+ return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
3872
+ }
3873
+ var propValue = props[propName];
3874
+ var propType = getPropType(propValue);
3875
+ if (propType !== 'object') {
3876
+ var locationName = ReactPropTypeLocationNames[location];
3877
+ return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
3878
+ }
3879
+ for (var key in propValue) {
3880
+ if (propValue.hasOwnProperty(key)) {
3881
+ var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
3882
+ if (error instanceof Error) {
3883
+ return error;
3884
+ }
3885
+ }
3886
+ }
3887
+ return null;
3888
+ }
3889
+ return createChainableTypeChecker(validate);
3890
+ }
3891
+
3892
+ function createUnionTypeChecker(arrayOfTypeCheckers) {
3893
+ if (!Array.isArray(arrayOfTypeCheckers)) {
3894
+ process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;
3895
+ return emptyFunction.thatReturnsNull;
3896
+ }
3897
+
3898
+ function validate(props, propName, componentName, location, propFullName) {
3899
+ for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
3900
+ var checker = arrayOfTypeCheckers[i];
3901
+ if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
3902
+ return null;
3903
+ }
3904
+ }
3905
+
3906
+ var locationName = ReactPropTypeLocationNames[location];
3907
+ return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
3908
+ }
3909
+ return createChainableTypeChecker(validate);
3910
+ }
3911
+
3912
+ function createNodeChecker() {
3913
+ function validate(props, propName, componentName, location, propFullName) {
3914
+ if (!isNode(props[propName])) {
3915
+ var locationName = ReactPropTypeLocationNames[location];
3916
+ return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
3917
+ }
3918
+ return null;
3919
+ }
3920
+ return createChainableTypeChecker(validate);
3921
+ }
3922
+
3923
+ function createShapeTypeChecker(shapeTypes) {
3924
+ function validate(props, propName, componentName, location, propFullName) {
3925
+ var propValue = props[propName];
3926
+ var propType = getPropType(propValue);
3927
+ if (propType !== 'object') {
3928
+ var locationName = ReactPropTypeLocationNames[location];
3929
+ return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
3930
+ }
3931
+ for (var key in shapeTypes) {
3932
+ var checker = shapeTypes[key];
3933
+ if (!checker) {
3934
+ continue;
3935
+ }
3936
+ var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
3937
+ if (error) {
3938
+ return error;
3939
+ }
3940
+ }
3941
+ return null;
3942
+ }
3943
+ return createChainableTypeChecker(validate);
3944
+ }
3945
+
3946
+ function isNode(propValue) {
3947
+ switch (typeof propValue) {
3948
+ case 'number':
3949
+ case 'string':
3950
+ case 'undefined':
3951
+ return true;
3952
+ case 'boolean':
3953
+ return !propValue;
3954
+ case 'object':
3955
+ if (Array.isArray(propValue)) {
3956
+ return propValue.every(isNode);
3957
+ }
3958
+ if (propValue === null || ReactElement.isValidElement(propValue)) {
3959
+ return true;
3960
+ }
3961
+
3962
+ var iteratorFn = getIteratorFn(propValue);
3963
+ if (iteratorFn) {
3964
+ var iterator = iteratorFn.call(propValue);
3965
+ var step;
3966
+ if (iteratorFn !== propValue.entries) {
3967
+ while (!(step = iterator.next()).done) {
3968
+ if (!isNode(step.value)) {
3969
+ return false;
3970
+ }
3971
+ }
3972
+ } else {
3973
+ // Iterator will provide entry [k,v] tuples rather than values.
3974
+ while (!(step = iterator.next()).done) {
3975
+ var entry = step.value;
3976
+ if (entry) {
3977
+ if (!isNode(entry[1])) {
3978
+ return false;
3979
+ }
3980
+ }
3981
+ }
3982
+ }
3983
+ } else {
3984
+ return false;
3985
+ }
3986
+
3987
+ return true;
3988
+ default:
3989
+ return false;
3990
+ }
3991
+ }
3992
+
3993
+ function isSymbol(propType, propValue) {
3994
+ // Native Symbol.
3995
+ if (propType === 'symbol') {
3996
+ return true;
3997
+ }
3998
+
3999
+ // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
4000
+ if (propValue['@@toStringTag'] === 'Symbol') {
4001
+ return true;
4002
+ }
4003
+
4004
+ // Fallback for non-spec compliant Symbols which are polyfilled.
4005
+ if (typeof Symbol === 'function' && propValue instanceof Symbol) {
4006
+ return true;
4007
+ }
4008
+
4009
+ return false;
4010
+ }
4011
+
4012
+ // Equivalent of `typeof` but with special handling for array and regexp.
4013
+ function getPropType(propValue) {
4014
+ var propType = typeof propValue;
4015
+ if (Array.isArray(propValue)) {
4016
+ return 'array';
4017
+ }
4018
+ if (propValue instanceof RegExp) {
4019
+ // Old webkits (at least until Android 4.0) return 'function' rather than
4020
+ // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
4021
+ // passes PropTypes.object.
4022
+ return 'object';
4023
+ }
4024
+ if (isSymbol(propType, propValue)) {
4025
+ return 'symbol';
4026
+ }
4027
+ return propType;
4028
+ }
4029
+
4030
+ // This handles more types than `getPropType`. Only used for error messages.
4031
+ // See `createPrimitiveTypeChecker`.
4032
+ function getPreciseType(propValue) {
4033
+ var propType = getPropType(propValue);
4034
+ if (propType === 'object') {
4035
+ if (propValue instanceof Date) {
4036
+ return 'date';
4037
+ } else if (propValue instanceof RegExp) {
4038
+ return 'regexp';
4039
+ }
4040
+ }
4041
+ return propType;
4042
+ }
4043
+
4044
+ // Returns class name of the object, if any.
4045
+ function getClassName(propValue) {
4046
+ if (!propValue.constructor || !propValue.constructor.name) {
4047
+ return ANONYMOUS;
4048
+ }
4049
+ return propValue.constructor.name;
4050
+ }
4051
+
4052
+ module.exports = ReactPropTypes;
4053
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
4054
+
4055
+ /***/ },
4056
+ /* 31 */
4057
+ /***/ function(module, exports) {
4058
+
4059
+ /**
4060
+ * Copyright 2013-present, Facebook, Inc.
4061
+ * All rights reserved.
4062
+ *
4063
+ * This source code is licensed under the BSD-style license found in the
4064
+ * LICENSE file in the root directory of this source tree. An additional grant
4065
+ * of patent rights can be found in the PATENTS file in the same directory.
4066
+ *
4067
+ */
4068
+
4069
+ 'use strict';
4070
+
4071
+ module.exports = '15.4.1';
4072
+
4073
+ /***/ },
4074
+ /* 32 */
4075
+ /***/ function(module, exports, __webpack_require__) {
4076
+
4077
+ /* WEBPACK VAR INJECTION */(function(process) {/**
4078
+ * Copyright 2013-present, Facebook, Inc.
4079
+ * All rights reserved.
4080
+ *
4081
+ * This source code is licensed under the BSD-style license found in the
4082
+ * LICENSE file in the root directory of this source tree. An additional grant
4083
+ * of patent rights can be found in the PATENTS file in the same directory.
4084
+ *
4085
+ */
4086
+ 'use strict';
4087
+
4088
+ var _prodInvariant = __webpack_require__(8);
4089
+
4090
+ var ReactElement = __webpack_require__(10);
4091
+
4092
+ var invariant = __webpack_require__(9);
4093
+
4094
+ /**
4095
+ * Returns the first child in a collection of children and verifies that there
4096
+ * is only one child in the collection.
4097
+ *
4098
+ * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only
4099
+ *
4100
+ * The current implementation of this function assumes that a single child gets
4101
+ * passed without a wrapper, but the purpose of this helper function is to
4102
+ * abstract away the particular structure of children.
4103
+ *
4104
+ * @param {?object} children Child collection structure.
4105
+ * @return {ReactElement} The first and only `ReactElement` contained in the
4106
+ * structure.
4107
+ */
4108
+ function onlyChild(children) {
4109
+ !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;
4110
+ return children;
4111
+ }
4112
+
4113
+ module.exports = onlyChild;
4114
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
4115
+
4116
+ /***/ },
4117
+ /* 33 */
4118
+ /***/ function(module, exports, __webpack_require__) {
4119
+
4120
+ 'use strict';
4121
+
4122
+ module.exports = __webpack_require__(34);
4123
+
4124
+
4125
+ /***/ },
4126
+ /* 34 */
4127
+ /***/ function(module, exports, __webpack_require__) {
4128
+
4129
+ /* WEBPACK VAR INJECTION */(function(process) {/**
4130
+ * Copyright 2013-present, Facebook, Inc.
4131
+ * All rights reserved.
4132
+ *
4133
+ * This source code is licensed under the BSD-style license found in the
4134
+ * LICENSE file in the root directory of this source tree. An additional grant
4135
+ * of patent rights can be found in the PATENTS file in the same directory.
4136
+ *
4137
+ */
4138
+
4139
+ /* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/
4140
+
4141
+ 'use strict';
4142
+
4143
+ var ReactDOMComponentTree = __webpack_require__(35);
4144
+ var ReactDefaultInjection = __webpack_require__(39);
4145
+ var ReactMount = __webpack_require__(168);
4146
+ var ReactReconciler = __webpack_require__(61);
4147
+ var ReactUpdates = __webpack_require__(58);
4148
+ var ReactVersion = __webpack_require__(173);
4149
+
4150
+ var findDOMNode = __webpack_require__(174);
4151
+ var getHostComponentFromComposite = __webpack_require__(175);
4152
+ var renderSubtreeIntoContainer = __webpack_require__(176);
4153
+ var warning = __webpack_require__(12);
4154
+
4155
+ ReactDefaultInjection.inject();
4156
+
4157
+ var ReactDOM = {
4158
+ findDOMNode: findDOMNode,
4159
+ render: ReactMount.render,
4160
+ unmountComponentAtNode: ReactMount.unmountComponentAtNode,
4161
+ version: ReactVersion,
4162
+
4163
+ /* eslint-disable camelcase */
4164
+ unstable_batchedUpdates: ReactUpdates.batchedUpdates,
4165
+ unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer
4166
+ };
4167
+
4168
+ // Inject the runtime into a devtools global hook regardless of browser.
4169
+ // Allows for debugging when the hook is injected on the page.
4170
+ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {
4171
+ __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({
4172
+ ComponentTree: {
4173
+ getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,
4174
+ getNodeFromInstance: function (inst) {
4175
+ // inst is an internal instance (but could be a composite)
4176
+ if (inst._renderedComponent) {
4177
+ inst = getHostComponentFromComposite(inst);
4178
+ }
4179
+ if (inst) {
4180
+ return ReactDOMComponentTree.getNodeFromInstance(inst);
4181
+ } else {
4182
+ return null;
4183
+ }
4184
+ }
4185
+ },
4186
+ Mount: ReactMount,
4187
+ Reconciler: ReactReconciler
4188
+ });
4189
+ }
4190
+
4191
+ if (process.env.NODE_ENV !== 'production') {
4192
+ var ExecutionEnvironment = __webpack_require__(49);
4193
+ if (ExecutionEnvironment.canUseDOM && window.top === window.self) {
4194
+
4195
+ // First check if devtools is not installed
4196
+ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {
4197
+ // If we're in Chrome or Firefox, provide a download link if not installed.
4198
+ if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {
4199
+ // Firefox does not have the issue with devtools loaded over file://
4200
+ var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;
4201
+ 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');
4202
+ }
4203
+ }
4204
+
4205
+ var testFunc = function testFn() {};
4206
+ 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;
4207
+
4208
+ // If we're in IE8, check to see if we are in compatibility mode and provide
4209
+ // information on preventing compatibility mode
4210
+ var ieCompatibilityMode = document.documentMode && document.documentMode < 8;
4211
+
4212
+ 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;
4213
+
4214
+ var expectedFeatures = [
4215
+ // shims
4216
+ Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];
4217
+
4218
+ for (var i = 0; i < expectedFeatures.length; i++) {
4219
+ if (!expectedFeatures[i]) {
4220
+ 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;
4221
+ break;
4222
+ }
4223
+ }
4224
+ }
4225
+ }
4226
+
4227
+ if (process.env.NODE_ENV !== 'production') {
4228
+ var ReactInstrumentation = __webpack_require__(64);
4229
+ var ReactDOMUnknownPropertyHook = __webpack_require__(177);
4230
+ var ReactDOMNullInputValuePropHook = __webpack_require__(178);
4231
+ var ReactDOMInvalidARIAHook = __webpack_require__(179);
4232
+
4233
+ ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);
4234
+ ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);
4235
+ ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);
4236
+ }
4237
+
4238
+ module.exports = ReactDOM;
4239
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
4240
+
4241
+ /***/ },
4242
+ /* 35 */
4243
+ /***/ function(module, exports, __webpack_require__) {
4244
+
4245
+ /* WEBPACK VAR INJECTION */(function(process) {/**
4246
+ * Copyright 2013-present, Facebook, Inc.
4247
+ * All rights reserved.
4248
+ *
4249
+ * This source code is licensed under the BSD-style license found in the
4250
+ * LICENSE file in the root directory of this source tree. An additional grant
4251
+ * of patent rights can be found in the PATENTS file in the same directory.
4252
+ *
4253
+ */
4254
+
4255
+ 'use strict';
4256
+
4257
+ var _prodInvariant = __webpack_require__(36);
4258
+
4259
+ var DOMProperty = __webpack_require__(37);
4260
+ var ReactDOMComponentFlags = __webpack_require__(38);
4261
+
4262
+ var invariant = __webpack_require__(9);
4263
+
4264
+ var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;
4265
+ var Flags = ReactDOMComponentFlags;
4266
+
4267
+ var internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);
4268
+
4269
+ /**
4270
+ * Drill down (through composites and empty components) until we get a host or
4271
+ * host text component.
4272
+ *
4273
+ * This is pretty polymorphic but unavoidable with the current structure we have
4274
+ * for `_renderedChildren`.
4275
+ */
4276
+ function getRenderedHostOrTextFromComponent(component) {
4277
+ var rendered;
4278
+ while (rendered = component._renderedComponent) {
4279
+ component = rendered;
4280
+ }
4281
+ return component;
4282
+ }
4283
+
4284
+ /**
4285
+ * Populate `_hostNode` on the rendered host/text component with the given
4286
+ * DOM node. The passed `inst` can be a composite.
4287
+ */
4288
+ function precacheNode(inst, node) {
4289
+ var hostInst = getRenderedHostOrTextFromComponent(inst);
4290
+ hostInst._hostNode = node;
4291
+ node[internalInstanceKey] = hostInst;
4292
+ }
4293
+
4294
+ function uncacheNode(inst) {
4295
+ var node = inst._hostNode;
4296
+ if (node) {
4297
+ delete node[internalInstanceKey];
4298
+ inst._hostNode = null;
4299
+ }
4300
+ }
4301
+
4302
+ /**
4303
+ * Populate `_hostNode` on each child of `inst`, assuming that the children
4304
+ * match up with the DOM (element) children of `node`.
4305
+ *
4306
+ * We cache entire levels at once to avoid an n^2 problem where we access the
4307
+ * children of a node sequentially and have to walk from the start to our target
4308
+ * node every time.
4309
+ *
4310
+ * Since we update `_renderedChildren` and the actual DOM at (slightly)
4311
+ * different times, we could race here and see a newer `_renderedChildren` than
4312
+ * the DOM nodes we see. To avoid this, ReactMultiChild calls
4313
+ * `prepareToManageChildren` before we change `_renderedChildren`, at which
4314
+ * time the container's child nodes are always cached (until it unmounts).
4315
+ */
4316
+ function precacheChildNodes(inst, node) {
4317
+ if (inst._flags & Flags.hasCachedChildNodes) {
4318
+ return;
4319
+ }
4320
+ var children = inst._renderedChildren;
4321
+ var childNode = node.firstChild;
4322
+ outer: for (var name in children) {
4323
+ if (!children.hasOwnProperty(name)) {
4324
+ continue;
4325
+ }
4326
+ var childInst = children[name];
4327
+ var childID = getRenderedHostOrTextFromComponent(childInst)._domID;
4328
+ if (childID === 0) {
4329
+ // We're currently unmounting this child in ReactMultiChild; skip it.
4330
+ continue;
4331
+ }
4332
+ // We assume the child nodes are in the same order as the child instances.
4333
+ for (; childNode !== null; childNode = childNode.nextSibling) {
4334
+ if (childNode.nodeType === 1 && childNode.getAttribute(ATTR_NAME) === String(childID) || childNode.nodeType === 8 && childNode.nodeValue === ' react-text: ' + childID + ' ' || childNode.nodeType === 8 && childNode.nodeValue === ' react-empty: ' + childID + ' ') {
4335
+ precacheNode(childInst, childNode);
4336
+ continue outer;
4337
+ }
4338
+ }
4339
+ // We reached the end of the DOM children without finding an ID match.
4340
+ true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;
4341
+ }
4342
+ inst._flags |= Flags.hasCachedChildNodes;
4343
+ }
4344
+
4345
+ /**
4346
+ * Given a DOM node, return the closest ReactDOMComponent or
4347
+ * ReactDOMTextComponent instance ancestor.
4348
+ */
4349
+ function getClosestInstanceFromNode(node) {
4350
+ if (node[internalInstanceKey]) {
4351
+ return node[internalInstanceKey];
4352
+ }
4353
+
4354
+ // Walk up the tree until we find an ancestor whose instance we have cached.
4355
+ var parents = [];
4356
+ while (!node[internalInstanceKey]) {
4357
+ parents.push(node);
4358
+ if (node.parentNode) {
4359
+ node = node.parentNode;
4360
+ } else {
4361
+ // Top of the tree. This node must not be part of a React tree (or is
4362
+ // unmounted, potentially).
4363
+ return null;
4364
+ }
4365
+ }
4366
+
4367
+ var closest;
4368
+ var inst;
4369
+ for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {
4370
+ closest = inst;
4371
+ if (parents.length) {
4372
+ precacheChildNodes(inst, node);
4373
+ }
4374
+ }
4375
+
4376
+ return closest;
4377
+ }
4378
+
4379
+ /**
4380
+ * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent
4381
+ * instance, or null if the node was not rendered by this React.
4382
+ */
4383
+ function getInstanceFromNode(node) {
4384
+ var inst = getClosestInstanceFromNode(node);
4385
+ if (inst != null && inst._hostNode === node) {
4386
+ return inst;
4387
+ } else {
4388
+ return null;
4389
+ }
4390
+ }
4391
+
4392
+ /**
4393
+ * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding
4394
+ * DOM node.
4395
+ */
4396
+ function getNodeFromInstance(inst) {
4397
+ // Without this first invariant, passing a non-DOM-component triggers the next
4398
+ // invariant for a missing parent, which is super confusing.
4399
+ !(inst._hostNode !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;
4400
+
4401
+ if (inst._hostNode) {
4402
+ return inst._hostNode;
4403
+ }
4404
+
4405
+ // Walk up the tree until we find an ancestor whose DOM node we have cached.
4406
+ var parents = [];
4407
+ while (!inst._hostNode) {
4408
+ parents.push(inst);
4409
+ !inst._hostParent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;
4410
+ inst = inst._hostParent;
4411
+ }
4412
+
4413
+ // Now parents contains each ancestor that does *not* have a cached native
4414
+ // node, and `inst` is the deepest ancestor that does.
4415
+ for (; parents.length; inst = parents.pop()) {
4416
+ precacheChildNodes(inst, inst._hostNode);
4417
+ }
4418
+
4419
+ return inst._hostNode;
4420
+ }
4421
+
4422
+ var ReactDOMComponentTree = {
4423
+ getClosestInstanceFromNode: getClosestInstanceFromNode,
4424
+ getInstanceFromNode: getInstanceFromNode,
4425
+ getNodeFromInstance: getNodeFromInstance,
4426
+ precacheChildNodes: precacheChildNodes,
4427
+ precacheNode: precacheNode,
4428
+ uncacheNode: uncacheNode
4429
+ };
4430
+
4431
+ module.exports = ReactDOMComponentTree;
4432
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
4433
+
4434
+ /***/ },
4435
+ /* 36 */
4436
+ /***/ function(module, exports) {
4437
+
4438
+ /**
4439
+ * Copyright (c) 2013-present, Facebook, Inc.
4440
+ * All rights reserved.
4441
+ *
4442
+ * This source code is licensed under the BSD-style license found in the
4443
+ * LICENSE file in the root directory of this source tree. An additional grant
4444
+ * of patent rights can be found in the PATENTS file in the same directory.
4445
+ *
4446
+ *
4447
+ */
4448
+ 'use strict';
4449
+
4450
+ /**
4451
+ * WARNING: DO NOT manually require this module.
4452
+ * This is a replacement for `invariant(...)` used by the error code system
4453
+ * and will _only_ be required by the corresponding babel pass.
4454
+ * It always throws.
4455
+ */
4456
+
4457
+ function reactProdInvariant(code) {
4458
+ var argCount = arguments.length - 1;
4459
+
4460
+ var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;
4461
+
4462
+ for (var argIdx = 0; argIdx < argCount; argIdx++) {
4463
+ message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);
4464
+ }
4465
+
4466
+ message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';
4467
+
4468
+ var error = new Error(message);
4469
+ error.name = 'Invariant Violation';
4470
+ error.framesToPop = 1; // we don't care about reactProdInvariant's own frame
4471
+
4472
+ throw error;
4473
+ }
4474
+
4475
+ module.exports = reactProdInvariant;
4476
+
4477
+ /***/ },
4478
+ /* 37 */
4479
+ /***/ function(module, exports, __webpack_require__) {
4480
+
4481
+ /* WEBPACK VAR INJECTION */(function(process) {/**
4482
+ * Copyright 2013-present, Facebook, Inc.
4483
+ * All rights reserved.
4484
+ *
4485
+ * This source code is licensed under the BSD-style license found in the
4486
+ * LICENSE file in the root directory of this source tree. An additional grant
4487
+ * of patent rights can be found in the PATENTS file in the same directory.
4488
+ *
4489
+ */
4490
+
4491
+ 'use strict';
4492
+
4493
+ var _prodInvariant = __webpack_require__(36);
4494
+
4495
+ var invariant = __webpack_require__(9);
4496
+
4497
+ function checkMask(value, bitmask) {
4498
+ return (value & bitmask) === bitmask;
4499
+ }
4500
+
4501
+ var DOMPropertyInjection = {
4502
+ /**
4503
+ * Mapping from normalized, camelcased property names to a configuration that
4504
+ * specifies how the associated DOM property should be accessed or rendered.
4505
+ */
4506
+ MUST_USE_PROPERTY: 0x1,
4507
+ HAS_BOOLEAN_VALUE: 0x4,
4508
+ HAS_NUMERIC_VALUE: 0x8,
4509
+ HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,
4510
+ HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,
4511
+
4512
+ /**
4513
+ * Inject some specialized knowledge about the DOM. This takes a config object
4514
+ * with the following properties:
4515
+ *
4516
+ * isCustomAttribute: function that given an attribute name will return true
4517
+ * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*
4518
+ * attributes where it's impossible to enumerate all of the possible
4519
+ * attribute names,
4520
+ *
4521
+ * Properties: object mapping DOM property name to one of the
4522
+ * DOMPropertyInjection constants or null. If your attribute isn't in here,
4523
+ * it won't get written to the DOM.
4524
+ *
4525
+ * DOMAttributeNames: object mapping React attribute name to the DOM
4526
+ * attribute name. Attribute names not specified use the **lowercase**
4527
+ * normalized name.
4528
+ *
4529
+ * DOMAttributeNamespaces: object mapping React attribute name to the DOM
4530
+ * attribute namespace URL. (Attribute names not specified use no namespace.)
4531
+ *
4532
+ * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.
4533
+ * Property names not specified use the normalized name.
4534
+ *
4535
+ * DOMMutationMethods: Properties that require special mutation methods. If
4536
+ * `value` is undefined, the mutation method should unset the property.
4537
+ *
4538
+ * @param {object} domPropertyConfig the config as described above.
4539
+ */
4540
+ injectDOMPropertyConfig: function (domPropertyConfig) {
4541
+ var Injection = DOMPropertyInjection;
4542
+ var Properties = domPropertyConfig.Properties || {};
4543
+ var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};
4544
+ var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};
4545
+ var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};
4546
+ var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};
4547
+
4548
+ if (domPropertyConfig.isCustomAttribute) {
4549
+ DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);
4550
+ }
4551
+
4552
+ for (var propName in Properties) {
4553
+ !!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;
4554
+
4555
+ var lowerCased = propName.toLowerCase();
4556
+ var propConfig = Properties[propName];
4557
+
4558
+ var propertyInfo = {
4559
+ attributeName: lowerCased,
4560
+ attributeNamespace: null,
4561
+ propertyName: propName,
4562
+ mutationMethod: null,
4563
+
4564
+ mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),
4565
+ hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),
4566
+ hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),
4567
+ hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),
4568
+ hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)
4569
+ };
4570
+ !(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;
4571
+
4572
+ if (process.env.NODE_ENV !== 'production') {
4573
+ DOMProperty.getPossibleStandardName[lowerCased] = propName;
4574
+ }
4575
+
4576
+ if (DOMAttributeNames.hasOwnProperty(propName)) {
4577
+ var attributeName = DOMAttributeNames[propName];
4578
+ propertyInfo.attributeName = attributeName;
4579
+ if (process.env.NODE_ENV !== 'production') {
4580
+ DOMProperty.getPossibleStandardName[attributeName] = propName;
4581
+ }
4582
+ }
4583
+
4584
+ if (DOMAttributeNamespaces.hasOwnProperty(propName)) {
4585
+ propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];
4586
+ }
4587
+
4588
+ if (DOMPropertyNames.hasOwnProperty(propName)) {
4589
+ propertyInfo.propertyName = DOMPropertyNames[propName];
4590
+ }
4591
+
4592
+ if (DOMMutationMethods.hasOwnProperty(propName)) {
4593
+ propertyInfo.mutationMethod = DOMMutationMethods[propName];
4594
+ }
4595
+
4596
+ DOMProperty.properties[propName] = propertyInfo;
4597
+ }
4598
+ }
4599
+ };
4600
+
4601
+ /* eslint-disable max-len */
4602
+ 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';
4603
+ /* eslint-enable max-len */
4604
+
4605
+ /**
4606
+ * DOMProperty exports lookup objects that can be used like functions:
4607
+ *
4608
+ * > DOMProperty.isValid['id']
4609
+ * true
4610
+ * > DOMProperty.isValid['foobar']
4611
+ * undefined
4612
+ *
4613
+ * Although this may be confusing, it performs better in general.
4614
+ *
4615
+ * @see http://jsperf.com/key-exists
4616
+ * @see http://jsperf.com/key-missing
4617
+ */
4618
+ var DOMProperty = {
4619
+
4620
+ ID_ATTRIBUTE_NAME: 'data-reactid',
4621
+ ROOT_ATTRIBUTE_NAME: 'data-reactroot',
4622
+
4623
+ ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,
4624
+ ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040',
4625
+
4626
+ /**
4627
+ * Map from property "standard name" to an object with info about how to set
4628
+ * the property in the DOM. Each object contains:
4629
+ *
4630
+ * attributeName:
4631
+ * Used when rendering markup or with `*Attribute()`.
4632
+ * attributeNamespace
4633
+ * propertyName:
4634
+ * Used on DOM node instances. (This includes properties that mutate due to
4635
+ * external factors.)
4636
+ * mutationMethod:
4637
+ * If non-null, used instead of the property or `setAttribute()` after
4638
+ * initial render.
4639
+ * mustUseProperty:
4640
+ * Whether the property must be accessed and mutated as an object property.
4641
+ * hasBooleanValue:
4642
+ * Whether the property should be removed when set to a falsey value.
4643
+ * hasNumericValue:
4644
+ * Whether the property must be numeric or parse as a numeric and should be
4645
+ * removed when set to a falsey value.
4646
+ * hasPositiveNumericValue:
4647
+ * Whether the property must be positive numeric or parse as a positive
4648
+ * numeric and should be removed when set to a falsey value.
4649
+ * hasOverloadedBooleanValue:
4650
+ * Whether the property can be used as a flag as well as with a value.
4651
+ * Removed when strictly equal to false; present without a value when
4652
+ * strictly equal to true; present with a value otherwise.
4653
+ */
4654
+ properties: {},
4655
+
4656
+ /**
4657
+ * Mapping from lowercase property names to the properly cased version, used
4658
+ * to warn in the case of missing properties. Available only in __DEV__.
4659
+ *
4660
+ * autofocus is predefined, because adding it to the property whitelist
4661
+ * causes unintended side effects.
4662
+ *
4663
+ * @type {Object}
4664
+ */
4665
+ getPossibleStandardName: process.env.NODE_ENV !== 'production' ? { autofocus: 'autoFocus' } : null,
4666
+
4667
+ /**
4668
+ * All of the isCustomAttribute() functions that have been injected.
4669
+ */
4670
+ _isCustomAttributeFunctions: [],
4671
+
4672
+ /**
4673
+ * Checks whether a property name is a custom attribute.
4674
+ * @method
4675
+ */
4676
+ isCustomAttribute: function (attributeName) {
4677
+ for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {
4678
+ var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];
4679
+ if (isCustomAttributeFn(attributeName)) {
4680
+ return true;
4681
+ }
4682
+ }
4683
+ return false;
4684
+ },
4685
+
4686
+ injection: DOMPropertyInjection
4687
+ };
4688
+
4689
+ module.exports = DOMProperty;
4690
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
4691
+
4692
+ /***/ },
4693
+ /* 38 */
4694
+ /***/ function(module, exports) {
4695
+
4696
+ /**
4697
+ * Copyright 2015-present, Facebook, Inc.
4698
+ * All rights reserved.
4699
+ *
4700
+ * This source code is licensed under the BSD-style license found in the
4701
+ * LICENSE file in the root directory of this source tree. An additional grant
4702
+ * of patent rights can be found in the PATENTS file in the same directory.
4703
+ *
4704
+ */
4705
+
4706
+ 'use strict';
4707
+
4708
+ var ReactDOMComponentFlags = {
4709
+ hasCachedChildNodes: 1 << 0
4710
+ };
4711
+
4712
+ module.exports = ReactDOMComponentFlags;
4713
+
4714
+ /***/ },
4715
+ /* 39 */
4716
+ /***/ function(module, exports, __webpack_require__) {
4717
+
4718
+ /**
4719
+ * Copyright 2013-present, Facebook, Inc.
4720
+ * All rights reserved.
4721
+ *
4722
+ * This source code is licensed under the BSD-style license found in the
4723
+ * LICENSE file in the root directory of this source tree. An additional grant
4724
+ * of patent rights can be found in the PATENTS file in the same directory.
4725
+ *
4726
+ */
4727
+
4728
+ 'use strict';
4729
+
4730
+ var ARIADOMPropertyConfig = __webpack_require__(40);
4731
+ var BeforeInputEventPlugin = __webpack_require__(41);
4732
+ var ChangeEventPlugin = __webpack_require__(57);
4733
+ var DefaultEventPluginOrder = __webpack_require__(74);
4734
+ var EnterLeaveEventPlugin = __webpack_require__(75);
4735
+ var HTMLDOMPropertyConfig = __webpack_require__(80);
4736
+ var ReactComponentBrowserEnvironment = __webpack_require__(81);
4737
+ var ReactDOMComponent = __webpack_require__(94);
4738
+ var ReactDOMComponentTree = __webpack_require__(35);
4739
+ var ReactDOMEmptyComponent = __webpack_require__(139);
4740
+ var ReactDOMTreeTraversal = __webpack_require__(140);
4741
+ var ReactDOMTextComponent = __webpack_require__(141);
4742
+ var ReactDefaultBatchingStrategy = __webpack_require__(142);
4743
+ var ReactEventListener = __webpack_require__(143);
4744
+ var ReactInjection = __webpack_require__(146);
4745
+ var ReactReconcileTransaction = __webpack_require__(147);
4746
+ var SVGDOMPropertyConfig = __webpack_require__(155);
4747
+ var SelectEventPlugin = __webpack_require__(156);
4748
+ var SimpleEventPlugin = __webpack_require__(157);
4749
+
4750
+ var alreadyInjected = false;
4751
+
4752
+ function inject() {
4753
+ if (alreadyInjected) {
4754
+ // TODO: This is currently true because these injections are shared between
4755
+ // the client and the server package. They should be built independently
4756
+ // and not share any injection state. Then this problem will be solved.
4757
+ return;
4758
+ }
4759
+ alreadyInjected = true;
4760
+
4761
+ ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);
4762
+
4763
+ /**
4764
+ * Inject modules for resolving DOM hierarchy and plugin ordering.
4765
+ */
4766
+ ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);
4767
+ ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);
4768
+ ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);
4769
+
4770
+ /**
4771
+ * Some important event plugins included by default (without having to require
4772
+ * them).
4773
+ */
4774
+ ReactInjection.EventPluginHub.injectEventPluginsByName({
4775
+ SimpleEventPlugin: SimpleEventPlugin,
4776
+ EnterLeaveEventPlugin: EnterLeaveEventPlugin,
4777
+ ChangeEventPlugin: ChangeEventPlugin,
4778
+ SelectEventPlugin: SelectEventPlugin,
4779
+ BeforeInputEventPlugin: BeforeInputEventPlugin
4780
+ });
4781
+
4782
+ ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);
4783
+
4784
+ ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);
4785
+
4786
+ ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);
4787
+ ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);
4788
+ ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);
4789
+
4790
+ ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {
4791
+ return new ReactDOMEmptyComponent(instantiate);
4792
+ });
4793
+
4794
+ ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);
4795
+ ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);
4796
+
4797
+ ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);
4798
+ }
4799
+
4800
+ module.exports = {
4801
+ inject: inject
4802
+ };
4803
+
4804
+ /***/ },
4805
+ /* 40 */
4806
+ /***/ function(module, exports) {
4807
+
4808
+ /**
4809
+ * Copyright 2013-present, Facebook, Inc.
4810
+ * All rights reserved.
4811
+ *
4812
+ * This source code is licensed under the BSD-style license found in the
4813
+ * LICENSE file in the root directory of this source tree. An additional grant
4814
+ * of patent rights can be found in the PATENTS file in the same directory.
4815
+ *
4816
+ */
4817
+
4818
+ 'use strict';
4819
+
4820
+ var ARIADOMPropertyConfig = {
4821
+ Properties: {
4822
+ // Global States and Properties
4823
+ 'aria-current': 0, // state
4824
+ 'aria-details': 0,
4825
+ 'aria-disabled': 0, // state
4826
+ 'aria-hidden': 0, // state
4827
+ 'aria-invalid': 0, // state
4828
+ 'aria-keyshortcuts': 0,
4829
+ 'aria-label': 0,
4830
+ 'aria-roledescription': 0,
4831
+ // Widget Attributes
4832
+ 'aria-autocomplete': 0,
4833
+ 'aria-checked': 0,
4834
+ 'aria-expanded': 0,
4835
+ 'aria-haspopup': 0,
4836
+ 'aria-level': 0,
4837
+ 'aria-modal': 0,
4838
+ 'aria-multiline': 0,
4839
+ 'aria-multiselectable': 0,
4840
+ 'aria-orientation': 0,
4841
+ 'aria-placeholder': 0,
4842
+ 'aria-pressed': 0,
4843
+ 'aria-readonly': 0,
4844
+ 'aria-required': 0,
4845
+ 'aria-selected': 0,
4846
+ 'aria-sort': 0,
4847
+ 'aria-valuemax': 0,
4848
+ 'aria-valuemin': 0,
4849
+ 'aria-valuenow': 0,
4850
+ 'aria-valuetext': 0,
4851
+ // Live Region Attributes
4852
+ 'aria-atomic': 0,
4853
+ 'aria-busy': 0,
4854
+ 'aria-live': 0,
4855
+ 'aria-relevant': 0,
4856
+ // Drag-and-Drop Attributes
4857
+ 'aria-dropeffect': 0,
4858
+ 'aria-grabbed': 0,
4859
+ // Relationship Attributes
4860
+ 'aria-activedescendant': 0,
4861
+ 'aria-colcount': 0,
4862
+ 'aria-colindex': 0,
4863
+ 'aria-colspan': 0,
4864
+ 'aria-controls': 0,
4865
+ 'aria-describedby': 0,
4866
+ 'aria-errormessage': 0,
4867
+ 'aria-flowto': 0,
4868
+ 'aria-labelledby': 0,
4869
+ 'aria-owns': 0,
4870
+ 'aria-posinset': 0,
4871
+ 'aria-rowcount': 0,
4872
+ 'aria-rowindex': 0,
4873
+ 'aria-rowspan': 0,
4874
+ 'aria-setsize': 0
4875
+ },
4876
+ DOMAttributeNames: {},
4877
+ DOMPropertyNames: {}
4878
+ };
4879
+
4880
+ module.exports = ARIADOMPropertyConfig;
4881
+
4882
+ /***/ },
4883
+ /* 41 */
4884
+ /***/ function(module, exports, __webpack_require__) {
4885
+
4886
+ /**
4887
+ * Copyright 2013-present Facebook, Inc.
4888
+ * All rights reserved.
4889
+ *
4890
+ * This source code is licensed under the BSD-style license found in the
4891
+ * LICENSE file in the root directory of this source tree. An additional grant
4892
+ * of patent rights can be found in the PATENTS file in the same directory.
4893
+ *
4894
+ */
4895
+
4896
+ 'use strict';
4897
+
4898
+ var EventPropagators = __webpack_require__(42);
4899
+ var ExecutionEnvironment = __webpack_require__(49);
4900
+ var FallbackCompositionState = __webpack_require__(50);
4901
+ var SyntheticCompositionEvent = __webpack_require__(54);
4902
+ var SyntheticInputEvent = __webpack_require__(56);
4903
+
4904
+ var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space
4905
+ var START_KEYCODE = 229;
4906
+
4907
+ var canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;
4908
+
4909
+ var documentMode = null;
4910
+ if (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {
4911
+ documentMode = document.documentMode;
4912
+ }
4913
+
4914
+ // Webkit offers a very useful `textInput` event that can be used to
4915
+ // directly represent `beforeInput`. The IE `textinput` event is not as
4916
+ // useful, so we don't use it.
4917
+ var canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();
4918
+
4919
+ // In IE9+, we have access to composition events, but the data supplied
4920
+ // by the native compositionend event may be incorrect. Japanese ideographic
4921
+ // spaces, for instance (\u3000) are not recorded correctly.
4922
+ var useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);
4923
+
4924
+ /**
4925
+ * Opera <= 12 includes TextEvent in window, but does not fire
4926
+ * text input events. Rely on keypress instead.
4927
+ */
4928
+ function isPresto() {
4929
+ var opera = window.opera;
4930
+ return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;
4931
+ }
4932
+
4933
+ var SPACEBAR_CODE = 32;
4934
+ var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);
4935
+
4936
+ // Events and their corresponding property names.
4937
+ var eventTypes = {
4938
+ beforeInput: {
4939
+ phasedRegistrationNames: {
4940
+ bubbled: 'onBeforeInput',
4941
+ captured: 'onBeforeInputCapture'
4942
+ },
4943
+ dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']
4944
+ },
4945
+ compositionEnd: {
4946
+ phasedRegistrationNames: {
4947
+ bubbled: 'onCompositionEnd',
4948
+ captured: 'onCompositionEndCapture'
4949
+ },
4950
+ dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']
4951
+ },
4952
+ compositionStart: {
4953
+ phasedRegistrationNames: {
4954
+ bubbled: 'onCompositionStart',
4955
+ captured: 'onCompositionStartCapture'
4956
+ },
4957
+ dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']
4958
+ },
4959
+ compositionUpdate: {
4960
+ phasedRegistrationNames: {
4961
+ bubbled: 'onCompositionUpdate',
4962
+ captured: 'onCompositionUpdateCapture'
4963
+ },
4964
+ dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']
4965
+ }
4966
+ };
4967
+
4968
+ // Track whether we've ever handled a keypress on the space key.
4969
+ var hasSpaceKeypress = false;
4970
+
4971
+ /**
4972
+ * Return whether a native keypress event is assumed to be a command.
4973
+ * This is required because Firefox fires `keypress` events for key commands
4974
+ * (cut, copy, select-all, etc.) even though no character is inserted.
4975
+ */
4976
+ function isKeypressCommand(nativeEvent) {
4977
+ return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&
4978
+ // ctrlKey && altKey is equivalent to AltGr, and is not a command.
4979
+ !(nativeEvent.ctrlKey && nativeEvent.altKey);
4980
+ }
4981
+
4982
+ /**
4983
+ * Translate native top level events into event types.
4984
+ *
4985
+ * @param {string} topLevelType
4986
+ * @return {object}
4987
+ */
4988
+ function getCompositionEventType(topLevelType) {
4989
+ switch (topLevelType) {
4990
+ case 'topCompositionStart':
4991
+ return eventTypes.compositionStart;
4992
+ case 'topCompositionEnd':
4993
+ return eventTypes.compositionEnd;
4994
+ case 'topCompositionUpdate':
4995
+ return eventTypes.compositionUpdate;
4996
+ }
4997
+ }
4998
+
4999
+ /**
5000
+ * Does our fallback best-guess model think this event signifies that
5001
+ * composition has begun?
5002
+ *
5003
+ * @param {string} topLevelType
5004
+ * @param {object} nativeEvent
5005
+ * @return {boolean}
5006
+ */
5007
+ function isFallbackCompositionStart(topLevelType, nativeEvent) {
5008
+ return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;
5009
+ }
5010
+
5011
+ /**
5012
+ * Does our fallback mode think that this event is the end of composition?
5013
+ *
5014
+ * @param {string} topLevelType
5015
+ * @param {object} nativeEvent
5016
+ * @return {boolean}
5017
+ */
5018
+ function isFallbackCompositionEnd(topLevelType, nativeEvent) {
5019
+ switch (topLevelType) {
5020
+ case 'topKeyUp':
5021
+ // Command keys insert or clear IME input.
5022
+ return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;
5023
+ case 'topKeyDown':
5024
+ // Expect IME keyCode on each keydown. If we get any other
5025
+ // code we must have exited earlier.
5026
+ return nativeEvent.keyCode !== START_KEYCODE;
5027
+ case 'topKeyPress':
5028
+ case 'topMouseDown':
5029
+ case 'topBlur':
5030
+ // Events are not possible without cancelling IME.
5031
+ return true;
5032
+ default:
5033
+ return false;
5034
+ }
5035
+ }
5036
+
5037
+ /**
5038
+ * Google Input Tools provides composition data via a CustomEvent,
5039
+ * with the `data` property populated in the `detail` object. If this
5040
+ * is available on the event object, use it. If not, this is a plain
5041
+ * composition event and we have nothing special to extract.
5042
+ *
5043
+ * @param {object} nativeEvent
5044
+ * @return {?string}
5045
+ */
5046
+ function getDataFromCustomEvent(nativeEvent) {
5047
+ var detail = nativeEvent.detail;
5048
+ if (typeof detail === 'object' && 'data' in detail) {
5049
+ return detail.data;
5050
+ }
5051
+ return null;
5052
+ }
5053
+
5054
+ // Track the current IME composition fallback object, if any.
5055
+ var currentComposition = null;
5056
+
5057
+ /**
5058
+ * @return {?object} A SyntheticCompositionEvent.
5059
+ */
5060
+ function extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {
5061
+ var eventType;
5062
+ var fallbackData;
5063
+
5064
+ if (canUseCompositionEvent) {
5065
+ eventType = getCompositionEventType(topLevelType);
5066
+ } else if (!currentComposition) {
5067
+ if (isFallbackCompositionStart(topLevelType, nativeEvent)) {
5068
+ eventType = eventTypes.compositionStart;
5069
+ }
5070
+ } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {
5071
+ eventType = eventTypes.compositionEnd;
5072
+ }
5073
+
5074
+ if (!eventType) {
5075
+ return null;
5076
+ }
5077
+
5078
+ if (useFallbackCompositionData) {
5079
+ // The current composition is stored statically and must not be
5080
+ // overwritten while composition continues.
5081
+ if (!currentComposition && eventType === eventTypes.compositionStart) {
5082
+ currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);
5083
+ } else if (eventType === eventTypes.compositionEnd) {
5084
+ if (currentComposition) {
5085
+ fallbackData = currentComposition.getData();
5086
+ }
5087
+ }
5088
+ }
5089
+
5090
+ var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);
5091
+
5092
+ if (fallbackData) {
5093
+ // Inject data generated from fallback path into the synthetic event.
5094
+ // This matches the property of native CompositionEventInterface.
5095
+ event.data = fallbackData;
5096
+ } else {
5097
+ var customData = getDataFromCustomEvent(nativeEvent);
5098
+ if (customData !== null) {
5099
+ event.data = customData;
5100
+ }
5101
+ }
5102
+
5103
+ EventPropagators.accumulateTwoPhaseDispatches(event);
5104
+ return event;
5105
+ }
5106
+
5107
+ /**
5108
+ * @param {string} topLevelType Record from `EventConstants`.
5109
+ * @param {object} nativeEvent Native browser event.
5110
+ * @return {?string} The string corresponding to this `beforeInput` event.
5111
+ */
5112
+ function getNativeBeforeInputChars(topLevelType, nativeEvent) {
5113
+ switch (topLevelType) {
5114
+ case 'topCompositionEnd':
5115
+ return getDataFromCustomEvent(nativeEvent);
5116
+ case 'topKeyPress':
5117
+ /**
5118
+ * If native `textInput` events are available, our goal is to make
5119
+ * use of them. However, there is a special case: the spacebar key.
5120
+ * In Webkit, preventing default on a spacebar `textInput` event
5121
+ * cancels character insertion, but it *also* causes the browser
5122
+ * to fall back to its default spacebar behavior of scrolling the
5123
+ * page.
5124
+ *
5125
+ * Tracking at:
5126
+ * https://code.google.com/p/chromium/issues/detail?id=355103
5127
+ *
5128
+ * To avoid this issue, use the keypress event as if no `textInput`
5129
+ * event is available.
5130
+ */
5131
+ var which = nativeEvent.which;
5132
+ if (which !== SPACEBAR_CODE) {
5133
+ return null;
5134
+ }
5135
+
5136
+ hasSpaceKeypress = true;
5137
+ return SPACEBAR_CHAR;
5138
+
5139
+ case 'topTextInput':
5140
+ // Record the characters to be added to the DOM.
5141
+ var chars = nativeEvent.data;
5142
+
5143
+ // If it's a spacebar character, assume that we have already handled
5144
+ // it at the keypress level and bail immediately. Android Chrome
5145
+ // doesn't give us keycodes, so we need to blacklist it.
5146
+ if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {
5147
+ return null;
5148
+ }
5149
+
5150
+ return chars;
5151
+
5152
+ default:
5153
+ // For other native event types, do nothing.
5154
+ return null;
5155
+ }
5156
+ }
5157
+
5158
+ /**
5159
+ * For browsers that do not provide the `textInput` event, extract the
5160
+ * appropriate string to use for SyntheticInputEvent.
5161
+ *
5162
+ * @param {string} topLevelType Record from `EventConstants`.
5163
+ * @param {object} nativeEvent Native browser event.
5164
+ * @return {?string} The fallback string for this `beforeInput` event.
5165
+ */
5166
+ function getFallbackBeforeInputChars(topLevelType, nativeEvent) {
5167
+ // If we are currently composing (IME) and using a fallback to do so,
5168
+ // try to extract the composed characters from the fallback object.
5169
+ // If composition event is available, we extract a string only at
5170
+ // compositionevent, otherwise extract it at fallback events.
5171
+ if (currentComposition) {
5172
+ if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {
5173
+ var chars = currentComposition.getData();
5174
+ FallbackCompositionState.release(currentComposition);
5175
+ currentComposition = null;
5176
+ return chars;
5177
+ }
5178
+ return null;
5179
+ }
5180
+
5181
+ switch (topLevelType) {
5182
+ case 'topPaste':
5183
+ // If a paste event occurs after a keypress, throw out the input
5184
+ // chars. Paste events should not lead to BeforeInput events.
5185
+ return null;
5186
+ case 'topKeyPress':
5187
+ /**
5188
+ * As of v27, Firefox may fire keypress events even when no character
5189
+ * will be inserted. A few possibilities:
5190
+ *
5191
+ * - `which` is `0`. Arrow keys, Esc key, etc.
5192
+ *
5193
+ * - `which` is the pressed key code, but no char is available.
5194
+ * Ex: 'AltGr + d` in Polish. There is no modified character for
5195
+ * this key combination and no character is inserted into the
5196
+ * document, but FF fires the keypress for char code `100` anyway.
5197
+ * No `input` event will occur.
5198
+ *
5199
+ * - `which` is the pressed key code, but a command combination is
5200
+ * being used. Ex: `Cmd+C`. No character is inserted, and no
5201
+ * `input` event will occur.
5202
+ */
5203
+ if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {
5204
+ return String.fromCharCode(nativeEvent.which);
5205
+ }
5206
+ return null;
5207
+ case 'topCompositionEnd':
5208
+ return useFallbackCompositionData ? null : nativeEvent.data;
5209
+ default:
5210
+ return null;
5211
+ }
5212
+ }
5213
+
5214
+ /**
5215
+ * Extract a SyntheticInputEvent for `beforeInput`, based on either native
5216
+ * `textInput` or fallback behavior.
5217
+ *
5218
+ * @return {?object} A SyntheticInputEvent.
5219
+ */
5220
+ function extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {
5221
+ var chars;
5222
+
5223
+ if (canUseTextInputEvent) {
5224
+ chars = getNativeBeforeInputChars(topLevelType, nativeEvent);
5225
+ } else {
5226
+ chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);
5227
+ }
5228
+
5229
+ // If no characters are being inserted, no BeforeInput event should
5230
+ // be fired.
5231
+ if (!chars) {
5232
+ return null;
5233
+ }
5234
+
5235
+ var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);
5236
+
5237
+ event.data = chars;
5238
+ EventPropagators.accumulateTwoPhaseDispatches(event);
5239
+ return event;
5240
+ }
5241
+
5242
+ /**
5243
+ * Create an `onBeforeInput` event to match
5244
+ * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.
5245
+ *
5246
+ * This event plugin is based on the native `textInput` event
5247
+ * available in Chrome, Safari, Opera, and IE. This event fires after
5248
+ * `onKeyPress` and `onCompositionEnd`, but before `onInput`.
5249
+ *
5250
+ * `beforeInput` is spec'd but not implemented in any browsers, and
5251
+ * the `input` event does not provide any useful information about what has
5252
+ * actually been added, contrary to the spec. Thus, `textInput` is the best
5253
+ * available event to identify the characters that have actually been inserted
5254
+ * into the target node.
5255
+ *
5256
+ * This plugin is also responsible for emitting `composition` events, thus
5257
+ * allowing us to share composition fallback code for both `beforeInput` and
5258
+ * `composition` event types.
5259
+ */
5260
+ var BeforeInputEventPlugin = {
5261
+
5262
+ eventTypes: eventTypes,
5263
+
5264
+ extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
5265
+ return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];
5266
+ }
5267
+ };
5268
+
5269
+ module.exports = BeforeInputEventPlugin;
5270
+
5271
+ /***/ },
5272
+ /* 42 */
5273
+ /***/ function(module, exports, __webpack_require__) {
5274
+
5275
+ /* WEBPACK VAR INJECTION */(function(process) {/**
5276
+ * Copyright 2013-present, Facebook, Inc.
5277
+ * All rights reserved.
5278
+ *
5279
+ * This source code is licensed under the BSD-style license found in the
5280
+ * LICENSE file in the root directory of this source tree. An additional grant
5281
+ * of patent rights can be found in the PATENTS file in the same directory.
5282
+ *
5283
+ */
5284
+
5285
+ 'use strict';
5286
+
5287
+ var EventPluginHub = __webpack_require__(43);
5288
+ var EventPluginUtils = __webpack_require__(45);
5289
+
5290
+ var accumulateInto = __webpack_require__(47);
5291
+ var forEachAccumulated = __webpack_require__(48);
5292
+ var warning = __webpack_require__(12);
5293
+
5294
+ var getListener = EventPluginHub.getListener;
5295
+
5296
+ /**
5297
+ * Some event types have a notion of different registration names for different
5298
+ * "phases" of propagation. This finds listeners by a given phase.
5299
+ */
5300
+ function listenerAtPhase(inst, event, propagationPhase) {
5301
+ var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];
5302
+ return getListener(inst, registrationName);
5303
+ }
5304
+
5305
+ /**
5306
+ * Tags a `SyntheticEvent` with dispatched listeners. Creating this function
5307
+ * here, allows us to not have to bind or create functions for each event.
5308
+ * Mutating the event's members allows us to not have to create a wrapping
5309
+ * "dispatch" object that pairs the event with the listener.
5310
+ */
5311
+ function accumulateDirectionalDispatches(inst, phase, event) {
5312
+ if (process.env.NODE_ENV !== 'production') {
5313
+ process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;
5314
+ }
5315
+ var listener = listenerAtPhase(inst, event, phase);
5316
+ if (listener) {
5317
+ event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);
5318
+ event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);
5319
+ }
5320
+ }
5321
+
5322
+ /**
5323
+ * Collect dispatches (must be entirely collected before dispatching - see unit
5324
+ * tests). Lazily allocate the array to conserve memory. We must loop through
5325
+ * each event and perform the traversal for each one. We cannot perform a
5326
+ * single traversal for the entire collection of events because each event may
5327
+ * have a different target.
5328
+ */
5329
+ function accumulateTwoPhaseDispatchesSingle(event) {
5330
+ if (event && event.dispatchConfig.phasedRegistrationNames) {
5331
+ EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);
5332
+ }
5333
+ }
5334
+
5335
+ /**
5336
+ * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.
5337
+ */
5338
+ function accumulateTwoPhaseDispatchesSingleSkipTarget(event) {
5339
+ if (event && event.dispatchConfig.phasedRegistrationNames) {
5340
+ var targetInst = event._targetInst;
5341
+ var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;
5342
+ EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);
5343
+ }
5344
+ }
5345
+
5346
+ /**
5347
+ * Accumulates without regard to direction, does not look for phased
5348
+ * registration names. Same as `accumulateDirectDispatchesSingle` but without
5349
+ * requiring that the `dispatchMarker` be the same as the dispatched ID.
5350
+ */
5351
+ function accumulateDispatches(inst, ignoredDirection, event) {
5352
+ if (event && event.dispatchConfig.registrationName) {
5353
+ var registrationName = event.dispatchConfig.registrationName;
5354
+ var listener = getListener(inst, registrationName);
5355
+ if (listener) {
5356
+ event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);
5357
+ event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);
5358
+ }
5359
+ }
5360
+ }
5361
+
5362
+ /**
5363
+ * Accumulates dispatches on an `SyntheticEvent`, but only for the
5364
+ * `dispatchMarker`.
5365
+ * @param {SyntheticEvent} event
5366
+ */
5367
+ function accumulateDirectDispatchesSingle(event) {
5368
+ if (event && event.dispatchConfig.registrationName) {
5369
+ accumulateDispatches(event._targetInst, null, event);
5370
+ }
5371
+ }
5372
+
5373
+ function accumulateTwoPhaseDispatches(events) {
5374
+ forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);
5375
+ }
5376
+
5377
+ function accumulateTwoPhaseDispatchesSkipTarget(events) {
5378
+ forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);
5379
+ }
5380
+
5381
+ function accumulateEnterLeaveDispatches(leave, enter, from, to) {
5382
+ EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);
5383
+ }
5384
+
5385
+ function accumulateDirectDispatches(events) {
5386
+ forEachAccumulated(events, accumulateDirectDispatchesSingle);
5387
+ }
5388
+
5389
+ /**
5390
+ * A small set of propagation patterns, each of which will accept a small amount
5391
+ * of information, and generate a set of "dispatch ready event objects" - which
5392
+ * are sets of events that have already been annotated with a set of dispatched
5393
+ * listener functions/ids. The API is designed this way to discourage these
5394
+ * propagation strategies from actually executing the dispatches, since we
5395
+ * always want to collect the entire set of dispatches before executing event a
5396
+ * single one.
5397
+ *
5398
+ * @constructor EventPropagators
5399
+ */
5400
+ var EventPropagators = {
5401
+ accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,
5402
+ accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,
5403
+ accumulateDirectDispatches: accumulateDirectDispatches,
5404
+ accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches
5405
+ };
5406
+
5407
+ module.exports = EventPropagators;
5408
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
5409
+
5410
+ /***/ },
5411
+ /* 43 */
5412
+ /***/ function(module, exports, __webpack_require__) {
5413
+
5414
+ /* WEBPACK VAR INJECTION */(function(process) {/**
5415
+ * Copyright 2013-present, Facebook, Inc.
5416
+ * All rights reserved.
5417
+ *
5418
+ * This source code is licensed under the BSD-style license found in the
5419
+ * LICENSE file in the root directory of this source tree. An additional grant
5420
+ * of patent rights can be found in the PATENTS file in the same directory.
5421
+ *
5422
+ */
5423
+
5424
+ 'use strict';
5425
+
5426
+ var _prodInvariant = __webpack_require__(36);
5427
+
5428
+ var EventPluginRegistry = __webpack_require__(44);
5429
+ var EventPluginUtils = __webpack_require__(45);
5430
+ var ReactErrorUtils = __webpack_require__(46);
5431
+
5432
+ var accumulateInto = __webpack_require__(47);
5433
+ var forEachAccumulated = __webpack_require__(48);
5434
+ var invariant = __webpack_require__(9);
5435
+
5436
+ /**
5437
+ * Internal store for event listeners
5438
+ */
5439
+ var listenerBank = {};
5440
+
5441
+ /**
5442
+ * Internal queue of events that have accumulated their dispatches and are
5443
+ * waiting to have their dispatches executed.
5444
+ */
5445
+ var eventQueue = null;
5446
+
5447
+ /**
5448
+ * Dispatches an event and releases it back into the pool, unless persistent.
5449
+ *
5450
+ * @param {?object} event Synthetic event to be dispatched.
5451
+ * @param {boolean} simulated If the event is simulated (changes exn behavior)
5452
+ * @private
5453
+ */
5454
+ var executeDispatchesAndRelease = function (event, simulated) {
5455
+ if (event) {
5456
+ EventPluginUtils.executeDispatchesInOrder(event, simulated);
5457
+
5458
+ if (!event.isPersistent()) {
5459
+ event.constructor.release(event);
5460
+ }
5461
+ }
5462
+ };
5463
+ var executeDispatchesAndReleaseSimulated = function (e) {
5464
+ return executeDispatchesAndRelease(e, true);
5465
+ };
5466
+ var executeDispatchesAndReleaseTopLevel = function (e) {
5467
+ return executeDispatchesAndRelease(e, false);
5468
+ };
5469
+
5470
+ var getDictionaryKey = function (inst) {
5471
+ // Prevents V8 performance issue:
5472
+ // https://github.com/facebook/react/pull/7232
5473
+ return '.' + inst._rootNodeID;
5474
+ };
5475
+
5476
+ function isInteractive(tag) {
5477
+ return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';
5478
+ }
5479
+
5480
+ function shouldPreventMouseEvent(name, type, props) {
5481
+ switch (name) {
5482
+ case 'onClick':
5483
+ case 'onClickCapture':
5484
+ case 'onDoubleClick':
5485
+ case 'onDoubleClickCapture':
5486
+ case 'onMouseDown':
5487
+ case 'onMouseDownCapture':
5488
+ case 'onMouseMove':
5489
+ case 'onMouseMoveCapture':
5490
+ case 'onMouseUp':
5491
+ case 'onMouseUpCapture':
5492
+ return !!(props.disabled && isInteractive(type));
5493
+ default:
5494
+ return false;
5495
+ }
5496
+ }
5497
+
5498
+ /**
5499
+ * This is a unified interface for event plugins to be installed and configured.
5500
+ *
5501
+ * Event plugins can implement the following properties:
5502
+ *
5503
+ * `extractEvents` {function(string, DOMEventTarget, string, object): *}
5504
+ * Required. When a top-level event is fired, this method is expected to
5505
+ * extract synthetic events that will in turn be queued and dispatched.
5506
+ *
5507
+ * `eventTypes` {object}
5508
+ * Optional, plugins that fire events must publish a mapping of registration
5509
+ * names that are used to register listeners. Values of this mapping must
5510
+ * be objects that contain `registrationName` or `phasedRegistrationNames`.
5511
+ *
5512
+ * `executeDispatch` {function(object, function, string)}
5513
+ * Optional, allows plugins to override how an event gets dispatched. By
5514
+ * default, the listener is simply invoked.
5515
+ *
5516
+ * Each plugin that is injected into `EventsPluginHub` is immediately operable.
5517
+ *
5518
+ * @public
5519
+ */
5520
+ var EventPluginHub = {
5521
+
5522
+ /**
5523
+ * Methods for injecting dependencies.
5524
+ */
5525
+ injection: {
5526
+
5527
+ /**
5528
+ * @param {array} InjectedEventPluginOrder
5529
+ * @public
5530
+ */
5531
+ injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,
5532
+
5533
+ /**
5534
+ * @param {object} injectedNamesToPlugins Map from names to plugin modules.
5535
+ */
5536
+ injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName
5537
+
5538
+ },
5539
+
5540
+ /**
5541
+ * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.
5542
+ *
5543
+ * @param {object} inst The instance, which is the source of events.
5544
+ * @param {string} registrationName Name of listener (e.g. `onClick`).
5545
+ * @param {function} listener The callback to store.
5546
+ */
5547
+ putListener: function (inst, registrationName, listener) {
5548
+ !(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;
5549
+
5550
+ var key = getDictionaryKey(inst);
5551
+ var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});
5552
+ bankForRegistrationName[key] = listener;
5553
+
5554
+ var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];
5555
+ if (PluginModule && PluginModule.didPutListener) {
5556
+ PluginModule.didPutListener(inst, registrationName, listener);
5557
+ }
5558
+ },
5559
+
5560
+ /**
5561
+ * @param {object} inst The instance, which is the source of events.
5562
+ * @param {string} registrationName Name of listener (e.g. `onClick`).
5563
+ * @return {?function} The stored callback.
5564
+ */
5565
+ getListener: function (inst, registrationName) {
5566
+ // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not
5567
+ // live here; needs to be moved to a better place soon
5568
+ var bankForRegistrationName = listenerBank[registrationName];
5569
+ if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {
5570
+ return null;
5571
+ }
5572
+ var key = getDictionaryKey(inst);
5573
+ return bankForRegistrationName && bankForRegistrationName[key];
5574
+ },
5575
+
5576
+ /**
5577
+ * Deletes a listener from the registration bank.
5578
+ *
5579
+ * @param {object} inst The instance, which is the source of events.
5580
+ * @param {string} registrationName Name of listener (e.g. `onClick`).
5581
+ */
5582
+ deleteListener: function (inst, registrationName) {
5583
+ var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];
5584
+ if (PluginModule && PluginModule.willDeleteListener) {
5585
+ PluginModule.willDeleteListener(inst, registrationName);
5586
+ }
5587
+
5588
+ var bankForRegistrationName = listenerBank[registrationName];
5589
+ // TODO: This should never be null -- when is it?
5590
+ if (bankForRegistrationName) {
5591
+ var key = getDictionaryKey(inst);
5592
+ delete bankForRegistrationName[key];
5593
+ }
5594
+ },
5595
+
5596
+ /**
5597
+ * Deletes all listeners for the DOM element with the supplied ID.
5598
+ *
5599
+ * @param {object} inst The instance, which is the source of events.
5600
+ */
5601
+ deleteAllListeners: function (inst) {
5602
+ var key = getDictionaryKey(inst);
5603
+ for (var registrationName in listenerBank) {
5604
+ if (!listenerBank.hasOwnProperty(registrationName)) {
5605
+ continue;
5606
+ }
5607
+
5608
+ if (!listenerBank[registrationName][key]) {
5609
+ continue;
5610
+ }
5611
+
5612
+ var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];
5613
+ if (PluginModule && PluginModule.willDeleteListener) {
5614
+ PluginModule.willDeleteListener(inst, registrationName);
5615
+ }
5616
+
5617
+ delete listenerBank[registrationName][key];
5618
+ }
5619
+ },
5620
+
5621
+ /**
5622
+ * Allows registered plugins an opportunity to extract events from top-level
5623
+ * native browser events.
5624
+ *
5625
+ * @return {*} An accumulation of synthetic events.
5626
+ * @internal
5627
+ */
5628
+ extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
5629
+ var events;
5630
+ var plugins = EventPluginRegistry.plugins;
5631
+ for (var i = 0; i < plugins.length; i++) {
5632
+ // Not every plugin in the ordering may be loaded at runtime.
5633
+ var possiblePlugin = plugins[i];
5634
+ if (possiblePlugin) {
5635
+ var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);
5636
+ if (extractedEvents) {
5637
+ events = accumulateInto(events, extractedEvents);
5638
+ }
5639
+ }
5640
+ }
5641
+ return events;
5642
+ },
5643
+
5644
+ /**
5645
+ * Enqueues a synthetic event that should be dispatched when
5646
+ * `processEventQueue` is invoked.
5647
+ *
5648
+ * @param {*} events An accumulation of synthetic events.
5649
+ * @internal
5650
+ */
5651
+ enqueueEvents: function (events) {
5652
+ if (events) {
5653
+ eventQueue = accumulateInto(eventQueue, events);
5654
+ }
5655
+ },
5656
+
5657
+ /**
5658
+ * Dispatches all synthetic events on the event queue.
5659
+ *
5660
+ * @internal
5661
+ */
5662
+ processEventQueue: function (simulated) {
5663
+ // Set `eventQueue` to null before processing it so that we can tell if more
5664
+ // events get enqueued while processing.
5665
+ var processingEventQueue = eventQueue;
5666
+ eventQueue = null;
5667
+ if (simulated) {
5668
+ forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);
5669
+ } else {
5670
+ forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);
5671
+ }
5672
+ !!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;
5673
+ // This would be a good time to rethrow if any of the event handlers threw.
5674
+ ReactErrorUtils.rethrowCaughtError();
5675
+ },
5676
+
5677
+ /**
5678
+ * These are needed for tests only. Do not use!
5679
+ */
5680
+ __purge: function () {
5681
+ listenerBank = {};
5682
+ },
5683
+
5684
+ __getListenerBank: function () {
5685
+ return listenerBank;
5686
+ }
5687
+
5688
+ };
5689
+
5690
+ module.exports = EventPluginHub;
5691
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
5692
+
5693
+ /***/ },
5694
+ /* 44 */
5695
+ /***/ function(module, exports, __webpack_require__) {
5696
+
5697
+ /* WEBPACK VAR INJECTION */(function(process) {/**
5698
+ * Copyright 2013-present, Facebook, Inc.
5699
+ * All rights reserved.
5700
+ *
5701
+ * This source code is licensed under the BSD-style license found in the
5702
+ * LICENSE file in the root directory of this source tree. An additional grant
5703
+ * of patent rights can be found in the PATENTS file in the same directory.
5704
+ *
5705
+ *
5706
+ */
5707
+
5708
+ 'use strict';
5709
+
5710
+ var _prodInvariant = __webpack_require__(36);
5711
+
5712
+ var invariant = __webpack_require__(9);
5713
+
5714
+ /**
5715
+ * Injectable ordering of event plugins.
5716
+ */
5717
+ var eventPluginOrder = null;
5718
+
5719
+ /**
5720
+ * Injectable mapping from names to event plugin modules.
5721
+ */
5722
+ var namesToPlugins = {};
5723
+
5724
+ /**
5725
+ * Recomputes the plugin list using the injected plugins and plugin ordering.
5726
+ *
5727
+ * @private
5728
+ */
5729
+ function recomputePluginOrdering() {
5730
+ if (!eventPluginOrder) {
5731
+ // Wait until an `eventPluginOrder` is injected.
5732
+ return;
5733
+ }
5734
+ for (var pluginName in namesToPlugins) {
5735
+ var pluginModule = namesToPlugins[pluginName];
5736
+ var pluginIndex = eventPluginOrder.indexOf(pluginName);
5737
+ !(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;
5738
+ if (EventPluginRegistry.plugins[pluginIndex]) {
5739
+ continue;
5740
+ }
5741
+ !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;
5742
+ EventPluginRegistry.plugins[pluginIndex] = pluginModule;
5743
+ var publishedEvents = pluginModule.eventTypes;
5744
+ for (var eventName in publishedEvents) {
5745
+ !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;
5746
+ }
5747
+ }
5748
+ }
5749
+
5750
+ /**
5751
+ * Publishes an event so that it can be dispatched by the supplied plugin.
5752
+ *
5753
+ * @param {object} dispatchConfig Dispatch configuration for the event.
5754
+ * @param {object} PluginModule Plugin publishing the event.
5755
+ * @return {boolean} True if the event was successfully published.
5756
+ * @private
5757
+ */
5758
+ function publishEventForPlugin(dispatchConfig, pluginModule, eventName) {
5759
+ !!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;
5760
+ EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;
5761
+
5762
+ var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;
5763
+ if (phasedRegistrationNames) {
5764
+ for (var phaseName in phasedRegistrationNames) {
5765
+ if (phasedRegistrationNames.hasOwnProperty(phaseName)) {
5766
+ var phasedRegistrationName = phasedRegistrationNames[phaseName];
5767
+ publishRegistrationName(phasedRegistrationName, pluginModule, eventName);
5768
+ }
5769
+ }
5770
+ return true;
5771
+ } else if (dispatchConfig.registrationName) {
5772
+ publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);
5773
+ return true;
5774
+ }
5775
+ return false;
5776
+ }
5777
+
5778
+ /**
5779
+ * Publishes a registration name that is used to identify dispatched events and
5780
+ * can be used with `EventPluginHub.putListener` to register listeners.
5781
+ *
5782
+ * @param {string} registrationName Registration name to add.
5783
+ * @param {object} PluginModule Plugin publishing the event.
5784
+ * @private
5785
+ */
5786
+ function publishRegistrationName(registrationName, pluginModule, eventName) {
5787
+ !!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;
5788
+ EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;
5789
+ EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;
5790
+
5791
+ if (process.env.NODE_ENV !== 'production') {
5792
+ var lowerCasedName = registrationName.toLowerCase();
5793
+ EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;
5794
+
5795
+ if (registrationName === 'onDoubleClick') {
5796
+ EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;
5797
+ }
5798
+ }
5799
+ }
5800
+
5801
+ /**
5802
+ * Registers plugins so that they can extract and dispatch events.
5803
+ *
5804
+ * @see {EventPluginHub}
5805
+ */
5806
+ var EventPluginRegistry = {
5807
+
5808
+ /**
5809
+ * Ordered list of injected plugins.
5810
+ */
5811
+ plugins: [],
5812
+
5813
+ /**
5814
+ * Mapping from event name to dispatch config
5815
+ */
5816
+ eventNameDispatchConfigs: {},
5817
+
5818
+ /**
5819
+ * Mapping from registration name to plugin module
5820
+ */
5821
+ registrationNameModules: {},
5822
+
5823
+ /**
5824
+ * Mapping from registration name to event name
5825
+ */
5826
+ registrationNameDependencies: {},
5827
+
5828
+ /**
5829
+ * Mapping from lowercase registration names to the properly cased version,
5830
+ * used to warn in the case of missing event handlers. Available
5831
+ * only in __DEV__.
5832
+ * @type {Object}
5833
+ */
5834
+ possibleRegistrationNames: process.env.NODE_ENV !== 'production' ? {} : null,
5835
+ // Trust the developer to only use possibleRegistrationNames in __DEV__
5836
+
5837
+ /**
5838
+ * Injects an ordering of plugins (by plugin name). This allows the ordering
5839
+ * to be decoupled from injection of the actual plugins so that ordering is
5840
+ * always deterministic regardless of packaging, on-the-fly injection, etc.
5841
+ *
5842
+ * @param {array} InjectedEventPluginOrder
5843
+ * @internal
5844
+ * @see {EventPluginHub.injection.injectEventPluginOrder}
5845
+ */
5846
+ injectEventPluginOrder: function (injectedEventPluginOrder) {
5847
+ !!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;
5848
+ // Clone the ordering so it cannot be dynamically mutated.
5849
+ eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);
5850
+ recomputePluginOrdering();
5851
+ },
5852
+
5853
+ /**
5854
+ * Injects plugins to be used by `EventPluginHub`. The plugin names must be
5855
+ * in the ordering injected by `injectEventPluginOrder`.
5856
+ *
5857
+ * Plugins can be injected as part of page initialization or on-the-fly.
5858
+ *
5859
+ * @param {object} injectedNamesToPlugins Map from names to plugin modules.
5860
+ * @internal
5861
+ * @see {EventPluginHub.injection.injectEventPluginsByName}
5862
+ */
5863
+ injectEventPluginsByName: function (injectedNamesToPlugins) {
5864
+ var isOrderingDirty = false;
5865
+ for (var pluginName in injectedNamesToPlugins) {
5866
+ if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {
5867
+ continue;
5868
+ }
5869
+ var pluginModule = injectedNamesToPlugins[pluginName];
5870
+ if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {
5871
+ !!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;
5872
+ namesToPlugins[pluginName] = pluginModule;
5873
+ isOrderingDirty = true;
5874
+ }
5875
+ }
5876
+ if (isOrderingDirty) {
5877
+ recomputePluginOrdering();
5878
+ }
5879
+ },
5880
+
5881
+ /**
5882
+ * Looks up the plugin for the supplied event.
5883
+ *
5884
+ * @param {object} event A synthetic event.
5885
+ * @return {?object} The plugin that created the supplied event.
5886
+ * @internal
5887
+ */
5888
+ getPluginModuleForEvent: function (event) {
5889
+ var dispatchConfig = event.dispatchConfig;
5890
+ if (dispatchConfig.registrationName) {
5891
+ return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;
5892
+ }
5893
+ if (dispatchConfig.phasedRegistrationNames !== undefined) {
5894
+ // pulling phasedRegistrationNames out of dispatchConfig helps Flow see
5895
+ // that it is not undefined.
5896
+ var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;
5897
+
5898
+ for (var phase in phasedRegistrationNames) {
5899
+ if (!phasedRegistrationNames.hasOwnProperty(phase)) {
5900
+ continue;
5901
+ }
5902
+ var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];
5903
+ if (pluginModule) {
5904
+ return pluginModule;
5905
+ }
5906
+ }
5907
+ }
5908
+ return null;
5909
+ },
5910
+
5911
+ /**
5912
+ * Exposed for unit testing.
5913
+ * @private
5914
+ */
5915
+ _resetEventPlugins: function () {
5916
+ eventPluginOrder = null;
5917
+ for (var pluginName in namesToPlugins) {
5918
+ if (namesToPlugins.hasOwnProperty(pluginName)) {
5919
+ delete namesToPlugins[pluginName];
5920
+ }
5921
+ }
5922
+ EventPluginRegistry.plugins.length = 0;
5923
+
5924
+ var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;
5925
+ for (var eventName in eventNameDispatchConfigs) {
5926
+ if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {
5927
+ delete eventNameDispatchConfigs[eventName];
5928
+ }
5929
+ }
5930
+
5931
+ var registrationNameModules = EventPluginRegistry.registrationNameModules;
5932
+ for (var registrationName in registrationNameModules) {
5933
+ if (registrationNameModules.hasOwnProperty(registrationName)) {
5934
+ delete registrationNameModules[registrationName];
5935
+ }
5936
+ }
5937
+
5938
+ if (process.env.NODE_ENV !== 'production') {
5939
+ var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;
5940
+ for (var lowerCasedName in possibleRegistrationNames) {
5941
+ if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {
5942
+ delete possibleRegistrationNames[lowerCasedName];
5943
+ }
5944
+ }
5945
+ }
5946
+ }
5947
+
5948
+ };
5949
+
5950
+ module.exports = EventPluginRegistry;
5951
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
5952
+
5953
+ /***/ },
5954
+ /* 45 */
5955
+ /***/ function(module, exports, __webpack_require__) {
5956
+
5957
+ /* WEBPACK VAR INJECTION */(function(process) {/**
5958
+ * Copyright 2013-present, Facebook, Inc.
5959
+ * All rights reserved.
5960
+ *
5961
+ * This source code is licensed under the BSD-style license found in the
5962
+ * LICENSE file in the root directory of this source tree. An additional grant
5963
+ * of patent rights can be found in the PATENTS file in the same directory.
5964
+ *
5965
+ */
5966
+
5967
+ 'use strict';
5968
+
5969
+ var _prodInvariant = __webpack_require__(36);
5970
+
5971
+ var ReactErrorUtils = __webpack_require__(46);
5972
+
5973
+ var invariant = __webpack_require__(9);
5974
+ var warning = __webpack_require__(12);
5975
+
5976
+ /**
5977
+ * Injected dependencies:
5978
+ */
5979
+
5980
+ /**
5981
+ * - `ComponentTree`: [required] Module that can convert between React instances
5982
+ * and actual node references.
5983
+ */
5984
+ var ComponentTree;
5985
+ var TreeTraversal;
5986
+ var injection = {
5987
+ injectComponentTree: function (Injected) {
5988
+ ComponentTree = Injected;
5989
+ if (process.env.NODE_ENV !== 'production') {
5990
+ process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;
5991
+ }
5992
+ },
5993
+ injectTreeTraversal: function (Injected) {
5994
+ TreeTraversal = Injected;
5995
+ if (process.env.NODE_ENV !== 'production') {
5996
+ process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;
5997
+ }
5998
+ }
5999
+ };
6000
+
6001
+ function isEndish(topLevelType) {
6002
+ return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';
6003
+ }
6004
+
6005
+ function isMoveish(topLevelType) {
6006
+ return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';
6007
+ }
6008
+ function isStartish(topLevelType) {
6009
+ return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';
6010
+ }
6011
+
6012
+ var validateEventDispatches;
6013
+ if (process.env.NODE_ENV !== 'production') {
6014
+ validateEventDispatches = function (event) {
6015
+ var dispatchListeners = event._dispatchListeners;
6016
+ var dispatchInstances = event._dispatchInstances;
6017
+
6018
+ var listenersIsArr = Array.isArray(dispatchListeners);
6019
+ var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;
6020
+
6021
+ var instancesIsArr = Array.isArray(dispatchInstances);
6022
+ var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;
6023
+
6024
+ process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;
6025
+ };
6026
+ }
6027
+
6028
+ /**
6029
+ * Dispatch the event to the listener.
6030
+ * @param {SyntheticEvent} event SyntheticEvent to handle
6031
+ * @param {boolean} simulated If the event is simulated (changes exn behavior)
6032
+ * @param {function} listener Application-level callback
6033
+ * @param {*} inst Internal component instance
6034
+ */
6035
+ function executeDispatch(event, simulated, listener, inst) {
6036
+ var type = event.type || 'unknown-event';
6037
+ event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);
6038
+ if (simulated) {
6039
+ ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);
6040
+ } else {
6041
+ ReactErrorUtils.invokeGuardedCallback(type, listener, event);
6042
+ }
6043
+ event.currentTarget = null;
6044
+ }
6045
+
6046
+ /**
6047
+ * Standard/simple iteration through an event's collected dispatches.
6048
+ */
6049
+ function executeDispatchesInOrder(event, simulated) {
6050
+ var dispatchListeners = event._dispatchListeners;
6051
+ var dispatchInstances = event._dispatchInstances;
6052
+ if (process.env.NODE_ENV !== 'production') {
6053
+ validateEventDispatches(event);
6054
+ }
6055
+ if (Array.isArray(dispatchListeners)) {
6056
+ for (var i = 0; i < dispatchListeners.length; i++) {
6057
+ if (event.isPropagationStopped()) {
6058
+ break;
6059
+ }
6060
+ // Listeners and Instances are two parallel arrays that are always in sync.
6061
+ executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);
6062
+ }
6063
+ } else if (dispatchListeners) {
6064
+ executeDispatch(event, simulated, dispatchListeners, dispatchInstances);
6065
+ }
6066
+ event._dispatchListeners = null;
6067
+ event._dispatchInstances = null;
6068
+ }
6069
+
6070
+ /**
6071
+ * Standard/simple iteration through an event's collected dispatches, but stops
6072
+ * at the first dispatch execution returning true, and returns that id.
6073
+ *
6074
+ * @return {?string} id of the first dispatch execution who's listener returns
6075
+ * true, or null if no listener returned true.
6076
+ */
6077
+ function executeDispatchesInOrderStopAtTrueImpl(event) {
6078
+ var dispatchListeners = event._dispatchListeners;
6079
+ var dispatchInstances = event._dispatchInstances;
6080
+ if (process.env.NODE_ENV !== 'production') {
6081
+ validateEventDispatches(event);
6082
+ }
6083
+ if (Array.isArray(dispatchListeners)) {
6084
+ for (var i = 0; i < dispatchListeners.length; i++) {
6085
+ if (event.isPropagationStopped()) {
6086
+ break;
6087
+ }
6088
+ // Listeners and Instances are two parallel arrays that are always in sync.
6089
+ if (dispatchListeners[i](event, dispatchInstances[i])) {
6090
+ return dispatchInstances[i];
6091
+ }
6092
+ }
6093
+ } else if (dispatchListeners) {
6094
+ if (dispatchListeners(event, dispatchInstances)) {
6095
+ return dispatchInstances;
6096
+ }
6097
+ }
6098
+ return null;
6099
+ }
6100
+
6101
+ /**
6102
+ * @see executeDispatchesInOrderStopAtTrueImpl
6103
+ */
6104
+ function executeDispatchesInOrderStopAtTrue(event) {
6105
+ var ret = executeDispatchesInOrderStopAtTrueImpl(event);
6106
+ event._dispatchInstances = null;
6107
+ event._dispatchListeners = null;
6108
+ return ret;
6109
+ }
6110
+
6111
+ /**
6112
+ * Execution of a "direct" dispatch - there must be at most one dispatch
6113
+ * accumulated on the event or it is considered an error. It doesn't really make
6114
+ * sense for an event with multiple dispatches (bubbled) to keep track of the
6115
+ * return values at each dispatch execution, but it does tend to make sense when
6116
+ * dealing with "direct" dispatches.
6117
+ *
6118
+ * @return {*} The return value of executing the single dispatch.
6119
+ */
6120
+ function executeDirectDispatch(event) {
6121
+ if (process.env.NODE_ENV !== 'production') {
6122
+ validateEventDispatches(event);
6123
+ }
6124
+ var dispatchListener = event._dispatchListeners;
6125
+ var dispatchInstance = event._dispatchInstances;
6126
+ !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;
6127
+ event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;
6128
+ var res = dispatchListener ? dispatchListener(event) : null;
6129
+ event.currentTarget = null;
6130
+ event._dispatchListeners = null;
6131
+ event._dispatchInstances = null;
6132
+ return res;
6133
+ }
6134
+
6135
+ /**
6136
+ * @param {SyntheticEvent} event
6137
+ * @return {boolean} True iff number of dispatches accumulated is greater than 0.
6138
+ */
6139
+ function hasDispatches(event) {
6140
+ return !!event._dispatchListeners;
6141
+ }
6142
+
6143
+ /**
6144
+ * General utilities that are useful in creating custom Event Plugins.
6145
+ */
6146
+ var EventPluginUtils = {
6147
+ isEndish: isEndish,
6148
+ isMoveish: isMoveish,
6149
+ isStartish: isStartish,
6150
+
6151
+ executeDirectDispatch: executeDirectDispatch,
6152
+ executeDispatchesInOrder: executeDispatchesInOrder,
6153
+ executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,
6154
+ hasDispatches: hasDispatches,
6155
+
6156
+ getInstanceFromNode: function (node) {
6157
+ return ComponentTree.getInstanceFromNode(node);
6158
+ },
6159
+ getNodeFromInstance: function (node) {
6160
+ return ComponentTree.getNodeFromInstance(node);
6161
+ },
6162
+ isAncestor: function (a, b) {
6163
+ return TreeTraversal.isAncestor(a, b);
6164
+ },
6165
+ getLowestCommonAncestor: function (a, b) {
6166
+ return TreeTraversal.getLowestCommonAncestor(a, b);
6167
+ },
6168
+ getParentInstance: function (inst) {
6169
+ return TreeTraversal.getParentInstance(inst);
6170
+ },
6171
+ traverseTwoPhase: function (target, fn, arg) {
6172
+ return TreeTraversal.traverseTwoPhase(target, fn, arg);
6173
+ },
6174
+ traverseEnterLeave: function (from, to, fn, argFrom, argTo) {
6175
+ return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);
6176
+ },
6177
+
6178
+ injection: injection
6179
+ };
6180
+
6181
+ module.exports = EventPluginUtils;
6182
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
6183
+
6184
+ /***/ },
6185
+ /* 46 */
6186
+ /***/ function(module, exports, __webpack_require__) {
6187
+
6188
+ /* WEBPACK VAR INJECTION */(function(process) {/**
6189
+ * Copyright 2013-present, Facebook, Inc.
6190
+ * All rights reserved.
6191
+ *
6192
+ * This source code is licensed under the BSD-style license found in the
6193
+ * LICENSE file in the root directory of this source tree. An additional grant
6194
+ * of patent rights can be found in the PATENTS file in the same directory.
6195
+ *
6196
+ *
6197
+ */
6198
+
6199
+ 'use strict';
6200
+
6201
+ var caughtError = null;
6202
+
6203
+ /**
6204
+ * Call a function while guarding against errors that happens within it.
6205
+ *
6206
+ * @param {String} name of the guard to use for logging or debugging
6207
+ * @param {Function} func The function to invoke
6208
+ * @param {*} a First argument
6209
+ * @param {*} b Second argument
6210
+ */
6211
+ function invokeGuardedCallback(name, func, a) {
6212
+ try {
6213
+ func(a);
6214
+ } catch (x) {
6215
+ if (caughtError === null) {
6216
+ caughtError = x;
6217
+ }
6218
+ }
6219
+ }
6220
+
6221
+ var ReactErrorUtils = {
6222
+ invokeGuardedCallback: invokeGuardedCallback,
6223
+
6224
+ /**
6225
+ * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event
6226
+ * handler are sure to be rethrown by rethrowCaughtError.
6227
+ */
6228
+ invokeGuardedCallbackWithCatch: invokeGuardedCallback,
6229
+
6230
+ /**
6231
+ * During execution of guarded functions we will capture the first error which
6232
+ * we will rethrow to be handled by the top level error handler.
6233
+ */
6234
+ rethrowCaughtError: function () {
6235
+ if (caughtError) {
6236
+ var error = caughtError;
6237
+ caughtError = null;
6238
+ throw error;
6239
+ }
6240
+ }
6241
+ };
6242
+
6243
+ if (process.env.NODE_ENV !== 'production') {
6244
+ /**
6245
+ * To help development we can get better devtools integration by simulating a
6246
+ * real browser event.
6247
+ */
6248
+ if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {
6249
+ var fakeNode = document.createElement('react');
6250
+ ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {
6251
+ var boundFunc = func.bind(null, a);
6252
+ var evtType = 'react-' + name;
6253
+ fakeNode.addEventListener(evtType, boundFunc, false);
6254
+ var evt = document.createEvent('Event');
6255
+ // $FlowFixMe https://github.com/facebook/flow/issues/2336
6256
+ evt.initEvent(evtType, false, false);
6257
+ fakeNode.dispatchEvent(evt);
6258
+ fakeNode.removeEventListener(evtType, boundFunc, false);
6259
+ };
6260
+ }
6261
+ }
6262
+
6263
+ module.exports = ReactErrorUtils;
6264
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
6265
+
6266
+ /***/ },
6267
+ /* 47 */
6268
+ /***/ function(module, exports, __webpack_require__) {
6269
+
6270
+ /* WEBPACK VAR INJECTION */(function(process) {/**
6271
+ * Copyright 2014-present, Facebook, Inc.
6272
+ * All rights reserved.
6273
+ *
6274
+ * This source code is licensed under the BSD-style license found in the
6275
+ * LICENSE file in the root directory of this source tree. An additional grant
6276
+ * of patent rights can be found in the PATENTS file in the same directory.
6277
+ *
6278
+ *
6279
+ */
6280
+
6281
+ 'use strict';
6282
+
6283
+ var _prodInvariant = __webpack_require__(36);
6284
+
6285
+ var invariant = __webpack_require__(9);
6286
+
6287
+ /**
6288
+ * Accumulates items that must not be null or undefined into the first one. This
6289
+ * is used to conserve memory by avoiding array allocations, and thus sacrifices
6290
+ * API cleanness. Since `current` can be null before being passed in and not
6291
+ * null after this function, make sure to assign it back to `current`:
6292
+ *
6293
+ * `a = accumulateInto(a, b);`
6294
+ *
6295
+ * This API should be sparingly used. Try `accumulate` for something cleaner.
6296
+ *
6297
+ * @return {*|array<*>} An accumulation of items.
6298
+ */
6299
+
6300
+ function accumulateInto(current, next) {
6301
+ !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;
6302
+
6303
+ if (current == null) {
6304
+ return next;
6305
+ }
6306
+
6307
+ // Both are not empty. Warning: Never call x.concat(y) when you are not
6308
+ // certain that x is an Array (x could be a string with concat method).
6309
+ if (Array.isArray(current)) {
6310
+ if (Array.isArray(next)) {
6311
+ current.push.apply(current, next);
6312
+ return current;
6313
+ }
6314
+ current.push(next);
6315
+ return current;
6316
+ }
6317
+
6318
+ if (Array.isArray(next)) {
6319
+ // A bit too dangerous to mutate `next`.
6320
+ return [current].concat(next);
6321
+ }
6322
+
6323
+ return [current, next];
6324
+ }
6325
+
6326
+ module.exports = accumulateInto;
6327
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
6328
+
6329
+ /***/ },
6330
+ /* 48 */
6331
+ /***/ function(module, exports) {
6332
+
6333
+ /**
6334
+ * Copyright 2013-present, Facebook, Inc.
6335
+ * All rights reserved.
6336
+ *
6337
+ * This source code is licensed under the BSD-style license found in the
6338
+ * LICENSE file in the root directory of this source tree. An additional grant
6339
+ * of patent rights can be found in the PATENTS file in the same directory.
6340
+ *
6341
+ *
6342
+ */
6343
+
6344
+ 'use strict';
6345
+
6346
+ /**
6347
+ * @param {array} arr an "accumulation" of items which is either an Array or
6348
+ * a single item. Useful when paired with the `accumulate` module. This is a
6349
+ * simple utility that allows us to reason about a collection of items, but
6350
+ * handling the case when there is exactly one item (and we do not need to
6351
+ * allocate an array).
6352
+ */
6353
+
6354
+ function forEachAccumulated(arr, cb, scope) {
6355
+ if (Array.isArray(arr)) {
6356
+ arr.forEach(cb, scope);
6357
+ } else if (arr) {
6358
+ cb.call(scope, arr);
6359
+ }
6360
+ }
6361
+
6362
+ module.exports = forEachAccumulated;
6363
+
6364
+ /***/ },
6365
+ /* 49 */
6366
+ /***/ function(module, exports) {
6367
+
6368
+ /**
6369
+ * Copyright (c) 2013-present, Facebook, Inc.
6370
+ * All rights reserved.
6371
+ *
6372
+ * This source code is licensed under the BSD-style license found in the
6373
+ * LICENSE file in the root directory of this source tree. An additional grant
6374
+ * of patent rights can be found in the PATENTS file in the same directory.
6375
+ *
6376
+ */
6377
+
6378
+ 'use strict';
6379
+
6380
+ var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
6381
+
6382
+ /**
6383
+ * Simple, lightweight module assisting with the detection and context of
6384
+ * Worker. Helps avoid circular dependencies and allows code to reason about
6385
+ * whether or not they are in a Worker, even if they never include the main
6386
+ * `ReactWorker` dependency.
6387
+ */
6388
+ var ExecutionEnvironment = {
6389
+
6390
+ canUseDOM: canUseDOM,
6391
+
6392
+ canUseWorkers: typeof Worker !== 'undefined',
6393
+
6394
+ canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),
6395
+
6396
+ canUseViewport: canUseDOM && !!window.screen,
6397
+
6398
+ isInWorker: !canUseDOM // For now, this is true - might change in the future.
6399
+
6400
+ };
6401
+
6402
+ module.exports = ExecutionEnvironment;
6403
+
6404
+ /***/ },
6405
+ /* 50 */
6406
+ /***/ function(module, exports, __webpack_require__) {
6407
+
6408
+ /**
6409
+ * Copyright 2013-present, Facebook, Inc.
6410
+ * All rights reserved.
6411
+ *
6412
+ * This source code is licensed under the BSD-style license found in the
6413
+ * LICENSE file in the root directory of this source tree. An additional grant
6414
+ * of patent rights can be found in the PATENTS file in the same directory.
6415
+ *
6416
+ */
6417
+
6418
+ 'use strict';
6419
+
6420
+ var _assign = __webpack_require__(51);
6421
+
6422
+ var PooledClass = __webpack_require__(52);
6423
+
6424
+ var getTextContentAccessor = __webpack_require__(53);
6425
+
6426
+ /**
6427
+ * This helper class stores information about text content of a target node,
6428
+ * allowing comparison of content before and after a given event.
6429
+ *
6430
+ * Identify the node where selection currently begins, then observe
6431
+ * both its text content and its current position in the DOM. Since the
6432
+ * browser may natively replace the target node during composition, we can
6433
+ * use its position to find its replacement.
6434
+ *
6435
+ * @param {DOMEventTarget} root
6436
+ */
6437
+ function FallbackCompositionState(root) {
6438
+ this._root = root;
6439
+ this._startText = this.getText();
6440
+ this._fallbackText = null;
6441
+ }
6442
+
6443
+ _assign(FallbackCompositionState.prototype, {
6444
+ destructor: function () {
6445
+ this._root = null;
6446
+ this._startText = null;
6447
+ this._fallbackText = null;
6448
+ },
6449
+
6450
+ /**
6451
+ * Get current text of input.
6452
+ *
6453
+ * @return {string}
6454
+ */
6455
+ getText: function () {
6456
+ if ('value' in this._root) {
6457
+ return this._root.value;
6458
+ }
6459
+ return this._root[getTextContentAccessor()];
6460
+ },
6461
+
6462
+ /**
6463
+ * Determine the differing substring between the initially stored
6464
+ * text content and the current content.
6465
+ *
6466
+ * @return {string}
6467
+ */
6468
+ getData: function () {
6469
+ if (this._fallbackText) {
6470
+ return this._fallbackText;
6471
+ }
6472
+
6473
+ var start;
6474
+ var startValue = this._startText;
6475
+ var startLength = startValue.length;
6476
+ var end;
6477
+ var endValue = this.getText();
6478
+ var endLength = endValue.length;
6479
+
6480
+ for (start = 0; start < startLength; start++) {
6481
+ if (startValue[start] !== endValue[start]) {
6482
+ break;
6483
+ }
6484
+ }
6485
+
6486
+ var minEnd = startLength - start;
6487
+ for (end = 1; end <= minEnd; end++) {
6488
+ if (startValue[startLength - end] !== endValue[endLength - end]) {
6489
+ break;
6490
+ }
6491
+ }
6492
+
6493
+ var sliceTail = end > 1 ? 1 - end : undefined;
6494
+ this._fallbackText = endValue.slice(start, sliceTail);
6495
+ return this._fallbackText;
6496
+ }
6497
+ });
6498
+
6499
+ PooledClass.addPoolingTo(FallbackCompositionState);
6500
+
6501
+ module.exports = FallbackCompositionState;
6502
+
6503
+ /***/ },
6504
+ /* 51 */
6505
+ /***/ function(module, exports) {
6506
+
6507
+ 'use strict';
6508
+ /* eslint-disable no-unused-vars */
6509
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
6510
+ var propIsEnumerable = Object.prototype.propertyIsEnumerable;
6511
+
6512
+ function toObject(val) {
6513
+ if (val === null || val === undefined) {
6514
+ throw new TypeError('Object.assign cannot be called with null or undefined');
6515
+ }
6516
+
6517
+ return Object(val);
6518
+ }
6519
+
6520
+ function shouldUseNative() {
6521
+ try {
6522
+ if (!Object.assign) {
6523
+ return false;
6524
+ }
6525
+
6526
+ // Detect buggy property enumeration order in older V8 versions.
6527
+
6528
+ // https://bugs.chromium.org/p/v8/issues/detail?id=4118
6529
+ var test1 = new String('abc'); // eslint-disable-line
6530
+ test1[5] = 'de';
6531
+ if (Object.getOwnPropertyNames(test1)[0] === '5') {
6532
+ return false;
6533
+ }
6534
+
6535
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3056
6536
+ var test2 = {};
6537
+ for (var i = 0; i < 10; i++) {
6538
+ test2['_' + String.fromCharCode(i)] = i;
6539
+ }
6540
+ var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
6541
+ return test2[n];
6542
+ });
6543
+ if (order2.join('') !== '0123456789') {
6544
+ return false;
6545
+ }
6546
+
6547
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3056
6548
+ var test3 = {};
6549
+ 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
6550
+ test3[letter] = letter;
6551
+ });
6552
+ if (Object.keys(Object.assign({}, test3)).join('') !==
6553
+ 'abcdefghijklmnopqrst') {
6554
+ return false;
6555
+ }
6556
+
6557
+ return true;
6558
+ } catch (e) {
6559
+ // We don't expect any of the above to throw, but better to be safe.
6560
+ return false;
6561
+ }
6562
+ }
6563
+
6564
+ module.exports = shouldUseNative() ? Object.assign : function (target, source) {
6565
+ var from;
6566
+ var to = toObject(target);
6567
+ var symbols;
6568
+
6569
+ for (var s = 1; s < arguments.length; s++) {
6570
+ from = Object(arguments[s]);
6571
+
6572
+ for (var key in from) {
6573
+ if (hasOwnProperty.call(from, key)) {
6574
+ to[key] = from[key];
6575
+ }
6576
+ }
6577
+
6578
+ if (Object.getOwnPropertySymbols) {
6579
+ symbols = Object.getOwnPropertySymbols(from);
6580
+ for (var i = 0; i < symbols.length; i++) {
6581
+ if (propIsEnumerable.call(from, symbols[i])) {
6582
+ to[symbols[i]] = from[symbols[i]];
6583
+ }
6584
+ }
6585
+ }
6586
+ }
6587
+
6588
+ return to;
6589
+ };
6590
+
6591
+
6592
+ /***/ },
6593
+ /* 52 */
6594
+ /***/ function(module, exports, __webpack_require__) {
6595
+
6596
+ /* WEBPACK VAR INJECTION */(function(process) {/**
6597
+ * Copyright 2013-present, Facebook, Inc.
6598
+ * All rights reserved.
6599
+ *
6600
+ * This source code is licensed under the BSD-style license found in the
6601
+ * LICENSE file in the root directory of this source tree. An additional grant
6602
+ * of patent rights can be found in the PATENTS file in the same directory.
6603
+ *
6604
+ *
6605
+ */
6606
+
6607
+ 'use strict';
6608
+
6609
+ var _prodInvariant = __webpack_require__(36);
6610
+
6611
+ var invariant = __webpack_require__(9);
6612
+
6613
+ /**
6614
+ * Static poolers. Several custom versions for each potential number of
6615
+ * arguments. A completely generic pooler is easy to implement, but would
6616
+ * require accessing the `arguments` object. In each of these, `this` refers to
6617
+ * the Class itself, not an instance. If any others are needed, simply add them
6618
+ * here, or in their own files.
6619
+ */
6620
+ var oneArgumentPooler = function (copyFieldsFrom) {
6621
+ var Klass = this;
6622
+ if (Klass.instancePool.length) {
6623
+ var instance = Klass.instancePool.pop();
6624
+ Klass.call(instance, copyFieldsFrom);
6625
+ return instance;
6626
+ } else {
6627
+ return new Klass(copyFieldsFrom);
6628
+ }
6629
+ };
6630
+
6631
+ var twoArgumentPooler = function (a1, a2) {
6632
+ var Klass = this;
6633
+ if (Klass.instancePool.length) {
6634
+ var instance = Klass.instancePool.pop();
6635
+ Klass.call(instance, a1, a2);
6636
+ return instance;
6637
+ } else {
6638
+ return new Klass(a1, a2);
6639
+ }
6640
+ };
6641
+
6642
+ var threeArgumentPooler = function (a1, a2, a3) {
6643
+ var Klass = this;
6644
+ if (Klass.instancePool.length) {
6645
+ var instance = Klass.instancePool.pop();
6646
+ Klass.call(instance, a1, a2, a3);
6647
+ return instance;
6648
+ } else {
6649
+ return new Klass(a1, a2, a3);
6650
+ }
6651
+ };
6652
+
6653
+ var fourArgumentPooler = function (a1, a2, a3, a4) {
6654
+ var Klass = this;
6655
+ if (Klass.instancePool.length) {
6656
+ var instance = Klass.instancePool.pop();
6657
+ Klass.call(instance, a1, a2, a3, a4);
6658
+ return instance;
6659
+ } else {
6660
+ return new Klass(a1, a2, a3, a4);
6661
+ }
6662
+ };
6663
+
6664
+ var fiveArgumentPooler = function (a1, a2, a3, a4, a5) {
6665
+ var Klass = this;
6666
+ if (Klass.instancePool.length) {
6667
+ var instance = Klass.instancePool.pop();
6668
+ Klass.call(instance, a1, a2, a3, a4, a5);
6669
+ return instance;
6670
+ } else {
6671
+ return new Klass(a1, a2, a3, a4, a5);
6672
+ }
6673
+ };
6674
+
6675
+ var standardReleaser = function (instance) {
6676
+ var Klass = this;
6677
+ !(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;
6678
+ instance.destructor();
6679
+ if (Klass.instancePool.length < Klass.poolSize) {
6680
+ Klass.instancePool.push(instance);
6681
+ }
6682
+ };
6683
+
6684
+ var DEFAULT_POOL_SIZE = 10;
6685
+ var DEFAULT_POOLER = oneArgumentPooler;
6686
+
6687
+ /**
6688
+ * Augments `CopyConstructor` to be a poolable class, augmenting only the class
6689
+ * itself (statically) not adding any prototypical fields. Any CopyConstructor
6690
+ * you give this may have a `poolSize` property, and will look for a
6691
+ * prototypical `destructor` on instances.
6692
+ *
6693
+ * @param {Function} CopyConstructor Constructor that can be used to reset.
6694
+ * @param {Function} pooler Customizable pooler.
6695
+ */
6696
+ var addPoolingTo = function (CopyConstructor, pooler) {
6697
+ // Casting as any so that flow ignores the actual implementation and trusts
6698
+ // it to match the type we declared
6699
+ var NewKlass = CopyConstructor;
6700
+ NewKlass.instancePool = [];
6701
+ NewKlass.getPooled = pooler || DEFAULT_POOLER;
6702
+ if (!NewKlass.poolSize) {
6703
+ NewKlass.poolSize = DEFAULT_POOL_SIZE;
6704
+ }
6705
+ NewKlass.release = standardReleaser;
6706
+ return NewKlass;
6707
+ };
6708
+
6709
+ var PooledClass = {
6710
+ addPoolingTo: addPoolingTo,
6711
+ oneArgumentPooler: oneArgumentPooler,
6712
+ twoArgumentPooler: twoArgumentPooler,
6713
+ threeArgumentPooler: threeArgumentPooler,
6714
+ fourArgumentPooler: fourArgumentPooler,
6715
+ fiveArgumentPooler: fiveArgumentPooler
6716
+ };
6717
+
6718
+ module.exports = PooledClass;
6719
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
6720
+
6721
+ /***/ },
6722
+ /* 53 */
6723
+ /***/ function(module, exports, __webpack_require__) {
6724
+
6725
+ /**
6726
+ * Copyright 2013-present, Facebook, Inc.
6727
+ * All rights reserved.
6728
+ *
6729
+ * This source code is licensed under the BSD-style license found in the
6730
+ * LICENSE file in the root directory of this source tree. An additional grant
6731
+ * of patent rights can be found in the PATENTS file in the same directory.
6732
+ *
6733
+ */
6734
+
6735
+ 'use strict';
6736
+
6737
+ var ExecutionEnvironment = __webpack_require__(49);
6738
+
6739
+ var contentKey = null;
6740
+
6741
+ /**
6742
+ * Gets the key used to access text content on a DOM node.
6743
+ *
6744
+ * @return {?string} Key used to access text content.
6745
+ * @internal
6746
+ */
6747
+ function getTextContentAccessor() {
6748
+ if (!contentKey && ExecutionEnvironment.canUseDOM) {
6749
+ // Prefer textContent to innerText because many browsers support both but
6750
+ // SVG <text> elements don't support innerText even when <div> does.
6751
+ contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';
6752
+ }
6753
+ return contentKey;
6754
+ }
6755
+
6756
+ module.exports = getTextContentAccessor;
6757
+
6758
+ /***/ },
6759
+ /* 54 */
6760
+ /***/ function(module, exports, __webpack_require__) {
6761
+
6762
+ /**
6763
+ * Copyright 2013-present, Facebook, Inc.
6764
+ * All rights reserved.
6765
+ *
6766
+ * This source code is licensed under the BSD-style license found in the
6767
+ * LICENSE file in the root directory of this source tree. An additional grant
6768
+ * of patent rights can be found in the PATENTS file in the same directory.
6769
+ *
6770
+ */
6771
+
6772
+ 'use strict';
6773
+
6774
+ var SyntheticEvent = __webpack_require__(55);
6775
+
6776
+ /**
6777
+ * @interface Event
6778
+ * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents
6779
+ */
6780
+ var CompositionEventInterface = {
6781
+ data: null
6782
+ };
6783
+
6784
+ /**
6785
+ * @param {object} dispatchConfig Configuration used to dispatch this event.
6786
+ * @param {string} dispatchMarker Marker identifying the event target.
6787
+ * @param {object} nativeEvent Native browser event.
6788
+ * @extends {SyntheticUIEvent}
6789
+ */
6790
+ function SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
6791
+ return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
6792
+ }
6793
+
6794
+ SyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);
6795
+
6796
+ module.exports = SyntheticCompositionEvent;
6797
+
6798
+ /***/ },
6799
+ /* 55 */
6800
+ /***/ function(module, exports, __webpack_require__) {
6801
+
6802
+ /* WEBPACK VAR INJECTION */(function(process) {/**
6803
+ * Copyright 2013-present, Facebook, Inc.
6804
+ * All rights reserved.
6805
+ *
6806
+ * This source code is licensed under the BSD-style license found in the
6807
+ * LICENSE file in the root directory of this source tree. An additional grant
6808
+ * of patent rights can be found in the PATENTS file in the same directory.
6809
+ *
6810
+ */
6811
+
6812
+ 'use strict';
6813
+
6814
+ var _assign = __webpack_require__(51);
6815
+
6816
+ var PooledClass = __webpack_require__(52);
6817
+
6818
+ var emptyFunction = __webpack_require__(13);
6819
+ var warning = __webpack_require__(12);
6820
+
6821
+ var didWarnForAddedNewProperty = false;
6822
+ var isProxySupported = typeof Proxy === 'function';
6823
+
6824
+ var shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];
6825
+
6826
+ /**
6827
+ * @interface Event
6828
+ * @see http://www.w3.org/TR/DOM-Level-3-Events/
6829
+ */
6830
+ var EventInterface = {
6831
+ type: null,
6832
+ target: null,
6833
+ // currentTarget is set when dispatching; no use in copying it here
6834
+ currentTarget: emptyFunction.thatReturnsNull,
6835
+ eventPhase: null,
6836
+ bubbles: null,
6837
+ cancelable: null,
6838
+ timeStamp: function (event) {
6839
+ return event.timeStamp || Date.now();
6840
+ },
6841
+ defaultPrevented: null,
6842
+ isTrusted: null
6843
+ };
6844
+
6845
+ /**
6846
+ * Synthetic events are dispatched by event plugins, typically in response to a
6847
+ * top-level event delegation handler.
6848
+ *
6849
+ * These systems should generally use pooling to reduce the frequency of garbage
6850
+ * collection. The system should check `isPersistent` to determine whether the
6851
+ * event should be released into the pool after being dispatched. Users that
6852
+ * need a persisted event should invoke `persist`.
6853
+ *
6854
+ * Synthetic events (and subclasses) implement the DOM Level 3 Events API by
6855
+ * normalizing browser quirks. Subclasses do not necessarily have to implement a
6856
+ * DOM interface; custom application-specific events can also subclass this.
6857
+ *
6858
+ * @param {object} dispatchConfig Configuration used to dispatch this event.
6859
+ * @param {*} targetInst Marker identifying the event target.
6860
+ * @param {object} nativeEvent Native browser event.
6861
+ * @param {DOMEventTarget} nativeEventTarget Target node.
6862
+ */
6863
+ function SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {
6864
+ if (process.env.NODE_ENV !== 'production') {
6865
+ // these have a getter/setter for warnings
6866
+ delete this.nativeEvent;
6867
+ delete this.preventDefault;
6868
+ delete this.stopPropagation;
6869
+ }
6870
+
6871
+ this.dispatchConfig = dispatchConfig;
6872
+ this._targetInst = targetInst;
6873
+ this.nativeEvent = nativeEvent;
6874
+
6875
+ var Interface = this.constructor.Interface;
6876
+ for (var propName in Interface) {
6877
+ if (!Interface.hasOwnProperty(propName)) {
6878
+ continue;
6879
+ }
6880
+ if (process.env.NODE_ENV !== 'production') {
6881
+ delete this[propName]; // this has a getter/setter for warnings
6882
+ }
6883
+ var normalize = Interface[propName];
6884
+ if (normalize) {
6885
+ this[propName] = normalize(nativeEvent);
6886
+ } else {
6887
+ if (propName === 'target') {
6888
+ this.target = nativeEventTarget;
6889
+ } else {
6890
+ this[propName] = nativeEvent[propName];
6891
+ }
6892
+ }
6893
+ }
6894
+
6895
+ var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;
6896
+ if (defaultPrevented) {
6897
+ this.isDefaultPrevented = emptyFunction.thatReturnsTrue;
6898
+ } else {
6899
+ this.isDefaultPrevented = emptyFunction.thatReturnsFalse;
6900
+ }
6901
+ this.isPropagationStopped = emptyFunction.thatReturnsFalse;
6902
+ return this;
6903
+ }
6904
+
6905
+ _assign(SyntheticEvent.prototype, {
6906
+
6907
+ preventDefault: function () {
6908
+ this.defaultPrevented = true;
6909
+ var event = this.nativeEvent;
6910
+ if (!event) {
6911
+ return;
6912
+ }
6913
+
6914
+ if (event.preventDefault) {
6915
+ event.preventDefault();
6916
+ } else if (typeof event.returnValue !== 'unknown') {
6917
+ // eslint-disable-line valid-typeof
6918
+ event.returnValue = false;
6919
+ }
6920
+ this.isDefaultPrevented = emptyFunction.thatReturnsTrue;
6921
+ },
6922
+
6923
+ stopPropagation: function () {
6924
+ var event = this.nativeEvent;
6925
+ if (!event) {
6926
+ return;
6927
+ }
6928
+
6929
+ if (event.stopPropagation) {
6930
+ event.stopPropagation();
6931
+ } else if (typeof event.cancelBubble !== 'unknown') {
6932
+ // eslint-disable-line valid-typeof
6933
+ // The ChangeEventPlugin registers a "propertychange" event for
6934
+ // IE. This event does not support bubbling or cancelling, and
6935
+ // any references to cancelBubble throw "Member not found". A
6936
+ // typeof check of "unknown" circumvents this issue (and is also
6937
+ // IE specific).
6938
+ event.cancelBubble = true;
6939
+ }
6940
+
6941
+ this.isPropagationStopped = emptyFunction.thatReturnsTrue;
6942
+ },
6943
+
6944
+ /**
6945
+ * We release all dispatched `SyntheticEvent`s after each event loop, adding
6946
+ * them back into the pool. This allows a way to hold onto a reference that
6947
+ * won't be added back into the pool.
6948
+ */
6949
+ persist: function () {
6950
+ this.isPersistent = emptyFunction.thatReturnsTrue;
6951
+ },
6952
+
6953
+ /**
6954
+ * Checks if this event should be released back into the pool.
6955
+ *
6956
+ * @return {boolean} True if this should not be released, false otherwise.
6957
+ */
6958
+ isPersistent: emptyFunction.thatReturnsFalse,
6959
+
6960
+ /**
6961
+ * `PooledClass` looks for `destructor` on each instance it releases.
6962
+ */
6963
+ destructor: function () {
6964
+ var Interface = this.constructor.Interface;
6965
+ for (var propName in Interface) {
6966
+ if (process.env.NODE_ENV !== 'production') {
6967
+ Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));
6968
+ } else {
6969
+ this[propName] = null;
6970
+ }
6971
+ }
6972
+ for (var i = 0; i < shouldBeReleasedProperties.length; i++) {
6973
+ this[shouldBeReleasedProperties[i]] = null;
6974
+ }
6975
+ if (process.env.NODE_ENV !== 'production') {
6976
+ Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));
6977
+ Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));
6978
+ Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));
6979
+ }
6980
+ }
6981
+
6982
+ });
6983
+
6984
+ SyntheticEvent.Interface = EventInterface;
6985
+
6986
+ if (process.env.NODE_ENV !== 'production') {
6987
+ if (isProxySupported) {
6988
+ /*eslint-disable no-func-assign */
6989
+ SyntheticEvent = new Proxy(SyntheticEvent, {
6990
+ construct: function (target, args) {
6991
+ return this.apply(target, Object.create(target.prototype), args);
6992
+ },
6993
+ apply: function (constructor, that, args) {
6994
+ return new Proxy(constructor.apply(that, args), {
6995
+ set: function (target, prop, value) {
6996
+ if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {
6997
+ 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;
6998
+ didWarnForAddedNewProperty = true;
6999
+ }
7000
+ target[prop] = value;
7001
+ return true;
7002
+ }
7003
+ });
7004
+ }
7005
+ });
7006
+ /*eslint-enable no-func-assign */
7007
+ }
7008
+ }
7009
+ /**
7010
+ * Helper to reduce boilerplate when creating subclasses.
7011
+ *
7012
+ * @param {function} Class
7013
+ * @param {?object} Interface
7014
+ */
7015
+ SyntheticEvent.augmentClass = function (Class, Interface) {
7016
+ var Super = this;
7017
+
7018
+ var E = function () {};
7019
+ E.prototype = Super.prototype;
7020
+ var prototype = new E();
7021
+
7022
+ _assign(prototype, Class.prototype);
7023
+ Class.prototype = prototype;
7024
+ Class.prototype.constructor = Class;
7025
+
7026
+ Class.Interface = _assign({}, Super.Interface, Interface);
7027
+ Class.augmentClass = Super.augmentClass;
7028
+
7029
+ PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);
7030
+ };
7031
+
7032
+ PooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);
7033
+
7034
+ module.exports = SyntheticEvent;
7035
+
7036
+ /**
7037
+ * Helper to nullify syntheticEvent instance properties when destructing
7038
+ *
7039
+ * @param {object} SyntheticEvent
7040
+ * @param {String} propName
7041
+ * @return {object} defineProperty object
7042
+ */
7043
+ function getPooledWarningPropertyDefinition(propName, getVal) {
7044
+ var isFunction = typeof getVal === 'function';
7045
+ return {
7046
+ configurable: true,
7047
+ set: set,
7048
+ get: get
7049
+ };
7050
+
7051
+ function set(val) {
7052
+ var action = isFunction ? 'setting the method' : 'setting the property';
7053
+ warn(action, 'This is effectively a no-op');
7054
+ return val;
7055
+ }
7056
+
7057
+ function get() {
7058
+ var action = isFunction ? 'accessing the method' : 'accessing the property';
7059
+ var result = isFunction ? 'This is a no-op function' : 'This is set to null';
7060
+ warn(action, result);
7061
+ return getVal;
7062
+ }
7063
+
7064
+ function warn(action, result) {
7065
+ var warningCondition = false;
7066
+ 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;
7067
+ }
7068
+ }
7069
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
7070
+
7071
+ /***/ },
7072
+ /* 56 */
7073
+ /***/ function(module, exports, __webpack_require__) {
7074
+
7075
+ /**
7076
+ * Copyright 2013-present, Facebook, Inc.
7077
+ * All rights reserved.
7078
+ *
7079
+ * This source code is licensed under the BSD-style license found in the
7080
+ * LICENSE file in the root directory of this source tree. An additional grant
7081
+ * of patent rights can be found in the PATENTS file in the same directory.
7082
+ *
7083
+ */
7084
+
7085
+ 'use strict';
7086
+
7087
+ var SyntheticEvent = __webpack_require__(55);
7088
+
7089
+ /**
7090
+ * @interface Event
7091
+ * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105
7092
+ * /#events-inputevents
7093
+ */
7094
+ var InputEventInterface = {
7095
+ data: null
7096
+ };
7097
+
7098
+ /**
7099
+ * @param {object} dispatchConfig Configuration used to dispatch this event.
7100
+ * @param {string} dispatchMarker Marker identifying the event target.
7101
+ * @param {object} nativeEvent Native browser event.
7102
+ * @extends {SyntheticUIEvent}
7103
+ */
7104
+ function SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
7105
+ return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
7106
+ }
7107
+
7108
+ SyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);
7109
+
7110
+ module.exports = SyntheticInputEvent;
7111
+
7112
+ /***/ },
7113
+ /* 57 */
7114
+ /***/ function(module, exports, __webpack_require__) {
7115
+
7116
+ /**
7117
+ * Copyright 2013-present, Facebook, Inc.
7118
+ * All rights reserved.
7119
+ *
7120
+ * This source code is licensed under the BSD-style license found in the
7121
+ * LICENSE file in the root directory of this source tree. An additional grant
7122
+ * of patent rights can be found in the PATENTS file in the same directory.
7123
+ *
7124
+ */
7125
+
7126
+ 'use strict';
7127
+
7128
+ var EventPluginHub = __webpack_require__(43);
7129
+ var EventPropagators = __webpack_require__(42);
7130
+ var ExecutionEnvironment = __webpack_require__(49);
7131
+ var ReactDOMComponentTree = __webpack_require__(35);
7132
+ var ReactUpdates = __webpack_require__(58);
7133
+ var SyntheticEvent = __webpack_require__(55);
7134
+
7135
+ var getEventTarget = __webpack_require__(71);
7136
+ var isEventSupported = __webpack_require__(72);
7137
+ var isTextInputElement = __webpack_require__(73);
7138
+
7139
+ var eventTypes = {
7140
+ change: {
7141
+ phasedRegistrationNames: {
7142
+ bubbled: 'onChange',
7143
+ captured: 'onChangeCapture'
7144
+ },
7145
+ dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']
7146
+ }
7147
+ };
7148
+
7149
+ /**
7150
+ * For IE shims
7151
+ */
7152
+ var activeElement = null;
7153
+ var activeElementInst = null;
7154
+ var activeElementValue = null;
7155
+ var activeElementValueProp = null;
7156
+
7157
+ /**
7158
+ * SECTION: handle `change` event
7159
+ */
7160
+ function shouldUseChangeEvent(elem) {
7161
+ var nodeName = elem.nodeName && elem.nodeName.toLowerCase();
7162
+ return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';
7163
+ }
7164
+
7165
+ var doesChangeEventBubble = false;
7166
+ if (ExecutionEnvironment.canUseDOM) {
7167
+ // See `handleChange` comment below
7168
+ doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);
7169
+ }
7170
+
7171
+ function manualDispatchChangeEvent(nativeEvent) {
7172
+ var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));
7173
+ EventPropagators.accumulateTwoPhaseDispatches(event);
7174
+
7175
+ // If change and propertychange bubbled, we'd just bind to it like all the
7176
+ // other events and have it go through ReactBrowserEventEmitter. Since it
7177
+ // doesn't, we manually listen for the events and so we have to enqueue and
7178
+ // process the abstract event manually.
7179
+ //
7180
+ // Batching is necessary here in order to ensure that all event handlers run
7181
+ // before the next rerender (including event handlers attached to ancestor
7182
+ // elements instead of directly on the input). Without this, controlled
7183
+ // components don't work properly in conjunction with event bubbling because
7184
+ // the component is rerendered and the value reverted before all the event
7185
+ // handlers can run. See https://github.com/facebook/react/issues/708.
7186
+ ReactUpdates.batchedUpdates(runEventInBatch, event);
7187
+ }
7188
+
7189
+ function runEventInBatch(event) {
7190
+ EventPluginHub.enqueueEvents(event);
7191
+ EventPluginHub.processEventQueue(false);
7192
+ }
7193
+
7194
+ function startWatchingForChangeEventIE8(target, targetInst) {
7195
+ activeElement = target;
7196
+ activeElementInst = targetInst;
7197
+ activeElement.attachEvent('onchange', manualDispatchChangeEvent);
7198
+ }
7199
+
7200
+ function stopWatchingForChangeEventIE8() {
7201
+ if (!activeElement) {
7202
+ return;
7203
+ }
7204
+ activeElement.detachEvent('onchange', manualDispatchChangeEvent);
7205
+ activeElement = null;
7206
+ activeElementInst = null;
7207
+ }
7208
+
7209
+ function getTargetInstForChangeEvent(topLevelType, targetInst) {
7210
+ if (topLevelType === 'topChange') {
7211
+ return targetInst;
7212
+ }
7213
+ }
7214
+ function handleEventsForChangeEventIE8(topLevelType, target, targetInst) {
7215
+ if (topLevelType === 'topFocus') {
7216
+ // stopWatching() should be a noop here but we call it just in case we
7217
+ // missed a blur event somehow.
7218
+ stopWatchingForChangeEventIE8();
7219
+ startWatchingForChangeEventIE8(target, targetInst);
7220
+ } else if (topLevelType === 'topBlur') {
7221
+ stopWatchingForChangeEventIE8();
7222
+ }
7223
+ }
7224
+
7225
+ /**
7226
+ * SECTION: handle `input` event
7227
+ */
7228
+ var isInputEventSupported = false;
7229
+ if (ExecutionEnvironment.canUseDOM) {
7230
+ // IE9 claims to support the input event but fails to trigger it when
7231
+ // deleting text, so we ignore its input events.
7232
+ // IE10+ fire input events to often, such when a placeholder
7233
+ // changes or when an input with a placeholder is focused.
7234
+ isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11);
7235
+ }
7236
+
7237
+ /**
7238
+ * (For IE <=11) Replacement getter/setter for the `value` property that gets
7239
+ * set on the active element.
7240
+ */
7241
+ var newValueProp = {
7242
+ get: function () {
7243
+ return activeElementValueProp.get.call(this);
7244
+ },
7245
+ set: function (val) {
7246
+ // Cast to a string so we can do equality checks.
7247
+ activeElementValue = '' + val;
7248
+ activeElementValueProp.set.call(this, val);
7249
+ }
7250
+ };
7251
+
7252
+ /**
7253
+ * (For IE <=11) Starts tracking propertychange events on the passed-in element
7254
+ * and override the value property so that we can distinguish user events from
7255
+ * value changes in JS.
7256
+ */
7257
+ function startWatchingForValueChange(target, targetInst) {
7258
+ activeElement = target;
7259
+ activeElementInst = targetInst;
7260
+ activeElementValue = target.value;
7261
+ activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value');
7262
+
7263
+ // Not guarded in a canDefineProperty check: IE8 supports defineProperty only
7264
+ // on DOM elements
7265
+ Object.defineProperty(activeElement, 'value', newValueProp);
7266
+ if (activeElement.attachEvent) {
7267
+ activeElement.attachEvent('onpropertychange', handlePropertyChange);
7268
+ } else {
7269
+ activeElement.addEventListener('propertychange', handlePropertyChange, false);
7270
+ }
7271
+ }
7272
+
7273
+ /**
7274
+ * (For IE <=11) Removes the event listeners from the currently-tracked element,
7275
+ * if any exists.
7276
+ */
7277
+ function stopWatchingForValueChange() {
7278
+ if (!activeElement) {
7279
+ return;
7280
+ }
7281
+
7282
+ // delete restores the original property definition
7283
+ delete activeElement.value;
7284
+
7285
+ if (activeElement.detachEvent) {
7286
+ activeElement.detachEvent('onpropertychange', handlePropertyChange);
7287
+ } else {
7288
+ activeElement.removeEventListener('propertychange', handlePropertyChange, false);
7289
+ }
7290
+
7291
+ activeElement = null;
7292
+ activeElementInst = null;
7293
+ activeElementValue = null;
7294
+ activeElementValueProp = null;
7295
+ }
7296
+
7297
+ /**
7298
+ * (For IE <=11) Handles a propertychange event, sending a `change` event if
7299
+ * the value of the active element has changed.
7300
+ */
7301
+ function handlePropertyChange(nativeEvent) {
7302
+ if (nativeEvent.propertyName !== 'value') {
7303
+ return;
7304
+ }
7305
+ var value = nativeEvent.srcElement.value;
7306
+ if (value === activeElementValue) {
7307
+ return;
7308
+ }
7309
+ activeElementValue = value;
7310
+
7311
+ manualDispatchChangeEvent(nativeEvent);
7312
+ }
7313
+
7314
+ /**
7315
+ * If a `change` event should be fired, returns the target's ID.
7316
+ */
7317
+ function getTargetInstForInputEvent(topLevelType, targetInst) {
7318
+ if (topLevelType === 'topInput') {
7319
+ // In modern browsers (i.e., not IE8 or IE9), the input event is exactly
7320
+ // what we want so fall through here and trigger an abstract event
7321
+ return targetInst;
7322
+ }
7323
+ }
7324
+
7325
+ function handleEventsForInputEventIE(topLevelType, target, targetInst) {
7326
+ if (topLevelType === 'topFocus') {
7327
+ // In IE8, we can capture almost all .value changes by adding a
7328
+ // propertychange handler and looking for events with propertyName
7329
+ // equal to 'value'
7330
+ // In IE9-11, propertychange fires for most input events but is buggy and
7331
+ // doesn't fire when text is deleted, but conveniently, selectionchange
7332
+ // appears to fire in all of the remaining cases so we catch those and
7333
+ // forward the event if the value has changed
7334
+ // In either case, we don't want to call the event handler if the value
7335
+ // is changed from JS so we redefine a setter for `.value` that updates
7336
+ // our activeElementValue variable, allowing us to ignore those changes
7337
+ //
7338
+ // stopWatching() should be a noop here but we call it just in case we
7339
+ // missed a blur event somehow.
7340
+ stopWatchingForValueChange();
7341
+ startWatchingForValueChange(target, targetInst);
7342
+ } else if (topLevelType === 'topBlur') {
7343
+ stopWatchingForValueChange();
7344
+ }
7345
+ }
7346
+
7347
+ // For IE8 and IE9.
7348
+ function getTargetInstForInputEventIE(topLevelType, targetInst) {
7349
+ if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {
7350
+ // On the selectionchange event, the target is just document which isn't
7351
+ // helpful for us so just check activeElement instead.
7352
+ //
7353
+ // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire
7354
+ // propertychange on the first input event after setting `value` from a
7355
+ // script and fires only keydown, keypress, keyup. Catching keyup usually
7356
+ // gets it and catching keydown lets us fire an event for the first
7357
+ // keystroke if user does a key repeat (it'll be a little delayed: right
7358
+ // before the second keystroke). Other input methods (e.g., paste) seem to
7359
+ // fire selectionchange normally.
7360
+ if (activeElement && activeElement.value !== activeElementValue) {
7361
+ activeElementValue = activeElement.value;
7362
+ return activeElementInst;
7363
+ }
7364
+ }
7365
+ }
7366
+
7367
+ /**
7368
+ * SECTION: handle `click` event
7369
+ */
7370
+ function shouldUseClickEvent(elem) {
7371
+ // Use the `click` event to detect changes to checkbox and radio inputs.
7372
+ // This approach works across all browsers, whereas `change` does not fire
7373
+ // until `blur` in IE8.
7374
+ return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');
7375
+ }
7376
+
7377
+ function getTargetInstForClickEvent(topLevelType, targetInst) {
7378
+ if (topLevelType === 'topClick') {
7379
+ return targetInst;
7380
+ }
7381
+ }
7382
+
7383
+ /**
7384
+ * This plugin creates an `onChange` event that normalizes change events
7385
+ * across form elements. This event fires at a time when it's possible to
7386
+ * change the element's value without seeing a flicker.
7387
+ *
7388
+ * Supported elements are:
7389
+ * - input (see `isTextInputElement`)
7390
+ * - textarea
7391
+ * - select
7392
+ */
7393
+ var ChangeEventPlugin = {
7394
+
7395
+ eventTypes: eventTypes,
7396
+
7397
+ extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
7398
+ var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;
7399
+
7400
+ var getTargetInstFunc, handleEventFunc;
7401
+ if (shouldUseChangeEvent(targetNode)) {
7402
+ if (doesChangeEventBubble) {
7403
+ getTargetInstFunc = getTargetInstForChangeEvent;
7404
+ } else {
7405
+ handleEventFunc = handleEventsForChangeEventIE8;
7406
+ }
7407
+ } else if (isTextInputElement(targetNode)) {
7408
+ if (isInputEventSupported) {
7409
+ getTargetInstFunc = getTargetInstForInputEvent;
7410
+ } else {
7411
+ getTargetInstFunc = getTargetInstForInputEventIE;
7412
+ handleEventFunc = handleEventsForInputEventIE;
7413
+ }
7414
+ } else if (shouldUseClickEvent(targetNode)) {
7415
+ getTargetInstFunc = getTargetInstForClickEvent;
7416
+ }
7417
+
7418
+ if (getTargetInstFunc) {
7419
+ var inst = getTargetInstFunc(topLevelType, targetInst);
7420
+ if (inst) {
7421
+ var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);
7422
+ event.type = 'change';
7423
+ EventPropagators.accumulateTwoPhaseDispatches(event);
7424
+ return event;
7425
+ }
7426
+ }
7427
+
7428
+ if (handleEventFunc) {
7429
+ handleEventFunc(topLevelType, targetNode, targetInst);
7430
+ }
7431
+ }
7432
+
7433
+ };
7434
+
7435
+ module.exports = ChangeEventPlugin;
7436
+
7437
+ /***/ },
7438
+ /* 58 */
7439
+ /***/ function(module, exports, __webpack_require__) {
7440
+
7441
+ /* WEBPACK VAR INJECTION */(function(process) {/**
7442
+ * Copyright 2013-present, Facebook, Inc.
7443
+ * All rights reserved.
7444
+ *
7445
+ * This source code is licensed under the BSD-style license found in the
7446
+ * LICENSE file in the root directory of this source tree. An additional grant
7447
+ * of patent rights can be found in the PATENTS file in the same directory.
7448
+ *
7449
+ */
7450
+
7451
+ 'use strict';
7452
+
7453
+ var _prodInvariant = __webpack_require__(36),
7454
+ _assign = __webpack_require__(51);
7455
+
7456
+ var CallbackQueue = __webpack_require__(59);
7457
+ var PooledClass = __webpack_require__(52);
7458
+ var ReactFeatureFlags = __webpack_require__(60);
7459
+ var ReactReconciler = __webpack_require__(61);
7460
+ var Transaction = __webpack_require__(70);
7461
+
7462
+ var invariant = __webpack_require__(9);
7463
+
7464
+ var dirtyComponents = [];
7465
+ var updateBatchNumber = 0;
7466
+ var asapCallbackQueue = CallbackQueue.getPooled();
7467
+ var asapEnqueued = false;
7468
+
7469
+ var batchingStrategy = null;
7470
+
7471
+ function ensureInjected() {
7472
+ !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;
7473
+ }
7474
+
7475
+ var NESTED_UPDATES = {
7476
+ initialize: function () {
7477
+ this.dirtyComponentsLength = dirtyComponents.length;
7478
+ },
7479
+ close: function () {
7480
+ if (this.dirtyComponentsLength !== dirtyComponents.length) {
7481
+ // Additional updates were enqueued by componentDidUpdate handlers or
7482
+ // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run
7483
+ // these new updates so that if A's componentDidUpdate calls setState on
7484
+ // B, B will update before the callback A's updater provided when calling
7485
+ // setState.
7486
+ dirtyComponents.splice(0, this.dirtyComponentsLength);
7487
+ flushBatchedUpdates();
7488
+ } else {
7489
+ dirtyComponents.length = 0;
7490
+ }
7491
+ }
7492
+ };
7493
+
7494
+ var UPDATE_QUEUEING = {
7495
+ initialize: function () {
7496
+ this.callbackQueue.reset();
7497
+ },
7498
+ close: function () {
7499
+ this.callbackQueue.notifyAll();
7500
+ }
7501
+ };
7502
+
7503
+ var TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];
7504
+
7505
+ function ReactUpdatesFlushTransaction() {
7506
+ this.reinitializeTransaction();
7507
+ this.dirtyComponentsLength = null;
7508
+ this.callbackQueue = CallbackQueue.getPooled();
7509
+ this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(
7510
+ /* useCreateElement */true);
7511
+ }
7512
+
7513
+ _assign(ReactUpdatesFlushTransaction.prototype, Transaction, {
7514
+ getTransactionWrappers: function () {
7515
+ return TRANSACTION_WRAPPERS;
7516
+ },
7517
+
7518
+ destructor: function () {
7519
+ this.dirtyComponentsLength = null;
7520
+ CallbackQueue.release(this.callbackQueue);
7521
+ this.callbackQueue = null;
7522
+ ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);
7523
+ this.reconcileTransaction = null;
7524
+ },
7525
+
7526
+ perform: function (method, scope, a) {
7527
+ // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`
7528
+ // with this transaction's wrappers around it.
7529
+ return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);
7530
+ }
7531
+ });
7532
+
7533
+ PooledClass.addPoolingTo(ReactUpdatesFlushTransaction);
7534
+
7535
+ function batchedUpdates(callback, a, b, c, d, e) {
7536
+ ensureInjected();
7537
+ return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);
7538
+ }
7539
+
7540
+ /**
7541
+ * Array comparator for ReactComponents by mount ordering.
7542
+ *
7543
+ * @param {ReactComponent} c1 first component you're comparing
7544
+ * @param {ReactComponent} c2 second component you're comparing
7545
+ * @return {number} Return value usable by Array.prototype.sort().
7546
+ */
7547
+ function mountOrderComparator(c1, c2) {
7548
+ return c1._mountOrder - c2._mountOrder;
7549
+ }
7550
+
7551
+ function runBatchedUpdates(transaction) {
7552
+ var len = transaction.dirtyComponentsLength;
7553
+ !(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;
7554
+
7555
+ // Since reconciling a component higher in the owner hierarchy usually (not
7556
+ // always -- see shouldComponentUpdate()) will reconcile children, reconcile
7557
+ // them before their children by sorting the array.
7558
+ dirtyComponents.sort(mountOrderComparator);
7559
+
7560
+ // Any updates enqueued while reconciling must be performed after this entire
7561
+ // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and
7562
+ // C, B could update twice in a single batch if C's render enqueues an update
7563
+ // to B (since B would have already updated, we should skip it, and the only
7564
+ // way we can know to do so is by checking the batch counter).
7565
+ updateBatchNumber++;
7566
+
7567
+ for (var i = 0; i < len; i++) {
7568
+ // If a component is unmounted before pending changes apply, it will still
7569
+ // be here, but we assume that it has cleared its _pendingCallbacks and
7570
+ // that performUpdateIfNecessary is a noop.
7571
+ var component = dirtyComponents[i];
7572
+
7573
+ // If performUpdateIfNecessary happens to enqueue any new updates, we
7574
+ // shouldn't execute the callbacks until the next render happens, so
7575
+ // stash the callbacks first
7576
+ var callbacks = component._pendingCallbacks;
7577
+ component._pendingCallbacks = null;
7578
+
7579
+ var markerName;
7580
+ if (ReactFeatureFlags.logTopLevelRenders) {
7581
+ var namedComponent = component;
7582
+ // Duck type TopLevelWrapper. This is probably always true.
7583
+ if (component._currentElement.type.isReactTopLevelWrapper) {
7584
+ namedComponent = component._renderedComponent;
7585
+ }
7586
+ markerName = 'React update: ' + namedComponent.getName();
7587
+ console.time(markerName);
7588
+ }
7589
+
7590
+ ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);
7591
+
7592
+ if (markerName) {
7593
+ console.timeEnd(markerName);
7594
+ }
7595
+
7596
+ if (callbacks) {
7597
+ for (var j = 0; j < callbacks.length; j++) {
7598
+ transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());
7599
+ }
7600
+ }
7601
+ }
7602
+ }
7603
+
7604
+ var flushBatchedUpdates = function () {
7605
+ // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents
7606
+ // array and perform any updates enqueued by mount-ready handlers (i.e.,
7607
+ // componentDidUpdate) but we need to check here too in order to catch
7608
+ // updates enqueued by setState callbacks and asap calls.
7609
+ while (dirtyComponents.length || asapEnqueued) {
7610
+ if (dirtyComponents.length) {
7611
+ var transaction = ReactUpdatesFlushTransaction.getPooled();
7612
+ transaction.perform(runBatchedUpdates, null, transaction);
7613
+ ReactUpdatesFlushTransaction.release(transaction);
7614
+ }
7615
+
7616
+ if (asapEnqueued) {
7617
+ asapEnqueued = false;
7618
+ var queue = asapCallbackQueue;
7619
+ asapCallbackQueue = CallbackQueue.getPooled();
7620
+ queue.notifyAll();
7621
+ CallbackQueue.release(queue);
7622
+ }
7623
+ }
7624
+ };
7625
+
7626
+ /**
7627
+ * Mark a component as needing a rerender, adding an optional callback to a
7628
+ * list of functions which will be executed once the rerender occurs.
7629
+ */
7630
+ function enqueueUpdate(component) {
7631
+ ensureInjected();
7632
+
7633
+ // Various parts of our code (such as ReactCompositeComponent's
7634
+ // _renderValidatedComponent) assume that calls to render aren't nested;
7635
+ // verify that that's the case. (This is called by each top-level update
7636
+ // function, like setState, forceUpdate, etc.; creation and
7637
+ // destruction of top-level components is guarded in ReactMount.)
7638
+
7639
+ if (!batchingStrategy.isBatchingUpdates) {
7640
+ batchingStrategy.batchedUpdates(enqueueUpdate, component);
7641
+ return;
7642
+ }
7643
+
7644
+ dirtyComponents.push(component);
7645
+ if (component._updateBatchNumber == null) {
7646
+ component._updateBatchNumber = updateBatchNumber + 1;
7647
+ }
7648
+ }
7649
+
7650
+ /**
7651
+ * Enqueue a callback to be run at the end of the current batching cycle. Throws
7652
+ * if no updates are currently being performed.
7653
+ */
7654
+ function asap(callback, context) {
7655
+ !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;
7656
+ asapCallbackQueue.enqueue(callback, context);
7657
+ asapEnqueued = true;
7658
+ }
7659
+
7660
+ var ReactUpdatesInjection = {
7661
+ injectReconcileTransaction: function (ReconcileTransaction) {
7662
+ !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;
7663
+ ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;
7664
+ },
7665
+
7666
+ injectBatchingStrategy: function (_batchingStrategy) {
7667
+ !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;
7668
+ !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;
7669
+ !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;
7670
+ batchingStrategy = _batchingStrategy;
7671
+ }
7672
+ };
7673
+
7674
+ var ReactUpdates = {
7675
+ /**
7676
+ * React references `ReactReconcileTransaction` using this property in order
7677
+ * to allow dependency injection.
7678
+ *
7679
+ * @internal
7680
+ */
7681
+ ReactReconcileTransaction: null,
7682
+
7683
+ batchedUpdates: batchedUpdates,
7684
+ enqueueUpdate: enqueueUpdate,
7685
+ flushBatchedUpdates: flushBatchedUpdates,
7686
+ injection: ReactUpdatesInjection,
7687
+ asap: asap
7688
+ };
7689
+
7690
+ module.exports = ReactUpdates;
7691
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
7692
+
7693
+ /***/ },
7694
+ /* 59 */
7695
+ /***/ function(module, exports, __webpack_require__) {
7696
+
7697
+ /* WEBPACK VAR INJECTION */(function(process) {/**
7698
+ * Copyright 2013-present, Facebook, Inc.
7699
+ * All rights reserved.
7700
+ *
7701
+ * This source code is licensed under the BSD-style license found in the
7702
+ * LICENSE file in the root directory of this source tree. An additional grant
7703
+ * of patent rights can be found in the PATENTS file in the same directory.
7704
+ *
7705
+ *
7706
+ */
7707
+
7708
+ 'use strict';
7709
+
7710
+ var _prodInvariant = __webpack_require__(36);
7711
+
7712
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
7713
+
7714
+ var PooledClass = __webpack_require__(52);
7715
+
7716
+ var invariant = __webpack_require__(9);
7717
+
7718
+ /**
7719
+ * A specialized pseudo-event module to help keep track of components waiting to
7720
+ * be notified when their DOM representations are available for use.
7721
+ *
7722
+ * This implements `PooledClass`, so you should never need to instantiate this.
7723
+ * Instead, use `CallbackQueue.getPooled()`.
7724
+ *
7725
+ * @class ReactMountReady
7726
+ * @implements PooledClass
7727
+ * @internal
7728
+ */
7729
+
7730
+ var CallbackQueue = function () {
7731
+ function CallbackQueue(arg) {
7732
+ _classCallCheck(this, CallbackQueue);
7733
+
7734
+ this._callbacks = null;
7735
+ this._contexts = null;
7736
+ this._arg = arg;
7737
+ }
7738
+
7739
+ /**
7740
+ * Enqueues a callback to be invoked when `notifyAll` is invoked.
7741
+ *
7742
+ * @param {function} callback Invoked when `notifyAll` is invoked.
7743
+ * @param {?object} context Context to call `callback` with.
7744
+ * @internal
7745
+ */
7746
+
7747
+
7748
+ CallbackQueue.prototype.enqueue = function enqueue(callback, context) {
7749
+ this._callbacks = this._callbacks || [];
7750
+ this._callbacks.push(callback);
7751
+ this._contexts = this._contexts || [];
7752
+ this._contexts.push(context);
7753
+ };
7754
+
7755
+ /**
7756
+ * Invokes all enqueued callbacks and clears the queue. This is invoked after
7757
+ * the DOM representation of a component has been created or updated.
7758
+ *
7759
+ * @internal
7760
+ */
7761
+
7762
+
7763
+ CallbackQueue.prototype.notifyAll = function notifyAll() {
7764
+ var callbacks = this._callbacks;
7765
+ var contexts = this._contexts;
7766
+ var arg = this._arg;
7767
+ if (callbacks && contexts) {
7768
+ !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;
7769
+ this._callbacks = null;
7770
+ this._contexts = null;
7771
+ for (var i = 0; i < callbacks.length; i++) {
7772
+ callbacks[i].call(contexts[i], arg);
7773
+ }
7774
+ callbacks.length = 0;
7775
+ contexts.length = 0;
7776
+ }
7777
+ };
7778
+
7779
+ CallbackQueue.prototype.checkpoint = function checkpoint() {
7780
+ return this._callbacks ? this._callbacks.length : 0;
7781
+ };
7782
+
7783
+ CallbackQueue.prototype.rollback = function rollback(len) {
7784
+ if (this._callbacks && this._contexts) {
7785
+ this._callbacks.length = len;
7786
+ this._contexts.length = len;
7787
+ }
7788
+ };
7789
+
7790
+ /**
7791
+ * Resets the internal queue.
7792
+ *
7793
+ * @internal
7794
+ */
7795
+
7796
+
7797
+ CallbackQueue.prototype.reset = function reset() {
7798
+ this._callbacks = null;
7799
+ this._contexts = null;
7800
+ };
7801
+
7802
+ /**
7803
+ * `PooledClass` looks for this.
7804
+ */
7805
+
7806
+
7807
+ CallbackQueue.prototype.destructor = function destructor() {
7808
+ this.reset();
7809
+ };
7810
+
7811
+ return CallbackQueue;
7812
+ }();
7813
+
7814
+ module.exports = PooledClass.addPoolingTo(CallbackQueue);
7815
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
7816
+
7817
+ /***/ },
7818
+ /* 60 */
7819
+ /***/ function(module, exports) {
7820
+
7821
+ /**
7822
+ * Copyright 2013-present, Facebook, Inc.
7823
+ * All rights reserved.
7824
+ *
7825
+ * This source code is licensed under the BSD-style license found in the
7826
+ * LICENSE file in the root directory of this source tree. An additional grant
7827
+ * of patent rights can be found in the PATENTS file in the same directory.
7828
+ *
7829
+ *
7830
+ */
7831
+
7832
+ 'use strict';
7833
+
7834
+ var ReactFeatureFlags = {
7835
+ // When true, call console.time() before and .timeEnd() after each top-level
7836
+ // render (both initial renders and updates). Useful when looking at prod-mode
7837
+ // timeline profiles in Chrome, for example.
7838
+ logTopLevelRenders: false
7839
+ };
7840
+
7841
+ module.exports = ReactFeatureFlags;
7842
+
7843
+ /***/ },
7844
+ /* 61 */
7845
+ /***/ function(module, exports, __webpack_require__) {
7846
+
7847
+ /* WEBPACK VAR INJECTION */(function(process) {/**
7848
+ * Copyright 2013-present, Facebook, Inc.
7849
+ * All rights reserved.
7850
+ *
7851
+ * This source code is licensed under the BSD-style license found in the
7852
+ * LICENSE file in the root directory of this source tree. An additional grant
7853
+ * of patent rights can be found in the PATENTS file in the same directory.
7854
+ *
7855
+ */
7856
+
7857
+ 'use strict';
7858
+
7859
+ var ReactRef = __webpack_require__(62);
7860
+ var ReactInstrumentation = __webpack_require__(64);
7861
+
7862
+ var warning = __webpack_require__(12);
7863
+
7864
+ /**
7865
+ * Helper to call ReactRef.attachRefs with this composite component, split out
7866
+ * to avoid allocations in the transaction mount-ready queue.
7867
+ */
7868
+ function attachRefs() {
7869
+ ReactRef.attachRefs(this, this._currentElement);
7870
+ }
7871
+
7872
+ var ReactReconciler = {
7873
+
7874
+ /**
7875
+ * Initializes the component, renders markup, and registers event listeners.
7876
+ *
7877
+ * @param {ReactComponent} internalInstance
7878
+ * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
7879
+ * @param {?object} the containing host component instance
7880
+ * @param {?object} info about the host container
7881
+ * @return {?string} Rendered markup to be inserted into the DOM.
7882
+ * @final
7883
+ * @internal
7884
+ */
7885
+ mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots
7886
+ ) {
7887
+ if (process.env.NODE_ENV !== 'production') {
7888
+ if (internalInstance._debugID !== 0) {
7889
+ ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);
7890
+ }
7891
+ }
7892
+ var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);
7893
+ if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {
7894
+ transaction.getReactMountReady().enqueue(attachRefs, internalInstance);
7895
+ }
7896
+ if (process.env.NODE_ENV !== 'production') {
7897
+ if (internalInstance._debugID !== 0) {
7898
+ ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);
7899
+ }
7900
+ }
7901
+ return markup;
7902
+ },
7903
+
7904
+ /**
7905
+ * Returns a value that can be passed to
7906
+ * ReactComponentEnvironment.replaceNodeWithMarkup.
7907
+ */
7908
+ getHostNode: function (internalInstance) {
7909
+ return internalInstance.getHostNode();
7910
+ },
7911
+
7912
+ /**
7913
+ * Releases any resources allocated by `mountComponent`.
7914
+ *
7915
+ * @final
7916
+ * @internal
7917
+ */
7918
+ unmountComponent: function (internalInstance, safely) {
7919
+ if (process.env.NODE_ENV !== 'production') {
7920
+ if (internalInstance._debugID !== 0) {
7921
+ ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);
7922
+ }
7923
+ }
7924
+ ReactRef.detachRefs(internalInstance, internalInstance._currentElement);
7925
+ internalInstance.unmountComponent(safely);
7926
+ if (process.env.NODE_ENV !== 'production') {
7927
+ if (internalInstance._debugID !== 0) {
7928
+ ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);
7929
+ }
7930
+ }
7931
+ },
7932
+
7933
+ /**
7934
+ * Update a component using a new element.
7935
+ *
7936
+ * @param {ReactComponent} internalInstance
7937
+ * @param {ReactElement} nextElement
7938
+ * @param {ReactReconcileTransaction} transaction
7939
+ * @param {object} context
7940
+ * @internal
7941
+ */
7942
+ receiveComponent: function (internalInstance, nextElement, transaction, context) {
7943
+ var prevElement = internalInstance._currentElement;
7944
+
7945
+ if (nextElement === prevElement && context === internalInstance._context) {
7946
+ // Since elements are immutable after the owner is rendered,
7947
+ // we can do a cheap identity compare here to determine if this is a
7948
+ // superfluous reconcile. It's possible for state to be mutable but such
7949
+ // change should trigger an update of the owner which would recreate
7950
+ // the element. We explicitly check for the existence of an owner since
7951
+ // it's possible for an element created outside a composite to be
7952
+ // deeply mutated and reused.
7953
+
7954
+ // TODO: Bailing out early is just a perf optimization right?
7955
+ // TODO: Removing the return statement should affect correctness?
7956
+ return;
7957
+ }
7958
+
7959
+ if (process.env.NODE_ENV !== 'production') {
7960
+ if (internalInstance._debugID !== 0) {
7961
+ ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);
7962
+ }
7963
+ }
7964
+
7965
+ var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);
7966
+
7967
+ if (refsChanged) {
7968
+ ReactRef.detachRefs(internalInstance, prevElement);
7969
+ }
7970
+
7971
+ internalInstance.receiveComponent(nextElement, transaction, context);
7972
+
7973
+ if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {
7974
+ transaction.getReactMountReady().enqueue(attachRefs, internalInstance);
7975
+ }
7976
+
7977
+ if (process.env.NODE_ENV !== 'production') {
7978
+ if (internalInstance._debugID !== 0) {
7979
+ ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);
7980
+ }
7981
+ }
7982
+ },
7983
+
7984
+ /**
7985
+ * Flush any dirty changes in a component.
7986
+ *
7987
+ * @param {ReactComponent} internalInstance
7988
+ * @param {ReactReconcileTransaction} transaction
7989
+ * @internal
7990
+ */
7991
+ performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {
7992
+ if (internalInstance._updateBatchNumber !== updateBatchNumber) {
7993
+ // The component's enqueued batch number should always be the current
7994
+ // batch or the following one.
7995
+ 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;
7996
+ return;
7997
+ }
7998
+ if (process.env.NODE_ENV !== 'production') {
7999
+ if (internalInstance._debugID !== 0) {
8000
+ ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);
8001
+ }
8002
+ }
8003
+ internalInstance.performUpdateIfNecessary(transaction);
8004
+ if (process.env.NODE_ENV !== 'production') {
8005
+ if (internalInstance._debugID !== 0) {
8006
+ ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);
8007
+ }
8008
+ }
8009
+ }
8010
+
8011
+ };
8012
+
8013
+ module.exports = ReactReconciler;
8014
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
8015
+
8016
+ /***/ },
8017
+ /* 62 */
8018
+ /***/ function(module, exports, __webpack_require__) {
8019
+
8020
+ /**
8021
+ * Copyright 2013-present, Facebook, Inc.
8022
+ * All rights reserved.
8023
+ *
8024
+ * This source code is licensed under the BSD-style license found in the
8025
+ * LICENSE file in the root directory of this source tree. An additional grant
8026
+ * of patent rights can be found in the PATENTS file in the same directory.
8027
+ *
8028
+ *
8029
+ */
8030
+
8031
+ 'use strict';
8032
+
8033
+ var ReactOwner = __webpack_require__(63);
8034
+
8035
+ var ReactRef = {};
8036
+
8037
+ function attachRef(ref, component, owner) {
8038
+ if (typeof ref === 'function') {
8039
+ ref(component.getPublicInstance());
8040
+ } else {
8041
+ // Legacy ref
8042
+ ReactOwner.addComponentAsRefTo(component, ref, owner);
8043
+ }
8044
+ }
8045
+
8046
+ function detachRef(ref, component, owner) {
8047
+ if (typeof ref === 'function') {
8048
+ ref(null);
8049
+ } else {
8050
+ // Legacy ref
8051
+ ReactOwner.removeComponentAsRefFrom(component, ref, owner);
8052
+ }
8053
+ }
8054
+
8055
+ ReactRef.attachRefs = function (instance, element) {
8056
+ if (element === null || typeof element !== 'object') {
8057
+ return;
8058
+ }
8059
+ var ref = element.ref;
8060
+ if (ref != null) {
8061
+ attachRef(ref, instance, element._owner);
8062
+ }
8063
+ };
8064
+
8065
+ ReactRef.shouldUpdateRefs = function (prevElement, nextElement) {
8066
+ // If either the owner or a `ref` has changed, make sure the newest owner
8067
+ // has stored a reference to `this`, and the previous owner (if different)
8068
+ // has forgotten the reference to `this`. We use the element instead
8069
+ // of the public this.props because the post processing cannot determine
8070
+ // a ref. The ref conceptually lives on the element.
8071
+
8072
+ // TODO: Should this even be possible? The owner cannot change because
8073
+ // it's forbidden by shouldUpdateReactComponent. The ref can change
8074
+ // if you swap the keys of but not the refs. Reconsider where this check
8075
+ // is made. It probably belongs where the key checking and
8076
+ // instantiateReactComponent is done.
8077
+
8078
+ var prevRef = null;
8079
+ var prevOwner = null;
8080
+ if (prevElement !== null && typeof prevElement === 'object') {
8081
+ prevRef = prevElement.ref;
8082
+ prevOwner = prevElement._owner;
8083
+ }
8084
+
8085
+ var nextRef = null;
8086
+ var nextOwner = null;
8087
+ if (nextElement !== null && typeof nextElement === 'object') {
8088
+ nextRef = nextElement.ref;
8089
+ nextOwner = nextElement._owner;
8090
+ }
8091
+
8092
+ return prevRef !== nextRef ||
8093
+ // If owner changes but we have an unchanged function ref, don't update refs
8094
+ typeof nextRef === 'string' && nextOwner !== prevOwner;
8095
+ };
8096
+
8097
+ ReactRef.detachRefs = function (instance, element) {
8098
+ if (element === null || typeof element !== 'object') {
8099
+ return;
8100
+ }
8101
+ var ref = element.ref;
8102
+ if (ref != null) {
8103
+ detachRef(ref, instance, element._owner);
8104
+ }
8105
+ };
8106
+
8107
+ module.exports = ReactRef;
8108
+
8109
+ /***/ },
8110
+ /* 63 */
8111
+ /***/ function(module, exports, __webpack_require__) {
8112
+
8113
+ /* WEBPACK VAR INJECTION */(function(process) {/**
8114
+ * Copyright 2013-present, Facebook, Inc.
8115
+ * All rights reserved.
8116
+ *
8117
+ * This source code is licensed under the BSD-style license found in the
8118
+ * LICENSE file in the root directory of this source tree. An additional grant
8119
+ * of patent rights can be found in the PATENTS file in the same directory.
8120
+ *
8121
+ *
8122
+ */
8123
+
8124
+ 'use strict';
8125
+
8126
+ var _prodInvariant = __webpack_require__(36);
8127
+
8128
+ var invariant = __webpack_require__(9);
8129
+
8130
+ /**
8131
+ * @param {?object} object
8132
+ * @return {boolean} True if `object` is a valid owner.
8133
+ * @final
8134
+ */
8135
+ function isValidOwner(object) {
8136
+ return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');
8137
+ }
8138
+
8139
+ /**
8140
+ * ReactOwners are capable of storing references to owned components.
8141
+ *
8142
+ * All components are capable of //being// referenced by owner components, but
8143
+ * only ReactOwner components are capable of //referencing// owned components.
8144
+ * The named reference is known as a "ref".
8145
+ *
8146
+ * Refs are available when mounted and updated during reconciliation.
8147
+ *
8148
+ * var MyComponent = React.createClass({
8149
+ * render: function() {
8150
+ * return (
8151
+ * <div onClick={this.handleClick}>
8152
+ * <CustomComponent ref="custom" />
8153
+ * </div>
8154
+ * );
8155
+ * },
8156
+ * handleClick: function() {
8157
+ * this.refs.custom.handleClick();
8158
+ * },
8159
+ * componentDidMount: function() {
8160
+ * this.refs.custom.initialize();
8161
+ * }
8162
+ * });
8163
+ *
8164
+ * Refs should rarely be used. When refs are used, they should only be done to
8165
+ * control data that is not handled by React's data flow.
8166
+ *
8167
+ * @class ReactOwner
8168
+ */
8169
+ var ReactOwner = {
8170
+ /**
8171
+ * Adds a component by ref to an owner component.
8172
+ *
8173
+ * @param {ReactComponent} component Component to reference.
8174
+ * @param {string} ref Name by which to refer to the component.
8175
+ * @param {ReactOwner} owner Component on which to record the ref.
8176
+ * @final
8177
+ * @internal
8178
+ */
8179
+ addComponentAsRefTo: function (component, ref, owner) {
8180
+ !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;
8181
+ owner.attachRef(ref, component);
8182
+ },
8183
+
8184
+ /**
8185
+ * Removes a component by ref from an owner component.
8186
+ *
8187
+ * @param {ReactComponent} component Component to dereference.
8188
+ * @param {string} ref Name of the ref to remove.
8189
+ * @param {ReactOwner} owner Component on which the ref is recorded.
8190
+ * @final
8191
+ * @internal
8192
+ */
8193
+ removeComponentAsRefFrom: function (component, ref, owner) {
8194
+ !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;
8195
+ var ownerPublicInstance = owner.getPublicInstance();
8196
+ // Check that `component`'s owner is still alive and that `component` is still the current ref
8197
+ // because we do not want to detach the ref if another component stole it.
8198
+ if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {
8199
+ owner.detachRef(ref);
8200
+ }
8201
+ }
8202
+
8203
+ };
8204
+
8205
+ module.exports = ReactOwner;
8206
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
8207
+
8208
+ /***/ },
8209
+ /* 64 */
8210
+ /***/ function(module, exports, __webpack_require__) {
8211
+
8212
+ /* WEBPACK VAR INJECTION */(function(process) {/**
8213
+ * Copyright 2016-present, Facebook, Inc.
8214
+ * All rights reserved.
8215
+ *
8216
+ * This source code is licensed under the BSD-style license found in the
8217
+ * LICENSE file in the root directory of this source tree. An additional grant
8218
+ * of patent rights can be found in the PATENTS file in the same directory.
8219
+ *
8220
+ *
8221
+ */
8222
+
8223
+ 'use strict';
8224
+
8225
+ // Trust the developer to only use ReactInstrumentation with a __DEV__ check
8226
+
8227
+ var debugTool = null;
8228
+
8229
+ if (process.env.NODE_ENV !== 'production') {
8230
+ var ReactDebugTool = __webpack_require__(65);
8231
+ debugTool = ReactDebugTool;
8232
+ }
8233
+
8234
+ module.exports = { debugTool: debugTool };
8235
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
8236
+
8237
+ /***/ },
8238
+ /* 65 */
8239
+ /***/ function(module, exports, __webpack_require__) {
8240
+
8241
+ /* WEBPACK VAR INJECTION */(function(process) {/**
8242
+ * Copyright 2016-present, Facebook, Inc.
8243
+ * All rights reserved.
8244
+ *
8245
+ * This source code is licensed under the BSD-style license found in the
8246
+ * LICENSE file in the root directory of this source tree. An additional grant
8247
+ * of patent rights can be found in the PATENTS file in the same directory.
8248
+ *
8249
+ *
8250
+ */
8251
+
8252
+ 'use strict';
8253
+
8254
+ var ReactInvalidSetStateWarningHook = __webpack_require__(66);
8255
+ var ReactHostOperationHistoryHook = __webpack_require__(67);
8256
+ var ReactComponentTreeHook = __webpack_require__(27);
8257
+ var ExecutionEnvironment = __webpack_require__(49);
8258
+
8259
+ var performanceNow = __webpack_require__(68);
8260
+ var warning = __webpack_require__(12);
8261
+
8262
+ var hooks = [];
8263
+ var didHookThrowForEvent = {};
8264
+
8265
+ function callHook(event, fn, context, arg1, arg2, arg3, arg4, arg5) {
8266
+ try {
8267
+ fn.call(context, arg1, arg2, arg3, arg4, arg5);
8268
+ } catch (e) {
8269
+ process.env.NODE_ENV !== 'production' ? warning(didHookThrowForEvent[event], 'Exception thrown by hook while handling %s: %s', event, e + '\n' + e.stack) : void 0;
8270
+ didHookThrowForEvent[event] = true;
8271
+ }
8272
+ }
8273
+
8274
+ function emitEvent(event, arg1, arg2, arg3, arg4, arg5) {
8275
+ for (var i = 0; i < hooks.length; i++) {
8276
+ var hook = hooks[i];
8277
+ var fn = hook[event];
8278
+ if (fn) {
8279
+ callHook(event, fn, hook, arg1, arg2, arg3, arg4, arg5);
8280
+ }
8281
+ }
8282
+ }
8283
+
8284
+ var isProfiling = false;
8285
+ var flushHistory = [];
8286
+ var lifeCycleTimerStack = [];
8287
+ var currentFlushNesting = 0;
8288
+ var currentFlushMeasurements = [];
8289
+ var currentFlushStartTime = 0;
8290
+ var currentTimerDebugID = null;
8291
+ var currentTimerStartTime = 0;
8292
+ var currentTimerNestedFlushDuration = 0;
8293
+ var currentTimerType = null;
8294
+
8295
+ var lifeCycleTimerHasWarned = false;
8296
+
8297
+ function clearHistory() {
8298
+ ReactComponentTreeHook.purgeUnmountedComponents();
8299
+ ReactHostOperationHistoryHook.clearHistory();
8300
+ }
8301
+
8302
+ function getTreeSnapshot(registeredIDs) {
8303
+ return registeredIDs.reduce(function (tree, id) {
8304
+ var ownerID = ReactComponentTreeHook.getOwnerID(id);
8305
+ var parentID = ReactComponentTreeHook.getParentID(id);
8306
+ tree[id] = {
8307
+ displayName: ReactComponentTreeHook.getDisplayName(id),
8308
+ text: ReactComponentTreeHook.getText(id),
8309
+ updateCount: ReactComponentTreeHook.getUpdateCount(id),
8310
+ childIDs: ReactComponentTreeHook.getChildIDs(id),
8311
+ // Text nodes don't have owners but this is close enough.
8312
+ ownerID: ownerID || parentID && ReactComponentTreeHook.getOwnerID(parentID) || 0,
8313
+ parentID: parentID
8314
+ };
8315
+ return tree;
8316
+ }, {});
8317
+ }
8318
+
8319
+ function resetMeasurements() {
8320
+ var previousStartTime = currentFlushStartTime;
8321
+ var previousMeasurements = currentFlushMeasurements;
8322
+ var previousOperations = ReactHostOperationHistoryHook.getHistory();
8323
+
8324
+ if (currentFlushNesting === 0) {
8325
+ currentFlushStartTime = 0;
8326
+ currentFlushMeasurements = [];
8327
+ clearHistory();
8328
+ return;
8329
+ }
8330
+
8331
+ if (previousMeasurements.length || previousOperations.length) {
8332
+ var registeredIDs = ReactComponentTreeHook.getRegisteredIDs();
8333
+ flushHistory.push({
8334
+ duration: performanceNow() - previousStartTime,
8335
+ measurements: previousMeasurements || [],
8336
+ operations: previousOperations || [],
8337
+ treeSnapshot: getTreeSnapshot(registeredIDs)
8338
+ });
8339
+ }
8340
+
8341
+ clearHistory();
8342
+ currentFlushStartTime = performanceNow();
8343
+ currentFlushMeasurements = [];
8344
+ }
8345
+
8346
+ function checkDebugID(debugID) {
8347
+ var allowRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
8348
+
8349
+ if (allowRoot && debugID === 0) {
8350
+ return;
8351
+ }
8352
+ if (!debugID) {
8353
+ process.env.NODE_ENV !== 'production' ? warning(false, 'ReactDebugTool: debugID may not be empty.') : void 0;
8354
+ }
8355
+ }
8356
+
8357
+ function beginLifeCycleTimer(debugID, timerType) {
8358
+ if (currentFlushNesting === 0) {
8359
+ return;
8360
+ }
8361
+ if (currentTimerType && !lifeCycleTimerHasWarned) {
8362
+ 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;
8363
+ lifeCycleTimerHasWarned = true;
8364
+ }
8365
+ currentTimerStartTime = performanceNow();
8366
+ currentTimerNestedFlushDuration = 0;
8367
+ currentTimerDebugID = debugID;
8368
+ currentTimerType = timerType;
8369
+ }
8370
+
8371
+ function endLifeCycleTimer(debugID, timerType) {
8372
+ if (currentFlushNesting === 0) {
8373
+ return;
8374
+ }
8375
+ if (currentTimerType !== timerType && !lifeCycleTimerHasWarned) {
8376
+ 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;
8377
+ lifeCycleTimerHasWarned = true;
8378
+ }
8379
+ if (isProfiling) {
8380
+ currentFlushMeasurements.push({
8381
+ timerType: timerType,
8382
+ instanceID: debugID,
8383
+ duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration
8384
+ });
8385
+ }
8386
+ currentTimerStartTime = 0;
8387
+ currentTimerNestedFlushDuration = 0;
8388
+ currentTimerDebugID = null;
8389
+ currentTimerType = null;
8390
+ }
8391
+
8392
+ function pauseCurrentLifeCycleTimer() {
8393
+ var currentTimer = {
8394
+ startTime: currentTimerStartTime,
8395
+ nestedFlushStartTime: performanceNow(),
8396
+ debugID: currentTimerDebugID,
8397
+ timerType: currentTimerType
8398
+ };
8399
+ lifeCycleTimerStack.push(currentTimer);
8400
+ currentTimerStartTime = 0;
8401
+ currentTimerNestedFlushDuration = 0;
8402
+ currentTimerDebugID = null;
8403
+ currentTimerType = null;
8404
+ }
8405
+
8406
+ function resumeCurrentLifeCycleTimer() {
8407
+ var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(),
8408
+ startTime = _lifeCycleTimerStack$.startTime,
8409
+ nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime,
8410
+ debugID = _lifeCycleTimerStack$.debugID,
8411
+ timerType = _lifeCycleTimerStack$.timerType;
8412
+
8413
+ var nestedFlushDuration = performanceNow() - nestedFlushStartTime;
8414
+ currentTimerStartTime = startTime;
8415
+ currentTimerNestedFlushDuration += nestedFlushDuration;
8416
+ currentTimerDebugID = debugID;
8417
+ currentTimerType = timerType;
8418
+ }
8419
+
8420
+ var lastMarkTimeStamp = 0;
8421
+ var canUsePerformanceMeasure =
8422
+ // $FlowFixMe https://github.com/facebook/flow/issues/2345
8423
+ typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function';
8424
+
8425
+ function shouldMark(debugID) {
8426
+ if (!isProfiling || !canUsePerformanceMeasure) {
8427
+ return false;
8428
+ }
8429
+ var element = ReactComponentTreeHook.getElement(debugID);
8430
+ if (element == null || typeof element !== 'object') {
8431
+ return false;
8432
+ }
8433
+ var isHostElement = typeof element.type === 'string';
8434
+ if (isHostElement) {
8435
+ return false;
8436
+ }
8437
+ return true;
8438
+ }
8439
+
8440
+ function markBegin(debugID, markType) {
8441
+ if (!shouldMark(debugID)) {
8442
+ return;
8443
+ }
8444
+
8445
+ var markName = debugID + '::' + markType;
8446
+ lastMarkTimeStamp = performanceNow();
8447
+ performance.mark(markName);
8448
+ }
8449
+
8450
+ function markEnd(debugID, markType) {
8451
+ if (!shouldMark(debugID)) {
8452
+ return;
8453
+ }
8454
+
8455
+ var markName = debugID + '::' + markType;
8456
+ var displayName = ReactComponentTreeHook.getDisplayName(debugID) || 'Unknown';
8457
+
8458
+ // Chrome has an issue of dropping markers recorded too fast:
8459
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=640652
8460
+ // To work around this, we will not report very small measurements.
8461
+ // I determined the magic number by tweaking it back and forth.
8462
+ // 0.05ms was enough to prevent the issue, but I set it to 0.1ms to be safe.
8463
+ // When the bug is fixed, we can `measure()` unconditionally if we want to.
8464
+ var timeStamp = performanceNow();
8465
+ if (timeStamp - lastMarkTimeStamp > 0.1) {
8466
+ var measurementName = displayName + ' [' + markType + ']';
8467
+ performance.measure(measurementName, markName);
8468
+ }
8469
+
8470
+ performance.clearMarks(markName);
8471
+ performance.clearMeasures(measurementName);
8472
+ }
8473
+
8474
+ var ReactDebugTool = {
8475
+ addHook: function (hook) {
8476
+ hooks.push(hook);
8477
+ },
8478
+ removeHook: function (hook) {
8479
+ for (var i = 0; i < hooks.length; i++) {
8480
+ if (hooks[i] === hook) {
8481
+ hooks.splice(i, 1);
8482
+ i--;
8483
+ }
8484
+ }
8485
+ },
8486
+ isProfiling: function () {
8487
+ return isProfiling;
8488
+ },
8489
+ beginProfiling: function () {
8490
+ if (isProfiling) {
8491
+ return;
8492
+ }
8493
+
8494
+ isProfiling = true;
8495
+ flushHistory.length = 0;
8496
+ resetMeasurements();
8497
+ ReactDebugTool.addHook(ReactHostOperationHistoryHook);
8498
+ },
8499
+ endProfiling: function () {
8500
+ if (!isProfiling) {
8501
+ return;
8502
+ }
8503
+
8504
+ isProfiling = false;
8505
+ resetMeasurements();
8506
+ ReactDebugTool.removeHook(ReactHostOperationHistoryHook);
8507
+ },
8508
+ getFlushHistory: function () {
8509
+ return flushHistory;
8510
+ },
8511
+ onBeginFlush: function () {
8512
+ currentFlushNesting++;
8513
+ resetMeasurements();
8514
+ pauseCurrentLifeCycleTimer();
8515
+ emitEvent('onBeginFlush');
8516
+ },
8517
+ onEndFlush: function () {
8518
+ resetMeasurements();
8519
+ currentFlushNesting--;
8520
+ resumeCurrentLifeCycleTimer();
8521
+ emitEvent('onEndFlush');
8522
+ },
8523
+ onBeginLifeCycleTimer: function (debugID, timerType) {
8524
+ checkDebugID(debugID);
8525
+ emitEvent('onBeginLifeCycleTimer', debugID, timerType);
8526
+ markBegin(debugID, timerType);
8527
+ beginLifeCycleTimer(debugID, timerType);
8528
+ },
8529
+ onEndLifeCycleTimer: function (debugID, timerType) {
8530
+ checkDebugID(debugID);
8531
+ endLifeCycleTimer(debugID, timerType);
8532
+ markEnd(debugID, timerType);
8533
+ emitEvent('onEndLifeCycleTimer', debugID, timerType);
8534
+ },
8535
+ onBeginProcessingChildContext: function () {
8536
+ emitEvent('onBeginProcessingChildContext');
8537
+ },
8538
+ onEndProcessingChildContext: function () {
8539
+ emitEvent('onEndProcessingChildContext');
8540
+ },
8541
+ onHostOperation: function (operation) {
8542
+ checkDebugID(operation.instanceID);
8543
+ emitEvent('onHostOperation', operation);
8544
+ },
8545
+ onSetState: function () {
8546
+ emitEvent('onSetState');
8547
+ },
8548
+ onSetChildren: function (debugID, childDebugIDs) {
8549
+ checkDebugID(debugID);
8550
+ childDebugIDs.forEach(checkDebugID);
8551
+ emitEvent('onSetChildren', debugID, childDebugIDs);
8552
+ },
8553
+ onBeforeMountComponent: function (debugID, element, parentDebugID) {
8554
+ checkDebugID(debugID);
8555
+ checkDebugID(parentDebugID, true);
8556
+ emitEvent('onBeforeMountComponent', debugID, element, parentDebugID);
8557
+ markBegin(debugID, 'mount');
8558
+ },
8559
+ onMountComponent: function (debugID) {
8560
+ checkDebugID(debugID);
8561
+ markEnd(debugID, 'mount');
8562
+ emitEvent('onMountComponent', debugID);
8563
+ },
8564
+ onBeforeUpdateComponent: function (debugID, element) {
8565
+ checkDebugID(debugID);
8566
+ emitEvent('onBeforeUpdateComponent', debugID, element);
8567
+ markBegin(debugID, 'update');
8568
+ },
8569
+ onUpdateComponent: function (debugID) {
8570
+ checkDebugID(debugID);
8571
+ markEnd(debugID, 'update');
8572
+ emitEvent('onUpdateComponent', debugID);
8573
+ },
8574
+ onBeforeUnmountComponent: function (debugID) {
8575
+ checkDebugID(debugID);
8576
+ emitEvent('onBeforeUnmountComponent', debugID);
8577
+ markBegin(debugID, 'unmount');
8578
+ },
8579
+ onUnmountComponent: function (debugID) {
8580
+ checkDebugID(debugID);
8581
+ markEnd(debugID, 'unmount');
8582
+ emitEvent('onUnmountComponent', debugID);
8583
+ },
8584
+ onTestEvent: function () {
8585
+ emitEvent('onTestEvent');
8586
+ }
8587
+ };
8588
+
8589
+ // TODO remove these when RN/www gets updated
8590
+ ReactDebugTool.addDevtool = ReactDebugTool.addHook;
8591
+ ReactDebugTool.removeDevtool = ReactDebugTool.removeHook;
8592
+
8593
+ ReactDebugTool.addHook(ReactInvalidSetStateWarningHook);
8594
+ ReactDebugTool.addHook(ReactComponentTreeHook);
8595
+ var url = ExecutionEnvironment.canUseDOM && window.location.href || '';
8596
+ if (/[?&]react_perf\b/.test(url)) {
8597
+ ReactDebugTool.beginProfiling();
8598
+ }
8599
+
8600
+ module.exports = ReactDebugTool;
8601
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
8602
+
8603
+ /***/ },
8604
+ /* 66 */
8605
+ /***/ function(module, exports, __webpack_require__) {
8606
+
8607
+ /* WEBPACK VAR INJECTION */(function(process) {/**
8608
+ * Copyright 2016-present, Facebook, Inc.
8609
+ * All rights reserved.
8610
+ *
8611
+ * This source code is licensed under the BSD-style license found in the
8612
+ * LICENSE file in the root directory of this source tree. An additional grant
8613
+ * of patent rights can be found in the PATENTS file in the same directory.
8614
+ *
8615
+ *
8616
+ */
8617
+
8618
+ 'use strict';
8619
+
8620
+ var warning = __webpack_require__(12);
8621
+
8622
+ if (process.env.NODE_ENV !== 'production') {
8623
+ var processingChildContext = false;
8624
+
8625
+ var warnInvalidSetState = function () {
8626
+ process.env.NODE_ENV !== 'production' ? warning(!processingChildContext, 'setState(...): Cannot call setState() inside getChildContext()') : void 0;
8627
+ };
8628
+ }
8629
+
8630
+ var ReactInvalidSetStateWarningHook = {
8631
+ onBeginProcessingChildContext: function () {
8632
+ processingChildContext = true;
8633
+ },
8634
+ onEndProcessingChildContext: function () {
8635
+ processingChildContext = false;
8636
+ },
8637
+ onSetState: function () {
8638
+ warnInvalidSetState();
8639
+ }
8640
+ };
8641
+
8642
+ module.exports = ReactInvalidSetStateWarningHook;
8643
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
8644
+
8645
+ /***/ },
8646
+ /* 67 */
8647
+ /***/ function(module, exports) {
8648
+
8649
+ /**
8650
+ * Copyright 2016-present, Facebook, Inc.
8651
+ * All rights reserved.
8652
+ *
8653
+ * This source code is licensed under the BSD-style license found in the
8654
+ * LICENSE file in the root directory of this source tree. An additional grant
8655
+ * of patent rights can be found in the PATENTS file in the same directory.
8656
+ *
8657
+ *
8658
+ */
8659
+
8660
+ 'use strict';
8661
+
8662
+ var history = [];
8663
+
8664
+ var ReactHostOperationHistoryHook = {
8665
+ onHostOperation: function (operation) {
8666
+ history.push(operation);
8667
+ },
8668
+ clearHistory: function () {
8669
+ if (ReactHostOperationHistoryHook._preventClearing) {
8670
+ // Should only be used for tests.
8671
+ return;
8672
+ }
8673
+
8674
+ history = [];
8675
+ },
8676
+ getHistory: function () {
8677
+ return history;
8678
+ }
8679
+ };
8680
+
8681
+ module.exports = ReactHostOperationHistoryHook;
8682
+
8683
+ /***/ },
8684
+ /* 68 */
8685
+ /***/ function(module, exports, __webpack_require__) {
8686
+
8687
+ 'use strict';
8688
+
8689
+ /**
8690
+ * Copyright (c) 2013-present, Facebook, Inc.
8691
+ * All rights reserved.
8692
+ *
8693
+ * This source code is licensed under the BSD-style license found in the
8694
+ * LICENSE file in the root directory of this source tree. An additional grant
8695
+ * of patent rights can be found in the PATENTS file in the same directory.
8696
+ *
8697
+ * @typechecks
8698
+ */
8699
+
8700
+ var performance = __webpack_require__(69);
8701
+
8702
+ var performanceNow;
8703
+
8704
+ /**
8705
+ * Detect if we can use `window.performance.now()` and gracefully fallback to
8706
+ * `Date.now()` if it doesn't exist. We need to support Firefox < 15 for now
8707
+ * because of Facebook's testing infrastructure.
8708
+ */
8709
+ if (performance.now) {
8710
+ performanceNow = function performanceNow() {
8711
+ return performance.now();
8712
+ };
8713
+ } else {
8714
+ performanceNow = function performanceNow() {
8715
+ return Date.now();
8716
+ };
8717
+ }
8718
+
8719
+ module.exports = performanceNow;
8720
+
8721
+ /***/ },
8722
+ /* 69 */
8723
+ /***/ function(module, exports, __webpack_require__) {
8724
+
8725
+ /**
8726
+ * Copyright (c) 2013-present, Facebook, Inc.
8727
+ * All rights reserved.
8728
+ *
8729
+ * This source code is licensed under the BSD-style license found in the
8730
+ * LICENSE file in the root directory of this source tree. An additional grant
8731
+ * of patent rights can be found in the PATENTS file in the same directory.
8732
+ *
8733
+ * @typechecks
8734
+ */
8735
+
8736
+ 'use strict';
8737
+
8738
+ var ExecutionEnvironment = __webpack_require__(49);
8739
+
8740
+ var performance;
8741
+
8742
+ if (ExecutionEnvironment.canUseDOM) {
8743
+ performance = window.performance || window.msPerformance || window.webkitPerformance;
8744
+ }
8745
+
8746
+ module.exports = performance || {};
8747
+
8748
+ /***/ },
8749
+ /* 70 */
8750
+ /***/ function(module, exports, __webpack_require__) {
8751
+
8752
+ /* WEBPACK VAR INJECTION */(function(process) {/**
8753
+ * Copyright 2013-present, Facebook, Inc.
8754
+ * All rights reserved.
8755
+ *
8756
+ * This source code is licensed under the BSD-style license found in the
8757
+ * LICENSE file in the root directory of this source tree. An additional grant
8758
+ * of patent rights can be found in the PATENTS file in the same directory.
8759
+ *
8760
+ *
8761
+ */
8762
+
8763
+ 'use strict';
8764
+
8765
+ var _prodInvariant = __webpack_require__(36);
8766
+
8767
+ var invariant = __webpack_require__(9);
8768
+
8769
+ var OBSERVED_ERROR = {};
8770
+
8771
+ /**
8772
+ * `Transaction` creates a black box that is able to wrap any method such that
8773
+ * certain invariants are maintained before and after the method is invoked
8774
+ * (Even if an exception is thrown while invoking the wrapped method). Whoever
8775
+ * instantiates a transaction can provide enforcers of the invariants at
8776
+ * creation time. The `Transaction` class itself will supply one additional
8777
+ * automatic invariant for you - the invariant that any transaction instance
8778
+ * should not be run while it is already being run. You would typically create a
8779
+ * single instance of a `Transaction` for reuse multiple times, that potentially
8780
+ * is used to wrap several different methods. Wrappers are extremely simple -
8781
+ * they only require implementing two methods.
8782
+ *
8783
+ * <pre>
8784
+ * wrappers (injected at creation time)
8785
+ * + +
8786
+ * | |
8787
+ * +-----------------|--------|--------------+
8788
+ * | v | |
8789
+ * | +---------------+ | |
8790
+ * | +--| wrapper1 |---|----+ |
8791
+ * | | +---------------+ v | |
8792
+ * | | +-------------+ | |
8793
+ * | | +----| wrapper2 |--------+ |
8794
+ * | | | +-------------+ | | |
8795
+ * | | | | | |
8796
+ * | v v v v | wrapper
8797
+ * | +---+ +---+ +---------+ +---+ +---+ | invariants
8798
+ * perform(anyMethod) | | | | | | | | | | | | maintained
8799
+ * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->
8800
+ * | | | | | | | | | | | |
8801
+ * | | | | | | | | | | | |
8802
+ * | | | | | | | | | | | |
8803
+ * | +---+ +---+ +---------+ +---+ +---+ |
8804
+ * | initialize close |
8805
+ * +-----------------------------------------+
8806
+ * </pre>
8807
+ *
8808
+ * Use cases:
8809
+ * - Preserving the input selection ranges before/after reconciliation.
8810
+ * Restoring selection even in the event of an unexpected error.
8811
+ * - Deactivating events while rearranging the DOM, preventing blurs/focuses,
8812
+ * while guaranteeing that afterwards, the event system is reactivated.
8813
+ * - Flushing a queue of collected DOM mutations to the main UI thread after a
8814
+ * reconciliation takes place in a worker thread.
8815
+ * - Invoking any collected `componentDidUpdate` callbacks after rendering new
8816
+ * content.
8817
+ * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue
8818
+ * to preserve the `scrollTop` (an automatic scroll aware DOM).
8819
+ * - (Future use case): Layout calculations before and after DOM updates.
8820
+ *
8821
+ * Transactional plugin API:
8822
+ * - A module that has an `initialize` method that returns any precomputation.
8823
+ * - and a `close` method that accepts the precomputation. `close` is invoked
8824
+ * when the wrapped process is completed, or has failed.
8825
+ *
8826
+ * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules
8827
+ * that implement `initialize` and `close`.
8828
+ * @return {Transaction} Single transaction for reuse in thread.
8829
+ *
8830
+ * @class Transaction
8831
+ */
8832
+ var TransactionImpl = {
8833
+ /**
8834
+ * Sets up this instance so that it is prepared for collecting metrics. Does
8835
+ * so such that this setup method may be used on an instance that is already
8836
+ * initialized, in a way that does not consume additional memory upon reuse.
8837
+ * That can be useful if you decide to make your subclass of this mixin a
8838
+ * "PooledClass".
8839
+ */
8840
+ reinitializeTransaction: function () {
8841
+ this.transactionWrappers = this.getTransactionWrappers();
8842
+ if (this.wrapperInitData) {
8843
+ this.wrapperInitData.length = 0;
8844
+ } else {
8845
+ this.wrapperInitData = [];
8846
+ }
8847
+ this._isInTransaction = false;
8848
+ },
8849
+
8850
+ _isInTransaction: false,
8851
+
8852
+ /**
8853
+ * @abstract
8854
+ * @return {Array<TransactionWrapper>} Array of transaction wrappers.
8855
+ */
8856
+ getTransactionWrappers: null,
8857
+
8858
+ isInTransaction: function () {
8859
+ return !!this._isInTransaction;
8860
+ },
8861
+
8862
+ /**
8863
+ * Executes the function within a safety window. Use this for the top level
8864
+ * methods that result in large amounts of computation/mutations that would
8865
+ * need to be safety checked. The optional arguments helps prevent the need
8866
+ * to bind in many cases.
8867
+ *
8868
+ * @param {function} method Member of scope to call.
8869
+ * @param {Object} scope Scope to invoke from.
8870
+ * @param {Object?=} a Argument to pass to the method.
8871
+ * @param {Object?=} b Argument to pass to the method.
8872
+ * @param {Object?=} c Argument to pass to the method.
8873
+ * @param {Object?=} d Argument to pass to the method.
8874
+ * @param {Object?=} e Argument to pass to the method.
8875
+ * @param {Object?=} f Argument to pass to the method.
8876
+ *
8877
+ * @return {*} Return value from `method`.
8878
+ */
8879
+ perform: function (method, scope, a, b, c, d, e, f) {
8880
+ !!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;
8881
+ var errorThrown;
8882
+ var ret;
8883
+ try {
8884
+ this._isInTransaction = true;
8885
+ // Catching errors makes debugging more difficult, so we start with
8886
+ // errorThrown set to true before setting it to false after calling
8887
+ // close -- if it's still set to true in the finally block, it means
8888
+ // one of these calls threw.
8889
+ errorThrown = true;
8890
+ this.initializeAll(0);
8891
+ ret = method.call(scope, a, b, c, d, e, f);
8892
+ errorThrown = false;
8893
+ } finally {
8894
+ try {
8895
+ if (errorThrown) {
8896
+ // If `method` throws, prefer to show that stack trace over any thrown
8897
+ // by invoking `closeAll`.
8898
+ try {
8899
+ this.closeAll(0);
8900
+ } catch (err) {}
8901
+ } else {
8902
+ // Since `method` didn't throw, we don't want to silence the exception
8903
+ // here.
8904
+ this.closeAll(0);
8905
+ }
8906
+ } finally {
8907
+ this._isInTransaction = false;
8908
+ }
8909
+ }
8910
+ return ret;
8911
+ },
8912
+
8913
+ initializeAll: function (startIndex) {
8914
+ var transactionWrappers = this.transactionWrappers;
8915
+ for (var i = startIndex; i < transactionWrappers.length; i++) {
8916
+ var wrapper = transactionWrappers[i];
8917
+ try {
8918
+ // Catching errors makes debugging more difficult, so we start with the
8919
+ // OBSERVED_ERROR state before overwriting it with the real return value
8920
+ // of initialize -- if it's still set to OBSERVED_ERROR in the finally
8921
+ // block, it means wrapper.initialize threw.
8922
+ this.wrapperInitData[i] = OBSERVED_ERROR;
8923
+ this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;
8924
+ } finally {
8925
+ if (this.wrapperInitData[i] === OBSERVED_ERROR) {
8926
+ // The initializer for wrapper i threw an error; initialize the
8927
+ // remaining wrappers but silence any exceptions from them to ensure
8928
+ // that the first error is the one to bubble up.
8929
+ try {
8930
+ this.initializeAll(i + 1);
8931
+ } catch (err) {}
8932
+ }
8933
+ }
8934
+ }
8935
+ },
8936
+
8937
+ /**
8938
+ * Invokes each of `this.transactionWrappers.close[i]` functions, passing into
8939
+ * them the respective return values of `this.transactionWrappers.init[i]`
8940
+ * (`close`rs that correspond to initializers that failed will not be
8941
+ * invoked).
8942
+ */
8943
+ closeAll: function (startIndex) {
8944
+ !this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;
8945
+ var transactionWrappers = this.transactionWrappers;
8946
+ for (var i = startIndex; i < transactionWrappers.length; i++) {
8947
+ var wrapper = transactionWrappers[i];
8948
+ var initData = this.wrapperInitData[i];
8949
+ var errorThrown;
8950
+ try {
8951
+ // Catching errors makes debugging more difficult, so we start with
8952
+ // errorThrown set to true before setting it to false after calling
8953
+ // close -- if it's still set to true in the finally block, it means
8954
+ // wrapper.close threw.
8955
+ errorThrown = true;
8956
+ if (initData !== OBSERVED_ERROR && wrapper.close) {
8957
+ wrapper.close.call(this, initData);
8958
+ }
8959
+ errorThrown = false;
8960
+ } finally {
8961
+ if (errorThrown) {
8962
+ // The closer for wrapper i threw an error; close the remaining
8963
+ // wrappers but silence any exceptions from them to ensure that the
8964
+ // first error is the one to bubble up.
8965
+ try {
8966
+ this.closeAll(i + 1);
8967
+ } catch (e) {}
8968
+ }
8969
+ }
8970
+ }
8971
+ this.wrapperInitData.length = 0;
8972
+ }
8973
+ };
8974
+
8975
+ module.exports = TransactionImpl;
8976
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
8977
+
8978
+ /***/ },
8979
+ /* 71 */
8980
+ /***/ function(module, exports) {
8981
+
8982
+ /**
8983
+ * Copyright 2013-present, Facebook, Inc.
8984
+ * All rights reserved.
8985
+ *
8986
+ * This source code is licensed under the BSD-style license found in the
8987
+ * LICENSE file in the root directory of this source tree. An additional grant
8988
+ * of patent rights can be found in the PATENTS file in the same directory.
8989
+ *
8990
+ */
8991
+
8992
+ 'use strict';
8993
+
8994
+ /**
8995
+ * Gets the target node from a native browser event by accounting for
8996
+ * inconsistencies in browser DOM APIs.
8997
+ *
8998
+ * @param {object} nativeEvent Native browser event.
8999
+ * @return {DOMEventTarget} Target node.
9000
+ */
9001
+
9002
+ function getEventTarget(nativeEvent) {
9003
+ var target = nativeEvent.target || nativeEvent.srcElement || window;
9004
+
9005
+ // Normalize SVG <use> element events #4963
9006
+ if (target.correspondingUseElement) {
9007
+ target = target.correspondingUseElement;
9008
+ }
9009
+
9010
+ // Safari may fire events on text nodes (Node.TEXT_NODE is 3).
9011
+ // @see http://www.quirksmode.org/js/events_properties.html
9012
+ return target.nodeType === 3 ? target.parentNode : target;
9013
+ }
9014
+
9015
+ module.exports = getEventTarget;
9016
+
9017
+ /***/ },
9018
+ /* 72 */
9019
+ /***/ function(module, exports, __webpack_require__) {
9020
+
9021
+ /**
9022
+ * Copyright 2013-present, Facebook, Inc.
9023
+ * All rights reserved.
9024
+ *
9025
+ * This source code is licensed under the BSD-style license found in the
9026
+ * LICENSE file in the root directory of this source tree. An additional grant
9027
+ * of patent rights can be found in the PATENTS file in the same directory.
9028
+ *
9029
+ */
9030
+
9031
+ 'use strict';
9032
+
9033
+ var ExecutionEnvironment = __webpack_require__(49);
9034
+
9035
+ var useHasFeature;
9036
+ if (ExecutionEnvironment.canUseDOM) {
9037
+ useHasFeature = document.implementation && document.implementation.hasFeature &&
9038
+ // always returns true in newer browsers as per the standard.
9039
+ // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
9040
+ document.implementation.hasFeature('', '') !== true;
9041
+ }
9042
+
9043
+ /**
9044
+ * Checks if an event is supported in the current execution environment.
9045
+ *
9046
+ * NOTE: This will not work correctly for non-generic events such as `change`,
9047
+ * `reset`, `load`, `error`, and `select`.
9048
+ *
9049
+ * Borrows from Modernizr.
9050
+ *
9051
+ * @param {string} eventNameSuffix Event name, e.g. "click".
9052
+ * @param {?boolean} capture Check if the capture phase is supported.
9053
+ * @return {boolean} True if the event is supported.
9054
+ * @internal
9055
+ * @license Modernizr 3.0.0pre (Custom Build) | MIT
9056
+ */
9057
+ function isEventSupported(eventNameSuffix, capture) {
9058
+ if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {
9059
+ return false;
9060
+ }
9061
+
9062
+ var eventName = 'on' + eventNameSuffix;
9063
+ var isSupported = eventName in document;
9064
+
9065
+ if (!isSupported) {
9066
+ var element = document.createElement('div');
9067
+ element.setAttribute(eventName, 'return;');
9068
+ isSupported = typeof element[eventName] === 'function';
9069
+ }
9070
+
9071
+ if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {
9072
+ // This is the only way to test support for the `wheel` event in IE9+.
9073
+ isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
9074
+ }
9075
+
9076
+ return isSupported;
9077
+ }
9078
+
9079
+ module.exports = isEventSupported;
9080
+
9081
+ /***/ },
9082
+ /* 73 */
9083
+ /***/ function(module, exports) {
9084
+
9085
+ /**
9086
+ * Copyright 2013-present, Facebook, Inc.
9087
+ * All rights reserved.
9088
+ *
9089
+ * This source code is licensed under the BSD-style license found in the
9090
+ * LICENSE file in the root directory of this source tree. An additional grant
9091
+ * of patent rights can be found in the PATENTS file in the same directory.
9092
+ *
9093
+ *
9094
+ */
9095
+
9096
+ 'use strict';
9097
+
9098
+ /**
9099
+ * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
9100
+ */
9101
+
9102
+ var supportedInputTypes = {
9103
+ 'color': true,
9104
+ 'date': true,
9105
+ 'datetime': true,
9106
+ 'datetime-local': true,
9107
+ 'email': true,
9108
+ 'month': true,
9109
+ 'number': true,
9110
+ 'password': true,
9111
+ 'range': true,
9112
+ 'search': true,
9113
+ 'tel': true,
9114
+ 'text': true,
9115
+ 'time': true,
9116
+ 'url': true,
9117
+ 'week': true
9118
+ };
9119
+
9120
+ function isTextInputElement(elem) {
9121
+ var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
9122
+
9123
+ if (nodeName === 'input') {
9124
+ return !!supportedInputTypes[elem.type];
9125
+ }
9126
+
9127
+ if (nodeName === 'textarea') {
9128
+ return true;
9129
+ }
9130
+
9131
+ return false;
9132
+ }
9133
+
9134
+ module.exports = isTextInputElement;
9135
+
9136
+ /***/ },
9137
+ /* 74 */
9138
+ /***/ function(module, exports) {
9139
+
9140
+ /**
9141
+ * Copyright 2013-present, Facebook, Inc.
9142
+ * All rights reserved.
9143
+ *
9144
+ * This source code is licensed under the BSD-style license found in the
9145
+ * LICENSE file in the root directory of this source tree. An additional grant
9146
+ * of patent rights can be found in the PATENTS file in the same directory.
9147
+ *
9148
+ */
9149
+
9150
+ 'use strict';
9151
+
9152
+ /**
9153
+ * Module that is injectable into `EventPluginHub`, that specifies a
9154
+ * deterministic ordering of `EventPlugin`s. A convenient way to reason about
9155
+ * plugins, without having to package every one of them. This is better than
9156
+ * having plugins be ordered in the same order that they are injected because
9157
+ * that ordering would be influenced by the packaging order.
9158
+ * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that
9159
+ * preventing default on events is convenient in `SimpleEventPlugin` handlers.
9160
+ */
9161
+
9162
+ var DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];
9163
+
9164
+ module.exports = DefaultEventPluginOrder;
9165
+
9166
+ /***/ },
9167
+ /* 75 */
9168
+ /***/ function(module, exports, __webpack_require__) {
9169
+
9170
+ /**
9171
+ * Copyright 2013-present, Facebook, Inc.
9172
+ * All rights reserved.
9173
+ *
9174
+ * This source code is licensed under the BSD-style license found in the
9175
+ * LICENSE file in the root directory of this source tree. An additional grant
9176
+ * of patent rights can be found in the PATENTS file in the same directory.
9177
+ *
9178
+ */
9179
+
9180
+ 'use strict';
9181
+
9182
+ var EventPropagators = __webpack_require__(42);
9183
+ var ReactDOMComponentTree = __webpack_require__(35);
9184
+ var SyntheticMouseEvent = __webpack_require__(76);
9185
+
9186
+ var eventTypes = {
9187
+ mouseEnter: {
9188
+ registrationName: 'onMouseEnter',
9189
+ dependencies: ['topMouseOut', 'topMouseOver']
9190
+ },
9191
+ mouseLeave: {
9192
+ registrationName: 'onMouseLeave',
9193
+ dependencies: ['topMouseOut', 'topMouseOver']
9194
+ }
9195
+ };
9196
+
9197
+ var EnterLeaveEventPlugin = {
9198
+
9199
+ eventTypes: eventTypes,
9200
+
9201
+ /**
9202
+ * For almost every interaction we care about, there will be both a top-level
9203
+ * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that
9204
+ * we do not extract duplicate events. However, moving the mouse into the
9205
+ * browser from outside will not fire a `mouseout` event. In this case, we use
9206
+ * the `mouseover` top-level event.
9207
+ */
9208
+ extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
9209
+ if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {
9210
+ return null;
9211
+ }
9212
+ if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {
9213
+ // Must not be a mouse in or mouse out - ignoring.
9214
+ return null;
9215
+ }
9216
+
9217
+ var win;
9218
+ if (nativeEventTarget.window === nativeEventTarget) {
9219
+ // `nativeEventTarget` is probably a window object.
9220
+ win = nativeEventTarget;
9221
+ } else {
9222
+ // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.
9223
+ var doc = nativeEventTarget.ownerDocument;
9224
+ if (doc) {
9225
+ win = doc.defaultView || doc.parentWindow;
9226
+ } else {
9227
+ win = window;
9228
+ }
9229
+ }
9230
+
9231
+ var from;
9232
+ var to;
9233
+ if (topLevelType === 'topMouseOut') {
9234
+ from = targetInst;
9235
+ var related = nativeEvent.relatedTarget || nativeEvent.toElement;
9236
+ to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;
9237
+ } else {
9238
+ // Moving to a node from outside the window.
9239
+ from = null;
9240
+ to = targetInst;
9241
+ }
9242
+
9243
+ if (from === to) {
9244
+ // Nothing pertains to our managed components.
9245
+ return null;
9246
+ }
9247
+
9248
+ var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);
9249
+ var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);
9250
+
9251
+ var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);
9252
+ leave.type = 'mouseleave';
9253
+ leave.target = fromNode;
9254
+ leave.relatedTarget = toNode;
9255
+
9256
+ var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);
9257
+ enter.type = 'mouseenter';
9258
+ enter.target = toNode;
9259
+ enter.relatedTarget = fromNode;
9260
+
9261
+ EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);
9262
+
9263
+ return [leave, enter];
9264
+ }
9265
+
9266
+ };
9267
+
9268
+ module.exports = EnterLeaveEventPlugin;
9269
+
9270
+ /***/ },
9271
+ /* 76 */
9272
+ /***/ function(module, exports, __webpack_require__) {
9273
+
9274
+ /**
9275
+ * Copyright 2013-present, Facebook, Inc.
9276
+ * All rights reserved.
9277
+ *
9278
+ * This source code is licensed under the BSD-style license found in the
9279
+ * LICENSE file in the root directory of this source tree. An additional grant
9280
+ * of patent rights can be found in the PATENTS file in the same directory.
9281
+ *
9282
+ */
9283
+
9284
+ 'use strict';
9285
+
9286
+ var SyntheticUIEvent = __webpack_require__(77);
9287
+ var ViewportMetrics = __webpack_require__(78);
9288
+
9289
+ var getEventModifierState = __webpack_require__(79);
9290
+
9291
+ /**
9292
+ * @interface MouseEvent
9293
+ * @see http://www.w3.org/TR/DOM-Level-3-Events/
9294
+ */
9295
+ var MouseEventInterface = {
9296
+ screenX: null,
9297
+ screenY: null,
9298
+ clientX: null,
9299
+ clientY: null,
9300
+ ctrlKey: null,
9301
+ shiftKey: null,
9302
+ altKey: null,
9303
+ metaKey: null,
9304
+ getModifierState: getEventModifierState,
9305
+ button: function (event) {
9306
+ // Webkit, Firefox, IE9+
9307
+ // which: 1 2 3
9308
+ // button: 0 1 2 (standard)
9309
+ var button = event.button;
9310
+ if ('which' in event) {
9311
+ return button;
9312
+ }
9313
+ // IE<9
9314
+ // which: undefined
9315
+ // button: 0 0 0
9316
+ // button: 1 4 2 (onmouseup)
9317
+ return button === 2 ? 2 : button === 4 ? 1 : 0;
9318
+ },
9319
+ buttons: null,
9320
+ relatedTarget: function (event) {
9321
+ return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);
9322
+ },
9323
+ // "Proprietary" Interface.
9324
+ pageX: function (event) {
9325
+ return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;
9326
+ },
9327
+ pageY: function (event) {
9328
+ return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;
9329
+ }
9330
+ };
9331
+
9332
+ /**
9333
+ * @param {object} dispatchConfig Configuration used to dispatch this event.
9334
+ * @param {string} dispatchMarker Marker identifying the event target.
9335
+ * @param {object} nativeEvent Native browser event.
9336
+ * @extends {SyntheticUIEvent}
9337
+ */
9338
+ function SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
9339
+ return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
9340
+ }
9341
+
9342
+ SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);
9343
+
9344
+ module.exports = SyntheticMouseEvent;
9345
+
9346
+ /***/ },
9347
+ /* 77 */
9348
+ /***/ function(module, exports, __webpack_require__) {
9349
+
9350
+ /**
9351
+ * Copyright 2013-present, Facebook, Inc.
9352
+ * All rights reserved.
9353
+ *
9354
+ * This source code is licensed under the BSD-style license found in the
9355
+ * LICENSE file in the root directory of this source tree. An additional grant
9356
+ * of patent rights can be found in the PATENTS file in the same directory.
9357
+ *
9358
+ */
9359
+
9360
+ 'use strict';
9361
+
9362
+ var SyntheticEvent = __webpack_require__(55);
9363
+
9364
+ var getEventTarget = __webpack_require__(71);
9365
+
9366
+ /**
9367
+ * @interface UIEvent
9368
+ * @see http://www.w3.org/TR/DOM-Level-3-Events/
9369
+ */
9370
+ var UIEventInterface = {
9371
+ view: function (event) {
9372
+ if (event.view) {
9373
+ return event.view;
9374
+ }
9375
+
9376
+ var target = getEventTarget(event);
9377
+ if (target.window === target) {
9378
+ // target is a window object
9379
+ return target;
9380
+ }
9381
+
9382
+ var doc = target.ownerDocument;
9383
+ // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.
9384
+ if (doc) {
9385
+ return doc.defaultView || doc.parentWindow;
9386
+ } else {
9387
+ return window;
9388
+ }
9389
+ },
9390
+ detail: function (event) {
9391
+ return event.detail || 0;
9392
+ }
9393
+ };
9394
+
9395
+ /**
9396
+ * @param {object} dispatchConfig Configuration used to dispatch this event.
9397
+ * @param {string} dispatchMarker Marker identifying the event target.
9398
+ * @param {object} nativeEvent Native browser event.
9399
+ * @extends {SyntheticEvent}
9400
+ */
9401
+ function SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
9402
+ return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
9403
+ }
9404
+
9405
+ SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);
9406
+
9407
+ module.exports = SyntheticUIEvent;
9408
+
9409
+ /***/ },
9410
+ /* 78 */
9411
+ /***/ function(module, exports) {
9412
+
9413
+ /**
9414
+ * Copyright 2013-present, Facebook, Inc.
9415
+ * All rights reserved.
9416
+ *
9417
+ * This source code is licensed under the BSD-style license found in the
9418
+ * LICENSE file in the root directory of this source tree. An additional grant
9419
+ * of patent rights can be found in the PATENTS file in the same directory.
9420
+ *
9421
+ */
9422
+
9423
+ 'use strict';
9424
+
9425
+ var ViewportMetrics = {
9426
+
9427
+ currentScrollLeft: 0,
9428
+
9429
+ currentScrollTop: 0,
9430
+
9431
+ refreshScrollValues: function (scrollPosition) {
9432
+ ViewportMetrics.currentScrollLeft = scrollPosition.x;
9433
+ ViewportMetrics.currentScrollTop = scrollPosition.y;
9434
+ }
9435
+
9436
+ };
9437
+
9438
+ module.exports = ViewportMetrics;
9439
+
9440
+ /***/ },
9441
+ /* 79 */
9442
+ /***/ function(module, exports) {
9443
+
9444
+ /**
9445
+ * Copyright 2013-present, Facebook, Inc.
9446
+ * All rights reserved.
9447
+ *
9448
+ * This source code is licensed under the BSD-style license found in the
9449
+ * LICENSE file in the root directory of this source tree. An additional grant
9450
+ * of patent rights can be found in the PATENTS file in the same directory.
9451
+ *
9452
+ */
9453
+
9454
+ 'use strict';
9455
+
9456
+ /**
9457
+ * Translation from modifier key to the associated property in the event.
9458
+ * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers
9459
+ */
9460
+
9461
+ var modifierKeyToProp = {
9462
+ 'Alt': 'altKey',
9463
+ 'Control': 'ctrlKey',
9464
+ 'Meta': 'metaKey',
9465
+ 'Shift': 'shiftKey'
9466
+ };
9467
+
9468
+ // IE8 does not implement getModifierState so we simply map it to the only
9469
+ // modifier keys exposed by the event itself, does not support Lock-keys.
9470
+ // Currently, all major browsers except Chrome seems to support Lock-keys.
9471
+ function modifierStateGetter(keyArg) {
9472
+ var syntheticEvent = this;
9473
+ var nativeEvent = syntheticEvent.nativeEvent;
9474
+ if (nativeEvent.getModifierState) {
9475
+ return nativeEvent.getModifierState(keyArg);
9476
+ }
9477
+ var keyProp = modifierKeyToProp[keyArg];
9478
+ return keyProp ? !!nativeEvent[keyProp] : false;
9479
+ }
9480
+
9481
+ function getEventModifierState(nativeEvent) {
9482
+ return modifierStateGetter;
9483
+ }
9484
+
9485
+ module.exports = getEventModifierState;
9486
+
9487
+ /***/ },
9488
+ /* 80 */
9489
+ /***/ function(module, exports, __webpack_require__) {
9490
+
9491
+ /**
9492
+ * Copyright 2013-present, Facebook, Inc.
9493
+ * All rights reserved.
9494
+ *
9495
+ * This source code is licensed under the BSD-style license found in the
9496
+ * LICENSE file in the root directory of this source tree. An additional grant
9497
+ * of patent rights can be found in the PATENTS file in the same directory.
9498
+ *
9499
+ */
9500
+
9501
+ 'use strict';
9502
+
9503
+ var DOMProperty = __webpack_require__(37);
9504
+
9505
+ var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;
9506
+ var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;
9507
+ var HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;
9508
+ var HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;
9509
+ var HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;
9510
+
9511
+ var HTMLDOMPropertyConfig = {
9512
+ isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),
9513
+ Properties: {
9514
+ /**
9515
+ * Standard Properties
9516
+ */
9517
+ accept: 0,
9518
+ acceptCharset: 0,
9519
+ accessKey: 0,
9520
+ action: 0,
9521
+ allowFullScreen: HAS_BOOLEAN_VALUE,
9522
+ allowTransparency: 0,
9523
+ alt: 0,
9524
+ // specifies target context for links with `preload` type
9525
+ as: 0,
9526
+ async: HAS_BOOLEAN_VALUE,
9527
+ autoComplete: 0,
9528
+ // autoFocus is polyfilled/normalized by AutoFocusUtils
9529
+ // autoFocus: HAS_BOOLEAN_VALUE,
9530
+ autoPlay: HAS_BOOLEAN_VALUE,
9531
+ capture: HAS_BOOLEAN_VALUE,
9532
+ cellPadding: 0,
9533
+ cellSpacing: 0,
9534
+ charSet: 0,
9535
+ challenge: 0,
9536
+ checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
9537
+ cite: 0,
9538
+ classID: 0,
9539
+ className: 0,
9540
+ cols: HAS_POSITIVE_NUMERIC_VALUE,
9541
+ colSpan: 0,
9542
+ content: 0,
9543
+ contentEditable: 0,
9544
+ contextMenu: 0,
9545
+ controls: HAS_BOOLEAN_VALUE,
9546
+ coords: 0,
9547
+ crossOrigin: 0,
9548
+ data: 0, // For `<object />` acts as `src`.
9549
+ dateTime: 0,
9550
+ 'default': HAS_BOOLEAN_VALUE,
9551
+ defer: HAS_BOOLEAN_VALUE,
9552
+ dir: 0,
9553
+ disabled: HAS_BOOLEAN_VALUE,
9554
+ download: HAS_OVERLOADED_BOOLEAN_VALUE,
9555
+ draggable: 0,
9556
+ encType: 0,
9557
+ form: 0,
9558
+ formAction: 0,
9559
+ formEncType: 0,
9560
+ formMethod: 0,
9561
+ formNoValidate: HAS_BOOLEAN_VALUE,
9562
+ formTarget: 0,
9563
+ frameBorder: 0,
9564
+ headers: 0,
9565
+ height: 0,
9566
+ hidden: HAS_BOOLEAN_VALUE,
9567
+ high: 0,
9568
+ href: 0,
9569
+ hrefLang: 0,
9570
+ htmlFor: 0,
9571
+ httpEquiv: 0,
9572
+ icon: 0,
9573
+ id: 0,
9574
+ inputMode: 0,
9575
+ integrity: 0,
9576
+ is: 0,
9577
+ keyParams: 0,
9578
+ keyType: 0,
9579
+ kind: 0,
9580
+ label: 0,
9581
+ lang: 0,
9582
+ list: 0,
9583
+ loop: HAS_BOOLEAN_VALUE,
9584
+ low: 0,
9585
+ manifest: 0,
9586
+ marginHeight: 0,
9587
+ marginWidth: 0,
9588
+ max: 0,
9589
+ maxLength: 0,
9590
+ media: 0,
9591
+ mediaGroup: 0,
9592
+ method: 0,
9593
+ min: 0,
9594
+ minLength: 0,
9595
+ // Caution; `option.selected` is not updated if `select.multiple` is
9596
+ // disabled with `removeAttribute`.
9597
+ multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
9598
+ muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
9599
+ name: 0,
9600
+ nonce: 0,
9601
+ noValidate: HAS_BOOLEAN_VALUE,
9602
+ open: HAS_BOOLEAN_VALUE,
9603
+ optimum: 0,
9604
+ pattern: 0,
9605
+ placeholder: 0,
9606
+ playsInline: HAS_BOOLEAN_VALUE,
9607
+ poster: 0,
9608
+ preload: 0,
9609
+ profile: 0,
9610
+ radioGroup: 0,
9611
+ readOnly: HAS_BOOLEAN_VALUE,
9612
+ referrerPolicy: 0,
9613
+ rel: 0,
9614
+ required: HAS_BOOLEAN_VALUE,
9615
+ reversed: HAS_BOOLEAN_VALUE,
9616
+ role: 0,
9617
+ rows: HAS_POSITIVE_NUMERIC_VALUE,
9618
+ rowSpan: HAS_NUMERIC_VALUE,
9619
+ sandbox: 0,
9620
+ scope: 0,
9621
+ scoped: HAS_BOOLEAN_VALUE,
9622
+ scrolling: 0,
9623
+ seamless: HAS_BOOLEAN_VALUE,
9624
+ selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
9625
+ shape: 0,
9626
+ size: HAS_POSITIVE_NUMERIC_VALUE,
9627
+ sizes: 0,
9628
+ span: HAS_POSITIVE_NUMERIC_VALUE,
9629
+ spellCheck: 0,
9630
+ src: 0,
9631
+ srcDoc: 0,
9632
+ srcLang: 0,
9633
+ srcSet: 0,
9634
+ start: HAS_NUMERIC_VALUE,
9635
+ step: 0,
9636
+ style: 0,
9637
+ summary: 0,
9638
+ tabIndex: 0,
9639
+ target: 0,
9640
+ title: 0,
9641
+ // Setting .type throws on non-<input> tags
9642
+ type: 0,
9643
+ useMap: 0,
9644
+ value: 0,
9645
+ width: 0,
9646
+ wmode: 0,
9647
+ wrap: 0,
9648
+
9649
+ /**
9650
+ * RDFa Properties
9651
+ */
9652
+ about: 0,
9653
+ datatype: 0,
9654
+ inlist: 0,
9655
+ prefix: 0,
9656
+ // property is also supported for OpenGraph in meta tags.
9657
+ property: 0,
9658
+ resource: 0,
9659
+ 'typeof': 0,
9660
+ vocab: 0,
9661
+
9662
+ /**
9663
+ * Non-standard Properties
9664
+ */
9665
+ // autoCapitalize and autoCorrect are supported in Mobile Safari for
9666
+ // keyboard hints.
9667
+ autoCapitalize: 0,
9668
+ autoCorrect: 0,
9669
+ // autoSave allows WebKit/Blink to persist values of input fields on page reloads
9670
+ autoSave: 0,
9671
+ // color is for Safari mask-icon link
9672
+ color: 0,
9673
+ // itemProp, itemScope, itemType are for
9674
+ // Microdata support. See http://schema.org/docs/gs.html
9675
+ itemProp: 0,
9676
+ itemScope: HAS_BOOLEAN_VALUE,
9677
+ itemType: 0,
9678
+ // itemID and itemRef are for Microdata support as well but
9679
+ // only specified in the WHATWG spec document. See
9680
+ // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api
9681
+ itemID: 0,
9682
+ itemRef: 0,
9683
+ // results show looking glass icon and recent searches on input
9684
+ // search fields in WebKit/Blink
9685
+ results: 0,
9686
+ // IE-only attribute that specifies security restrictions on an iframe
9687
+ // as an alternative to the sandbox attribute on IE<10
9688
+ security: 0,
9689
+ // IE-only attribute that controls focus behavior
9690
+ unselectable: 0
9691
+ },
9692
+ DOMAttributeNames: {
9693
+ acceptCharset: 'accept-charset',
9694
+ className: 'class',
9695
+ htmlFor: 'for',
9696
+ httpEquiv: 'http-equiv'
9697
+ },
9698
+ DOMPropertyNames: {}
9699
+ };
9700
+
9701
+ module.exports = HTMLDOMPropertyConfig;
9702
+
9703
+ /***/ },
9704
+ /* 81 */
9705
+ /***/ function(module, exports, __webpack_require__) {
9706
+
9707
+ /**
9708
+ * Copyright 2013-present, Facebook, Inc.
9709
+ * All rights reserved.
9710
+ *
9711
+ * This source code is licensed under the BSD-style license found in the
9712
+ * LICENSE file in the root directory of this source tree. An additional grant
9713
+ * of patent rights can be found in the PATENTS file in the same directory.
9714
+ *
9715
+ */
9716
+
9717
+ 'use strict';
9718
+
9719
+ var DOMChildrenOperations = __webpack_require__(82);
9720
+ var ReactDOMIDOperations = __webpack_require__(93);
9721
+
9722
+ /**
9723
+ * Abstracts away all functionality of the reconciler that requires knowledge of
9724
+ * the browser context. TODO: These callers should be refactored to avoid the
9725
+ * need for this injection.
9726
+ */
9727
+ var ReactComponentBrowserEnvironment = {
9728
+
9729
+ processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,
9730
+
9731
+ replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup
9732
+
9733
+ };
9734
+
9735
+ module.exports = ReactComponentBrowserEnvironment;
9736
+
9737
+ /***/ },
9738
+ /* 82 */
9739
+ /***/ function(module, exports, __webpack_require__) {
9740
+
9741
+ /* WEBPACK VAR INJECTION */(function(process) {/**
9742
+ * Copyright 2013-present, Facebook, Inc.
9743
+ * All rights reserved.
9744
+ *
9745
+ * This source code is licensed under the BSD-style license found in the
9746
+ * LICENSE file in the root directory of this source tree. An additional grant
9747
+ * of patent rights can be found in the PATENTS file in the same directory.
9748
+ *
9749
+ */
9750
+
9751
+ 'use strict';
9752
+
9753
+ var DOMLazyTree = __webpack_require__(83);
9754
+ var Danger = __webpack_require__(89);
9755
+ var ReactDOMComponentTree = __webpack_require__(35);
9756
+ var ReactInstrumentation = __webpack_require__(64);
9757
+
9758
+ var createMicrosoftUnsafeLocalFunction = __webpack_require__(86);
9759
+ var setInnerHTML = __webpack_require__(85);
9760
+ var setTextContent = __webpack_require__(87);
9761
+
9762
+ function getNodeAfter(parentNode, node) {
9763
+ // Special case for text components, which return [open, close] comments
9764
+ // from getHostNode.
9765
+ if (Array.isArray(node)) {
9766
+ node = node[1];
9767
+ }
9768
+ return node ? node.nextSibling : parentNode.firstChild;
9769
+ }
9770
+
9771
+ /**
9772
+ * Inserts `childNode` as a child of `parentNode` at the `index`.
9773
+ *
9774
+ * @param {DOMElement} parentNode Parent node in which to insert.
9775
+ * @param {DOMElement} childNode Child node to insert.
9776
+ * @param {number} index Index at which to insert the child.
9777
+ * @internal
9778
+ */
9779
+ var insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {
9780
+ // We rely exclusively on `insertBefore(node, null)` instead of also using
9781
+ // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so
9782
+ // we are careful to use `null`.)
9783
+ parentNode.insertBefore(childNode, referenceNode);
9784
+ });
9785
+
9786
+ function insertLazyTreeChildAt(parentNode, childTree, referenceNode) {
9787
+ DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);
9788
+ }
9789
+
9790
+ function moveChild(parentNode, childNode, referenceNode) {
9791
+ if (Array.isArray(childNode)) {
9792
+ moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);
9793
+ } else {
9794
+ insertChildAt(parentNode, childNode, referenceNode);
9795
+ }
9796
+ }
9797
+
9798
+ function removeChild(parentNode, childNode) {
9799
+ if (Array.isArray(childNode)) {
9800
+ var closingComment = childNode[1];
9801
+ childNode = childNode[0];
9802
+ removeDelimitedText(parentNode, childNode, closingComment);
9803
+ parentNode.removeChild(closingComment);
9804
+ }
9805
+ parentNode.removeChild(childNode);
9806
+ }
9807
+
9808
+ function moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {
9809
+ var node = openingComment;
9810
+ while (true) {
9811
+ var nextNode = node.nextSibling;
9812
+ insertChildAt(parentNode, node, referenceNode);
9813
+ if (node === closingComment) {
9814
+ break;
9815
+ }
9816
+ node = nextNode;
9817
+ }
9818
+ }
9819
+
9820
+ function removeDelimitedText(parentNode, startNode, closingComment) {
9821
+ while (true) {
9822
+ var node = startNode.nextSibling;
9823
+ if (node === closingComment) {
9824
+ // The closing comment is removed by ReactMultiChild.
9825
+ break;
9826
+ } else {
9827
+ parentNode.removeChild(node);
9828
+ }
9829
+ }
9830
+ }
9831
+
9832
+ function replaceDelimitedText(openingComment, closingComment, stringText) {
9833
+ var parentNode = openingComment.parentNode;
9834
+ var nodeAfterComment = openingComment.nextSibling;
9835
+ if (nodeAfterComment === closingComment) {
9836
+ // There are no text nodes between the opening and closing comments; insert
9837
+ // a new one if stringText isn't empty.
9838
+ if (stringText) {
9839
+ insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);
9840
+ }
9841
+ } else {
9842
+ if (stringText) {
9843
+ // Set the text content of the first node after the opening comment, and
9844
+ // remove all following nodes up until the closing comment.
9845
+ setTextContent(nodeAfterComment, stringText);
9846
+ removeDelimitedText(parentNode, nodeAfterComment, closingComment);
9847
+ } else {
9848
+ removeDelimitedText(parentNode, openingComment, closingComment);
9849
+ }
9850
+ }
9851
+
9852
+ if (process.env.NODE_ENV !== 'production') {
9853
+ ReactInstrumentation.debugTool.onHostOperation({
9854
+ instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,
9855
+ type: 'replace text',
9856
+ payload: stringText
9857
+ });
9858
+ }
9859
+ }
9860
+
9861
+ var dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;
9862
+ if (process.env.NODE_ENV !== 'production') {
9863
+ dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {
9864
+ Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);
9865
+ if (prevInstance._debugID !== 0) {
9866
+ ReactInstrumentation.debugTool.onHostOperation({
9867
+ instanceID: prevInstance._debugID,
9868
+ type: 'replace with',
9869
+ payload: markup.toString()
9870
+ });
9871
+ } else {
9872
+ var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);
9873
+ if (nextInstance._debugID !== 0) {
9874
+ ReactInstrumentation.debugTool.onHostOperation({
9875
+ instanceID: nextInstance._debugID,
9876
+ type: 'mount',
9877
+ payload: markup.toString()
9878
+ });
9879
+ }
9880
+ }
9881
+ };
9882
+ }
9883
+
9884
+ /**
9885
+ * Operations for updating with DOM children.
9886
+ */
9887
+ var DOMChildrenOperations = {
9888
+
9889
+ dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,
9890
+
9891
+ replaceDelimitedText: replaceDelimitedText,
9892
+
9893
+ /**
9894
+ * Updates a component's children by processing a series of updates. The
9895
+ * update configurations are each expected to have a `parentNode` property.
9896
+ *
9897
+ * @param {array<object>} updates List of update configurations.
9898
+ * @internal
9899
+ */
9900
+ processUpdates: function (parentNode, updates) {
9901
+ if (process.env.NODE_ENV !== 'production') {
9902
+ var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;
9903
+ }
9904
+
9905
+ for (var k = 0; k < updates.length; k++) {
9906
+ var update = updates[k];
9907
+ switch (update.type) {
9908
+ case 'INSERT_MARKUP':
9909
+ insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));
9910
+ if (process.env.NODE_ENV !== 'production') {
9911
+ ReactInstrumentation.debugTool.onHostOperation({
9912
+ instanceID: parentNodeDebugID,
9913
+ type: 'insert child',
9914
+ payload: { toIndex: update.toIndex, content: update.content.toString() }
9915
+ });
9916
+ }
9917
+ break;
9918
+ case 'MOVE_EXISTING':
9919
+ moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));
9920
+ if (process.env.NODE_ENV !== 'production') {
9921
+ ReactInstrumentation.debugTool.onHostOperation({
9922
+ instanceID: parentNodeDebugID,
9923
+ type: 'move child',
9924
+ payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }
9925
+ });
9926
+ }
9927
+ break;
9928
+ case 'SET_MARKUP':
9929
+ setInnerHTML(parentNode, update.content);
9930
+ if (process.env.NODE_ENV !== 'production') {
9931
+ ReactInstrumentation.debugTool.onHostOperation({
9932
+ instanceID: parentNodeDebugID,
9933
+ type: 'replace children',
9934
+ payload: update.content.toString()
9935
+ });
9936
+ }
9937
+ break;
9938
+ case 'TEXT_CONTENT':
9939
+ setTextContent(parentNode, update.content);
9940
+ if (process.env.NODE_ENV !== 'production') {
9941
+ ReactInstrumentation.debugTool.onHostOperation({
9942
+ instanceID: parentNodeDebugID,
9943
+ type: 'replace text',
9944
+ payload: update.content.toString()
9945
+ });
9946
+ }
9947
+ break;
9948
+ case 'REMOVE_NODE':
9949
+ removeChild(parentNode, update.fromNode);
9950
+ if (process.env.NODE_ENV !== 'production') {
9951
+ ReactInstrumentation.debugTool.onHostOperation({
9952
+ instanceID: parentNodeDebugID,
9953
+ type: 'remove child',
9954
+ payload: { fromIndex: update.fromIndex }
9955
+ });
9956
+ }
9957
+ break;
9958
+ }
9959
+ }
9960
+ }
9961
+
9962
+ };
9963
+
9964
+ module.exports = DOMChildrenOperations;
9965
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
9966
+
9967
+ /***/ },
9968
+ /* 83 */
9969
+ /***/ function(module, exports, __webpack_require__) {
9970
+
9971
+ /**
9972
+ * Copyright 2015-present, Facebook, Inc.
9973
+ * All rights reserved.
9974
+ *
9975
+ * This source code is licensed under the BSD-style license found in the
9976
+ * LICENSE file in the root directory of this source tree. An additional grant
9977
+ * of patent rights can be found in the PATENTS file in the same directory.
9978
+ *
9979
+ */
9980
+
9981
+ 'use strict';
9982
+
9983
+ var DOMNamespaces = __webpack_require__(84);
9984
+ var setInnerHTML = __webpack_require__(85);
9985
+
9986
+ var createMicrosoftUnsafeLocalFunction = __webpack_require__(86);
9987
+ var setTextContent = __webpack_require__(87);
9988
+
9989
+ var ELEMENT_NODE_TYPE = 1;
9990
+ var DOCUMENT_FRAGMENT_NODE_TYPE = 11;
9991
+
9992
+ /**
9993
+ * In IE (8-11) and Edge, appending nodes with no children is dramatically
9994
+ * faster than appending a full subtree, so we essentially queue up the
9995
+ * .appendChild calls here and apply them so each node is added to its parent
9996
+ * before any children are added.
9997
+ *
9998
+ * In other browsers, doing so is slower or neutral compared to the other order
9999
+ * (in Firefox, twice as slow) so we only do this inversion in IE.
10000
+ *
10001
+ * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.
10002
+ */
10003
+ var enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\bEdge\/\d/.test(navigator.userAgent);
10004
+
10005
+ function insertTreeChildren(tree) {
10006
+ if (!enableLazy) {
10007
+ return;
10008
+ }
10009
+ var node = tree.node;
10010
+ var children = tree.children;
10011
+ if (children.length) {
10012
+ for (var i = 0; i < children.length; i++) {
10013
+ insertTreeBefore(node, children[i], null);
10014
+ }
10015
+ } else if (tree.html != null) {
10016
+ setInnerHTML(node, tree.html);
10017
+ } else if (tree.text != null) {
10018
+ setTextContent(node, tree.text);
10019
+ }
10020
+ }
10021
+
10022
+ var insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {
10023
+ // DocumentFragments aren't actually part of the DOM after insertion so
10024
+ // appending children won't update the DOM. We need to ensure the fragment
10025
+ // is properly populated first, breaking out of our lazy approach for just
10026
+ // this level. Also, some <object> plugins (like Flash Player) will read
10027
+ // <param> nodes immediately upon insertion into the DOM, so <object>
10028
+ // must also be populated prior to insertion into the DOM.
10029
+ 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)) {
10030
+ insertTreeChildren(tree);
10031
+ parentNode.insertBefore(tree.node, referenceNode);
10032
+ } else {
10033
+ parentNode.insertBefore(tree.node, referenceNode);
10034
+ insertTreeChildren(tree);
10035
+ }
10036
+ });
10037
+
10038
+ function replaceChildWithTree(oldNode, newTree) {
10039
+ oldNode.parentNode.replaceChild(newTree.node, oldNode);
10040
+ insertTreeChildren(newTree);
10041
+ }
10042
+
10043
+ function queueChild(parentTree, childTree) {
10044
+ if (enableLazy) {
10045
+ parentTree.children.push(childTree);
10046
+ } else {
10047
+ parentTree.node.appendChild(childTree.node);
10048
+ }
10049
+ }
10050
+
10051
+ function queueHTML(tree, html) {
10052
+ if (enableLazy) {
10053
+ tree.html = html;
10054
+ } else {
10055
+ setInnerHTML(tree.node, html);
10056
+ }
10057
+ }
10058
+
10059
+ function queueText(tree, text) {
10060
+ if (enableLazy) {
10061
+ tree.text = text;
10062
+ } else {
10063
+ setTextContent(tree.node, text);
10064
+ }
10065
+ }
10066
+
10067
+ function toString() {
10068
+ return this.node.nodeName;
10069
+ }
10070
+
10071
+ function DOMLazyTree(node) {
10072
+ return {
10073
+ node: node,
10074
+ children: [],
10075
+ html: null,
10076
+ text: null,
10077
+ toString: toString
10078
+ };
10079
+ }
10080
+
10081
+ DOMLazyTree.insertTreeBefore = insertTreeBefore;
10082
+ DOMLazyTree.replaceChildWithTree = replaceChildWithTree;
10083
+ DOMLazyTree.queueChild = queueChild;
10084
+ DOMLazyTree.queueHTML = queueHTML;
10085
+ DOMLazyTree.queueText = queueText;
10086
+
10087
+ module.exports = DOMLazyTree;
10088
+
10089
+ /***/ },
10090
+ /* 84 */
10091
+ /***/ function(module, exports) {
10092
+
10093
+ /**
10094
+ * Copyright 2013-present, Facebook, Inc.
10095
+ * All rights reserved.
10096
+ *
10097
+ * This source code is licensed under the BSD-style license found in the
10098
+ * LICENSE file in the root directory of this source tree. An additional grant
10099
+ * of patent rights can be found in the PATENTS file in the same directory.
10100
+ *
10101
+ */
10102
+
10103
+ 'use strict';
10104
+
10105
+ var DOMNamespaces = {
10106
+ html: 'http://www.w3.org/1999/xhtml',
10107
+ mathml: 'http://www.w3.org/1998/Math/MathML',
10108
+ svg: 'http://www.w3.org/2000/svg'
10109
+ };
10110
+
10111
+ module.exports = DOMNamespaces;
10112
+
10113
+ /***/ },
10114
+ /* 85 */
10115
+ /***/ function(module, exports, __webpack_require__) {
10116
+
10117
+ /**
10118
+ * Copyright 2013-present, Facebook, Inc.
10119
+ * All rights reserved.
10120
+ *
10121
+ * This source code is licensed under the BSD-style license found in the
10122
+ * LICENSE file in the root directory of this source tree. An additional grant
10123
+ * of patent rights can be found in the PATENTS file in the same directory.
10124
+ *
10125
+ */
10126
+
10127
+ 'use strict';
10128
+
10129
+ var ExecutionEnvironment = __webpack_require__(49);
10130
+ var DOMNamespaces = __webpack_require__(84);
10131
+
10132
+ var WHITESPACE_TEST = /^[ \r\n\t\f]/;
10133
+ var NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/;
10134
+
10135
+ var createMicrosoftUnsafeLocalFunction = __webpack_require__(86);
10136
+
10137
+ // SVG temp container for IE lacking innerHTML
10138
+ var reusableSVGContainer;
10139
+
10140
+ /**
10141
+ * Set the innerHTML property of a node, ensuring that whitespace is preserved
10142
+ * even in IE8.
10143
+ *
10144
+ * @param {DOMElement} node
10145
+ * @param {string} html
10146
+ * @internal
10147
+ */
10148
+ var setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {
10149
+ // IE does not have innerHTML for SVG nodes, so instead we inject the
10150
+ // new markup in a temp node and then move the child nodes across into
10151
+ // the target node
10152
+ if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {
10153
+ reusableSVGContainer = reusableSVGContainer || document.createElement('div');
10154
+ reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';
10155
+ var svgNode = reusableSVGContainer.firstChild;
10156
+ while (svgNode.firstChild) {
10157
+ node.appendChild(svgNode.firstChild);
10158
+ }
10159
+ } else {
10160
+ node.innerHTML = html;
10161
+ }
10162
+ });
10163
+
10164
+ if (ExecutionEnvironment.canUseDOM) {
10165
+ // IE8: When updating a just created node with innerHTML only leading
10166
+ // whitespace is removed. When updating an existing node with innerHTML
10167
+ // whitespace in root TextNodes is also collapsed.
10168
+ // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html
10169
+
10170
+ // Feature detection; only IE8 is known to behave improperly like this.
10171
+ var testElement = document.createElement('div');
10172
+ testElement.innerHTML = ' ';
10173
+ if (testElement.innerHTML === '') {
10174
+ setInnerHTML = function (node, html) {
10175
+ // Magic theory: IE8 supposedly differentiates between added and updated
10176
+ // nodes when processing innerHTML, innerHTML on updated nodes suffers
10177
+ // from worse whitespace behavior. Re-adding a node like this triggers
10178
+ // the initial and more favorable whitespace behavior.
10179
+ // TODO: What to do on a detached node?
10180
+ if (node.parentNode) {
10181
+ node.parentNode.replaceChild(node, node);
10182
+ }
10183
+
10184
+ // We also implement a workaround for non-visible tags disappearing into
10185
+ // thin air on IE8, this only happens if there is no visible text
10186
+ // in-front of the non-visible tags. Piggyback on the whitespace fix
10187
+ // and simply check if any non-visible tags appear in the source.
10188
+ if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {
10189
+ // Recover leading whitespace by temporarily prepending any character.
10190
+ // \uFEFF has the potential advantage of being zero-width/invisible.
10191
+ // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode
10192
+ // in hopes that this is preserved even if "\uFEFF" is transformed to
10193
+ // the actual Unicode character (by Babel, for example).
10194
+ // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216
10195
+ node.innerHTML = String.fromCharCode(0xFEFF) + html;
10196
+
10197
+ // deleteData leaves an empty `TextNode` which offsets the index of all
10198
+ // children. Definitely want to avoid this.
10199
+ var textNode = node.firstChild;
10200
+ if (textNode.data.length === 1) {
10201
+ node.removeChild(textNode);
10202
+ } else {
10203
+ textNode.deleteData(0, 1);
10204
+ }
10205
+ } else {
10206
+ node.innerHTML = html;
10207
+ }
10208
+ };
10209
+ }
10210
+ testElement = null;
10211
+ }
10212
+
10213
+ module.exports = setInnerHTML;
10214
+
10215
+ /***/ },
10216
+ /* 86 */
10217
+ /***/ function(module, exports) {
10218
+
10219
+ /**
10220
+ * Copyright 2013-present, Facebook, Inc.
10221
+ * All rights reserved.
10222
+ *
10223
+ * This source code is licensed under the BSD-style license found in the
10224
+ * LICENSE file in the root directory of this source tree. An additional grant
10225
+ * of patent rights can be found in the PATENTS file in the same directory.
10226
+ *
10227
+ */
10228
+
10229
+ /* globals MSApp */
10230
+
10231
+ 'use strict';
10232
+
10233
+ /**
10234
+ * Create a function which has 'unsafe' privileges (required by windows8 apps)
10235
+ */
10236
+
10237
+ var createMicrosoftUnsafeLocalFunction = function (func) {
10238
+ if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {
10239
+ return function (arg0, arg1, arg2, arg3) {
10240
+ MSApp.execUnsafeLocalFunction(function () {
10241
+ return func(arg0, arg1, arg2, arg3);
10242
+ });
10243
+ };
10244
+ } else {
10245
+ return func;
10246
+ }
10247
+ };
10248
+
10249
+ module.exports = createMicrosoftUnsafeLocalFunction;
10250
+
10251
+ /***/ },
10252
+ /* 87 */
10253
+ /***/ function(module, exports, __webpack_require__) {
10254
+
10255
+ /**
10256
+ * Copyright 2013-present, Facebook, Inc.
10257
+ * All rights reserved.
10258
+ *
10259
+ * This source code is licensed under the BSD-style license found in the
10260
+ * LICENSE file in the root directory of this source tree. An additional grant
10261
+ * of patent rights can be found in the PATENTS file in the same directory.
10262
+ *
10263
+ */
10264
+
10265
+ 'use strict';
10266
+
10267
+ var ExecutionEnvironment = __webpack_require__(49);
10268
+ var escapeTextContentForBrowser = __webpack_require__(88);
10269
+ var setInnerHTML = __webpack_require__(85);
10270
+
10271
+ /**
10272
+ * Set the textContent property of a node, ensuring that whitespace is preserved
10273
+ * even in IE8. innerText is a poor substitute for textContent and, among many
10274
+ * issues, inserts <br> instead of the literal newline chars. innerHTML behaves
10275
+ * as it should.
10276
+ *
10277
+ * @param {DOMElement} node
10278
+ * @param {string} text
10279
+ * @internal
10280
+ */
10281
+ var setTextContent = function (node, text) {
10282
+ if (text) {
10283
+ var firstChild = node.firstChild;
10284
+
10285
+ if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {
10286
+ firstChild.nodeValue = text;
10287
+ return;
10288
+ }
10289
+ }
10290
+ node.textContent = text;
10291
+ };
10292
+
10293
+ if (ExecutionEnvironment.canUseDOM) {
10294
+ if (!('textContent' in document.documentElement)) {
10295
+ setTextContent = function (node, text) {
10296
+ if (node.nodeType === 3) {
10297
+ node.nodeValue = text;
10298
+ return;
10299
+ }
10300
+ setInnerHTML(node, escapeTextContentForBrowser(text));
10301
+ };
10302
+ }
10303
+ }
10304
+
10305
+ module.exports = setTextContent;
10306
+
10307
+ /***/ },
10308
+ /* 88 */
10309
+ /***/ function(module, exports) {
10310
+
10311
+ /**
10312
+ * Copyright 2016-present, Facebook, Inc.
10313
+ * All rights reserved.
10314
+ *
10315
+ * This source code is licensed under the BSD-style license found in the
10316
+ * LICENSE file in the root directory of this source tree. An additional grant
10317
+ * of patent rights can be found in the PATENTS file in the same directory.
10318
+ *
10319
+ * Based on the escape-html library, which is used under the MIT License below:
10320
+ *
10321
+ * Copyright (c) 2012-2013 TJ Holowaychuk
10322
+ * Copyright (c) 2015 Andreas Lubbe
10323
+ * Copyright (c) 2015 Tiancheng "Timothy" Gu
10324
+ *
10325
+ * Permission is hereby granted, free of charge, to any person obtaining
10326
+ * a copy of this software and associated documentation files (the
10327
+ * 'Software'), to deal in the Software without restriction, including
10328
+ * without limitation the rights to use, copy, modify, merge, publish,
10329
+ * distribute, sublicense, and/or sell copies of the Software, and to
10330
+ * permit persons to whom the Software is furnished to do so, subject to
10331
+ * the following conditions:
10332
+ *
10333
+ * The above copyright notice and this permission notice shall be
10334
+ * included in all copies or substantial portions of the Software.
10335
+ *
10336
+ * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
10337
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10338
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
10339
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
10340
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
10341
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
10342
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10343
+ *
10344
+ */
10345
+
10346
+ 'use strict';
10347
+
10348
+ // code copied and modified from escape-html
10349
+ /**
10350
+ * Module variables.
10351
+ * @private
10352
+ */
10353
+
10354
+ var matchHtmlRegExp = /["'&<>]/;
10355
+
10356
+ /**
10357
+ * Escape special characters in the given string of html.
10358
+ *
10359
+ * @param {string} string The string to escape for inserting into HTML
10360
+ * @return {string}
10361
+ * @public
10362
+ */
10363
+
10364
+ function escapeHtml(string) {
10365
+ var str = '' + string;
10366
+ var match = matchHtmlRegExp.exec(str);
10367
+
10368
+ if (!match) {
10369
+ return str;
10370
+ }
10371
+
10372
+ var escape;
10373
+ var html = '';
10374
+ var index = 0;
10375
+ var lastIndex = 0;
10376
+
10377
+ for (index = match.index; index < str.length; index++) {
10378
+ switch (str.charCodeAt(index)) {
10379
+ case 34:
10380
+ // "
10381
+ escape = '&quot;';
10382
+ break;
10383
+ case 38:
10384
+ // &
10385
+ escape = '&amp;';
10386
+ break;
10387
+ case 39:
10388
+ // '
10389
+ escape = '&#x27;'; // modified from escape-html; used to be '&#39'
10390
+ break;
10391
+ case 60:
10392
+ // <
10393
+ escape = '&lt;';
10394
+ break;
10395
+ case 62:
10396
+ // >
10397
+ escape = '&gt;';
10398
+ break;
10399
+ default:
10400
+ continue;
10401
+ }
10402
+
10403
+ if (lastIndex !== index) {
10404
+ html += str.substring(lastIndex, index);
10405
+ }
10406
+
10407
+ lastIndex = index + 1;
10408
+ html += escape;
10409
+ }
10410
+
10411
+ return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
10412
+ }
10413
+ // end code copied and modified from escape-html
10414
+
10415
+
10416
+ /**
10417
+ * Escapes text to prevent scripting attacks.
10418
+ *
10419
+ * @param {*} text Text value to escape.
10420
+ * @return {string} An escaped string.
10421
+ */
10422
+ function escapeTextContentForBrowser(text) {
10423
+ if (typeof text === 'boolean' || typeof text === 'number') {
10424
+ // this shortcircuit helps perf for types that we know will never have
10425
+ // special characters, especially given that this function is used often
10426
+ // for numeric dom ids.
10427
+ return '' + text;
10428
+ }
10429
+ return escapeHtml(text);
10430
+ }
10431
+
10432
+ module.exports = escapeTextContentForBrowser;
10433
+
10434
+ /***/ },
10435
+ /* 89 */
10436
+ /***/ function(module, exports, __webpack_require__) {
10437
+
10438
+ /* WEBPACK VAR INJECTION */(function(process) {/**
10439
+ * Copyright 2013-present, Facebook, Inc.
10440
+ * All rights reserved.
10441
+ *
10442
+ * This source code is licensed under the BSD-style license found in the
10443
+ * LICENSE file in the root directory of this source tree. An additional grant
10444
+ * of patent rights can be found in the PATENTS file in the same directory.
10445
+ *
10446
+ */
10447
+
10448
+ 'use strict';
10449
+
10450
+ var _prodInvariant = __webpack_require__(36);
10451
+
10452
+ var DOMLazyTree = __webpack_require__(83);
10453
+ var ExecutionEnvironment = __webpack_require__(49);
10454
+
10455
+ var createNodesFromMarkup = __webpack_require__(90);
10456
+ var emptyFunction = __webpack_require__(13);
10457
+ var invariant = __webpack_require__(9);
10458
+
10459
+ var Danger = {
10460
+
10461
+ /**
10462
+ * Replaces a node with a string of markup at its current position within its
10463
+ * parent. The markup must render into a single root node.
10464
+ *
10465
+ * @param {DOMElement} oldChild Child node to replace.
10466
+ * @param {string} markup Markup to render in place of the child node.
10467
+ * @internal
10468
+ */
10469
+ dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {
10470
+ !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;
10471
+ !markup ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;
10472
+ !(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;
10473
+
10474
+ if (typeof markup === 'string') {
10475
+ var newChild = createNodesFromMarkup(markup, emptyFunction)[0];
10476
+ oldChild.parentNode.replaceChild(newChild, oldChild);
10477
+ } else {
10478
+ DOMLazyTree.replaceChildWithTree(oldChild, markup);
10479
+ }
10480
+ }
10481
+
10482
+ };
10483
+
10484
+ module.exports = Danger;
10485
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
10486
+
10487
+ /***/ },
10488
+ /* 90 */
10489
+ /***/ function(module, exports, __webpack_require__) {
10490
+
10491
+ /* WEBPACK VAR INJECTION */(function(process) {'use strict';
10492
+
10493
+ /**
10494
+ * Copyright (c) 2013-present, Facebook, Inc.
10495
+ * All rights reserved.
10496
+ *
10497
+ * This source code is licensed under the BSD-style license found in the
10498
+ * LICENSE file in the root directory of this source tree. An additional grant
10499
+ * of patent rights can be found in the PATENTS file in the same directory.
10500
+ *
10501
+ * @typechecks
10502
+ */
10503
+
10504
+ /*eslint-disable fb-www/unsafe-html*/
10505
+
10506
+ var ExecutionEnvironment = __webpack_require__(49);
10507
+
10508
+ var createArrayFromMixed = __webpack_require__(91);
10509
+ var getMarkupWrap = __webpack_require__(92);
10510
+ var invariant = __webpack_require__(9);
10511
+
10512
+ /**
10513
+ * Dummy container used to render all markup.
10514
+ */
10515
+ var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;
10516
+
10517
+ /**
10518
+ * Pattern used by `getNodeName`.
10519
+ */
10520
+ var nodeNamePattern = /^\s*<(\w+)/;
10521
+
10522
+ /**
10523
+ * Extracts the `nodeName` of the first element in a string of markup.
10524
+ *
10525
+ * @param {string} markup String of markup.
10526
+ * @return {?string} Node name of the supplied markup.
10527
+ */
10528
+ function getNodeName(markup) {
10529
+ var nodeNameMatch = markup.match(nodeNamePattern);
10530
+ return nodeNameMatch && nodeNameMatch[1].toLowerCase();
10531
+ }
10532
+
10533
+ /**
10534
+ * Creates an array containing the nodes rendered from the supplied markup. The
10535
+ * optionally supplied `handleScript` function will be invoked once for each
10536
+ * <script> element that is rendered. If no `handleScript` function is supplied,
10537
+ * an exception is thrown if any <script> elements are rendered.
10538
+ *
10539
+ * @param {string} markup A string of valid HTML markup.
10540
+ * @param {?function} handleScript Invoked once for each rendered <script>.
10541
+ * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.
10542
+ */
10543
+ function createNodesFromMarkup(markup, handleScript) {
10544
+ var node = dummyNode;
10545
+ !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;
10546
+ var nodeName = getNodeName(markup);
10547
+
10548
+ var wrap = nodeName && getMarkupWrap(nodeName);
10549
+ if (wrap) {
10550
+ node.innerHTML = wrap[1] + markup + wrap[2];
10551
+
10552
+ var wrapDepth = wrap[0];
10553
+ while (wrapDepth--) {
10554
+ node = node.lastChild;
10555
+ }
10556
+ } else {
10557
+ node.innerHTML = markup;
10558
+ }
10559
+
10560
+ var scripts = node.getElementsByTagName('script');
10561
+ if (scripts.length) {
10562
+ !handleScript ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;
10563
+ createArrayFromMixed(scripts).forEach(handleScript);
10564
+ }
10565
+
10566
+ var nodes = Array.from(node.childNodes);
10567
+ while (node.lastChild) {
10568
+ node.removeChild(node.lastChild);
10569
+ }
10570
+ return nodes;
10571
+ }
10572
+
10573
+ module.exports = createNodesFromMarkup;
10574
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
10575
+
10576
+ /***/ },
10577
+ /* 91 */
10578
+ /***/ function(module, exports, __webpack_require__) {
10579
+
10580
+ /* WEBPACK VAR INJECTION */(function(process) {'use strict';
10581
+
10582
+ /**
10583
+ * Copyright (c) 2013-present, Facebook, Inc.
10584
+ * All rights reserved.
10585
+ *
10586
+ * This source code is licensed under the BSD-style license found in the
10587
+ * LICENSE file in the root directory of this source tree. An additional grant
10588
+ * of patent rights can be found in the PATENTS file in the same directory.
10589
+ *
10590
+ * @typechecks
10591
+ */
10592
+
10593
+ var invariant = __webpack_require__(9);
10594
+
10595
+ /**
10596
+ * Convert array-like objects to arrays.
10597
+ *
10598
+ * This API assumes the caller knows the contents of the data type. For less
10599
+ * well defined inputs use createArrayFromMixed.
10600
+ *
10601
+ * @param {object|function|filelist} obj
10602
+ * @return {array}
10603
+ */
10604
+ function toArray(obj) {
10605
+ var length = obj.length;
10606
+
10607
+ // Some browsers builtin objects can report typeof 'function' (e.g. NodeList
10608
+ // in old versions of Safari).
10609
+ !(!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;
10610
+
10611
+ !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;
10612
+
10613
+ !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;
10614
+
10615
+ !(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;
10616
+
10617
+ // Old IE doesn't give collections access to hasOwnProperty. Assume inputs
10618
+ // without method will throw during the slice call and skip straight to the
10619
+ // fallback.
10620
+ if (obj.hasOwnProperty) {
10621
+ try {
10622
+ return Array.prototype.slice.call(obj);
10623
+ } catch (e) {
10624
+ // IE < 9 does not support Array#slice on collections objects
10625
+ }
10626
+ }
10627
+
10628
+ // Fall back to copying key by key. This assumes all keys have a value,
10629
+ // so will not preserve sparsely populated inputs.
10630
+ var ret = Array(length);
10631
+ for (var ii = 0; ii < length; ii++) {
10632
+ ret[ii] = obj[ii];
10633
+ }
10634
+ return ret;
10635
+ }
10636
+
10637
+ /**
10638
+ * Perform a heuristic test to determine if an object is "array-like".
10639
+ *
10640
+ * A monk asked Joshu, a Zen master, "Has a dog Buddha nature?"
10641
+ * Joshu replied: "Mu."
10642
+ *
10643
+ * This function determines if its argument has "array nature": it returns
10644
+ * true if the argument is an actual array, an `arguments' object, or an
10645
+ * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).
10646
+ *
10647
+ * It will return false for other array-like objects like Filelist.
10648
+ *
10649
+ * @param {*} obj
10650
+ * @return {boolean}
10651
+ */
10652
+ function hasArrayNature(obj) {
10653
+ return (
10654
+ // not null/false
10655
+ !!obj && (
10656
+ // arrays are objects, NodeLists are functions in Safari
10657
+ typeof obj == 'object' || typeof obj == 'function') &&
10658
+ // quacks like an array
10659
+ 'length' in obj &&
10660
+ // not window
10661
+ !('setInterval' in obj) &&
10662
+ // no DOM node should be considered an array-like
10663
+ // a 'select' element has 'length' and 'item' properties on IE8
10664
+ typeof obj.nodeType != 'number' && (
10665
+ // a real array
10666
+ Array.isArray(obj) ||
10667
+ // arguments
10668
+ 'callee' in obj ||
10669
+ // HTMLCollection/NodeList
10670
+ 'item' in obj)
10671
+ );
10672
+ }
10673
+
10674
+ /**
10675
+ * Ensure that the argument is an array by wrapping it in an array if it is not.
10676
+ * Creates a copy of the argument if it is already an array.
10677
+ *
10678
+ * This is mostly useful idiomatically:
10679
+ *
10680
+ * var createArrayFromMixed = require('createArrayFromMixed');
10681
+ *
10682
+ * function takesOneOrMoreThings(things) {
10683
+ * things = createArrayFromMixed(things);
10684
+ * ...
10685
+ * }
10686
+ *
10687
+ * This allows you to treat `things' as an array, but accept scalars in the API.
10688
+ *
10689
+ * If you need to convert an array-like object, like `arguments`, into an array
10690
+ * use toArray instead.
10691
+ *
10692
+ * @param {*} obj
10693
+ * @return {array}
10694
+ */
10695
+ function createArrayFromMixed(obj) {
10696
+ if (!hasArrayNature(obj)) {
10697
+ return [obj];
10698
+ } else if (Array.isArray(obj)) {
10699
+ return obj.slice();
10700
+ } else {
10701
+ return toArray(obj);
10702
+ }
10703
+ }
10704
+
10705
+ module.exports = createArrayFromMixed;
10706
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
10707
+
10708
+ /***/ },
10709
+ /* 92 */
10710
+ /***/ function(module, exports, __webpack_require__) {
10711
+
10712
+ /* WEBPACK VAR INJECTION */(function(process) {'use strict';
10713
+
10714
+ /**
10715
+ * Copyright (c) 2013-present, Facebook, Inc.
10716
+ * All rights reserved.
10717
+ *
10718
+ * This source code is licensed under the BSD-style license found in the
10719
+ * LICENSE file in the root directory of this source tree. An additional grant
10720
+ * of patent rights can be found in the PATENTS file in the same directory.
10721
+ *
10722
+ */
10723
+
10724
+ /*eslint-disable fb-www/unsafe-html */
10725
+
10726
+ var ExecutionEnvironment = __webpack_require__(49);
10727
+
10728
+ var invariant = __webpack_require__(9);
10729
+
10730
+ /**
10731
+ * Dummy container used to detect which wraps are necessary.
10732
+ */
10733
+ var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;
10734
+
10735
+ /**
10736
+ * Some browsers cannot use `innerHTML` to render certain elements standalone,
10737
+ * so we wrap them, render the wrapped nodes, then extract the desired node.
10738
+ *
10739
+ * In IE8, certain elements cannot render alone, so wrap all elements ('*').
10740
+ */
10741
+
10742
+ var shouldWrap = {};
10743
+
10744
+ var selectWrap = [1, '<select multiple="true">', '</select>'];
10745
+ var tableWrap = [1, '<table>', '</table>'];
10746
+ var trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];
10747
+
10748
+ var svgWrap = [1, '<svg xmlns="http://www.w3.org/2000/svg">', '</svg>'];
10749
+
10750
+ var markupWrap = {
10751
+ '*': [1, '?<div>', '</div>'],
10752
+
10753
+ 'area': [1, '<map>', '</map>'],
10754
+ 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],
10755
+ 'legend': [1, '<fieldset>', '</fieldset>'],
10756
+ 'param': [1, '<object>', '</object>'],
10757
+ 'tr': [2, '<table><tbody>', '</tbody></table>'],
10758
+
10759
+ 'optgroup': selectWrap,
10760
+ 'option': selectWrap,
10761
+
10762
+ 'caption': tableWrap,
10763
+ 'colgroup': tableWrap,
10764
+ 'tbody': tableWrap,
10765
+ 'tfoot': tableWrap,
10766
+ 'thead': tableWrap,
10767
+
10768
+ 'td': trWrap,
10769
+ 'th': trWrap
10770
+ };
10771
+
10772
+ // Initialize the SVG elements since we know they'll always need to be wrapped
10773
+ // consistently. If they are created inside a <div> they will be initialized in
10774
+ // the wrong namespace (and will not display).
10775
+ var svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];
10776
+ svgElements.forEach(function (nodeName) {
10777
+ markupWrap[nodeName] = svgWrap;
10778
+ shouldWrap[nodeName] = true;
10779
+ });
10780
+
10781
+ /**
10782
+ * Gets the markup wrap configuration for the supplied `nodeName`.
10783
+ *
10784
+ * NOTE: This lazily detects which wraps are necessary for the current browser.
10785
+ *
10786
+ * @param {string} nodeName Lowercase `nodeName`.
10787
+ * @return {?array} Markup wrap configuration, if applicable.
10788
+ */
10789
+ function getMarkupWrap(nodeName) {
10790
+ !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;
10791
+ if (!markupWrap.hasOwnProperty(nodeName)) {
10792
+ nodeName = '*';
10793
+ }
10794
+ if (!shouldWrap.hasOwnProperty(nodeName)) {
10795
+ if (nodeName === '*') {
10796
+ dummyNode.innerHTML = '<link />';
10797
+ } else {
10798
+ dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';
10799
+ }
10800
+ shouldWrap[nodeName] = !dummyNode.firstChild;
10801
+ }
10802
+ return shouldWrap[nodeName] ? markupWrap[nodeName] : null;
10803
+ }
10804
+
10805
+ module.exports = getMarkupWrap;
10806
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
10807
+
10808
+ /***/ },
10809
+ /* 93 */
10810
+ /***/ function(module, exports, __webpack_require__) {
10811
+
10812
+ /**
10813
+ * Copyright 2013-present, Facebook, Inc.
10814
+ * All rights reserved.
10815
+ *
10816
+ * This source code is licensed under the BSD-style license found in the
10817
+ * LICENSE file in the root directory of this source tree. An additional grant
10818
+ * of patent rights can be found in the PATENTS file in the same directory.
10819
+ *
10820
+ */
10821
+
10822
+ 'use strict';
10823
+
10824
+ var DOMChildrenOperations = __webpack_require__(82);
10825
+ var ReactDOMComponentTree = __webpack_require__(35);
10826
+
10827
+ /**
10828
+ * Operations used to process updates to DOM nodes.
10829
+ */
10830
+ var ReactDOMIDOperations = {
10831
+
10832
+ /**
10833
+ * Updates a component's children by processing a series of updates.
10834
+ *
10835
+ * @param {array<object>} updates List of update configurations.
10836
+ * @internal
10837
+ */
10838
+ dangerouslyProcessChildrenUpdates: function (parentInst, updates) {
10839
+ var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);
10840
+ DOMChildrenOperations.processUpdates(node, updates);
10841
+ }
10842
+ };
10843
+
10844
+ module.exports = ReactDOMIDOperations;
10845
+
10846
+ /***/ },
10847
+ /* 94 */
10848
+ /***/ function(module, exports, __webpack_require__) {
10849
+
10850
+ /* WEBPACK VAR INJECTION */(function(process) {/**
10851
+ * Copyright 2013-present, Facebook, Inc.
10852
+ * All rights reserved.
10853
+ *
10854
+ * This source code is licensed under the BSD-style license found in the
10855
+ * LICENSE file in the root directory of this source tree. An additional grant
10856
+ * of patent rights can be found in the PATENTS file in the same directory.
10857
+ *
10858
+ */
10859
+
10860
+ /* global hasOwnProperty:true */
10861
+
10862
+ 'use strict';
10863
+
10864
+ var _prodInvariant = __webpack_require__(36),
10865
+ _assign = __webpack_require__(51);
10866
+
10867
+ var AutoFocusUtils = __webpack_require__(95);
10868
+ var CSSPropertyOperations = __webpack_require__(97);
10869
+ var DOMLazyTree = __webpack_require__(83);
10870
+ var DOMNamespaces = __webpack_require__(84);
10871
+ var DOMProperty = __webpack_require__(37);
10872
+ var DOMPropertyOperations = __webpack_require__(105);
10873
+ var EventPluginHub = __webpack_require__(43);
10874
+ var EventPluginRegistry = __webpack_require__(44);
10875
+ var ReactBrowserEventEmitter = __webpack_require__(107);
10876
+ var ReactDOMComponentFlags = __webpack_require__(38);
10877
+ var ReactDOMComponentTree = __webpack_require__(35);
10878
+ var ReactDOMInput = __webpack_require__(110);
10879
+ var ReactDOMOption = __webpack_require__(113);
10880
+ var ReactDOMSelect = __webpack_require__(114);
10881
+ var ReactDOMTextarea = __webpack_require__(115);
10882
+ var ReactInstrumentation = __webpack_require__(64);
10883
+ var ReactMultiChild = __webpack_require__(116);
10884
+ var ReactServerRenderingTransaction = __webpack_require__(135);
10885
+
10886
+ var emptyFunction = __webpack_require__(13);
10887
+ var escapeTextContentForBrowser = __webpack_require__(88);
10888
+ var invariant = __webpack_require__(9);
10889
+ var isEventSupported = __webpack_require__(72);
10890
+ var shallowEqual = __webpack_require__(125);
10891
+ var validateDOMNesting = __webpack_require__(138);
10892
+ var warning = __webpack_require__(12);
10893
+
10894
+ var Flags = ReactDOMComponentFlags;
10895
+ var deleteListener = EventPluginHub.deleteListener;
10896
+ var getNode = ReactDOMComponentTree.getNodeFromInstance;
10897
+ var listenTo = ReactBrowserEventEmitter.listenTo;
10898
+ var registrationNameModules = EventPluginRegistry.registrationNameModules;
10899
+
10900
+ // For quickly matching children type, to test if can be treated as content.
10901
+ var CONTENT_TYPES = { 'string': true, 'number': true };
10902
+
10903
+ var STYLE = 'style';
10904
+ var HTML = '__html';
10905
+ var RESERVED_PROPS = {
10906
+ children: null,
10907
+ dangerouslySetInnerHTML: null,
10908
+ suppressContentEditableWarning: null
10909
+ };
10910
+
10911
+ // Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).
10912
+ var DOC_FRAGMENT_TYPE = 11;
10913
+
10914
+ function getDeclarationErrorAddendum(internalInstance) {
10915
+ if (internalInstance) {
10916
+ var owner = internalInstance._currentElement._owner || null;
10917
+ if (owner) {
10918
+ var name = owner.getName();
10919
+ if (name) {
10920
+ return ' This DOM node was rendered by `' + name + '`.';
10921
+ }
10922
+ }
10923
+ }
10924
+ return '';
10925
+ }
10926
+
10927
+ function friendlyStringify(obj) {
10928
+ if (typeof obj === 'object') {
10929
+ if (Array.isArray(obj)) {
10930
+ return '[' + obj.map(friendlyStringify).join(', ') + ']';
10931
+ } else {
10932
+ var pairs = [];
10933
+ for (var key in obj) {
10934
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
10935
+ var keyEscaped = /^[a-z$_][\w$_]*$/i.test(key) ? key : JSON.stringify(key);
10936
+ pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));
10937
+ }
10938
+ }
10939
+ return '{' + pairs.join(', ') + '}';
10940
+ }
10941
+ } else if (typeof obj === 'string') {
10942
+ return JSON.stringify(obj);
10943
+ } else if (typeof obj === 'function') {
10944
+ return '[function object]';
10945
+ }
10946
+ // Differs from JSON.stringify in that undefined because undefined and that
10947
+ // inf and nan don't become null
10948
+ return String(obj);
10949
+ }
10950
+
10951
+ var styleMutationWarning = {};
10952
+
10953
+ function checkAndWarnForMutatedStyle(style1, style2, component) {
10954
+ if (style1 == null || style2 == null) {
10955
+ return;
10956
+ }
10957
+ if (shallowEqual(style1, style2)) {
10958
+ return;
10959
+ }
10960
+
10961
+ var componentName = component._tag;
10962
+ var owner = component._currentElement._owner;
10963
+ var ownerName;
10964
+ if (owner) {
10965
+ ownerName = owner.getName();
10966
+ }
10967
+
10968
+ var hash = ownerName + '|' + componentName;
10969
+
10970
+ if (styleMutationWarning.hasOwnProperty(hash)) {
10971
+ return;
10972
+ }
10973
+
10974
+ styleMutationWarning[hash] = true;
10975
+
10976
+ 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;
10977
+ }
10978
+
10979
+ /**
10980
+ * @param {object} component
10981
+ * @param {?object} props
10982
+ */
10983
+ function assertValidProps(component, props) {
10984
+ if (!props) {
10985
+ return;
10986
+ }
10987
+ // Note the use of `==` which checks for null or undefined.
10988
+ if (voidElementTags[component._tag]) {
10989
+ !(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;
10990
+ }
10991
+ if (props.dangerouslySetInnerHTML != null) {
10992
+ !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;
10993
+ !(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;
10994
+ }
10995
+ if (process.env.NODE_ENV !== 'production') {
10996
+ 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;
10997
+ 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;
10998
+ 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;
10999
+ }
11000
+ !(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;
11001
+ }
11002
+
11003
+ function enqueuePutListener(inst, registrationName, listener, transaction) {
11004
+ if (transaction instanceof ReactServerRenderingTransaction) {
11005
+ return;
11006
+ }
11007
+ if (process.env.NODE_ENV !== 'production') {
11008
+ // IE8 has no API for event capturing and the `onScroll` event doesn't
11009
+ // bubble.
11010
+ process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\'t support the `onScroll` event') : void 0;
11011
+ }
11012
+ var containerInfo = inst._hostContainerInfo;
11013
+ var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;
11014
+ var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;
11015
+ listenTo(registrationName, doc);
11016
+ transaction.getReactMountReady().enqueue(putListener, {
11017
+ inst: inst,
11018
+ registrationName: registrationName,
11019
+ listener: listener
11020
+ });
11021
+ }
11022
+
11023
+ function putListener() {
11024
+ var listenerToPut = this;
11025
+ EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);
11026
+ }
11027
+
11028
+ function inputPostMount() {
11029
+ var inst = this;
11030
+ ReactDOMInput.postMountWrapper(inst);
11031
+ }
11032
+
11033
+ function textareaPostMount() {
11034
+ var inst = this;
11035
+ ReactDOMTextarea.postMountWrapper(inst);
11036
+ }
11037
+
11038
+ function optionPostMount() {
11039
+ var inst = this;
11040
+ ReactDOMOption.postMountWrapper(inst);
11041
+ }
11042
+
11043
+ var setAndValidateContentChildDev = emptyFunction;
11044
+ if (process.env.NODE_ENV !== 'production') {
11045
+ setAndValidateContentChildDev = function (content) {
11046
+ var hasExistingContent = this._contentDebugID != null;
11047
+ var debugID = this._debugID;
11048
+ // This ID represents the inlined child that has no backing instance:
11049
+ var contentDebugID = -debugID;
11050
+
11051
+ if (content == null) {
11052
+ if (hasExistingContent) {
11053
+ ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);
11054
+ }
11055
+ this._contentDebugID = null;
11056
+ return;
11057
+ }
11058
+
11059
+ validateDOMNesting(null, String(content), this, this._ancestorInfo);
11060
+ this._contentDebugID = contentDebugID;
11061
+ if (hasExistingContent) {
11062
+ ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);
11063
+ ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);
11064
+ } else {
11065
+ ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);
11066
+ ReactInstrumentation.debugTool.onMountComponent(contentDebugID);
11067
+ ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);
11068
+ }
11069
+ };
11070
+ }
11071
+
11072
+ // There are so many media events, it makes sense to just
11073
+ // maintain a list rather than create a `trapBubbledEvent` for each
11074
+ var mediaEvents = {
11075
+ topAbort: 'abort',
11076
+ topCanPlay: 'canplay',
11077
+ topCanPlayThrough: 'canplaythrough',
11078
+ topDurationChange: 'durationchange',
11079
+ topEmptied: 'emptied',
11080
+ topEncrypted: 'encrypted',
11081
+ topEnded: 'ended',
11082
+ topError: 'error',
11083
+ topLoadedData: 'loadeddata',
11084
+ topLoadedMetadata: 'loadedmetadata',
11085
+ topLoadStart: 'loadstart',
11086
+ topPause: 'pause',
11087
+ topPlay: 'play',
11088
+ topPlaying: 'playing',
11089
+ topProgress: 'progress',
11090
+ topRateChange: 'ratechange',
11091
+ topSeeked: 'seeked',
11092
+ topSeeking: 'seeking',
11093
+ topStalled: 'stalled',
11094
+ topSuspend: 'suspend',
11095
+ topTimeUpdate: 'timeupdate',
11096
+ topVolumeChange: 'volumechange',
11097
+ topWaiting: 'waiting'
11098
+ };
11099
+
11100
+ function trapBubbledEventsLocal() {
11101
+ var inst = this;
11102
+ // If a component renders to null or if another component fatals and causes
11103
+ // the state of the tree to be corrupted, `node` here can be null.
11104
+ !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;
11105
+ var node = getNode(inst);
11106
+ !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;
11107
+
11108
+ switch (inst._tag) {
11109
+ case 'iframe':
11110
+ case 'object':
11111
+ inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];
11112
+ break;
11113
+ case 'video':
11114
+ case 'audio':
11115
+
11116
+ inst._wrapperState.listeners = [];
11117
+ // Create listener for each media event
11118
+ for (var event in mediaEvents) {
11119
+ if (mediaEvents.hasOwnProperty(event)) {
11120
+ inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));
11121
+ }
11122
+ }
11123
+ break;
11124
+ case 'source':
11125
+ inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];
11126
+ break;
11127
+ case 'img':
11128
+ inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];
11129
+ break;
11130
+ case 'form':
11131
+ inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];
11132
+ break;
11133
+ case 'input':
11134
+ case 'select':
11135
+ case 'textarea':
11136
+ inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];
11137
+ break;
11138
+ }
11139
+ }
11140
+
11141
+ function postUpdateSelectWrapper() {
11142
+ ReactDOMSelect.postUpdateWrapper(this);
11143
+ }
11144
+
11145
+ // For HTML, certain tags should omit their close tag. We keep a whitelist for
11146
+ // those special-case tags.
11147
+
11148
+ var omittedCloseTags = {
11149
+ 'area': true,
11150
+ 'base': true,
11151
+ 'br': true,
11152
+ 'col': true,
11153
+ 'embed': true,
11154
+ 'hr': true,
11155
+ 'img': true,
11156
+ 'input': true,
11157
+ 'keygen': true,
11158
+ 'link': true,
11159
+ 'meta': true,
11160
+ 'param': true,
11161
+ 'source': true,
11162
+ 'track': true,
11163
+ 'wbr': true
11164
+ };
11165
+
11166
+ var newlineEatingTags = {
11167
+ 'listing': true,
11168
+ 'pre': true,
11169
+ 'textarea': true
11170
+ };
11171
+
11172
+ // For HTML, certain tags cannot have children. This has the same purpose as
11173
+ // `omittedCloseTags` except that `menuitem` should still have its closing tag.
11174
+
11175
+ var voidElementTags = _assign({
11176
+ 'menuitem': true
11177
+ }, omittedCloseTags);
11178
+
11179
+ // We accept any tag to be rendered but since this gets injected into arbitrary
11180
+ // HTML, we want to make sure that it's a safe tag.
11181
+ // http://www.w3.org/TR/REC-xml/#NT-Name
11182
+
11183
+ var VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\.\-\d]*$/; // Simplified subset
11184
+ var validatedTagCache = {};
11185
+ var hasOwnProperty = {}.hasOwnProperty;
11186
+
11187
+ function validateDangerousTag(tag) {
11188
+ if (!hasOwnProperty.call(validatedTagCache, tag)) {
11189
+ !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;
11190
+ validatedTagCache[tag] = true;
11191
+ }
11192
+ }
11193
+
11194
+ function isCustomComponent(tagName, props) {
11195
+ return tagName.indexOf('-') >= 0 || props.is != null;
11196
+ }
11197
+
11198
+ var globalIdCounter = 1;
11199
+
11200
+ /**
11201
+ * Creates a new React class that is idempotent and capable of containing other
11202
+ * React components. It accepts event listeners and DOM properties that are
11203
+ * valid according to `DOMProperty`.
11204
+ *
11205
+ * - Event listeners: `onClick`, `onMouseDown`, etc.
11206
+ * - DOM properties: `className`, `name`, `title`, etc.
11207
+ *
11208
+ * The `style` property functions differently from the DOM API. It accepts an
11209
+ * object mapping of style properties to values.
11210
+ *
11211
+ * @constructor ReactDOMComponent
11212
+ * @extends ReactMultiChild
11213
+ */
11214
+ function ReactDOMComponent(element) {
11215
+ var tag = element.type;
11216
+ validateDangerousTag(tag);
11217
+ this._currentElement = element;
11218
+ this._tag = tag.toLowerCase();
11219
+ this._namespaceURI = null;
11220
+ this._renderedChildren = null;
11221
+ this._previousStyle = null;
11222
+ this._previousStyleCopy = null;
11223
+ this._hostNode = null;
11224
+ this._hostParent = null;
11225
+ this._rootNodeID = 0;
11226
+ this._domID = 0;
11227
+ this._hostContainerInfo = null;
11228
+ this._wrapperState = null;
11229
+ this._topLevelWrapper = null;
11230
+ this._flags = 0;
11231
+ if (process.env.NODE_ENV !== 'production') {
11232
+ this._ancestorInfo = null;
11233
+ setAndValidateContentChildDev.call(this, null);
11234
+ }
11235
+ }
11236
+
11237
+ ReactDOMComponent.displayName = 'ReactDOMComponent';
11238
+
11239
+ ReactDOMComponent.Mixin = {
11240
+
11241
+ /**
11242
+ * Generates root tag markup then recurses. This method has side effects and
11243
+ * is not idempotent.
11244
+ *
11245
+ * @internal
11246
+ * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
11247
+ * @param {?ReactDOMComponent} the parent component instance
11248
+ * @param {?object} info about the host container
11249
+ * @param {object} context
11250
+ * @return {string} The computed markup.
11251
+ */
11252
+ mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
11253
+ this._rootNodeID = globalIdCounter++;
11254
+ this._domID = hostContainerInfo._idCounter++;
11255
+ this._hostParent = hostParent;
11256
+ this._hostContainerInfo = hostContainerInfo;
11257
+
11258
+ var props = this._currentElement.props;
11259
+
11260
+ switch (this._tag) {
11261
+ case 'audio':
11262
+ case 'form':
11263
+ case 'iframe':
11264
+ case 'img':
11265
+ case 'link':
11266
+ case 'object':
11267
+ case 'source':
11268
+ case 'video':
11269
+ this._wrapperState = {
11270
+ listeners: null
11271
+ };
11272
+ transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
11273
+ break;
11274
+ case 'input':
11275
+ ReactDOMInput.mountWrapper(this, props, hostParent);
11276
+ props = ReactDOMInput.getHostProps(this, props);
11277
+ transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
11278
+ break;
11279
+ case 'option':
11280
+ ReactDOMOption.mountWrapper(this, props, hostParent);
11281
+ props = ReactDOMOption.getHostProps(this, props);
11282
+ break;
11283
+ case 'select':
11284
+ ReactDOMSelect.mountWrapper(this, props, hostParent);
11285
+ props = ReactDOMSelect.getHostProps(this, props);
11286
+ transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
11287
+ break;
11288
+ case 'textarea':
11289
+ ReactDOMTextarea.mountWrapper(this, props, hostParent);
11290
+ props = ReactDOMTextarea.getHostProps(this, props);
11291
+ transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
11292
+ break;
11293
+ }
11294
+
11295
+ assertValidProps(this, props);
11296
+
11297
+ // We create tags in the namespace of their parent container, except HTML
11298
+ // tags get no namespace.
11299
+ var namespaceURI;
11300
+ var parentTag;
11301
+ if (hostParent != null) {
11302
+ namespaceURI = hostParent._namespaceURI;
11303
+ parentTag = hostParent._tag;
11304
+ } else if (hostContainerInfo._tag) {
11305
+ namespaceURI = hostContainerInfo._namespaceURI;
11306
+ parentTag = hostContainerInfo._tag;
11307
+ }
11308
+ if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {
11309
+ namespaceURI = DOMNamespaces.html;
11310
+ }
11311
+ if (namespaceURI === DOMNamespaces.html) {
11312
+ if (this._tag === 'svg') {
11313
+ namespaceURI = DOMNamespaces.svg;
11314
+ } else if (this._tag === 'math') {
11315
+ namespaceURI = DOMNamespaces.mathml;
11316
+ }
11317
+ }
11318
+ this._namespaceURI = namespaceURI;
11319
+
11320
+ if (process.env.NODE_ENV !== 'production') {
11321
+ var parentInfo;
11322
+ if (hostParent != null) {
11323
+ parentInfo = hostParent._ancestorInfo;
11324
+ } else if (hostContainerInfo._tag) {
11325
+ parentInfo = hostContainerInfo._ancestorInfo;
11326
+ }
11327
+ if (parentInfo) {
11328
+ // parentInfo should always be present except for the top-level
11329
+ // component when server rendering
11330
+ validateDOMNesting(this._tag, null, this, parentInfo);
11331
+ }
11332
+ this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);
11333
+ }
11334
+
11335
+ var mountImage;
11336
+ if (transaction.useCreateElement) {
11337
+ var ownerDocument = hostContainerInfo._ownerDocument;
11338
+ var el;
11339
+ if (namespaceURI === DOMNamespaces.html) {
11340
+ if (this._tag === 'script') {
11341
+ // Create the script via .innerHTML so its "parser-inserted" flag is
11342
+ // set to true and it does not execute
11343
+ var div = ownerDocument.createElement('div');
11344
+ var type = this._currentElement.type;
11345
+ div.innerHTML = '<' + type + '></' + type + '>';
11346
+ el = div.removeChild(div.firstChild);
11347
+ } else if (props.is) {
11348
+ el = ownerDocument.createElement(this._currentElement.type, props.is);
11349
+ } else {
11350
+ // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.
11351
+ // See discussion in https://github.com/facebook/react/pull/6896
11352
+ // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240
11353
+ el = ownerDocument.createElement(this._currentElement.type);
11354
+ }
11355
+ } else {
11356
+ el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);
11357
+ }
11358
+ ReactDOMComponentTree.precacheNode(this, el);
11359
+ this._flags |= Flags.hasCachedChildNodes;
11360
+ if (!this._hostParent) {
11361
+ DOMPropertyOperations.setAttributeForRoot(el);
11362
+ }
11363
+ this._updateDOMProperties(null, props, transaction);
11364
+ var lazyTree = DOMLazyTree(el);
11365
+ this._createInitialChildren(transaction, props, context, lazyTree);
11366
+ mountImage = lazyTree;
11367
+ } else {
11368
+ var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);
11369
+ var tagContent = this._createContentMarkup(transaction, props, context);
11370
+ if (!tagContent && omittedCloseTags[this._tag]) {
11371
+ mountImage = tagOpen + '/>';
11372
+ } else {
11373
+ mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';
11374
+ }
11375
+ }
11376
+
11377
+ switch (this._tag) {
11378
+ case 'input':
11379
+ transaction.getReactMountReady().enqueue(inputPostMount, this);
11380
+ if (props.autoFocus) {
11381
+ transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
11382
+ }
11383
+ break;
11384
+ case 'textarea':
11385
+ transaction.getReactMountReady().enqueue(textareaPostMount, this);
11386
+ if (props.autoFocus) {
11387
+ transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
11388
+ }
11389
+ break;
11390
+ case 'select':
11391
+ if (props.autoFocus) {
11392
+ transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
11393
+ }
11394
+ break;
11395
+ case 'button':
11396
+ if (props.autoFocus) {
11397
+ transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
11398
+ }
11399
+ break;
11400
+ case 'option':
11401
+ transaction.getReactMountReady().enqueue(optionPostMount, this);
11402
+ break;
11403
+ }
11404
+
11405
+ return mountImage;
11406
+ },
11407
+
11408
+ /**
11409
+ * Creates markup for the open tag and all attributes.
11410
+ *
11411
+ * This method has side effects because events get registered.
11412
+ *
11413
+ * Iterating over object properties is faster than iterating over arrays.
11414
+ * @see http://jsperf.com/obj-vs-arr-iteration
11415
+ *
11416
+ * @private
11417
+ * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
11418
+ * @param {object} props
11419
+ * @return {string} Markup of opening tag.
11420
+ */
11421
+ _createOpenTagMarkupAndPutListeners: function (transaction, props) {
11422
+ var ret = '<' + this._currentElement.type;
11423
+
11424
+ for (var propKey in props) {
11425
+ if (!props.hasOwnProperty(propKey)) {
11426
+ continue;
11427
+ }
11428
+ var propValue = props[propKey];
11429
+ if (propValue == null) {
11430
+ continue;
11431
+ }
11432
+ if (registrationNameModules.hasOwnProperty(propKey)) {
11433
+ if (propValue) {
11434
+ enqueuePutListener(this, propKey, propValue, transaction);
11435
+ }
11436
+ } else {
11437
+ if (propKey === STYLE) {
11438
+ if (propValue) {
11439
+ if (process.env.NODE_ENV !== 'production') {
11440
+ // See `_updateDOMProperties`. style block
11441
+ this._previousStyle = propValue;
11442
+ }
11443
+ propValue = this._previousStyleCopy = _assign({}, props.style);
11444
+ }
11445
+ propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);
11446
+ }
11447
+ var markup = null;
11448
+ if (this._tag != null && isCustomComponent(this._tag, props)) {
11449
+ if (!RESERVED_PROPS.hasOwnProperty(propKey)) {
11450
+ markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);
11451
+ }
11452
+ } else {
11453
+ markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);
11454
+ }
11455
+ if (markup) {
11456
+ ret += ' ' + markup;
11457
+ }
11458
+ }
11459
+ }
11460
+
11461
+ // For static pages, no need to put React ID and checksum. Saves lots of
11462
+ // bytes.
11463
+ if (transaction.renderToStaticMarkup) {
11464
+ return ret;
11465
+ }
11466
+
11467
+ if (!this._hostParent) {
11468
+ ret += ' ' + DOMPropertyOperations.createMarkupForRoot();
11469
+ }
11470
+ ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);
11471
+ return ret;
11472
+ },
11473
+
11474
+ /**
11475
+ * Creates markup for the content between the tags.
11476
+ *
11477
+ * @private
11478
+ * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
11479
+ * @param {object} props
11480
+ * @param {object} context
11481
+ * @return {string} Content markup.
11482
+ */
11483
+ _createContentMarkup: function (transaction, props, context) {
11484
+ var ret = '';
11485
+
11486
+ // Intentional use of != to avoid catching zero/false.
11487
+ var innerHTML = props.dangerouslySetInnerHTML;
11488
+ if (innerHTML != null) {
11489
+ if (innerHTML.__html != null) {
11490
+ ret = innerHTML.__html;
11491
+ }
11492
+ } else {
11493
+ var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;
11494
+ var childrenToUse = contentToUse != null ? null : props.children;
11495
+ if (contentToUse != null) {
11496
+ // TODO: Validate that text is allowed as a child of this node
11497
+ ret = escapeTextContentForBrowser(contentToUse);
11498
+ if (process.env.NODE_ENV !== 'production') {
11499
+ setAndValidateContentChildDev.call(this, contentToUse);
11500
+ }
11501
+ } else if (childrenToUse != null) {
11502
+ var mountImages = this.mountChildren(childrenToUse, transaction, context);
11503
+ ret = mountImages.join('');
11504
+ }
11505
+ }
11506
+ if (newlineEatingTags[this._tag] && ret.charAt(0) === '\n') {
11507
+ // text/html ignores the first character in these tags if it's a newline
11508
+ // Prefer to break application/xml over text/html (for now) by adding
11509
+ // a newline specifically to get eaten by the parser. (Alternately for
11510
+ // textareas, replacing "^\n" with "\r\n" doesn't get eaten, and the first
11511
+ // \r is normalized out by HTMLTextAreaElement#value.)
11512
+ // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>
11513
+ // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>
11514
+ // See: <http://www.w3.org/TR/html5/syntax.html#newlines>
11515
+ // See: Parsing of "textarea" "listing" and "pre" elements
11516
+ // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>
11517
+ return '\n' + ret;
11518
+ } else {
11519
+ return ret;
11520
+ }
11521
+ },
11522
+
11523
+ _createInitialChildren: function (transaction, props, context, lazyTree) {
11524
+ // Intentional use of != to avoid catching zero/false.
11525
+ var innerHTML = props.dangerouslySetInnerHTML;
11526
+ if (innerHTML != null) {
11527
+ if (innerHTML.__html != null) {
11528
+ DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);
11529
+ }
11530
+ } else {
11531
+ var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;
11532
+ var childrenToUse = contentToUse != null ? null : props.children;
11533
+ if (contentToUse != null) {
11534
+ // TODO: Validate that text is allowed as a child of this node
11535
+ if (process.env.NODE_ENV !== 'production') {
11536
+ setAndValidateContentChildDev.call(this, contentToUse);
11537
+ }
11538
+ DOMLazyTree.queueText(lazyTree, contentToUse);
11539
+ } else if (childrenToUse != null) {
11540
+ var mountImages = this.mountChildren(childrenToUse, transaction, context);
11541
+ for (var i = 0; i < mountImages.length; i++) {
11542
+ DOMLazyTree.queueChild(lazyTree, mountImages[i]);
11543
+ }
11544
+ }
11545
+ }
11546
+ },
11547
+
11548
+ /**
11549
+ * Receives a next element and updates the component.
11550
+ *
11551
+ * @internal
11552
+ * @param {ReactElement} nextElement
11553
+ * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
11554
+ * @param {object} context
11555
+ */
11556
+ receiveComponent: function (nextElement, transaction, context) {
11557
+ var prevElement = this._currentElement;
11558
+ this._currentElement = nextElement;
11559
+ this.updateComponent(transaction, prevElement, nextElement, context);
11560
+ },
11561
+
11562
+ /**
11563
+ * Updates a DOM component after it has already been allocated and
11564
+ * attached to the DOM. Reconciles the root DOM node, then recurses.
11565
+ *
11566
+ * @param {ReactReconcileTransaction} transaction
11567
+ * @param {ReactElement} prevElement
11568
+ * @param {ReactElement} nextElement
11569
+ * @internal
11570
+ * @overridable
11571
+ */
11572
+ updateComponent: function (transaction, prevElement, nextElement, context) {
11573
+ var lastProps = prevElement.props;
11574
+ var nextProps = this._currentElement.props;
11575
+
11576
+ switch (this._tag) {
11577
+ case 'input':
11578
+ lastProps = ReactDOMInput.getHostProps(this, lastProps);
11579
+ nextProps = ReactDOMInput.getHostProps(this, nextProps);
11580
+ break;
11581
+ case 'option':
11582
+ lastProps = ReactDOMOption.getHostProps(this, lastProps);
11583
+ nextProps = ReactDOMOption.getHostProps(this, nextProps);
11584
+ break;
11585
+ case 'select':
11586
+ lastProps = ReactDOMSelect.getHostProps(this, lastProps);
11587
+ nextProps = ReactDOMSelect.getHostProps(this, nextProps);
11588
+ break;
11589
+ case 'textarea':
11590
+ lastProps = ReactDOMTextarea.getHostProps(this, lastProps);
11591
+ nextProps = ReactDOMTextarea.getHostProps(this, nextProps);
11592
+ break;
11593
+ }
11594
+
11595
+ assertValidProps(this, nextProps);
11596
+ this._updateDOMProperties(lastProps, nextProps, transaction);
11597
+ this._updateDOMChildren(lastProps, nextProps, transaction, context);
11598
+
11599
+ switch (this._tag) {
11600
+ case 'input':
11601
+ // Update the wrapper around inputs *after* updating props. This has to
11602
+ // happen after `_updateDOMProperties`. Otherwise HTML5 input validations
11603
+ // raise warnings and prevent the new value from being assigned.
11604
+ ReactDOMInput.updateWrapper(this);
11605
+ break;
11606
+ case 'textarea':
11607
+ ReactDOMTextarea.updateWrapper(this);
11608
+ break;
11609
+ case 'select':
11610
+ // <select> value update needs to occur after <option> children
11611
+ // reconciliation
11612
+ transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);
11613
+ break;
11614
+ }
11615
+ },
11616
+
11617
+ /**
11618
+ * Reconciles the properties by detecting differences in property values and
11619
+ * updating the DOM as necessary. This function is probably the single most
11620
+ * critical path for performance optimization.
11621
+ *
11622
+ * TODO: Benchmark whether checking for changed values in memory actually
11623
+ * improves performance (especially statically positioned elements).
11624
+ * TODO: Benchmark the effects of putting this at the top since 99% of props
11625
+ * do not change for a given reconciliation.
11626
+ * TODO: Benchmark areas that can be improved with caching.
11627
+ *
11628
+ * @private
11629
+ * @param {object} lastProps
11630
+ * @param {object} nextProps
11631
+ * @param {?DOMElement} node
11632
+ */
11633
+ _updateDOMProperties: function (lastProps, nextProps, transaction) {
11634
+ var propKey;
11635
+ var styleName;
11636
+ var styleUpdates;
11637
+ for (propKey in lastProps) {
11638
+ if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {
11639
+ continue;
11640
+ }
11641
+ if (propKey === STYLE) {
11642
+ var lastStyle = this._previousStyleCopy;
11643
+ for (styleName in lastStyle) {
11644
+ if (lastStyle.hasOwnProperty(styleName)) {
11645
+ styleUpdates = styleUpdates || {};
11646
+ styleUpdates[styleName] = '';
11647
+ }
11648
+ }
11649
+ this._previousStyleCopy = null;
11650
+ } else if (registrationNameModules.hasOwnProperty(propKey)) {
11651
+ if (lastProps[propKey]) {
11652
+ // Only call deleteListener if there was a listener previously or
11653
+ // else willDeleteListener gets called when there wasn't actually a
11654
+ // listener (e.g., onClick={null})
11655
+ deleteListener(this, propKey);
11656
+ }
11657
+ } else if (isCustomComponent(this._tag, lastProps)) {
11658
+ if (!RESERVED_PROPS.hasOwnProperty(propKey)) {
11659
+ DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);
11660
+ }
11661
+ } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {
11662
+ DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);
11663
+ }
11664
+ }
11665
+ for (propKey in nextProps) {
11666
+ var nextProp = nextProps[propKey];
11667
+ var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;
11668
+ if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {
11669
+ continue;
11670
+ }
11671
+ if (propKey === STYLE) {
11672
+ if (nextProp) {
11673
+ if (process.env.NODE_ENV !== 'production') {
11674
+ checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);
11675
+ this._previousStyle = nextProp;
11676
+ }
11677
+ nextProp = this._previousStyleCopy = _assign({}, nextProp);
11678
+ } else {
11679
+ this._previousStyleCopy = null;
11680
+ }
11681
+ if (lastProp) {
11682
+ // Unset styles on `lastProp` but not on `nextProp`.
11683
+ for (styleName in lastProp) {
11684
+ if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {
11685
+ styleUpdates = styleUpdates || {};
11686
+ styleUpdates[styleName] = '';
11687
+ }
11688
+ }
11689
+ // Update styles that changed since `lastProp`.
11690
+ for (styleName in nextProp) {
11691
+ if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {
11692
+ styleUpdates = styleUpdates || {};
11693
+ styleUpdates[styleName] = nextProp[styleName];
11694
+ }
11695
+ }
11696
+ } else {
11697
+ // Relies on `updateStylesByID` not mutating `styleUpdates`.
11698
+ styleUpdates = nextProp;
11699
+ }
11700
+ } else if (registrationNameModules.hasOwnProperty(propKey)) {
11701
+ if (nextProp) {
11702
+ enqueuePutListener(this, propKey, nextProp, transaction);
11703
+ } else if (lastProp) {
11704
+ deleteListener(this, propKey);
11705
+ }
11706
+ } else if (isCustomComponent(this._tag, nextProps)) {
11707
+ if (!RESERVED_PROPS.hasOwnProperty(propKey)) {
11708
+ DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);
11709
+ }
11710
+ } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {
11711
+ var node = getNode(this);
11712
+ // If we're updating to null or undefined, we should remove the property
11713
+ // from the DOM node instead of inadvertently setting to a string. This
11714
+ // brings us in line with the same behavior we have on initial render.
11715
+ if (nextProp != null) {
11716
+ DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);
11717
+ } else {
11718
+ DOMPropertyOperations.deleteValueForProperty(node, propKey);
11719
+ }
11720
+ }
11721
+ }
11722
+ if (styleUpdates) {
11723
+ CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);
11724
+ }
11725
+ },
11726
+
11727
+ /**
11728
+ * Reconciles the children with the various properties that affect the
11729
+ * children content.
11730
+ *
11731
+ * @param {object} lastProps
11732
+ * @param {object} nextProps
11733
+ * @param {ReactReconcileTransaction} transaction
11734
+ * @param {object} context
11735
+ */
11736
+ _updateDOMChildren: function (lastProps, nextProps, transaction, context) {
11737
+ var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;
11738
+ var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;
11739
+
11740
+ var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;
11741
+ var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;
11742
+
11743
+ // Note the use of `!=` which checks for null or undefined.
11744
+ var lastChildren = lastContent != null ? null : lastProps.children;
11745
+ var nextChildren = nextContent != null ? null : nextProps.children;
11746
+
11747
+ // If we're switching from children to content/html or vice versa, remove
11748
+ // the old content
11749
+ var lastHasContentOrHtml = lastContent != null || lastHtml != null;
11750
+ var nextHasContentOrHtml = nextContent != null || nextHtml != null;
11751
+ if (lastChildren != null && nextChildren == null) {
11752
+ this.updateChildren(null, transaction, context);
11753
+ } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {
11754
+ this.updateTextContent('');
11755
+ if (process.env.NODE_ENV !== 'production') {
11756
+ ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);
11757
+ }
11758
+ }
11759
+
11760
+ if (nextContent != null) {
11761
+ if (lastContent !== nextContent) {
11762
+ this.updateTextContent('' + nextContent);
11763
+ if (process.env.NODE_ENV !== 'production') {
11764
+ setAndValidateContentChildDev.call(this, nextContent);
11765
+ }
11766
+ }
11767
+ } else if (nextHtml != null) {
11768
+ if (lastHtml !== nextHtml) {
11769
+ this.updateMarkup('' + nextHtml);
11770
+ }
11771
+ if (process.env.NODE_ENV !== 'production') {
11772
+ ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);
11773
+ }
11774
+ } else if (nextChildren != null) {
11775
+ if (process.env.NODE_ENV !== 'production') {
11776
+ setAndValidateContentChildDev.call(this, null);
11777
+ }
11778
+
11779
+ this.updateChildren(nextChildren, transaction, context);
11780
+ }
11781
+ },
11782
+
11783
+ getHostNode: function () {
11784
+ return getNode(this);
11785
+ },
11786
+
11787
+ /**
11788
+ * Destroys all event registrations for this instance. Does not remove from
11789
+ * the DOM. That must be done by the parent.
11790
+ *
11791
+ * @internal
11792
+ */
11793
+ unmountComponent: function (safely) {
11794
+ switch (this._tag) {
11795
+ case 'audio':
11796
+ case 'form':
11797
+ case 'iframe':
11798
+ case 'img':
11799
+ case 'link':
11800
+ case 'object':
11801
+ case 'source':
11802
+ case 'video':
11803
+ var listeners = this._wrapperState.listeners;
11804
+ if (listeners) {
11805
+ for (var i = 0; i < listeners.length; i++) {
11806
+ listeners[i].remove();
11807
+ }
11808
+ }
11809
+ break;
11810
+ case 'html':
11811
+ case 'head':
11812
+ case 'body':
11813
+ /**
11814
+ * Components like <html> <head> and <body> can't be removed or added
11815
+ * easily in a cross-browser way, however it's valuable to be able to
11816
+ * take advantage of React's reconciliation for styling and <title>
11817
+ * management. So we just document it and throw in dangerous cases.
11818
+ */
11819
+ 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;
11820
+ break;
11821
+ }
11822
+
11823
+ this.unmountChildren(safely);
11824
+ ReactDOMComponentTree.uncacheNode(this);
11825
+ EventPluginHub.deleteAllListeners(this);
11826
+ this._rootNodeID = 0;
11827
+ this._domID = 0;
11828
+ this._wrapperState = null;
11829
+
11830
+ if (process.env.NODE_ENV !== 'production') {
11831
+ setAndValidateContentChildDev.call(this, null);
11832
+ }
11833
+ },
11834
+
11835
+ getPublicInstance: function () {
11836
+ return getNode(this);
11837
+ }
11838
+
11839
+ };
11840
+
11841
+ _assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);
11842
+
11843
+ module.exports = ReactDOMComponent;
11844
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
11845
+
11846
+ /***/ },
11847
+ /* 95 */
11848
+ /***/ function(module, exports, __webpack_require__) {
11849
+
11850
+ /**
11851
+ * Copyright 2013-present, Facebook, Inc.
11852
+ * All rights reserved.
11853
+ *
11854
+ * This source code is licensed under the BSD-style license found in the
11855
+ * LICENSE file in the root directory of this source tree. An additional grant
11856
+ * of patent rights can be found in the PATENTS file in the same directory.
11857
+ *
11858
+ */
11859
+
11860
+ 'use strict';
11861
+
11862
+ var ReactDOMComponentTree = __webpack_require__(35);
11863
+
11864
+ var focusNode = __webpack_require__(96);
11865
+
11866
+ var AutoFocusUtils = {
11867
+ focusDOMComponent: function () {
11868
+ focusNode(ReactDOMComponentTree.getNodeFromInstance(this));
11869
+ }
11870
+ };
11871
+
11872
+ module.exports = AutoFocusUtils;
11873
+
11874
+ /***/ },
11875
+ /* 96 */
11876
+ /***/ function(module, exports) {
11877
+
11878
+ /**
11879
+ * Copyright (c) 2013-present, Facebook, Inc.
11880
+ * All rights reserved.
11881
+ *
11882
+ * This source code is licensed under the BSD-style license found in the
11883
+ * LICENSE file in the root directory of this source tree. An additional grant
11884
+ * of patent rights can be found in the PATENTS file in the same directory.
11885
+ *
11886
+ */
11887
+
11888
+ 'use strict';
11889
+
11890
+ /**
11891
+ * @param {DOMElement} node input/textarea to focus
11892
+ */
11893
+
11894
+ function focusNode(node) {
11895
+ // IE8 can throw "Can't move focus to the control because it is invisible,
11896
+ // not enabled, or of a type that does not accept the focus." for all kinds of
11897
+ // reasons that are too expensive and fragile to test.
11898
+ try {
11899
+ node.focus();
11900
+ } catch (e) {}
11901
+ }
11902
+
11903
+ module.exports = focusNode;
11904
+
11905
+ /***/ },
11906
+ /* 97 */
11907
+ /***/ function(module, exports, __webpack_require__) {
11908
+
11909
+ /* WEBPACK VAR INJECTION */(function(process) {/**
11910
+ * Copyright 2013-present, Facebook, Inc.
11911
+ * All rights reserved.
11912
+ *
11913
+ * This source code is licensed under the BSD-style license found in the
11914
+ * LICENSE file in the root directory of this source tree. An additional grant
11915
+ * of patent rights can be found in the PATENTS file in the same directory.
11916
+ *
11917
+ */
11918
+
11919
+ 'use strict';
11920
+
11921
+ var CSSProperty = __webpack_require__(98);
11922
+ var ExecutionEnvironment = __webpack_require__(49);
11923
+ var ReactInstrumentation = __webpack_require__(64);
11924
+
11925
+ var camelizeStyleName = __webpack_require__(99);
11926
+ var dangerousStyleValue = __webpack_require__(101);
11927
+ var hyphenateStyleName = __webpack_require__(102);
11928
+ var memoizeStringOnly = __webpack_require__(104);
11929
+ var warning = __webpack_require__(12);
11930
+
11931
+ var processStyleName = memoizeStringOnly(function (styleName) {
11932
+ return hyphenateStyleName(styleName);
11933
+ });
11934
+
11935
+ var hasShorthandPropertyBug = false;
11936
+ var styleFloatAccessor = 'cssFloat';
11937
+ if (ExecutionEnvironment.canUseDOM) {
11938
+ var tempStyle = document.createElement('div').style;
11939
+ try {
11940
+ // IE8 throws "Invalid argument." if resetting shorthand style properties.
11941
+ tempStyle.font = '';
11942
+ } catch (e) {
11943
+ hasShorthandPropertyBug = true;
11944
+ }
11945
+ // IE8 only supports accessing cssFloat (standard) as styleFloat
11946
+ if (document.documentElement.style.cssFloat === undefined) {
11947
+ styleFloatAccessor = 'styleFloat';
11948
+ }
11949
+ }
11950
+
11951
+ if (process.env.NODE_ENV !== 'production') {
11952
+ // 'msTransform' is correct, but the other prefixes should be capitalized
11953
+ var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;
11954
+
11955
+ // style values shouldn't contain a semicolon
11956
+ var badStyleValueWithSemicolonPattern = /;\s*$/;
11957
+
11958
+ var warnedStyleNames = {};
11959
+ var warnedStyleValues = {};
11960
+ var warnedForNaNValue = false;
11961
+
11962
+ var warnHyphenatedStyleName = function (name, owner) {
11963
+ if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
11964
+ return;
11965
+ }
11966
+
11967
+ warnedStyleNames[name] = true;
11968
+ process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;
11969
+ };
11970
+
11971
+ var warnBadVendoredStyleName = function (name, owner) {
11972
+ if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
11973
+ return;
11974
+ }
11975
+
11976
+ warnedStyleNames[name] = true;
11977
+ 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;
11978
+ };
11979
+
11980
+ var warnStyleValueWithSemicolon = function (name, value, owner) {
11981
+ if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {
11982
+ return;
11983
+ }
11984
+
11985
+ warnedStyleValues[value] = true;
11986
+ 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;
11987
+ };
11988
+
11989
+ var warnStyleValueIsNaN = function (name, value, owner) {
11990
+ if (warnedForNaNValue) {
11991
+ return;
11992
+ }
11993
+
11994
+ warnedForNaNValue = true;
11995
+ process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;
11996
+ };
11997
+
11998
+ var checkRenderMessage = function (owner) {
11999
+ if (owner) {
12000
+ var name = owner.getName();
12001
+ if (name) {
12002
+ return ' Check the render method of `' + name + '`.';
12003
+ }
12004
+ }
12005
+ return '';
12006
+ };
12007
+
12008
+ /**
12009
+ * @param {string} name
12010
+ * @param {*} value
12011
+ * @param {ReactDOMComponent} component
12012
+ */
12013
+ var warnValidStyle = function (name, value, component) {
12014
+ var owner;
12015
+ if (component) {
12016
+ owner = component._currentElement._owner;
12017
+ }
12018
+ if (name.indexOf('-') > -1) {
12019
+ warnHyphenatedStyleName(name, owner);
12020
+ } else if (badVendoredStyleNamePattern.test(name)) {
12021
+ warnBadVendoredStyleName(name, owner);
12022
+ } else if (badStyleValueWithSemicolonPattern.test(value)) {
12023
+ warnStyleValueWithSemicolon(name, value, owner);
12024
+ }
12025
+
12026
+ if (typeof value === 'number' && isNaN(value)) {
12027
+ warnStyleValueIsNaN(name, value, owner);
12028
+ }
12029
+ };
12030
+ }
12031
+
12032
+ /**
12033
+ * Operations for dealing with CSS properties.
12034
+ */
12035
+ var CSSPropertyOperations = {
12036
+
12037
+ /**
12038
+ * Serializes a mapping of style properties for use as inline styles:
12039
+ *
12040
+ * > createMarkupForStyles({width: '200px', height: 0})
12041
+ * "width:200px;height:0;"
12042
+ *
12043
+ * Undefined values are ignored so that declarative programming is easier.
12044
+ * The result should be HTML-escaped before insertion into the DOM.
12045
+ *
12046
+ * @param {object} styles
12047
+ * @param {ReactDOMComponent} component
12048
+ * @return {?string}
12049
+ */
12050
+ createMarkupForStyles: function (styles, component) {
12051
+ var serialized = '';
12052
+ for (var styleName in styles) {
12053
+ if (!styles.hasOwnProperty(styleName)) {
12054
+ continue;
12055
+ }
12056
+ var styleValue = styles[styleName];
12057
+ if (process.env.NODE_ENV !== 'production') {
12058
+ warnValidStyle(styleName, styleValue, component);
12059
+ }
12060
+ if (styleValue != null) {
12061
+ serialized += processStyleName(styleName) + ':';
12062
+ serialized += dangerousStyleValue(styleName, styleValue, component) + ';';
12063
+ }
12064
+ }
12065
+ return serialized || null;
12066
+ },
12067
+
12068
+ /**
12069
+ * Sets the value for multiple styles on a node. If a value is specified as
12070
+ * '' (empty string), the corresponding style property will be unset.
12071
+ *
12072
+ * @param {DOMElement} node
12073
+ * @param {object} styles
12074
+ * @param {ReactDOMComponent} component
12075
+ */
12076
+ setValueForStyles: function (node, styles, component) {
12077
+ if (process.env.NODE_ENV !== 'production') {
12078
+ ReactInstrumentation.debugTool.onHostOperation({
12079
+ instanceID: component._debugID,
12080
+ type: 'update styles',
12081
+ payload: styles
12082
+ });
12083
+ }
12084
+
12085
+ var style = node.style;
12086
+ for (var styleName in styles) {
12087
+ if (!styles.hasOwnProperty(styleName)) {
12088
+ continue;
12089
+ }
12090
+ if (process.env.NODE_ENV !== 'production') {
12091
+ warnValidStyle(styleName, styles[styleName], component);
12092
+ }
12093
+ var styleValue = dangerousStyleValue(styleName, styles[styleName], component);
12094
+ if (styleName === 'float' || styleName === 'cssFloat') {
12095
+ styleName = styleFloatAccessor;
12096
+ }
12097
+ if (styleValue) {
12098
+ style[styleName] = styleValue;
12099
+ } else {
12100
+ var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];
12101
+ if (expansion) {
12102
+ // Shorthand property that IE8 won't like unsetting, so unset each
12103
+ // component to placate it
12104
+ for (var individualStyleName in expansion) {
12105
+ style[individualStyleName] = '';
12106
+ }
12107
+ } else {
12108
+ style[styleName] = '';
12109
+ }
12110
+ }
12111
+ }
12112
+ }
12113
+
12114
+ };
12115
+
12116
+ module.exports = CSSPropertyOperations;
12117
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
12118
+
12119
+ /***/ },
12120
+ /* 98 */
12121
+ /***/ function(module, exports) {
12122
+
12123
+ /**
12124
+ * Copyright 2013-present, Facebook, Inc.
12125
+ * All rights reserved.
12126
+ *
12127
+ * This source code is licensed under the BSD-style license found in the
12128
+ * LICENSE file in the root directory of this source tree. An additional grant
12129
+ * of patent rights can be found in the PATENTS file in the same directory.
12130
+ *
12131
+ */
12132
+
12133
+ 'use strict';
12134
+
12135
+ /**
12136
+ * CSS properties which accept numbers but are not in units of "px".
12137
+ */
12138
+
12139
+ var isUnitlessNumber = {
12140
+ animationIterationCount: true,
12141
+ borderImageOutset: true,
12142
+ borderImageSlice: true,
12143
+ borderImageWidth: true,
12144
+ boxFlex: true,
12145
+ boxFlexGroup: true,
12146
+ boxOrdinalGroup: true,
12147
+ columnCount: true,
12148
+ flex: true,
12149
+ flexGrow: true,
12150
+ flexPositive: true,
12151
+ flexShrink: true,
12152
+ flexNegative: true,
12153
+ flexOrder: true,
12154
+ gridRow: true,
12155
+ gridColumn: true,
12156
+ fontWeight: true,
12157
+ lineClamp: true,
12158
+ lineHeight: true,
12159
+ opacity: true,
12160
+ order: true,
12161
+ orphans: true,
12162
+ tabSize: true,
12163
+ widows: true,
12164
+ zIndex: true,
12165
+ zoom: true,
12166
+
12167
+ // SVG-related properties
12168
+ fillOpacity: true,
12169
+ floodOpacity: true,
12170
+ stopOpacity: true,
12171
+ strokeDasharray: true,
12172
+ strokeDashoffset: true,
12173
+ strokeMiterlimit: true,
12174
+ strokeOpacity: true,
12175
+ strokeWidth: true
12176
+ };
12177
+
12178
+ /**
12179
+ * @param {string} prefix vendor-specific prefix, eg: Webkit
12180
+ * @param {string} key style name, eg: transitionDuration
12181
+ * @return {string} style name prefixed with `prefix`, properly camelCased, eg:
12182
+ * WebkitTransitionDuration
12183
+ */
12184
+ function prefixKey(prefix, key) {
12185
+ return prefix + key.charAt(0).toUpperCase() + key.substring(1);
12186
+ }
12187
+
12188
+ /**
12189
+ * Support style names that may come passed in prefixed by adding permutations
12190
+ * of vendor prefixes.
12191
+ */
12192
+ var prefixes = ['Webkit', 'ms', 'Moz', 'O'];
12193
+
12194
+ // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an
12195
+ // infinite loop, because it iterates over the newly added props too.
12196
+ Object.keys(isUnitlessNumber).forEach(function (prop) {
12197
+ prefixes.forEach(function (prefix) {
12198
+ isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];
12199
+ });
12200
+ });
12201
+
12202
+ /**
12203
+ * Most style properties can be unset by doing .style[prop] = '' but IE8
12204
+ * doesn't like doing that with shorthand properties so for the properties that
12205
+ * IE8 breaks on, which are listed here, we instead unset each of the
12206
+ * individual properties. See http://bugs.jquery.com/ticket/12385.
12207
+ * The 4-value 'clock' properties like margin, padding, border-width seem to
12208
+ * behave without any problems. Curiously, list-style works too without any
12209
+ * special prodding.
12210
+ */
12211
+ var shorthandPropertyExpansions = {
12212
+ background: {
12213
+ backgroundAttachment: true,
12214
+ backgroundColor: true,
12215
+ backgroundImage: true,
12216
+ backgroundPositionX: true,
12217
+ backgroundPositionY: true,
12218
+ backgroundRepeat: true
12219
+ },
12220
+ backgroundPosition: {
12221
+ backgroundPositionX: true,
12222
+ backgroundPositionY: true
12223
+ },
12224
+ border: {
12225
+ borderWidth: true,
12226
+ borderStyle: true,
12227
+ borderColor: true
12228
+ },
12229
+ borderBottom: {
12230
+ borderBottomWidth: true,
12231
+ borderBottomStyle: true,
12232
+ borderBottomColor: true
12233
+ },
12234
+ borderLeft: {
12235
+ borderLeftWidth: true,
12236
+ borderLeftStyle: true,
12237
+ borderLeftColor: true
12238
+ },
12239
+ borderRight: {
12240
+ borderRightWidth: true,
12241
+ borderRightStyle: true,
12242
+ borderRightColor: true
12243
+ },
12244
+ borderTop: {
12245
+ borderTopWidth: true,
12246
+ borderTopStyle: true,
12247
+ borderTopColor: true
12248
+ },
12249
+ font: {
12250
+ fontStyle: true,
12251
+ fontVariant: true,
12252
+ fontWeight: true,
12253
+ fontSize: true,
12254
+ lineHeight: true,
12255
+ fontFamily: true
12256
+ },
12257
+ outline: {
12258
+ outlineWidth: true,
12259
+ outlineStyle: true,
12260
+ outlineColor: true
12261
+ }
12262
+ };
12263
+
12264
+ var CSSProperty = {
12265
+ isUnitlessNumber: isUnitlessNumber,
12266
+ shorthandPropertyExpansions: shorthandPropertyExpansions
12267
+ };
12268
+
12269
+ module.exports = CSSProperty;
12270
+
12271
+ /***/ },
12272
+ /* 99 */
12273
+ /***/ function(module, exports, __webpack_require__) {
12274
+
12275
+ /**
12276
+ * Copyright (c) 2013-present, Facebook, Inc.
12277
+ * All rights reserved.
12278
+ *
12279
+ * This source code is licensed under the BSD-style license found in the
12280
+ * LICENSE file in the root directory of this source tree. An additional grant
12281
+ * of patent rights can be found in the PATENTS file in the same directory.
12282
+ *
12283
+ * @typechecks
12284
+ */
12285
+
12286
+ 'use strict';
12287
+
12288
+ var camelize = __webpack_require__(100);
12289
+
12290
+ var msPattern = /^-ms-/;
12291
+
12292
+ /**
12293
+ * Camelcases a hyphenated CSS property name, for example:
12294
+ *
12295
+ * > camelizeStyleName('background-color')
12296
+ * < "backgroundColor"
12297
+ * > camelizeStyleName('-moz-transition')
12298
+ * < "MozTransition"
12299
+ * > camelizeStyleName('-ms-transition')
12300
+ * < "msTransition"
12301
+ *
12302
+ * As Andi Smith suggests
12303
+ * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix
12304
+ * is converted to lowercase `ms`.
12305
+ *
12306
+ * @param {string} string
12307
+ * @return {string}
12308
+ */
12309
+ function camelizeStyleName(string) {
12310
+ return camelize(string.replace(msPattern, 'ms-'));
12311
+ }
12312
+
12313
+ module.exports = camelizeStyleName;
12314
+
12315
+ /***/ },
12316
+ /* 100 */
12317
+ /***/ function(module, exports) {
12318
+
12319
+ "use strict";
12320
+
12321
+ /**
12322
+ * Copyright (c) 2013-present, Facebook, Inc.
12323
+ * All rights reserved.
12324
+ *
12325
+ * This source code is licensed under the BSD-style license found in the
12326
+ * LICENSE file in the root directory of this source tree. An additional grant
12327
+ * of patent rights can be found in the PATENTS file in the same directory.
12328
+ *
12329
+ * @typechecks
12330
+ */
12331
+
12332
+ var _hyphenPattern = /-(.)/g;
12333
+
12334
+ /**
12335
+ * Camelcases a hyphenated string, for example:
12336
+ *
12337
+ * > camelize('background-color')
12338
+ * < "backgroundColor"
12339
+ *
12340
+ * @param {string} string
12341
+ * @return {string}
12342
+ */
12343
+ function camelize(string) {
12344
+ return string.replace(_hyphenPattern, function (_, character) {
12345
+ return character.toUpperCase();
12346
+ });
12347
+ }
12348
+
12349
+ module.exports = camelize;
12350
+
12351
+ /***/ },
12352
+ /* 101 */
12353
+ /***/ function(module, exports, __webpack_require__) {
12354
+
12355
+ /* WEBPACK VAR INJECTION */(function(process) {/**
12356
+ * Copyright 2013-present, Facebook, Inc.
12357
+ * All rights reserved.
12358
+ *
12359
+ * This source code is licensed under the BSD-style license found in the
12360
+ * LICENSE file in the root directory of this source tree. An additional grant
12361
+ * of patent rights can be found in the PATENTS file in the same directory.
12362
+ *
12363
+ */
12364
+
12365
+ 'use strict';
12366
+
12367
+ var CSSProperty = __webpack_require__(98);
12368
+ var warning = __webpack_require__(12);
12369
+
12370
+ var isUnitlessNumber = CSSProperty.isUnitlessNumber;
12371
+ var styleWarnings = {};
12372
+
12373
+ /**
12374
+ * Convert a value into the proper css writable value. The style name `name`
12375
+ * should be logical (no hyphens), as specified
12376
+ * in `CSSProperty.isUnitlessNumber`.
12377
+ *
12378
+ * @param {string} name CSS property name such as `topMargin`.
12379
+ * @param {*} value CSS property value such as `10px`.
12380
+ * @param {ReactDOMComponent} component
12381
+ * @return {string} Normalized style value with dimensions applied.
12382
+ */
12383
+ function dangerousStyleValue(name, value, component) {
12384
+ // Note that we've removed escapeTextForBrowser() calls here since the
12385
+ // whole string will be escaped when the attribute is injected into
12386
+ // the markup. If you provide unsafe user data here they can inject
12387
+ // arbitrary CSS which may be problematic (I couldn't repro this):
12388
+ // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
12389
+ // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/
12390
+ // This is not an XSS hole but instead a potential CSS injection issue
12391
+ // which has lead to a greater discussion about how we're going to
12392
+ // trust URLs moving forward. See #2115901
12393
+
12394
+ var isEmpty = value == null || typeof value === 'boolean' || value === '';
12395
+ if (isEmpty) {
12396
+ return '';
12397
+ }
12398
+
12399
+ var isNonNumeric = isNaN(value);
12400
+ if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {
12401
+ return '' + value; // cast to string
12402
+ }
12403
+
12404
+ if (typeof value === 'string') {
12405
+ if (process.env.NODE_ENV !== 'production') {
12406
+ // Allow '0' to pass through without warning. 0 is already special and
12407
+ // doesn't require units, so we don't need to warn about it.
12408
+ if (component && value !== '0') {
12409
+ var owner = component._currentElement._owner;
12410
+ var ownerName = owner ? owner.getName() : null;
12411
+ if (ownerName && !styleWarnings[ownerName]) {
12412
+ styleWarnings[ownerName] = {};
12413
+ }
12414
+ var warned = false;
12415
+ if (ownerName) {
12416
+ var warnings = styleWarnings[ownerName];
12417
+ warned = warnings[name];
12418
+ if (!warned) {
12419
+ warnings[name] = true;
12420
+ }
12421
+ }
12422
+ if (!warned) {
12423
+ 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;
12424
+ }
12425
+ }
12426
+ }
12427
+ value = value.trim();
12428
+ }
12429
+ return value + 'px';
12430
+ }
12431
+
12432
+ module.exports = dangerousStyleValue;
12433
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
12434
+
12435
+ /***/ },
12436
+ /* 102 */
12437
+ /***/ function(module, exports, __webpack_require__) {
12438
+
12439
+ /**
12440
+ * Copyright (c) 2013-present, Facebook, Inc.
12441
+ * All rights reserved.
12442
+ *
12443
+ * This source code is licensed under the BSD-style license found in the
12444
+ * LICENSE file in the root directory of this source tree. An additional grant
12445
+ * of patent rights can be found in the PATENTS file in the same directory.
12446
+ *
12447
+ * @typechecks
12448
+ */
12449
+
12450
+ 'use strict';
12451
+
12452
+ var hyphenate = __webpack_require__(103);
12453
+
12454
+ var msPattern = /^ms-/;
12455
+
12456
+ /**
12457
+ * Hyphenates a camelcased CSS property name, for example:
12458
+ *
12459
+ * > hyphenateStyleName('backgroundColor')
12460
+ * < "background-color"
12461
+ * > hyphenateStyleName('MozTransition')
12462
+ * < "-moz-transition"
12463
+ * > hyphenateStyleName('msTransition')
12464
+ * < "-ms-transition"
12465
+ *
12466
+ * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix
12467
+ * is converted to `-ms-`.
12468
+ *
12469
+ * @param {string} string
12470
+ * @return {string}
12471
+ */
12472
+ function hyphenateStyleName(string) {
12473
+ return hyphenate(string).replace(msPattern, '-ms-');
12474
+ }
12475
+
12476
+ module.exports = hyphenateStyleName;
12477
+
12478
+ /***/ },
12479
+ /* 103 */
12480
+ /***/ function(module, exports) {
12481
+
12482
+ 'use strict';
12483
+
12484
+ /**
12485
+ * Copyright (c) 2013-present, Facebook, Inc.
12486
+ * All rights reserved.
12487
+ *
12488
+ * This source code is licensed under the BSD-style license found in the
12489
+ * LICENSE file in the root directory of this source tree. An additional grant
12490
+ * of patent rights can be found in the PATENTS file in the same directory.
12491
+ *
12492
+ * @typechecks
12493
+ */
12494
+
12495
+ var _uppercasePattern = /([A-Z])/g;
12496
+
12497
+ /**
12498
+ * Hyphenates a camelcased string, for example:
12499
+ *
12500
+ * > hyphenate('backgroundColor')
12501
+ * < "background-color"
12502
+ *
12503
+ * For CSS style names, use `hyphenateStyleName` instead which works properly
12504
+ * with all vendor prefixes, including `ms`.
12505
+ *
12506
+ * @param {string} string
12507
+ * @return {string}
12508
+ */
12509
+ function hyphenate(string) {
12510
+ return string.replace(_uppercasePattern, '-$1').toLowerCase();
12511
+ }
12512
+
12513
+ module.exports = hyphenate;
12514
+
12515
+ /***/ },
12516
+ /* 104 */
12517
+ /***/ function(module, exports) {
12518
+
12519
+ /**
12520
+ * Copyright (c) 2013-present, Facebook, Inc.
12521
+ * All rights reserved.
12522
+ *
12523
+ * This source code is licensed under the BSD-style license found in the
12524
+ * LICENSE file in the root directory of this source tree. An additional grant
12525
+ * of patent rights can be found in the PATENTS file in the same directory.
12526
+ *
12527
+ *
12528
+ * @typechecks static-only
12529
+ */
12530
+
12531
+ 'use strict';
12532
+
12533
+ /**
12534
+ * Memoizes the return value of a function that accepts one string argument.
12535
+ */
12536
+
12537
+ function memoizeStringOnly(callback) {
12538
+ var cache = {};
12539
+ return function (string) {
12540
+ if (!cache.hasOwnProperty(string)) {
12541
+ cache[string] = callback.call(this, string);
12542
+ }
12543
+ return cache[string];
12544
+ };
12545
+ }
12546
+
12547
+ module.exports = memoizeStringOnly;
12548
+
12549
+ /***/ },
12550
+ /* 105 */
12551
+ /***/ function(module, exports, __webpack_require__) {
12552
+
12553
+ /* WEBPACK VAR INJECTION */(function(process) {/**
12554
+ * Copyright 2013-present, Facebook, Inc.
12555
+ * All rights reserved.
12556
+ *
12557
+ * This source code is licensed under the BSD-style license found in the
12558
+ * LICENSE file in the root directory of this source tree. An additional grant
12559
+ * of patent rights can be found in the PATENTS file in the same directory.
12560
+ *
12561
+ */
12562
+
12563
+ 'use strict';
12564
+
12565
+ var DOMProperty = __webpack_require__(37);
12566
+ var ReactDOMComponentTree = __webpack_require__(35);
12567
+ var ReactInstrumentation = __webpack_require__(64);
12568
+
12569
+ var quoteAttributeValueForBrowser = __webpack_require__(106);
12570
+ var warning = __webpack_require__(12);
12571
+
12572
+ var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');
12573
+ var illegalAttributeNameCache = {};
12574
+ var validatedAttributeNameCache = {};
12575
+
12576
+ function isAttributeNameSafe(attributeName) {
12577
+ if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {
12578
+ return true;
12579
+ }
12580
+ if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {
12581
+ return false;
12582
+ }
12583
+ if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {
12584
+ validatedAttributeNameCache[attributeName] = true;
12585
+ return true;
12586
+ }
12587
+ illegalAttributeNameCache[attributeName] = true;
12588
+ process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;
12589
+ return false;
12590
+ }
12591
+
12592
+ function shouldIgnoreValue(propertyInfo, value) {
12593
+ return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;
12594
+ }
12595
+
12596
+ /**
12597
+ * Operations for dealing with DOM properties.
12598
+ */
12599
+ var DOMPropertyOperations = {
12600
+
12601
+ /**
12602
+ * Creates markup for the ID property.
12603
+ *
12604
+ * @param {string} id Unescaped ID.
12605
+ * @return {string} Markup string.
12606
+ */
12607
+ createMarkupForID: function (id) {
12608
+ return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);
12609
+ },
12610
+
12611
+ setAttributeForID: function (node, id) {
12612
+ node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);
12613
+ },
12614
+
12615
+ createMarkupForRoot: function () {
12616
+ return DOMProperty.ROOT_ATTRIBUTE_NAME + '=""';
12617
+ },
12618
+
12619
+ setAttributeForRoot: function (node) {
12620
+ node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');
12621
+ },
12622
+
12623
+ /**
12624
+ * Creates markup for a property.
12625
+ *
12626
+ * @param {string} name
12627
+ * @param {*} value
12628
+ * @return {?string} Markup string, or null if the property was invalid.
12629
+ */
12630
+ createMarkupForProperty: function (name, value) {
12631
+ var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
12632
+ if (propertyInfo) {
12633
+ if (shouldIgnoreValue(propertyInfo, value)) {
12634
+ return '';
12635
+ }
12636
+ var attributeName = propertyInfo.attributeName;
12637
+ if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {
12638
+ return attributeName + '=""';
12639
+ }
12640
+ return attributeName + '=' + quoteAttributeValueForBrowser(value);
12641
+ } else if (DOMProperty.isCustomAttribute(name)) {
12642
+ if (value == null) {
12643
+ return '';
12644
+ }
12645
+ return name + '=' + quoteAttributeValueForBrowser(value);
12646
+ }
12647
+ return null;
12648
+ },
12649
+
12650
+ /**
12651
+ * Creates markup for a custom property.
12652
+ *
12653
+ * @param {string} name
12654
+ * @param {*} value
12655
+ * @return {string} Markup string, or empty string if the property was invalid.
12656
+ */
12657
+ createMarkupForCustomAttribute: function (name, value) {
12658
+ if (!isAttributeNameSafe(name) || value == null) {
12659
+ return '';
12660
+ }
12661
+ return name + '=' + quoteAttributeValueForBrowser(value);
12662
+ },
12663
+
12664
+ /**
12665
+ * Sets the value for a property on a node.
12666
+ *
12667
+ * @param {DOMElement} node
12668
+ * @param {string} name
12669
+ * @param {*} value
12670
+ */
12671
+ setValueForProperty: function (node, name, value) {
12672
+ var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
12673
+ if (propertyInfo) {
12674
+ var mutationMethod = propertyInfo.mutationMethod;
12675
+ if (mutationMethod) {
12676
+ mutationMethod(node, value);
12677
+ } else if (shouldIgnoreValue(propertyInfo, value)) {
12678
+ this.deleteValueForProperty(node, name);
12679
+ return;
12680
+ } else if (propertyInfo.mustUseProperty) {
12681
+ // Contrary to `setAttribute`, object properties are properly
12682
+ // `toString`ed by IE8/9.
12683
+ node[propertyInfo.propertyName] = value;
12684
+ } else {
12685
+ var attributeName = propertyInfo.attributeName;
12686
+ var namespace = propertyInfo.attributeNamespace;
12687
+ // `setAttribute` with objects becomes only `[object]` in IE8/9,
12688
+ // ('' + value) makes it output the correct toString()-value.
12689
+ if (namespace) {
12690
+ node.setAttributeNS(namespace, attributeName, '' + value);
12691
+ } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {
12692
+ node.setAttribute(attributeName, '');
12693
+ } else {
12694
+ node.setAttribute(attributeName, '' + value);
12695
+ }
12696
+ }
12697
+ } else if (DOMProperty.isCustomAttribute(name)) {
12698
+ DOMPropertyOperations.setValueForAttribute(node, name, value);
12699
+ return;
12700
+ }
12701
+
12702
+ if (process.env.NODE_ENV !== 'production') {
12703
+ var payload = {};
12704
+ payload[name] = value;
12705
+ ReactInstrumentation.debugTool.onHostOperation({
12706
+ instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
12707
+ type: 'update attribute',
12708
+ payload: payload
12709
+ });
12710
+ }
12711
+ },
12712
+
12713
+ setValueForAttribute: function (node, name, value) {
12714
+ if (!isAttributeNameSafe(name)) {
12715
+ return;
12716
+ }
12717
+ if (value == null) {
12718
+ node.removeAttribute(name);
12719
+ } else {
12720
+ node.setAttribute(name, '' + value);
12721
+ }
12722
+
12723
+ if (process.env.NODE_ENV !== 'production') {
12724
+ var payload = {};
12725
+ payload[name] = value;
12726
+ ReactInstrumentation.debugTool.onHostOperation({
12727
+ instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
12728
+ type: 'update attribute',
12729
+ payload: payload
12730
+ });
12731
+ }
12732
+ },
12733
+
12734
+ /**
12735
+ * Deletes an attributes from a node.
12736
+ *
12737
+ * @param {DOMElement} node
12738
+ * @param {string} name
12739
+ */
12740
+ deleteValueForAttribute: function (node, name) {
12741
+ node.removeAttribute(name);
12742
+ if (process.env.NODE_ENV !== 'production') {
12743
+ ReactInstrumentation.debugTool.onHostOperation({
12744
+ instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
12745
+ type: 'remove attribute',
12746
+ payload: name
12747
+ });
12748
+ }
12749
+ },
12750
+
12751
+ /**
12752
+ * Deletes the value for a property on a node.
12753
+ *
12754
+ * @param {DOMElement} node
12755
+ * @param {string} name
12756
+ */
12757
+ deleteValueForProperty: function (node, name) {
12758
+ var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
12759
+ if (propertyInfo) {
12760
+ var mutationMethod = propertyInfo.mutationMethod;
12761
+ if (mutationMethod) {
12762
+ mutationMethod(node, undefined);
12763
+ } else if (propertyInfo.mustUseProperty) {
12764
+ var propName = propertyInfo.propertyName;
12765
+ if (propertyInfo.hasBooleanValue) {
12766
+ node[propName] = false;
12767
+ } else {
12768
+ node[propName] = '';
12769
+ }
12770
+ } else {
12771
+ node.removeAttribute(propertyInfo.attributeName);
12772
+ }
12773
+ } else if (DOMProperty.isCustomAttribute(name)) {
12774
+ node.removeAttribute(name);
12775
+ }
12776
+
12777
+ if (process.env.NODE_ENV !== 'production') {
12778
+ ReactInstrumentation.debugTool.onHostOperation({
12779
+ instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
12780
+ type: 'remove attribute',
12781
+ payload: name
12782
+ });
12783
+ }
12784
+ }
12785
+
12786
+ };
12787
+
12788
+ module.exports = DOMPropertyOperations;
12789
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
12790
+
12791
+ /***/ },
12792
+ /* 106 */
12793
+ /***/ function(module, exports, __webpack_require__) {
12794
+
12795
+ /**
12796
+ * Copyright 2013-present, Facebook, Inc.
12797
+ * All rights reserved.
12798
+ *
12799
+ * This source code is licensed under the BSD-style license found in the
12800
+ * LICENSE file in the root directory of this source tree. An additional grant
12801
+ * of patent rights can be found in the PATENTS file in the same directory.
12802
+ *
12803
+ */
12804
+
12805
+ 'use strict';
12806
+
12807
+ var escapeTextContentForBrowser = __webpack_require__(88);
12808
+
12809
+ /**
12810
+ * Escapes attribute value to prevent scripting attacks.
12811
+ *
12812
+ * @param {*} value Value to escape.
12813
+ * @return {string} An escaped string.
12814
+ */
12815
+ function quoteAttributeValueForBrowser(value) {
12816
+ return '"' + escapeTextContentForBrowser(value) + '"';
12817
+ }
12818
+
12819
+ module.exports = quoteAttributeValueForBrowser;
12820
+
12821
+ /***/ },
12822
+ /* 107 */
12823
+ /***/ function(module, exports, __webpack_require__) {
12824
+
12825
+ /**
12826
+ * Copyright 2013-present, Facebook, Inc.
12827
+ * All rights reserved.
12828
+ *
12829
+ * This source code is licensed under the BSD-style license found in the
12830
+ * LICENSE file in the root directory of this source tree. An additional grant
12831
+ * of patent rights can be found in the PATENTS file in the same directory.
12832
+ *
12833
+ */
12834
+
12835
+ 'use strict';
12836
+
12837
+ var _assign = __webpack_require__(51);
12838
+
12839
+ var EventPluginRegistry = __webpack_require__(44);
12840
+ var ReactEventEmitterMixin = __webpack_require__(108);
12841
+ var ViewportMetrics = __webpack_require__(78);
12842
+
12843
+ var getVendorPrefixedEventName = __webpack_require__(109);
12844
+ var isEventSupported = __webpack_require__(72);
12845
+
12846
+ /**
12847
+ * Summary of `ReactBrowserEventEmitter` event handling:
12848
+ *
12849
+ * - Top-level delegation is used to trap most native browser events. This
12850
+ * may only occur in the main thread and is the responsibility of
12851
+ * ReactEventListener, which is injected and can therefore support pluggable
12852
+ * event sources. This is the only work that occurs in the main thread.
12853
+ *
12854
+ * - We normalize and de-duplicate events to account for browser quirks. This
12855
+ * may be done in the worker thread.
12856
+ *
12857
+ * - Forward these native events (with the associated top-level type used to
12858
+ * trap it) to `EventPluginHub`, which in turn will ask plugins if they want
12859
+ * to extract any synthetic events.
12860
+ *
12861
+ * - The `EventPluginHub` will then process each event by annotating them with
12862
+ * "dispatches", a sequence of listeners and IDs that care about that event.
12863
+ *
12864
+ * - The `EventPluginHub` then dispatches the events.
12865
+ *
12866
+ * Overview of React and the event system:
12867
+ *
12868
+ * +------------+ .
12869
+ * | DOM | .
12870
+ * +------------+ .
12871
+ * | .
12872
+ * v .
12873
+ * +------------+ .
12874
+ * | ReactEvent | .
12875
+ * | Listener | .
12876
+ * +------------+ . +-----------+
12877
+ * | . +--------+|SimpleEvent|
12878
+ * | . | |Plugin |
12879
+ * +-----|------+ . v +-----------+
12880
+ * | | | . +--------------+ +------------+
12881
+ * | +-----------.--->|EventPluginHub| | Event |
12882
+ * | | . | | +-----------+ | Propagators|
12883
+ * | ReactEvent | . | | |TapEvent | |------------|
12884
+ * | Emitter | . | |<---+|Plugin | |other plugin|
12885
+ * | | . | | +-----------+ | utilities |
12886
+ * | +-----------.--->| | +------------+
12887
+ * | | | . +--------------+
12888
+ * +-----|------+ . ^ +-----------+
12889
+ * | . | |Enter/Leave|
12890
+ * + . +-------+|Plugin |
12891
+ * +-------------+ . +-----------+
12892
+ * | application | .
12893
+ * |-------------| .
12894
+ * | | .
12895
+ * | | .
12896
+ * +-------------+ .
12897
+ * .
12898
+ * React Core . General Purpose Event Plugin System
12899
+ */
12900
+
12901
+ var hasEventPageXY;
12902
+ var alreadyListeningTo = {};
12903
+ var isMonitoringScrollValue = false;
12904
+ var reactTopListenersCounter = 0;
12905
+
12906
+ // For events like 'submit' which don't consistently bubble (which we trap at a
12907
+ // lower node than `document`), binding at `document` would cause duplicate
12908
+ // events so we don't include them here
12909
+ var topEventMapping = {
12910
+ topAbort: 'abort',
12911
+ topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',
12912
+ topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',
12913
+ topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',
12914
+ topBlur: 'blur',
12915
+ topCanPlay: 'canplay',
12916
+ topCanPlayThrough: 'canplaythrough',
12917
+ topChange: 'change',
12918
+ topClick: 'click',
12919
+ topCompositionEnd: 'compositionend',
12920
+ topCompositionStart: 'compositionstart',
12921
+ topCompositionUpdate: 'compositionupdate',
12922
+ topContextMenu: 'contextmenu',
12923
+ topCopy: 'copy',
12924
+ topCut: 'cut',
12925
+ topDoubleClick: 'dblclick',
12926
+ topDrag: 'drag',
12927
+ topDragEnd: 'dragend',
12928
+ topDragEnter: 'dragenter',
12929
+ topDragExit: 'dragexit',
12930
+ topDragLeave: 'dragleave',
12931
+ topDragOver: 'dragover',
12932
+ topDragStart: 'dragstart',
12933
+ topDrop: 'drop',
12934
+ topDurationChange: 'durationchange',
12935
+ topEmptied: 'emptied',
12936
+ topEncrypted: 'encrypted',
12937
+ topEnded: 'ended',
12938
+ topError: 'error',
12939
+ topFocus: 'focus',
12940
+ topInput: 'input',
12941
+ topKeyDown: 'keydown',
12942
+ topKeyPress: 'keypress',
12943
+ topKeyUp: 'keyup',
12944
+ topLoadedData: 'loadeddata',
12945
+ topLoadedMetadata: 'loadedmetadata',
12946
+ topLoadStart: 'loadstart',
12947
+ topMouseDown: 'mousedown',
12948
+ topMouseMove: 'mousemove',
12949
+ topMouseOut: 'mouseout',
12950
+ topMouseOver: 'mouseover',
12951
+ topMouseUp: 'mouseup',
12952
+ topPaste: 'paste',
12953
+ topPause: 'pause',
12954
+ topPlay: 'play',
12955
+ topPlaying: 'playing',
12956
+ topProgress: 'progress',
12957
+ topRateChange: 'ratechange',
12958
+ topScroll: 'scroll',
12959
+ topSeeked: 'seeked',
12960
+ topSeeking: 'seeking',
12961
+ topSelectionChange: 'selectionchange',
12962
+ topStalled: 'stalled',
12963
+ topSuspend: 'suspend',
12964
+ topTextInput: 'textInput',
12965
+ topTimeUpdate: 'timeupdate',
12966
+ topTouchCancel: 'touchcancel',
12967
+ topTouchEnd: 'touchend',
12968
+ topTouchMove: 'touchmove',
12969
+ topTouchStart: 'touchstart',
12970
+ topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',
12971
+ topVolumeChange: 'volumechange',
12972
+ topWaiting: 'waiting',
12973
+ topWheel: 'wheel'
12974
+ };
12975
+
12976
+ /**
12977
+ * To ensure no conflicts with other potential React instances on the page
12978
+ */
12979
+ var topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);
12980
+
12981
+ function getListeningForDocument(mountAt) {
12982
+ // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`
12983
+ // directly.
12984
+ if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {
12985
+ mountAt[topListenersIDKey] = reactTopListenersCounter++;
12986
+ alreadyListeningTo[mountAt[topListenersIDKey]] = {};
12987
+ }
12988
+ return alreadyListeningTo[mountAt[topListenersIDKey]];
12989
+ }
12990
+
12991
+ /**
12992
+ * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For
12993
+ * example:
12994
+ *
12995
+ * EventPluginHub.putListener('myID', 'onClick', myFunction);
12996
+ *
12997
+ * This would allocate a "registration" of `('onClick', myFunction)` on 'myID'.
12998
+ *
12999
+ * @internal
13000
+ */
13001
+ var ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {
13002
+
13003
+ /**
13004
+ * Injectable event backend
13005
+ */
13006
+ ReactEventListener: null,
13007
+
13008
+ injection: {
13009
+ /**
13010
+ * @param {object} ReactEventListener
13011
+ */
13012
+ injectReactEventListener: function (ReactEventListener) {
13013
+ ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);
13014
+ ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;
13015
+ }
13016
+ },
13017
+
13018
+ /**
13019
+ * Sets whether or not any created callbacks should be enabled.
13020
+ *
13021
+ * @param {boolean} enabled True if callbacks should be enabled.
13022
+ */
13023
+ setEnabled: function (enabled) {
13024
+ if (ReactBrowserEventEmitter.ReactEventListener) {
13025
+ ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);
13026
+ }
13027
+ },
13028
+
13029
+ /**
13030
+ * @return {boolean} True if callbacks are enabled.
13031
+ */
13032
+ isEnabled: function () {
13033
+ return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());
13034
+ },
13035
+
13036
+ /**
13037
+ * We listen for bubbled touch events on the document object.
13038
+ *
13039
+ * Firefox v8.01 (and possibly others) exhibited strange behavior when
13040
+ * mounting `onmousemove` events at some node that was not the document
13041
+ * element. The symptoms were that if your mouse is not moving over something
13042
+ * contained within that mount point (for example on the background) the
13043
+ * top-level listeners for `onmousemove` won't be called. However, if you
13044
+ * register the `mousemove` on the document object, then it will of course
13045
+ * catch all `mousemove`s. This along with iOS quirks, justifies restricting
13046
+ * top-level listeners to the document object only, at least for these
13047
+ * movement types of events and possibly all events.
13048
+ *
13049
+ * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html
13050
+ *
13051
+ * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but
13052
+ * they bubble to document.
13053
+ *
13054
+ * @param {string} registrationName Name of listener (e.g. `onClick`).
13055
+ * @param {object} contentDocumentHandle Document which owns the container
13056
+ */
13057
+ listenTo: function (registrationName, contentDocumentHandle) {
13058
+ var mountAt = contentDocumentHandle;
13059
+ var isListening = getListeningForDocument(mountAt);
13060
+ var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];
13061
+
13062
+ for (var i = 0; i < dependencies.length; i++) {
13063
+ var dependency = dependencies[i];
13064
+ if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {
13065
+ if (dependency === 'topWheel') {
13066
+ if (isEventSupported('wheel')) {
13067
+ ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);
13068
+ } else if (isEventSupported('mousewheel')) {
13069
+ ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);
13070
+ } else {
13071
+ // Firefox needs to capture a different mouse scroll event.
13072
+ // @see http://www.quirksmode.org/dom/events/tests/scroll.html
13073
+ ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);
13074
+ }
13075
+ } else if (dependency === 'topScroll') {
13076
+
13077
+ if (isEventSupported('scroll', true)) {
13078
+ ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);
13079
+ } else {
13080
+ ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);
13081
+ }
13082
+ } else if (dependency === 'topFocus' || dependency === 'topBlur') {
13083
+
13084
+ if (isEventSupported('focus', true)) {
13085
+ ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);
13086
+ ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);
13087
+ } else if (isEventSupported('focusin')) {
13088
+ // IE has `focusin` and `focusout` events which bubble.
13089
+ // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html
13090
+ ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);
13091
+ ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);
13092
+ }
13093
+
13094
+ // to make sure blur and focus event listeners are only attached once
13095
+ isListening.topBlur = true;
13096
+ isListening.topFocus = true;
13097
+ } else if (topEventMapping.hasOwnProperty(dependency)) {
13098
+ ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);
13099
+ }
13100
+
13101
+ isListening[dependency] = true;
13102
+ }
13103
+ }
13104
+ },
13105
+
13106
+ trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {
13107
+ return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);
13108
+ },
13109
+
13110
+ trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {
13111
+ return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);
13112
+ },
13113
+
13114
+ /**
13115
+ * Protect against document.createEvent() returning null
13116
+ * Some popup blocker extensions appear to do this:
13117
+ * https://github.com/facebook/react/issues/6887
13118
+ */
13119
+ supportsEventPageXY: function () {
13120
+ if (!document.createEvent) {
13121
+ return false;
13122
+ }
13123
+ var ev = document.createEvent('MouseEvent');
13124
+ return ev != null && 'pageX' in ev;
13125
+ },
13126
+
13127
+ /**
13128
+ * Listens to window scroll and resize events. We cache scroll values so that
13129
+ * application code can access them without triggering reflows.
13130
+ *
13131
+ * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when
13132
+ * pageX/pageY isn't supported (legacy browsers).
13133
+ *
13134
+ * NOTE: Scroll events do not bubble.
13135
+ *
13136
+ * @see http://www.quirksmode.org/dom/events/scroll.html
13137
+ */
13138
+ ensureScrollValueMonitoring: function () {
13139
+ if (hasEventPageXY === undefined) {
13140
+ hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();
13141
+ }
13142
+ if (!hasEventPageXY && !isMonitoringScrollValue) {
13143
+ var refresh = ViewportMetrics.refreshScrollValues;
13144
+ ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);
13145
+ isMonitoringScrollValue = true;
13146
+ }
13147
+ }
13148
+
13149
+ });
13150
+
13151
+ module.exports = ReactBrowserEventEmitter;
13152
+
13153
+ /***/ },
13154
+ /* 108 */
13155
+ /***/ function(module, exports, __webpack_require__) {
13156
+
13157
+ /**
13158
+ * Copyright 2013-present, Facebook, Inc.
13159
+ * All rights reserved.
13160
+ *
13161
+ * This source code is licensed under the BSD-style license found in the
13162
+ * LICENSE file in the root directory of this source tree. An additional grant
13163
+ * of patent rights can be found in the PATENTS file in the same directory.
13164
+ *
13165
+ */
13166
+
13167
+ 'use strict';
13168
+
13169
+ var EventPluginHub = __webpack_require__(43);
13170
+
13171
+ function runEventQueueInBatch(events) {
13172
+ EventPluginHub.enqueueEvents(events);
13173
+ EventPluginHub.processEventQueue(false);
13174
+ }
13175
+
13176
+ var ReactEventEmitterMixin = {
13177
+
13178
+ /**
13179
+ * Streams a fired top-level event to `EventPluginHub` where plugins have the
13180
+ * opportunity to create `ReactEvent`s to be dispatched.
13181
+ */
13182
+ handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
13183
+ var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);
13184
+ runEventQueueInBatch(events);
13185
+ }
13186
+ };
13187
+
13188
+ module.exports = ReactEventEmitterMixin;
13189
+
13190
+ /***/ },
13191
+ /* 109 */
13192
+ /***/ function(module, exports, __webpack_require__) {
13193
+
13194
+ /**
13195
+ * Copyright 2013-present, Facebook, Inc.
13196
+ * All rights reserved.
13197
+ *
13198
+ * This source code is licensed under the BSD-style license found in the
13199
+ * LICENSE file in the root directory of this source tree. An additional grant
13200
+ * of patent rights can be found in the PATENTS file in the same directory.
13201
+ *
13202
+ */
13203
+
13204
+ 'use strict';
13205
+
13206
+ var ExecutionEnvironment = __webpack_require__(49);
13207
+
13208
+ /**
13209
+ * Generate a mapping of standard vendor prefixes using the defined style property and event name.
13210
+ *
13211
+ * @param {string} styleProp
13212
+ * @param {string} eventName
13213
+ * @returns {object}
13214
+ */
13215
+ function makePrefixMap(styleProp, eventName) {
13216
+ var prefixes = {};
13217
+
13218
+ prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();
13219
+ prefixes['Webkit' + styleProp] = 'webkit' + eventName;
13220
+ prefixes['Moz' + styleProp] = 'moz' + eventName;
13221
+ prefixes['ms' + styleProp] = 'MS' + eventName;
13222
+ prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();
13223
+
13224
+ return prefixes;
13225
+ }
13226
+
13227
+ /**
13228
+ * A list of event names to a configurable list of vendor prefixes.
13229
+ */
13230
+ var vendorPrefixes = {
13231
+ animationend: makePrefixMap('Animation', 'AnimationEnd'),
13232
+ animationiteration: makePrefixMap('Animation', 'AnimationIteration'),
13233
+ animationstart: makePrefixMap('Animation', 'AnimationStart'),
13234
+ transitionend: makePrefixMap('Transition', 'TransitionEnd')
13235
+ };
13236
+
13237
+ /**
13238
+ * Event names that have already been detected and prefixed (if applicable).
13239
+ */
13240
+ var prefixedEventNames = {};
13241
+
13242
+ /**
13243
+ * Element to check for prefixes on.
13244
+ */
13245
+ var style = {};
13246
+
13247
+ /**
13248
+ * Bootstrap if a DOM exists.
13249
+ */
13250
+ if (ExecutionEnvironment.canUseDOM) {
13251
+ style = document.createElement('div').style;
13252
+
13253
+ // On some platforms, in particular some releases of Android 4.x,
13254
+ // the un-prefixed "animation" and "transition" properties are defined on the
13255
+ // style object but the events that fire will still be prefixed, so we need
13256
+ // to check if the un-prefixed events are usable, and if not remove them from the map.
13257
+ if (!('AnimationEvent' in window)) {
13258
+ delete vendorPrefixes.animationend.animation;
13259
+ delete vendorPrefixes.animationiteration.animation;
13260
+ delete vendorPrefixes.animationstart.animation;
13261
+ }
13262
+
13263
+ // Same as above
13264
+ if (!('TransitionEvent' in window)) {
13265
+ delete vendorPrefixes.transitionend.transition;
13266
+ }
13267
+ }
13268
+
13269
+ /**
13270
+ * Attempts to determine the correct vendor prefixed event name.
13271
+ *
13272
+ * @param {string} eventName
13273
+ * @returns {string}
13274
+ */
13275
+ function getVendorPrefixedEventName(eventName) {
13276
+ if (prefixedEventNames[eventName]) {
13277
+ return prefixedEventNames[eventName];
13278
+ } else if (!vendorPrefixes[eventName]) {
13279
+ return eventName;
13280
+ }
13281
+
13282
+ var prefixMap = vendorPrefixes[eventName];
13283
+
13284
+ for (var styleProp in prefixMap) {
13285
+ if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {
13286
+ return prefixedEventNames[eventName] = prefixMap[styleProp];
13287
+ }
13288
+ }
13289
+
13290
+ return '';
13291
+ }
13292
+
13293
+ module.exports = getVendorPrefixedEventName;
13294
+
13295
+ /***/ },
13296
+ /* 110 */
13297
+ /***/ function(module, exports, __webpack_require__) {
13298
+
13299
+ /* WEBPACK VAR INJECTION */(function(process) {/**
13300
+ * Copyright 2013-present, Facebook, Inc.
13301
+ * All rights reserved.
13302
+ *
13303
+ * This source code is licensed under the BSD-style license found in the
13304
+ * LICENSE file in the root directory of this source tree. An additional grant
13305
+ * of patent rights can be found in the PATENTS file in the same directory.
13306
+ *
13307
+ */
13308
+
13309
+ 'use strict';
13310
+
13311
+ var _prodInvariant = __webpack_require__(36),
13312
+ _assign = __webpack_require__(51);
13313
+
13314
+ var DOMPropertyOperations = __webpack_require__(105);
13315
+ var LinkedValueUtils = __webpack_require__(111);
13316
+ var ReactDOMComponentTree = __webpack_require__(35);
13317
+ var ReactUpdates = __webpack_require__(58);
13318
+
13319
+ var invariant = __webpack_require__(9);
13320
+ var warning = __webpack_require__(12);
13321
+
13322
+ var didWarnValueLink = false;
13323
+ var didWarnCheckedLink = false;
13324
+ var didWarnValueDefaultValue = false;
13325
+ var didWarnCheckedDefaultChecked = false;
13326
+ var didWarnControlledToUncontrolled = false;
13327
+ var didWarnUncontrolledToControlled = false;
13328
+
13329
+ function forceUpdateIfMounted() {
13330
+ if (this._rootNodeID) {
13331
+ // DOM component is still mounted; update
13332
+ ReactDOMInput.updateWrapper(this);
13333
+ }
13334
+ }
13335
+
13336
+ function isControlled(props) {
13337
+ var usesChecked = props.type === 'checkbox' || props.type === 'radio';
13338
+ return usesChecked ? props.checked != null : props.value != null;
13339
+ }
13340
+
13341
+ /**
13342
+ * Implements an <input> host component that allows setting these optional
13343
+ * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.
13344
+ *
13345
+ * If `checked` or `value` are not supplied (or null/undefined), user actions
13346
+ * that affect the checked state or value will trigger updates to the element.
13347
+ *
13348
+ * If they are supplied (and not null/undefined), the rendered element will not
13349
+ * trigger updates to the element. Instead, the props must change in order for
13350
+ * the rendered element to be updated.
13351
+ *
13352
+ * The rendered element will be initialized as unchecked (or `defaultChecked`)
13353
+ * with an empty value (or `defaultValue`).
13354
+ *
13355
+ * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html
13356
+ */
13357
+ var ReactDOMInput = {
13358
+ getHostProps: function (inst, props) {
13359
+ var value = LinkedValueUtils.getValue(props);
13360
+ var checked = LinkedValueUtils.getChecked(props);
13361
+
13362
+ var hostProps = _assign({
13363
+ // Make sure we set .type before any other properties (setting .value
13364
+ // before .type means .value is lost in IE11 and below)
13365
+ type: undefined,
13366
+ // Make sure we set .step before .value (setting .value before .step
13367
+ // means .value is rounded on mount, based upon step precision)
13368
+ step: undefined,
13369
+ // Make sure we set .min & .max before .value (to ensure proper order
13370
+ // in corner cases such as min or max deriving from value, e.g. Issue #7170)
13371
+ min: undefined,
13372
+ max: undefined
13373
+ }, props, {
13374
+ defaultChecked: undefined,
13375
+ defaultValue: undefined,
13376
+ value: value != null ? value : inst._wrapperState.initialValue,
13377
+ checked: checked != null ? checked : inst._wrapperState.initialChecked,
13378
+ onChange: inst._wrapperState.onChange
13379
+ });
13380
+
13381
+ return hostProps;
13382
+ },
13383
+
13384
+ mountWrapper: function (inst, props) {
13385
+ if (process.env.NODE_ENV !== 'production') {
13386
+ LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);
13387
+
13388
+ var owner = inst._currentElement._owner;
13389
+
13390
+ if (props.valueLink !== undefined && !didWarnValueLink) {
13391
+ process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;
13392
+ didWarnValueLink = true;
13393
+ }
13394
+ if (props.checkedLink !== undefined && !didWarnCheckedLink) {
13395
+ process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;
13396
+ didWarnCheckedLink = true;
13397
+ }
13398
+ if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {
13399
+ 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;
13400
+ didWarnCheckedDefaultChecked = true;
13401
+ }
13402
+ if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {
13403
+ 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;
13404
+ didWarnValueDefaultValue = true;
13405
+ }
13406
+ }
13407
+
13408
+ var defaultValue = props.defaultValue;
13409
+ inst._wrapperState = {
13410
+ initialChecked: props.checked != null ? props.checked : props.defaultChecked,
13411
+ initialValue: props.value != null ? props.value : defaultValue,
13412
+ listeners: null,
13413
+ onChange: _handleChange.bind(inst)
13414
+ };
13415
+
13416
+ if (process.env.NODE_ENV !== 'production') {
13417
+ inst._wrapperState.controlled = isControlled(props);
13418
+ }
13419
+ },
13420
+
13421
+ updateWrapper: function (inst) {
13422
+ var props = inst._currentElement.props;
13423
+
13424
+ if (process.env.NODE_ENV !== 'production') {
13425
+ var controlled = isControlled(props);
13426
+ var owner = inst._currentElement._owner;
13427
+
13428
+ if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {
13429
+ 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;
13430
+ didWarnUncontrolledToControlled = true;
13431
+ }
13432
+ if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {
13433
+ 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;
13434
+ didWarnControlledToUncontrolled = true;
13435
+ }
13436
+ }
13437
+
13438
+ // TODO: Shouldn't this be getChecked(props)?
13439
+ var checked = props.checked;
13440
+ if (checked != null) {
13441
+ DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);
13442
+ }
13443
+
13444
+ var node = ReactDOMComponentTree.getNodeFromInstance(inst);
13445
+ var value = LinkedValueUtils.getValue(props);
13446
+ if (value != null) {
13447
+
13448
+ // Cast `value` to a string to ensure the value is set correctly. While
13449
+ // browsers typically do this as necessary, jsdom doesn't.
13450
+ var newValue = '' + value;
13451
+
13452
+ // To avoid side effects (such as losing text selection), only set value if changed
13453
+ if (newValue !== node.value) {
13454
+ node.value = newValue;
13455
+ }
13456
+ } else {
13457
+ if (props.value == null && props.defaultValue != null) {
13458
+ node.defaultValue = '' + props.defaultValue;
13459
+ }
13460
+ if (props.checked == null && props.defaultChecked != null) {
13461
+ node.defaultChecked = !!props.defaultChecked;
13462
+ }
13463
+ }
13464
+ },
13465
+
13466
+ postMountWrapper: function (inst) {
13467
+ var props = inst._currentElement.props;
13468
+
13469
+ // This is in postMount because we need access to the DOM node, which is not
13470
+ // available until after the component has mounted.
13471
+ var node = ReactDOMComponentTree.getNodeFromInstance(inst);
13472
+
13473
+ // Detach value from defaultValue. We won't do anything if we're working on
13474
+ // submit or reset inputs as those values & defaultValues are linked. They
13475
+ // are not resetable nodes so this operation doesn't matter and actually
13476
+ // removes browser-default values (eg "Submit Query") when no value is
13477
+ // provided.
13478
+
13479
+ switch (props.type) {
13480
+ case 'submit':
13481
+ case 'reset':
13482
+ break;
13483
+ case 'color':
13484
+ case 'date':
13485
+ case 'datetime':
13486
+ case 'datetime-local':
13487
+ case 'month':
13488
+ case 'time':
13489
+ case 'week':
13490
+ // This fixes the no-show issue on iOS Safari and Android Chrome:
13491
+ // https://github.com/facebook/react/issues/7233
13492
+ node.value = '';
13493
+ node.value = node.defaultValue;
13494
+ break;
13495
+ default:
13496
+ node.value = node.value;
13497
+ break;
13498
+ }
13499
+
13500
+ // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug
13501
+ // this is needed to work around a chrome bug where setting defaultChecked
13502
+ // will sometimes influence the value of checked (even after detachment).
13503
+ // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416
13504
+ // We need to temporarily unset name to avoid disrupting radio button groups.
13505
+ var name = node.name;
13506
+ if (name !== '') {
13507
+ node.name = '';
13508
+ }
13509
+ node.defaultChecked = !node.defaultChecked;
13510
+ node.defaultChecked = !node.defaultChecked;
13511
+ if (name !== '') {
13512
+ node.name = name;
13513
+ }
13514
+ }
13515
+ };
13516
+
13517
+ function _handleChange(event) {
13518
+ var props = this._currentElement.props;
13519
+
13520
+ var returnValue = LinkedValueUtils.executeOnChange(props, event);
13521
+
13522
+ // Here we use asap to wait until all updates have propagated, which
13523
+ // is important when using controlled components within layers:
13524
+ // https://github.com/facebook/react/issues/1698
13525
+ ReactUpdates.asap(forceUpdateIfMounted, this);
13526
+
13527
+ var name = props.name;
13528
+ if (props.type === 'radio' && name != null) {
13529
+ var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);
13530
+ var queryRoot = rootNode;
13531
+
13532
+ while (queryRoot.parentNode) {
13533
+ queryRoot = queryRoot.parentNode;
13534
+ }
13535
+
13536
+ // If `rootNode.form` was non-null, then we could try `form.elements`,
13537
+ // but that sometimes behaves strangely in IE8. We could also try using
13538
+ // `form.getElementsByName`, but that will only return direct children
13539
+ // and won't include inputs that use the HTML5 `form=` attribute. Since
13540
+ // the input might not even be in a form, let's just use the global
13541
+ // `querySelectorAll` to ensure we don't miss anything.
13542
+ var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type="radio"]');
13543
+
13544
+ for (var i = 0; i < group.length; i++) {
13545
+ var otherNode = group[i];
13546
+ if (otherNode === rootNode || otherNode.form !== rootNode.form) {
13547
+ continue;
13548
+ }
13549
+ // This will throw if radio buttons rendered by different copies of React
13550
+ // and the same name are rendered into the same form (same as #1939).
13551
+ // That's probably okay; we don't support it just as we don't support
13552
+ // mixing React radio buttons with non-React ones.
13553
+ var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);
13554
+ !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;
13555
+ // If this is a controlled radio button group, forcing the input that
13556
+ // was previously checked to update will cause it to be come re-checked
13557
+ // as appropriate.
13558
+ ReactUpdates.asap(forceUpdateIfMounted, otherInstance);
13559
+ }
13560
+ }
13561
+
13562
+ return returnValue;
13563
+ }
13564
+
13565
+ module.exports = ReactDOMInput;
13566
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
13567
+
13568
+ /***/ },
13569
+ /* 111 */
13570
+ /***/ function(module, exports, __webpack_require__) {
13571
+
13572
+ /* WEBPACK VAR INJECTION */(function(process) {/**
13573
+ * Copyright 2013-present, Facebook, Inc.
13574
+ * All rights reserved.
13575
+ *
13576
+ * This source code is licensed under the BSD-style license found in the
13577
+ * LICENSE file in the root directory of this source tree. An additional grant
13578
+ * of patent rights can be found in the PATENTS file in the same directory.
13579
+ *
13580
+ */
13581
+
13582
+ 'use strict';
13583
+
13584
+ var _prodInvariant = __webpack_require__(36);
13585
+
13586
+ var React = __webpack_require__(3);
13587
+ var ReactPropTypesSecret = __webpack_require__(112);
13588
+
13589
+ var invariant = __webpack_require__(9);
13590
+ var warning = __webpack_require__(12);
13591
+
13592
+ var hasReadOnlyValue = {
13593
+ 'button': true,
13594
+ 'checkbox': true,
13595
+ 'image': true,
13596
+ 'hidden': true,
13597
+ 'radio': true,
13598
+ 'reset': true,
13599
+ 'submit': true
13600
+ };
13601
+
13602
+ function _assertSingleLink(inputProps) {
13603
+ !(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;
13604
+ }
13605
+ function _assertValueLink(inputProps) {
13606
+ _assertSingleLink(inputProps);
13607
+ !(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;
13608
+ }
13609
+
13610
+ function _assertCheckedLink(inputProps) {
13611
+ _assertSingleLink(inputProps);
13612
+ !(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;
13613
+ }
13614
+
13615
+ var propTypes = {
13616
+ value: function (props, propName, componentName) {
13617
+ if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {
13618
+ return null;
13619
+ }
13620
+ 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`.');
13621
+ },
13622
+ checked: function (props, propName, componentName) {
13623
+ if (!props[propName] || props.onChange || props.readOnly || props.disabled) {
13624
+ return null;
13625
+ }
13626
+ 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`.');
13627
+ },
13628
+ onChange: React.PropTypes.func
13629
+ };
13630
+
13631
+ var loggedTypeFailures = {};
13632
+ function getDeclarationErrorAddendum(owner) {
13633
+ if (owner) {
13634
+ var name = owner.getName();
13635
+ if (name) {
13636
+ return ' Check the render method of `' + name + '`.';
13637
+ }
13638
+ }
13639
+ return '';
13640
+ }
13641
+
13642
+ /**
13643
+ * Provide a linked `value` attribute for controlled forms. You should not use
13644
+ * this outside of the ReactDOM controlled form components.
13645
+ */
13646
+ var LinkedValueUtils = {
13647
+ checkPropTypes: function (tagName, props, owner) {
13648
+ for (var propName in propTypes) {
13649
+ if (propTypes.hasOwnProperty(propName)) {
13650
+ var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);
13651
+ }
13652
+ if (error instanceof Error && !(error.message in loggedTypeFailures)) {
13653
+ // Only monitor this failure once because there tends to be a lot of the
13654
+ // same error.
13655
+ loggedTypeFailures[error.message] = true;
13656
+
13657
+ var addendum = getDeclarationErrorAddendum(owner);
13658
+ process.env.NODE_ENV !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;
13659
+ }
13660
+ }
13661
+ },
13662
+
13663
+ /**
13664
+ * @param {object} inputProps Props for form component
13665
+ * @return {*} current value of the input either from value prop or link.
13666
+ */
13667
+ getValue: function (inputProps) {
13668
+ if (inputProps.valueLink) {
13669
+ _assertValueLink(inputProps);
13670
+ return inputProps.valueLink.value;
13671
+ }
13672
+ return inputProps.value;
13673
+ },
13674
+
13675
+ /**
13676
+ * @param {object} inputProps Props for form component
13677
+ * @return {*} current checked status of the input either from checked prop
13678
+ * or link.
13679
+ */
13680
+ getChecked: function (inputProps) {
13681
+ if (inputProps.checkedLink) {
13682
+ _assertCheckedLink(inputProps);
13683
+ return inputProps.checkedLink.value;
13684
+ }
13685
+ return inputProps.checked;
13686
+ },
13687
+
13688
+ /**
13689
+ * @param {object} inputProps Props for form component
13690
+ * @param {SyntheticEvent} event change event to handle
13691
+ */
13692
+ executeOnChange: function (inputProps, event) {
13693
+ if (inputProps.valueLink) {
13694
+ _assertValueLink(inputProps);
13695
+ return inputProps.valueLink.requestChange(event.target.value);
13696
+ } else if (inputProps.checkedLink) {
13697
+ _assertCheckedLink(inputProps);
13698
+ return inputProps.checkedLink.requestChange(event.target.checked);
13699
+ } else if (inputProps.onChange) {
13700
+ return inputProps.onChange.call(undefined, event);
13701
+ }
13702
+ }
13703
+ };
13704
+
13705
+ module.exports = LinkedValueUtils;
13706
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
13707
+
13708
+ /***/ },
13709
+ /* 112 */
13710
+ /***/ function(module, exports) {
13711
+
13712
+ /**
13713
+ * Copyright 2013-present, Facebook, Inc.
13714
+ * All rights reserved.
13715
+ *
13716
+ * This source code is licensed under the BSD-style license found in the
13717
+ * LICENSE file in the root directory of this source tree. An additional grant
13718
+ * of patent rights can be found in the PATENTS file in the same directory.
13719
+ *
13720
+ *
13721
+ */
13722
+
13723
+ 'use strict';
13724
+
13725
+ var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
13726
+
13727
+ module.exports = ReactPropTypesSecret;
13728
+
13729
+ /***/ },
13730
+ /* 113 */
13731
+ /***/ function(module, exports, __webpack_require__) {
13732
+
13733
+ /* WEBPACK VAR INJECTION */(function(process) {/**
13734
+ * Copyright 2013-present, Facebook, Inc.
13735
+ * All rights reserved.
13736
+ *
13737
+ * This source code is licensed under the BSD-style license found in the
13738
+ * LICENSE file in the root directory of this source tree. An additional grant
13739
+ * of patent rights can be found in the PATENTS file in the same directory.
13740
+ *
13741
+ */
13742
+
13743
+ 'use strict';
13744
+
13745
+ var _assign = __webpack_require__(51);
13746
+
13747
+ var React = __webpack_require__(3);
13748
+ var ReactDOMComponentTree = __webpack_require__(35);
13749
+ var ReactDOMSelect = __webpack_require__(114);
13750
+
13751
+ var warning = __webpack_require__(12);
13752
+ var didWarnInvalidOptionChildren = false;
13753
+
13754
+ function flattenChildren(children) {
13755
+ var content = '';
13756
+
13757
+ // Flatten children and warn if they aren't strings or numbers;
13758
+ // invalid types are ignored.
13759
+ React.Children.forEach(children, function (child) {
13760
+ if (child == null) {
13761
+ return;
13762
+ }
13763
+ if (typeof child === 'string' || typeof child === 'number') {
13764
+ content += child;
13765
+ } else if (!didWarnInvalidOptionChildren) {
13766
+ didWarnInvalidOptionChildren = true;
13767
+ process.env.NODE_ENV !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;
13768
+ }
13769
+ });
13770
+
13771
+ return content;
13772
+ }
13773
+
13774
+ /**
13775
+ * Implements an <option> host component that warns when `selected` is set.
13776
+ */
13777
+ var ReactDOMOption = {
13778
+ mountWrapper: function (inst, props, hostParent) {
13779
+ // TODO (yungsters): Remove support for `selected` in <option>.
13780
+ if (process.env.NODE_ENV !== 'production') {
13781
+ 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;
13782
+ }
13783
+
13784
+ // Look up whether this option is 'selected'
13785
+ var selectValue = null;
13786
+ if (hostParent != null) {
13787
+ var selectParent = hostParent;
13788
+
13789
+ if (selectParent._tag === 'optgroup') {
13790
+ selectParent = selectParent._hostParent;
13791
+ }
13792
+
13793
+ if (selectParent != null && selectParent._tag === 'select') {
13794
+ selectValue = ReactDOMSelect.getSelectValueContext(selectParent);
13795
+ }
13796
+ }
13797
+
13798
+ // If the value is null (e.g., no specified value or after initial mount)
13799
+ // or missing (e.g., for <datalist>), we don't change props.selected
13800
+ var selected = null;
13801
+ if (selectValue != null) {
13802
+ var value;
13803
+ if (props.value != null) {
13804
+ value = props.value + '';
13805
+ } else {
13806
+ value = flattenChildren(props.children);
13807
+ }
13808
+ selected = false;
13809
+ if (Array.isArray(selectValue)) {
13810
+ // multiple
13811
+ for (var i = 0; i < selectValue.length; i++) {
13812
+ if ('' + selectValue[i] === value) {
13813
+ selected = true;
13814
+ break;
13815
+ }
13816
+ }
13817
+ } else {
13818
+ selected = '' + selectValue === value;
13819
+ }
13820
+ }
13821
+
13822
+ inst._wrapperState = { selected: selected };
13823
+ },
13824
+
13825
+ postMountWrapper: function (inst) {
13826
+ // value="" should make a value attribute (#6219)
13827
+ var props = inst._currentElement.props;
13828
+ if (props.value != null) {
13829
+ var node = ReactDOMComponentTree.getNodeFromInstance(inst);
13830
+ node.setAttribute('value', props.value);
13831
+ }
13832
+ },
13833
+
13834
+ getHostProps: function (inst, props) {
13835
+ var hostProps = _assign({ selected: undefined, children: undefined }, props);
13836
+
13837
+ // Read state only from initial mount because <select> updates value
13838
+ // manually; we need the initial state only for server rendering
13839
+ if (inst._wrapperState.selected != null) {
13840
+ hostProps.selected = inst._wrapperState.selected;
13841
+ }
13842
+
13843
+ var content = flattenChildren(props.children);
13844
+
13845
+ if (content) {
13846
+ hostProps.children = content;
13847
+ }
13848
+
13849
+ return hostProps;
13850
+ }
13851
+
13852
+ };
13853
+
13854
+ module.exports = ReactDOMOption;
13855
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
13856
+
13857
+ /***/ },
13858
+ /* 114 */
13859
+ /***/ function(module, exports, __webpack_require__) {
13860
+
13861
+ /* WEBPACK VAR INJECTION */(function(process) {/**
13862
+ * Copyright 2013-present, Facebook, Inc.
13863
+ * All rights reserved.
13864
+ *
13865
+ * This source code is licensed under the BSD-style license found in the
13866
+ * LICENSE file in the root directory of this source tree. An additional grant
13867
+ * of patent rights can be found in the PATENTS file in the same directory.
13868
+ *
13869
+ */
13870
+
13871
+ 'use strict';
13872
+
13873
+ var _assign = __webpack_require__(51);
13874
+
13875
+ var LinkedValueUtils = __webpack_require__(111);
13876
+ var ReactDOMComponentTree = __webpack_require__(35);
13877
+ var ReactUpdates = __webpack_require__(58);
13878
+
13879
+ var warning = __webpack_require__(12);
13880
+
13881
+ var didWarnValueLink = false;
13882
+ var didWarnValueDefaultValue = false;
13883
+
13884
+ function updateOptionsIfPendingUpdateAndMounted() {
13885
+ if (this._rootNodeID && this._wrapperState.pendingUpdate) {
13886
+ this._wrapperState.pendingUpdate = false;
13887
+
13888
+ var props = this._currentElement.props;
13889
+ var value = LinkedValueUtils.getValue(props);
13890
+
13891
+ if (value != null) {
13892
+ updateOptions(this, Boolean(props.multiple), value);
13893
+ }
13894
+ }
13895
+ }
13896
+
13897
+ function getDeclarationErrorAddendum(owner) {
13898
+ if (owner) {
13899
+ var name = owner.getName();
13900
+ if (name) {
13901
+ return ' Check the render method of `' + name + '`.';
13902
+ }
13903
+ }
13904
+ return '';
13905
+ }
13906
+
13907
+ var valuePropNames = ['value', 'defaultValue'];
13908
+
13909
+ /**
13910
+ * Validation function for `value` and `defaultValue`.
13911
+ * @private
13912
+ */
13913
+ function checkSelectPropTypes(inst, props) {
13914
+ var owner = inst._currentElement._owner;
13915
+ LinkedValueUtils.checkPropTypes('select', props, owner);
13916
+
13917
+ if (props.valueLink !== undefined && !didWarnValueLink) {
13918
+ process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;
13919
+ didWarnValueLink = true;
13920
+ }
13921
+
13922
+ for (var i = 0; i < valuePropNames.length; i++) {
13923
+ var propName = valuePropNames[i];
13924
+ if (props[propName] == null) {
13925
+ continue;
13926
+ }
13927
+ var isArray = Array.isArray(props[propName]);
13928
+ if (props.multiple && !isArray) {
13929
+ 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;
13930
+ } else if (!props.multiple && isArray) {
13931
+ 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;
13932
+ }
13933
+ }
13934
+ }
13935
+
13936
+ /**
13937
+ * @param {ReactDOMComponent} inst
13938
+ * @param {boolean} multiple
13939
+ * @param {*} propValue A stringable (with `multiple`, a list of stringables).
13940
+ * @private
13941
+ */
13942
+ function updateOptions(inst, multiple, propValue) {
13943
+ var selectedValue, i;
13944
+ var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;
13945
+
13946
+ if (multiple) {
13947
+ selectedValue = {};
13948
+ for (i = 0; i < propValue.length; i++) {
13949
+ selectedValue['' + propValue[i]] = true;
13950
+ }
13951
+ for (i = 0; i < options.length; i++) {
13952
+ var selected = selectedValue.hasOwnProperty(options[i].value);
13953
+ if (options[i].selected !== selected) {
13954
+ options[i].selected = selected;
13955
+ }
13956
+ }
13957
+ } else {
13958
+ // Do not set `select.value` as exact behavior isn't consistent across all
13959
+ // browsers for all cases.
13960
+ selectedValue = '' + propValue;
13961
+ for (i = 0; i < options.length; i++) {
13962
+ if (options[i].value === selectedValue) {
13963
+ options[i].selected = true;
13964
+ return;
13965
+ }
13966
+ }
13967
+ if (options.length) {
13968
+ options[0].selected = true;
13969
+ }
13970
+ }
13971
+ }
13972
+
13973
+ /**
13974
+ * Implements a <select> host component that allows optionally setting the
13975
+ * props `value` and `defaultValue`. If `multiple` is false, the prop must be a
13976
+ * stringable. If `multiple` is true, the prop must be an array of stringables.
13977
+ *
13978
+ * If `value` is not supplied (or null/undefined), user actions that change the
13979
+ * selected option will trigger updates to the rendered options.
13980
+ *
13981
+ * If it is supplied (and not null/undefined), the rendered options will not
13982
+ * update in response to user actions. Instead, the `value` prop must change in
13983
+ * order for the rendered options to update.
13984
+ *
13985
+ * If `defaultValue` is provided, any options with the supplied values will be
13986
+ * selected.
13987
+ */
13988
+ var ReactDOMSelect = {
13989
+ getHostProps: function (inst, props) {
13990
+ return _assign({}, props, {
13991
+ onChange: inst._wrapperState.onChange,
13992
+ value: undefined
13993
+ });
13994
+ },
13995
+
13996
+ mountWrapper: function (inst, props) {
13997
+ if (process.env.NODE_ENV !== 'production') {
13998
+ checkSelectPropTypes(inst, props);
13999
+ }
14000
+
14001
+ var value = LinkedValueUtils.getValue(props);
14002
+ inst._wrapperState = {
14003
+ pendingUpdate: false,
14004
+ initialValue: value != null ? value : props.defaultValue,
14005
+ listeners: null,
14006
+ onChange: _handleChange.bind(inst),
14007
+ wasMultiple: Boolean(props.multiple)
14008
+ };
14009
+
14010
+ if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {
14011
+ 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;
14012
+ didWarnValueDefaultValue = true;
14013
+ }
14014
+ },
14015
+
14016
+ getSelectValueContext: function (inst) {
14017
+ // ReactDOMOption looks at this initial value so the initial generated
14018
+ // markup has correct `selected` attributes
14019
+ return inst._wrapperState.initialValue;
14020
+ },
14021
+
14022
+ postUpdateWrapper: function (inst) {
14023
+ var props = inst._currentElement.props;
14024
+
14025
+ // After the initial mount, we control selected-ness manually so don't pass
14026
+ // this value down
14027
+ inst._wrapperState.initialValue = undefined;
14028
+
14029
+ var wasMultiple = inst._wrapperState.wasMultiple;
14030
+ inst._wrapperState.wasMultiple = Boolean(props.multiple);
14031
+
14032
+ var value = LinkedValueUtils.getValue(props);
14033
+ if (value != null) {
14034
+ inst._wrapperState.pendingUpdate = false;
14035
+ updateOptions(inst, Boolean(props.multiple), value);
14036
+ } else if (wasMultiple !== Boolean(props.multiple)) {
14037
+ // For simplicity, reapply `defaultValue` if `multiple` is toggled.
14038
+ if (props.defaultValue != null) {
14039
+ updateOptions(inst, Boolean(props.multiple), props.defaultValue);
14040
+ } else {
14041
+ // Revert the select back to its default unselected state.
14042
+ updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');
14043
+ }
14044
+ }
14045
+ }
14046
+ };
14047
+
14048
+ function _handleChange(event) {
14049
+ var props = this._currentElement.props;
14050
+ var returnValue = LinkedValueUtils.executeOnChange(props, event);
14051
+
14052
+ if (this._rootNodeID) {
14053
+ this._wrapperState.pendingUpdate = true;
14054
+ }
14055
+ ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);
14056
+ return returnValue;
14057
+ }
14058
+
14059
+ module.exports = ReactDOMSelect;
14060
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
14061
+
14062
+ /***/ },
14063
+ /* 115 */
14064
+ /***/ function(module, exports, __webpack_require__) {
14065
+
14066
+ /* WEBPACK VAR INJECTION */(function(process) {/**
14067
+ * Copyright 2013-present, Facebook, Inc.
14068
+ * All rights reserved.
14069
+ *
14070
+ * This source code is licensed under the BSD-style license found in the
14071
+ * LICENSE file in the root directory of this source tree. An additional grant
14072
+ * of patent rights can be found in the PATENTS file in the same directory.
14073
+ *
14074
+ */
14075
+
14076
+ 'use strict';
14077
+
14078
+ var _prodInvariant = __webpack_require__(36),
14079
+ _assign = __webpack_require__(51);
14080
+
14081
+ var LinkedValueUtils = __webpack_require__(111);
14082
+ var ReactDOMComponentTree = __webpack_require__(35);
14083
+ var ReactUpdates = __webpack_require__(58);
14084
+
14085
+ var invariant = __webpack_require__(9);
14086
+ var warning = __webpack_require__(12);
14087
+
14088
+ var didWarnValueLink = false;
14089
+ var didWarnValDefaultVal = false;
14090
+
14091
+ function forceUpdateIfMounted() {
14092
+ if (this._rootNodeID) {
14093
+ // DOM component is still mounted; update
14094
+ ReactDOMTextarea.updateWrapper(this);
14095
+ }
14096
+ }
14097
+
14098
+ /**
14099
+ * Implements a <textarea> host component that allows setting `value`, and
14100
+ * `defaultValue`. This differs from the traditional DOM API because value is
14101
+ * usually set as PCDATA children.
14102
+ *
14103
+ * If `value` is not supplied (or null/undefined), user actions that affect the
14104
+ * value will trigger updates to the element.
14105
+ *
14106
+ * If `value` is supplied (and not null/undefined), the rendered element will
14107
+ * not trigger updates to the element. Instead, the `value` prop must change in
14108
+ * order for the rendered element to be updated.
14109
+ *
14110
+ * The rendered element will be initialized with an empty value, the prop
14111
+ * `defaultValue` if specified, or the children content (deprecated).
14112
+ */
14113
+ var ReactDOMTextarea = {
14114
+ getHostProps: function (inst, props) {
14115
+ !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;
14116
+
14117
+ // Always set children to the same thing. In IE9, the selection range will
14118
+ // get reset if `textContent` is mutated. We could add a check in setTextContent
14119
+ // to only set the value if/when the value differs from the node value (which would
14120
+ // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.
14121
+ // The value can be a boolean or object so that's why it's forced to be a string.
14122
+ var hostProps = _assign({}, props, {
14123
+ value: undefined,
14124
+ defaultValue: undefined,
14125
+ children: '' + inst._wrapperState.initialValue,
14126
+ onChange: inst._wrapperState.onChange
14127
+ });
14128
+
14129
+ return hostProps;
14130
+ },
14131
+
14132
+ mountWrapper: function (inst, props) {
14133
+ if (process.env.NODE_ENV !== 'production') {
14134
+ LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);
14135
+ if (props.valueLink !== undefined && !didWarnValueLink) {
14136
+ process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;
14137
+ didWarnValueLink = true;
14138
+ }
14139
+ if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {
14140
+ 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;
14141
+ didWarnValDefaultVal = true;
14142
+ }
14143
+ }
14144
+
14145
+ var value = LinkedValueUtils.getValue(props);
14146
+ var initialValue = value;
14147
+
14148
+ // Only bother fetching default value if we're going to use it
14149
+ if (value == null) {
14150
+ var defaultValue = props.defaultValue;
14151
+ // TODO (yungsters): Remove support for children content in <textarea>.
14152
+ var children = props.children;
14153
+ if (children != null) {
14154
+ if (process.env.NODE_ENV !== 'production') {
14155
+ process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;
14156
+ }
14157
+ !(defaultValue == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;
14158
+ if (Array.isArray(children)) {
14159
+ !(children.length <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;
14160
+ children = children[0];
14161
+ }
14162
+
14163
+ defaultValue = '' + children;
14164
+ }
14165
+ if (defaultValue == null) {
14166
+ defaultValue = '';
14167
+ }
14168
+ initialValue = defaultValue;
14169
+ }
14170
+
14171
+ inst._wrapperState = {
14172
+ initialValue: '' + initialValue,
14173
+ listeners: null,
14174
+ onChange: _handleChange.bind(inst)
14175
+ };
14176
+ },
14177
+
14178
+ updateWrapper: function (inst) {
14179
+ var props = inst._currentElement.props;
14180
+
14181
+ var node = ReactDOMComponentTree.getNodeFromInstance(inst);
14182
+ var value = LinkedValueUtils.getValue(props);
14183
+ if (value != null) {
14184
+ // Cast `value` to a string to ensure the value is set correctly. While
14185
+ // browsers typically do this as necessary, jsdom doesn't.
14186
+ var newValue = '' + value;
14187
+
14188
+ // To avoid side effects (such as losing text selection), only set value if changed
14189
+ if (newValue !== node.value) {
14190
+ node.value = newValue;
14191
+ }
14192
+ if (props.defaultValue == null) {
14193
+ node.defaultValue = newValue;
14194
+ }
14195
+ }
14196
+ if (props.defaultValue != null) {
14197
+ node.defaultValue = props.defaultValue;
14198
+ }
14199
+ },
14200
+
14201
+ postMountWrapper: function (inst) {
14202
+ // This is in postMount because we need access to the DOM node, which is not
14203
+ // available until after the component has mounted.
14204
+ var node = ReactDOMComponentTree.getNodeFromInstance(inst);
14205
+
14206
+ // Warning: node.value may be the empty string at this point (IE11) if placeholder is set.
14207
+ node.value = node.textContent; // Detach value from defaultValue
14208
+ }
14209
+ };
14210
+
14211
+ function _handleChange(event) {
14212
+ var props = this._currentElement.props;
14213
+ var returnValue = LinkedValueUtils.executeOnChange(props, event);
14214
+ ReactUpdates.asap(forceUpdateIfMounted, this);
14215
+ return returnValue;
14216
+ }
14217
+
14218
+ module.exports = ReactDOMTextarea;
14219
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
14220
+
14221
+ /***/ },
14222
+ /* 116 */
14223
+ /***/ function(module, exports, __webpack_require__) {
14224
+
14225
+ /* WEBPACK VAR INJECTION */(function(process) {/**
14226
+ * Copyright 2013-present, Facebook, Inc.
14227
+ * All rights reserved.
14228
+ *
14229
+ * This source code is licensed under the BSD-style license found in the
14230
+ * LICENSE file in the root directory of this source tree. An additional grant
14231
+ * of patent rights can be found in the PATENTS file in the same directory.
14232
+ *
14233
+ */
14234
+
14235
+ 'use strict';
14236
+
14237
+ var _prodInvariant = __webpack_require__(36);
14238
+
14239
+ var ReactComponentEnvironment = __webpack_require__(117);
14240
+ var ReactInstanceMap = __webpack_require__(118);
14241
+ var ReactInstrumentation = __webpack_require__(64);
14242
+
14243
+ var ReactCurrentOwner = __webpack_require__(11);
14244
+ var ReactReconciler = __webpack_require__(61);
14245
+ var ReactChildReconciler = __webpack_require__(119);
14246
+
14247
+ var emptyFunction = __webpack_require__(13);
14248
+ var flattenChildren = __webpack_require__(134);
14249
+ var invariant = __webpack_require__(9);
14250
+
14251
+ /**
14252
+ * Make an update for markup to be rendered and inserted at a supplied index.
14253
+ *
14254
+ * @param {string} markup Markup that renders into an element.
14255
+ * @param {number} toIndex Destination index.
14256
+ * @private
14257
+ */
14258
+ function makeInsertMarkup(markup, afterNode, toIndex) {
14259
+ // NOTE: Null values reduce hidden classes.
14260
+ return {
14261
+ type: 'INSERT_MARKUP',
14262
+ content: markup,
14263
+ fromIndex: null,
14264
+ fromNode: null,
14265
+ toIndex: toIndex,
14266
+ afterNode: afterNode
14267
+ };
14268
+ }
14269
+
14270
+ /**
14271
+ * Make an update for moving an existing element to another index.
14272
+ *
14273
+ * @param {number} fromIndex Source index of the existing element.
14274
+ * @param {number} toIndex Destination index of the element.
14275
+ * @private
14276
+ */
14277
+ function makeMove(child, afterNode, toIndex) {
14278
+ // NOTE: Null values reduce hidden classes.
14279
+ return {
14280
+ type: 'MOVE_EXISTING',
14281
+ content: null,
14282
+ fromIndex: child._mountIndex,
14283
+ fromNode: ReactReconciler.getHostNode(child),
14284
+ toIndex: toIndex,
14285
+ afterNode: afterNode
14286
+ };
14287
+ }
14288
+
14289
+ /**
14290
+ * Make an update for removing an element at an index.
14291
+ *
14292
+ * @param {number} fromIndex Index of the element to remove.
14293
+ * @private
14294
+ */
14295
+ function makeRemove(child, node) {
14296
+ // NOTE: Null values reduce hidden classes.
14297
+ return {
14298
+ type: 'REMOVE_NODE',
14299
+ content: null,
14300
+ fromIndex: child._mountIndex,
14301
+ fromNode: node,
14302
+ toIndex: null,
14303
+ afterNode: null
14304
+ };
14305
+ }
14306
+
14307
+ /**
14308
+ * Make an update for setting the markup of a node.
14309
+ *
14310
+ * @param {string} markup Markup that renders into an element.
14311
+ * @private
14312
+ */
14313
+ function makeSetMarkup(markup) {
14314
+ // NOTE: Null values reduce hidden classes.
14315
+ return {
14316
+ type: 'SET_MARKUP',
14317
+ content: markup,
14318
+ fromIndex: null,
14319
+ fromNode: null,
14320
+ toIndex: null,
14321
+ afterNode: null
14322
+ };
14323
+ }
14324
+
14325
+ /**
14326
+ * Make an update for setting the text content.
14327
+ *
14328
+ * @param {string} textContent Text content to set.
14329
+ * @private
14330
+ */
14331
+ function makeTextContent(textContent) {
14332
+ // NOTE: Null values reduce hidden classes.
14333
+ return {
14334
+ type: 'TEXT_CONTENT',
14335
+ content: textContent,
14336
+ fromIndex: null,
14337
+ fromNode: null,
14338
+ toIndex: null,
14339
+ afterNode: null
14340
+ };
14341
+ }
14342
+
14343
+ /**
14344
+ * Push an update, if any, onto the queue. Creates a new queue if none is
14345
+ * passed and always returns the queue. Mutative.
14346
+ */
14347
+ function enqueue(queue, update) {
14348
+ if (update) {
14349
+ queue = queue || [];
14350
+ queue.push(update);
14351
+ }
14352
+ return queue;
14353
+ }
14354
+
14355
+ /**
14356
+ * Processes any enqueued updates.
14357
+ *
14358
+ * @private
14359
+ */
14360
+ function processQueue(inst, updateQueue) {
14361
+ ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);
14362
+ }
14363
+
14364
+ var setChildrenForInstrumentation = emptyFunction;
14365
+ if (process.env.NODE_ENV !== 'production') {
14366
+ var getDebugID = function (inst) {
14367
+ if (!inst._debugID) {
14368
+ // Check for ART-like instances. TODO: This is silly/gross.
14369
+ var internal;
14370
+ if (internal = ReactInstanceMap.get(inst)) {
14371
+ inst = internal;
14372
+ }
14373
+ }
14374
+ return inst._debugID;
14375
+ };
14376
+ setChildrenForInstrumentation = function (children) {
14377
+ var debugID = getDebugID(this);
14378
+ // TODO: React Native empty components are also multichild.
14379
+ // This means they still get into this method but don't have _debugID.
14380
+ if (debugID !== 0) {
14381
+ ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {
14382
+ return children[key]._debugID;
14383
+ }) : []);
14384
+ }
14385
+ };
14386
+ }
14387
+
14388
+ /**
14389
+ * ReactMultiChild are capable of reconciling multiple children.
14390
+ *
14391
+ * @class ReactMultiChild
14392
+ * @internal
14393
+ */
14394
+ var ReactMultiChild = {
14395
+
14396
+ /**
14397
+ * Provides common functionality for components that must reconcile multiple
14398
+ * children. This is used by `ReactDOMComponent` to mount, update, and
14399
+ * unmount child components.
14400
+ *
14401
+ * @lends {ReactMultiChild.prototype}
14402
+ */
14403
+ Mixin: {
14404
+
14405
+ _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {
14406
+ if (process.env.NODE_ENV !== 'production') {
14407
+ var selfDebugID = getDebugID(this);
14408
+ if (this._currentElement) {
14409
+ try {
14410
+ ReactCurrentOwner.current = this._currentElement._owner;
14411
+ return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);
14412
+ } finally {
14413
+ ReactCurrentOwner.current = null;
14414
+ }
14415
+ }
14416
+ }
14417
+ return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);
14418
+ },
14419
+
14420
+ _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {
14421
+ var nextChildren;
14422
+ var selfDebugID = 0;
14423
+ if (process.env.NODE_ENV !== 'production') {
14424
+ selfDebugID = getDebugID(this);
14425
+ if (this._currentElement) {
14426
+ try {
14427
+ ReactCurrentOwner.current = this._currentElement._owner;
14428
+ nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);
14429
+ } finally {
14430
+ ReactCurrentOwner.current = null;
14431
+ }
14432
+ ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);
14433
+ return nextChildren;
14434
+ }
14435
+ }
14436
+ nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);
14437
+ ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);
14438
+ return nextChildren;
14439
+ },
14440
+
14441
+ /**
14442
+ * Generates a "mount image" for each of the supplied children. In the case
14443
+ * of `ReactDOMComponent`, a mount image is a string of markup.
14444
+ *
14445
+ * @param {?object} nestedChildren Nested child maps.
14446
+ * @return {array} An array of mounted representations.
14447
+ * @internal
14448
+ */
14449
+ mountChildren: function (nestedChildren, transaction, context) {
14450
+ var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);
14451
+ this._renderedChildren = children;
14452
+
14453
+ var mountImages = [];
14454
+ var index = 0;
14455
+ for (var name in children) {
14456
+ if (children.hasOwnProperty(name)) {
14457
+ var child = children[name];
14458
+ var selfDebugID = 0;
14459
+ if (process.env.NODE_ENV !== 'production') {
14460
+ selfDebugID = getDebugID(this);
14461
+ }
14462
+ var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);
14463
+ child._mountIndex = index++;
14464
+ mountImages.push(mountImage);
14465
+ }
14466
+ }
14467
+
14468
+ if (process.env.NODE_ENV !== 'production') {
14469
+ setChildrenForInstrumentation.call(this, children);
14470
+ }
14471
+
14472
+ return mountImages;
14473
+ },
14474
+
14475
+ /**
14476
+ * Replaces any rendered children with a text content string.
14477
+ *
14478
+ * @param {string} nextContent String of content.
14479
+ * @internal
14480
+ */
14481
+ updateTextContent: function (nextContent) {
14482
+ var prevChildren = this._renderedChildren;
14483
+ // Remove any rendered children.
14484
+ ReactChildReconciler.unmountChildren(prevChildren, false);
14485
+ for (var name in prevChildren) {
14486
+ if (prevChildren.hasOwnProperty(name)) {
14487
+ true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;
14488
+ }
14489
+ }
14490
+ // Set new text content.
14491
+ var updates = [makeTextContent(nextContent)];
14492
+ processQueue(this, updates);
14493
+ },
14494
+
14495
+ /**
14496
+ * Replaces any rendered children with a markup string.
14497
+ *
14498
+ * @param {string} nextMarkup String of markup.
14499
+ * @internal
14500
+ */
14501
+ updateMarkup: function (nextMarkup) {
14502
+ var prevChildren = this._renderedChildren;
14503
+ // Remove any rendered children.
14504
+ ReactChildReconciler.unmountChildren(prevChildren, false);
14505
+ for (var name in prevChildren) {
14506
+ if (prevChildren.hasOwnProperty(name)) {
14507
+ true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;
14508
+ }
14509
+ }
14510
+ var updates = [makeSetMarkup(nextMarkup)];
14511
+ processQueue(this, updates);
14512
+ },
14513
+
14514
+ /**
14515
+ * Updates the rendered children with new children.
14516
+ *
14517
+ * @param {?object} nextNestedChildrenElements Nested child element maps.
14518
+ * @param {ReactReconcileTransaction} transaction
14519
+ * @internal
14520
+ */
14521
+ updateChildren: function (nextNestedChildrenElements, transaction, context) {
14522
+ // Hook used by React ART
14523
+ this._updateChildren(nextNestedChildrenElements, transaction, context);
14524
+ },
14525
+
14526
+ /**
14527
+ * @param {?object} nextNestedChildrenElements Nested child element maps.
14528
+ * @param {ReactReconcileTransaction} transaction
14529
+ * @final
14530
+ * @protected
14531
+ */
14532
+ _updateChildren: function (nextNestedChildrenElements, transaction, context) {
14533
+ var prevChildren = this._renderedChildren;
14534
+ var removedNodes = {};
14535
+ var mountImages = [];
14536
+ var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);
14537
+ if (!nextChildren && !prevChildren) {
14538
+ return;
14539
+ }
14540
+ var updates = null;
14541
+ var name;
14542
+ // `nextIndex` will increment for each child in `nextChildren`, but
14543
+ // `lastIndex` will be the last index visited in `prevChildren`.
14544
+ var nextIndex = 0;
14545
+ var lastIndex = 0;
14546
+ // `nextMountIndex` will increment for each newly mounted child.
14547
+ var nextMountIndex = 0;
14548
+ var lastPlacedNode = null;
14549
+ for (name in nextChildren) {
14550
+ if (!nextChildren.hasOwnProperty(name)) {
14551
+ continue;
14552
+ }
14553
+ var prevChild = prevChildren && prevChildren[name];
14554
+ var nextChild = nextChildren[name];
14555
+ if (prevChild === nextChild) {
14556
+ updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));
14557
+ lastIndex = Math.max(prevChild._mountIndex, lastIndex);
14558
+ prevChild._mountIndex = nextIndex;
14559
+ } else {
14560
+ if (prevChild) {
14561
+ // Update `lastIndex` before `_mountIndex` gets unset by unmounting.
14562
+ lastIndex = Math.max(prevChild._mountIndex, lastIndex);
14563
+ // The `removedNodes` loop below will actually remove the child.
14564
+ }
14565
+ // The child must be instantiated before it's mounted.
14566
+ updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));
14567
+ nextMountIndex++;
14568
+ }
14569
+ nextIndex++;
14570
+ lastPlacedNode = ReactReconciler.getHostNode(nextChild);
14571
+ }
14572
+ // Remove children that are no longer present.
14573
+ for (name in removedNodes) {
14574
+ if (removedNodes.hasOwnProperty(name)) {
14575
+ updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));
14576
+ }
14577
+ }
14578
+ if (updates) {
14579
+ processQueue(this, updates);
14580
+ }
14581
+ this._renderedChildren = nextChildren;
14582
+
14583
+ if (process.env.NODE_ENV !== 'production') {
14584
+ setChildrenForInstrumentation.call(this, nextChildren);
14585
+ }
14586
+ },
14587
+
14588
+ /**
14589
+ * Unmounts all rendered children. This should be used to clean up children
14590
+ * when this component is unmounted. It does not actually perform any
14591
+ * backend operations.
14592
+ *
14593
+ * @internal
14594
+ */
14595
+ unmountChildren: function (safely) {
14596
+ var renderedChildren = this._renderedChildren;
14597
+ ReactChildReconciler.unmountChildren(renderedChildren, safely);
14598
+ this._renderedChildren = null;
14599
+ },
14600
+
14601
+ /**
14602
+ * Moves a child component to the supplied index.
14603
+ *
14604
+ * @param {ReactComponent} child Component to move.
14605
+ * @param {number} toIndex Destination index of the element.
14606
+ * @param {number} lastIndex Last index visited of the siblings of `child`.
14607
+ * @protected
14608
+ */
14609
+ moveChild: function (child, afterNode, toIndex, lastIndex) {
14610
+ // If the index of `child` is less than `lastIndex`, then it needs to
14611
+ // be moved. Otherwise, we do not need to move it because a child will be
14612
+ // inserted or moved before `child`.
14613
+ if (child._mountIndex < lastIndex) {
14614
+ return makeMove(child, afterNode, toIndex);
14615
+ }
14616
+ },
14617
+
14618
+ /**
14619
+ * Creates a child component.
14620
+ *
14621
+ * @param {ReactComponent} child Component to create.
14622
+ * @param {string} mountImage Markup to insert.
14623
+ * @protected
14624
+ */
14625
+ createChild: function (child, afterNode, mountImage) {
14626
+ return makeInsertMarkup(mountImage, afterNode, child._mountIndex);
14627
+ },
14628
+
14629
+ /**
14630
+ * Removes a child component.
14631
+ *
14632
+ * @param {ReactComponent} child Child to remove.
14633
+ * @protected
14634
+ */
14635
+ removeChild: function (child, node) {
14636
+ return makeRemove(child, node);
14637
+ },
14638
+
14639
+ /**
14640
+ * Mounts a child with the supplied name.
14641
+ *
14642
+ * NOTE: This is part of `updateChildren` and is here for readability.
14643
+ *
14644
+ * @param {ReactComponent} child Component to mount.
14645
+ * @param {string} name Name of the child.
14646
+ * @param {number} index Index at which to insert the child.
14647
+ * @param {ReactReconcileTransaction} transaction
14648
+ * @private
14649
+ */
14650
+ _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {
14651
+ child._mountIndex = index;
14652
+ return this.createChild(child, afterNode, mountImage);
14653
+ },
14654
+
14655
+ /**
14656
+ * Unmounts a rendered child.
14657
+ *
14658
+ * NOTE: This is part of `updateChildren` and is here for readability.
14659
+ *
14660
+ * @param {ReactComponent} child Component to unmount.
14661
+ * @private
14662
+ */
14663
+ _unmountChild: function (child, node) {
14664
+ var update = this.removeChild(child, node);
14665
+ child._mountIndex = null;
14666
+ return update;
14667
+ }
14668
+
14669
+ }
14670
+
14671
+ };
14672
+
14673
+ module.exports = ReactMultiChild;
14674
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
14675
+
14676
+ /***/ },
14677
+ /* 117 */
14678
+ /***/ function(module, exports, __webpack_require__) {
14679
+
14680
+ /* WEBPACK VAR INJECTION */(function(process) {/**
14681
+ * Copyright 2014-present, Facebook, Inc.
14682
+ * All rights reserved.
14683
+ *
14684
+ * This source code is licensed under the BSD-style license found in the
14685
+ * LICENSE file in the root directory of this source tree. An additional grant
14686
+ * of patent rights can be found in the PATENTS file in the same directory.
14687
+ *
14688
+ *
14689
+ */
14690
+
14691
+ 'use strict';
14692
+
14693
+ var _prodInvariant = __webpack_require__(36);
14694
+
14695
+ var invariant = __webpack_require__(9);
14696
+
14697
+ var injected = false;
14698
+
14699
+ var ReactComponentEnvironment = {
14700
+
14701
+ /**
14702
+ * Optionally injectable hook for swapping out mount images in the middle of
14703
+ * the tree.
14704
+ */
14705
+ replaceNodeWithMarkup: null,
14706
+
14707
+ /**
14708
+ * Optionally injectable hook for processing a queue of child updates. Will
14709
+ * later move into MultiChildComponents.
14710
+ */
14711
+ processChildrenUpdates: null,
14712
+
14713
+ injection: {
14714
+ injectEnvironment: function (environment) {
14715
+ !!injected ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;
14716
+ ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;
14717
+ ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;
14718
+ injected = true;
14719
+ }
14720
+ }
14721
+
14722
+ };
14723
+
14724
+ module.exports = ReactComponentEnvironment;
14725
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
14726
+
14727
+ /***/ },
14728
+ /* 118 */
14729
+ /***/ function(module, exports) {
14730
+
14731
+ /**
14732
+ * Copyright 2013-present, Facebook, Inc.
14733
+ * All rights reserved.
14734
+ *
14735
+ * This source code is licensed under the BSD-style license found in the
14736
+ * LICENSE file in the root directory of this source tree. An additional grant
14737
+ * of patent rights can be found in the PATENTS file in the same directory.
14738
+ *
14739
+ */
14740
+
14741
+ 'use strict';
14742
+
14743
+ /**
14744
+ * `ReactInstanceMap` maintains a mapping from a public facing stateful
14745
+ * instance (key) and the internal representation (value). This allows public
14746
+ * methods to accept the user facing instance as an argument and map them back
14747
+ * to internal methods.
14748
+ */
14749
+
14750
+ // TODO: Replace this with ES6: var ReactInstanceMap = new Map();
14751
+
14752
+ var ReactInstanceMap = {
14753
+
14754
+ /**
14755
+ * This API should be called `delete` but we'd have to make sure to always
14756
+ * transform these to strings for IE support. When this transform is fully
14757
+ * supported we can rename it.
14758
+ */
14759
+ remove: function (key) {
14760
+ key._reactInternalInstance = undefined;
14761
+ },
14762
+
14763
+ get: function (key) {
14764
+ return key._reactInternalInstance;
14765
+ },
14766
+
14767
+ has: function (key) {
14768
+ return key._reactInternalInstance !== undefined;
14769
+ },
14770
+
14771
+ set: function (key, value) {
14772
+ key._reactInternalInstance = value;
14773
+ }
14774
+
14775
+ };
14776
+
14777
+ module.exports = ReactInstanceMap;
14778
+
14779
+ /***/ },
14780
+ /* 119 */
14781
+ /***/ function(module, exports, __webpack_require__) {
14782
+
14783
+ /* WEBPACK VAR INJECTION */(function(process) {/**
14784
+ * Copyright 2014-present, Facebook, Inc.
14785
+ * All rights reserved.
14786
+ *
14787
+ * This source code is licensed under the BSD-style license found in the
14788
+ * LICENSE file in the root directory of this source tree. An additional grant
14789
+ * of patent rights can be found in the PATENTS file in the same directory.
14790
+ *
14791
+ */
14792
+
14793
+ 'use strict';
14794
+
14795
+ var ReactReconciler = __webpack_require__(61);
14796
+
14797
+ var instantiateReactComponent = __webpack_require__(120);
14798
+ var KeyEscapeUtils = __webpack_require__(130);
14799
+ var shouldUpdateReactComponent = __webpack_require__(126);
14800
+ var traverseAllChildren = __webpack_require__(131);
14801
+ var warning = __webpack_require__(12);
14802
+
14803
+ var ReactComponentTreeHook;
14804
+
14805
+ if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {
14806
+ // Temporary hack.
14807
+ // Inline requires don't work well with Jest:
14808
+ // https://github.com/facebook/react/issues/7240
14809
+ // Remove the inline requires when we don't need them anymore:
14810
+ // https://github.com/facebook/react/pull/7178
14811
+ ReactComponentTreeHook = __webpack_require__(27);
14812
+ }
14813
+
14814
+ function instantiateChild(childInstances, child, name, selfDebugID) {
14815
+ // We found a component instance.
14816
+ var keyUnique = childInstances[name] === undefined;
14817
+ if (process.env.NODE_ENV !== 'production') {
14818
+ if (!ReactComponentTreeHook) {
14819
+ ReactComponentTreeHook = __webpack_require__(27);
14820
+ }
14821
+ if (!keyUnique) {
14822
+ 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;
14823
+ }
14824
+ }
14825
+ if (child != null && keyUnique) {
14826
+ childInstances[name] = instantiateReactComponent(child, true);
14827
+ }
14828
+ }
14829
+
14830
+ /**
14831
+ * ReactChildReconciler provides helpers for initializing or updating a set of
14832
+ * children. Its output is suitable for passing it onto ReactMultiChild which
14833
+ * does diffed reordering and insertion.
14834
+ */
14835
+ var ReactChildReconciler = {
14836
+ /**
14837
+ * Generates a "mount image" for each of the supplied children. In the case
14838
+ * of `ReactDOMComponent`, a mount image is a string of markup.
14839
+ *
14840
+ * @param {?object} nestedChildNodes Nested child maps.
14841
+ * @return {?object} A set of child instances.
14842
+ * @internal
14843
+ */
14844
+ instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots
14845
+ ) {
14846
+ if (nestedChildNodes == null) {
14847
+ return null;
14848
+ }
14849
+ var childInstances = {};
14850
+
14851
+ if (process.env.NODE_ENV !== 'production') {
14852
+ traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {
14853
+ return instantiateChild(childInsts, child, name, selfDebugID);
14854
+ }, childInstances);
14855
+ } else {
14856
+ traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);
14857
+ }
14858
+ return childInstances;
14859
+ },
14860
+
14861
+ /**
14862
+ * Updates the rendered children and returns a new set of children.
14863
+ *
14864
+ * @param {?object} prevChildren Previously initialized set of children.
14865
+ * @param {?object} nextChildren Flat child element maps.
14866
+ * @param {ReactReconcileTransaction} transaction
14867
+ * @param {object} context
14868
+ * @return {?object} A new set of child instances.
14869
+ * @internal
14870
+ */
14871
+ updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots
14872
+ ) {
14873
+ // We currently don't have a way to track moves here but if we use iterators
14874
+ // instead of for..in we can zip the iterators and check if an item has
14875
+ // moved.
14876
+ // TODO: If nothing has changed, return the prevChildren object so that we
14877
+ // can quickly bailout if nothing has changed.
14878
+ if (!nextChildren && !prevChildren) {
14879
+ return;
14880
+ }
14881
+ var name;
14882
+ var prevChild;
14883
+ for (name in nextChildren) {
14884
+ if (!nextChildren.hasOwnProperty(name)) {
14885
+ continue;
14886
+ }
14887
+ prevChild = prevChildren && prevChildren[name];
14888
+ var prevElement = prevChild && prevChild._currentElement;
14889
+ var nextElement = nextChildren[name];
14890
+ if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {
14891
+ ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);
14892
+ nextChildren[name] = prevChild;
14893
+ } else {
14894
+ if (prevChild) {
14895
+ removedNodes[name] = ReactReconciler.getHostNode(prevChild);
14896
+ ReactReconciler.unmountComponent(prevChild, false);
14897
+ }
14898
+ // The child must be instantiated before it's mounted.
14899
+ var nextChildInstance = instantiateReactComponent(nextElement, true);
14900
+ nextChildren[name] = nextChildInstance;
14901
+ // Creating mount image now ensures refs are resolved in right order
14902
+ // (see https://github.com/facebook/react/pull/7101 for explanation).
14903
+ var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);
14904
+ mountImages.push(nextChildMountImage);
14905
+ }
14906
+ }
14907
+ // Unmount children that are no longer present.
14908
+ for (name in prevChildren) {
14909
+ if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {
14910
+ prevChild = prevChildren[name];
14911
+ removedNodes[name] = ReactReconciler.getHostNode(prevChild);
14912
+ ReactReconciler.unmountComponent(prevChild, false);
14913
+ }
14914
+ }
14915
+ },
14916
+
14917
+ /**
14918
+ * Unmounts all rendered children. This should be used to clean up children
14919
+ * when this component is unmounted.
14920
+ *
14921
+ * @param {?object} renderedChildren Previously initialized set of children.
14922
+ * @internal
14923
+ */
14924
+ unmountChildren: function (renderedChildren, safely) {
14925
+ for (var name in renderedChildren) {
14926
+ if (renderedChildren.hasOwnProperty(name)) {
14927
+ var renderedChild = renderedChildren[name];
14928
+ ReactReconciler.unmountComponent(renderedChild, safely);
14929
+ }
14930
+ }
14931
+ }
14932
+
14933
+ };
14934
+
14935
+ module.exports = ReactChildReconciler;
14936
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
14937
+
14938
+ /***/ },
14939
+ /* 120 */
14940
+ /***/ function(module, exports, __webpack_require__) {
14941
+
14942
+ /* WEBPACK VAR INJECTION */(function(process) {/**
14943
+ * Copyright 2013-present, Facebook, Inc.
14944
+ * All rights reserved.
14945
+ *
14946
+ * This source code is licensed under the BSD-style license found in the
14947
+ * LICENSE file in the root directory of this source tree. An additional grant
14948
+ * of patent rights can be found in the PATENTS file in the same directory.
14949
+ *
14950
+ */
14951
+
14952
+ 'use strict';
14953
+
14954
+ var _prodInvariant = __webpack_require__(36),
14955
+ _assign = __webpack_require__(51);
14956
+
14957
+ var ReactCompositeComponent = __webpack_require__(121);
14958
+ var ReactEmptyComponent = __webpack_require__(127);
14959
+ var ReactHostComponent = __webpack_require__(128);
14960
+
14961
+ var getNextDebugID = __webpack_require__(129);
14962
+ var invariant = __webpack_require__(9);
14963
+ var warning = __webpack_require__(12);
14964
+
14965
+ // To avoid a cyclic dependency, we create the final class in this module
14966
+ var ReactCompositeComponentWrapper = function (element) {
14967
+ this.construct(element);
14968
+ };
14969
+ _assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {
14970
+ _instantiateReactComponent: instantiateReactComponent
14971
+ });
14972
+
14973
+ function getDeclarationErrorAddendum(owner) {
14974
+ if (owner) {
14975
+ var name = owner.getName();
14976
+ if (name) {
14977
+ return ' Check the render method of `' + name + '`.';
14978
+ }
14979
+ }
14980
+ return '';
14981
+ }
14982
+
14983
+ /**
14984
+ * Check if the type reference is a known internal type. I.e. not a user
14985
+ * provided composite type.
14986
+ *
14987
+ * @param {function} type
14988
+ * @return {boolean} Returns true if this is a valid internal type.
14989
+ */
14990
+ function isInternalComponentType(type) {
14991
+ return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';
14992
+ }
14993
+
14994
+ /**
14995
+ * Given a ReactNode, create an instance that will actually be mounted.
14996
+ *
14997
+ * @param {ReactNode} node
14998
+ * @param {boolean} shouldHaveDebugID
14999
+ * @return {object} A new instance of the element's constructor.
15000
+ * @protected
15001
+ */
15002
+ function instantiateReactComponent(node, shouldHaveDebugID) {
15003
+ var instance;
15004
+
15005
+ if (node === null || node === false) {
15006
+ instance = ReactEmptyComponent.create(instantiateReactComponent);
15007
+ } else if (typeof node === 'object') {
15008
+ var element = node;
15009
+ !(element && (typeof element.type === 'function' || typeof element.type === 'string')) ? 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', element.type == null ? element.type : typeof element.type, getDeclarationErrorAddendum(element._owner)) : _prodInvariant('130', element.type == null ? element.type : typeof element.type, getDeclarationErrorAddendum(element._owner)) : void 0;
15010
+
15011
+ // Special case string values
15012
+ if (typeof element.type === 'string') {
15013
+ instance = ReactHostComponent.createInternalComponent(element);
15014
+ } else if (isInternalComponentType(element.type)) {
15015
+ // This is temporarily available for custom components that are not string
15016
+ // representations. I.e. ART. Once those are updated to use the string
15017
+ // representation, we can drop this code path.
15018
+ instance = new element.type(element);
15019
+
15020
+ // We renamed this. Allow the old name for compat. :(
15021
+ if (!instance.getHostNode) {
15022
+ instance.getHostNode = instance.getNativeNode;
15023
+ }
15024
+ } else {
15025
+ instance = new ReactCompositeComponentWrapper(element);
15026
+ }
15027
+ } else if (typeof node === 'string' || typeof node === 'number') {
15028
+ instance = ReactHostComponent.createInstanceForText(node);
15029
+ } else {
15030
+ true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;
15031
+ }
15032
+
15033
+ if (process.env.NODE_ENV !== 'production') {
15034
+ 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;
15035
+ }
15036
+
15037
+ // These two fields are used by the DOM and ART diffing algorithms
15038
+ // respectively. Instead of using expandos on components, we should be
15039
+ // storing the state needed by the diffing algorithms elsewhere.
15040
+ instance._mountIndex = 0;
15041
+ instance._mountImage = null;
15042
+
15043
+ if (process.env.NODE_ENV !== 'production') {
15044
+ instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;
15045
+ }
15046
+
15047
+ // Internal instances should fully constructed at this point, so they should
15048
+ // not get any new fields added to them at this point.
15049
+ if (process.env.NODE_ENV !== 'production') {
15050
+ if (Object.preventExtensions) {
15051
+ Object.preventExtensions(instance);
15052
+ }
15053
+ }
15054
+
15055
+ return instance;
15056
+ }
15057
+
15058
+ module.exports = instantiateReactComponent;
15059
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
15060
+
15061
+ /***/ },
15062
+ /* 121 */
15063
+ /***/ function(module, exports, __webpack_require__) {
15064
+
15065
+ /* WEBPACK VAR INJECTION */(function(process) {/**
15066
+ * Copyright 2013-present, Facebook, Inc.
15067
+ * All rights reserved.
15068
+ *
15069
+ * This source code is licensed under the BSD-style license found in the
15070
+ * LICENSE file in the root directory of this source tree. An additional grant
15071
+ * of patent rights can be found in the PATENTS file in the same directory.
15072
+ *
15073
+ */
15074
+
15075
+ 'use strict';
15076
+
15077
+ var _prodInvariant = __webpack_require__(36),
15078
+ _assign = __webpack_require__(51);
15079
+
15080
+ var React = __webpack_require__(3);
15081
+ var ReactComponentEnvironment = __webpack_require__(117);
15082
+ var ReactCurrentOwner = __webpack_require__(11);
15083
+ var ReactErrorUtils = __webpack_require__(46);
15084
+ var ReactInstanceMap = __webpack_require__(118);
15085
+ var ReactInstrumentation = __webpack_require__(64);
15086
+ var ReactNodeTypes = __webpack_require__(122);
15087
+ var ReactReconciler = __webpack_require__(61);
15088
+
15089
+ if (process.env.NODE_ENV !== 'production') {
15090
+ var checkReactTypeSpec = __webpack_require__(123);
15091
+ }
15092
+
15093
+ var emptyObject = __webpack_require__(21);
15094
+ var invariant = __webpack_require__(9);
15095
+ var shallowEqual = __webpack_require__(125);
15096
+ var shouldUpdateReactComponent = __webpack_require__(126);
15097
+ var warning = __webpack_require__(12);
15098
+
15099
+ var CompositeTypes = {
15100
+ ImpureClass: 0,
15101
+ PureClass: 1,
15102
+ StatelessFunctional: 2
15103
+ };
15104
+
15105
+ function StatelessComponent(Component) {}
15106
+ StatelessComponent.prototype.render = function () {
15107
+ var Component = ReactInstanceMap.get(this)._currentElement.type;
15108
+ var element = Component(this.props, this.context, this.updater);
15109
+ warnIfInvalidElement(Component, element);
15110
+ return element;
15111
+ };
15112
+
15113
+ function warnIfInvalidElement(Component, element) {
15114
+ if (process.env.NODE_ENV !== 'production') {
15115
+ 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;
15116
+ process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;
15117
+ }
15118
+ }
15119
+
15120
+ function shouldConstruct(Component) {
15121
+ return !!(Component.prototype && Component.prototype.isReactComponent);
15122
+ }
15123
+
15124
+ function isPureComponent(Component) {
15125
+ return !!(Component.prototype && Component.prototype.isPureReactComponent);
15126
+ }
15127
+
15128
+ // Separated into a function to contain deoptimizations caused by try/finally.
15129
+ function measureLifeCyclePerf(fn, debugID, timerType) {
15130
+ if (debugID === 0) {
15131
+ // Top-level wrappers (see ReactMount) and empty components (see
15132
+ // ReactDOMEmptyComponent) are invisible to hooks and devtools.
15133
+ // Both are implementation details that should go away in the future.
15134
+ return fn();
15135
+ }
15136
+
15137
+ ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);
15138
+ try {
15139
+ return fn();
15140
+ } finally {
15141
+ ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);
15142
+ }
15143
+ }
15144
+
15145
+ /**
15146
+ * ------------------ The Life-Cycle of a Composite Component ------------------
15147
+ *
15148
+ * - constructor: Initialization of state. The instance is now retained.
15149
+ * - componentWillMount
15150
+ * - render
15151
+ * - [children's constructors]
15152
+ * - [children's componentWillMount and render]
15153
+ * - [children's componentDidMount]
15154
+ * - componentDidMount
15155
+ *
15156
+ * Update Phases:
15157
+ * - componentWillReceiveProps (only called if parent updated)
15158
+ * - shouldComponentUpdate
15159
+ * - componentWillUpdate
15160
+ * - render
15161
+ * - [children's constructors or receive props phases]
15162
+ * - componentDidUpdate
15163
+ *
15164
+ * - componentWillUnmount
15165
+ * - [children's componentWillUnmount]
15166
+ * - [children destroyed]
15167
+ * - (destroyed): The instance is now blank, released by React and ready for GC.
15168
+ *
15169
+ * -----------------------------------------------------------------------------
15170
+ */
15171
+
15172
+ /**
15173
+ * An incrementing ID assigned to each component when it is mounted. This is
15174
+ * used to enforce the order in which `ReactUpdates` updates dirty components.
15175
+ *
15176
+ * @private
15177
+ */
15178
+ var nextMountID = 1;
15179
+
15180
+ /**
15181
+ * @lends {ReactCompositeComponent.prototype}
15182
+ */
15183
+ var ReactCompositeComponent = {
15184
+
15185
+ /**
15186
+ * Base constructor for all composite component.
15187
+ *
15188
+ * @param {ReactElement} element
15189
+ * @final
15190
+ * @internal
15191
+ */
15192
+ construct: function (element) {
15193
+ this._currentElement = element;
15194
+ this._rootNodeID = 0;
15195
+ this._compositeType = null;
15196
+ this._instance = null;
15197
+ this._hostParent = null;
15198
+ this._hostContainerInfo = null;
15199
+
15200
+ // See ReactUpdateQueue
15201
+ this._updateBatchNumber = null;
15202
+ this._pendingElement = null;
15203
+ this._pendingStateQueue = null;
15204
+ this._pendingReplaceState = false;
15205
+ this._pendingForceUpdate = false;
15206
+
15207
+ this._renderedNodeType = null;
15208
+ this._renderedComponent = null;
15209
+ this._context = null;
15210
+ this._mountOrder = 0;
15211
+ this._topLevelWrapper = null;
15212
+
15213
+ // See ReactUpdates and ReactUpdateQueue.
15214
+ this._pendingCallbacks = null;
15215
+
15216
+ // ComponentWillUnmount shall only be called once
15217
+ this._calledComponentWillUnmount = false;
15218
+
15219
+ if (process.env.NODE_ENV !== 'production') {
15220
+ this._warnedAboutRefsInRender = false;
15221
+ }
15222
+ },
15223
+
15224
+ /**
15225
+ * Initializes the component, renders markup, and registers event listeners.
15226
+ *
15227
+ * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
15228
+ * @param {?object} hostParent
15229
+ * @param {?object} hostContainerInfo
15230
+ * @param {?object} context
15231
+ * @return {?string} Rendered markup to be inserted into the DOM.
15232
+ * @final
15233
+ * @internal
15234
+ */
15235
+ mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
15236
+ var _this = this;
15237
+
15238
+ this._context = context;
15239
+ this._mountOrder = nextMountID++;
15240
+ this._hostParent = hostParent;
15241
+ this._hostContainerInfo = hostContainerInfo;
15242
+
15243
+ var publicProps = this._currentElement.props;
15244
+ var publicContext = this._processContext(context);
15245
+
15246
+ var Component = this._currentElement.type;
15247
+
15248
+ var updateQueue = transaction.getUpdateQueue();
15249
+
15250
+ // Initialize the public class
15251
+ var doConstruct = shouldConstruct(Component);
15252
+ var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);
15253
+ var renderedElement;
15254
+
15255
+ // Support functional components
15256
+ if (!doConstruct && (inst == null || inst.render == null)) {
15257
+ renderedElement = inst;
15258
+ warnIfInvalidElement(Component, renderedElement);
15259
+ !(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;
15260
+ inst = new StatelessComponent(Component);
15261
+ this._compositeType = CompositeTypes.StatelessFunctional;
15262
+ } else {
15263
+ if (isPureComponent(Component)) {
15264
+ this._compositeType = CompositeTypes.PureClass;
15265
+ } else {
15266
+ this._compositeType = CompositeTypes.ImpureClass;
15267
+ }
15268
+ }
15269
+
15270
+ if (process.env.NODE_ENV !== 'production') {
15271
+ // This will throw later in _renderValidatedComponent, but add an early
15272
+ // warning now to help debugging
15273
+ if (inst.render == null) {
15274
+ 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;
15275
+ }
15276
+
15277
+ var propsMutated = inst.props !== publicProps;
15278
+ var componentName = Component.displayName || Component.name || 'Component';
15279
+
15280
+ 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;
15281
+ }
15282
+
15283
+ // These should be set up in the constructor, but as a convenience for
15284
+ // simpler class abstractions, we set them up after the fact.
15285
+ inst.props = publicProps;
15286
+ inst.context = publicContext;
15287
+ inst.refs = emptyObject;
15288
+ inst.updater = updateQueue;
15289
+
15290
+ this._instance = inst;
15291
+
15292
+ // Store a reference from the instance back to the internal representation
15293
+ ReactInstanceMap.set(inst, this);
15294
+
15295
+ if (process.env.NODE_ENV !== 'production') {
15296
+ // Since plain JS classes are defined without any special initialization
15297
+ // logic, we can not catch common errors early. Therefore, we have to
15298
+ // catch them here, at initialization time, instead.
15299
+ process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved, '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;
15300
+ 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;
15301
+ 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;
15302
+ 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;
15303
+ 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;
15304
+ 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;
15305
+ 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;
15306
+ }
15307
+
15308
+ var initialState = inst.state;
15309
+ if (initialState === undefined) {
15310
+ inst.state = initialState = null;
15311
+ }
15312
+ !(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;
15313
+
15314
+ this._pendingStateQueue = null;
15315
+ this._pendingReplaceState = false;
15316
+ this._pendingForceUpdate = false;
15317
+
15318
+ var markup;
15319
+ if (inst.unstable_handleError) {
15320
+ markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);
15321
+ } else {
15322
+ markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
15323
+ }
15324
+
15325
+ if (inst.componentDidMount) {
15326
+ if (process.env.NODE_ENV !== 'production') {
15327
+ transaction.getReactMountReady().enqueue(function () {
15328
+ measureLifeCyclePerf(function () {
15329
+ return inst.componentDidMount();
15330
+ }, _this._debugID, 'componentDidMount');
15331
+ });
15332
+ } else {
15333
+ transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);
15334
+ }
15335
+ }
15336
+
15337
+ return markup;
15338
+ },
15339
+
15340
+ _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {
15341
+ if (process.env.NODE_ENV !== 'production') {
15342
+ ReactCurrentOwner.current = this;
15343
+ try {
15344
+ return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);
15345
+ } finally {
15346
+ ReactCurrentOwner.current = null;
15347
+ }
15348
+ } else {
15349
+ return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);
15350
+ }
15351
+ },
15352
+
15353
+ _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {
15354
+ var Component = this._currentElement.type;
15355
+
15356
+ if (doConstruct) {
15357
+ if (process.env.NODE_ENV !== 'production') {
15358
+ return measureLifeCyclePerf(function () {
15359
+ return new Component(publicProps, publicContext, updateQueue);
15360
+ }, this._debugID, 'ctor');
15361
+ } else {
15362
+ return new Component(publicProps, publicContext, updateQueue);
15363
+ }
15364
+ }
15365
+
15366
+ // This can still be an instance in case of factory components
15367
+ // but we'll count this as time spent rendering as the more common case.
15368
+ if (process.env.NODE_ENV !== 'production') {
15369
+ return measureLifeCyclePerf(function () {
15370
+ return Component(publicProps, publicContext, updateQueue);
15371
+ }, this._debugID, 'render');
15372
+ } else {
15373
+ return Component(publicProps, publicContext, updateQueue);
15374
+ }
15375
+ },
15376
+
15377
+ performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {
15378
+ var markup;
15379
+ var checkpoint = transaction.checkpoint();
15380
+ try {
15381
+ markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
15382
+ } catch (e) {
15383
+ // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint
15384
+ transaction.rollback(checkpoint);
15385
+ this._instance.unstable_handleError(e);
15386
+ if (this._pendingStateQueue) {
15387
+ this._instance.state = this._processPendingState(this._instance.props, this._instance.context);
15388
+ }
15389
+ checkpoint = transaction.checkpoint();
15390
+
15391
+ this._renderedComponent.unmountComponent(true);
15392
+ transaction.rollback(checkpoint);
15393
+
15394
+ // Try again - we've informed the component about the error, so they can render an error message this time.
15395
+ // If this throws again, the error will bubble up (and can be caught by a higher error boundary).
15396
+ markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
15397
+ }
15398
+ return markup;
15399
+ },
15400
+
15401
+ performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {
15402
+ var inst = this._instance;
15403
+
15404
+ var debugID = 0;
15405
+ if (process.env.NODE_ENV !== 'production') {
15406
+ debugID = this._debugID;
15407
+ }
15408
+
15409
+ if (inst.componentWillMount) {
15410
+ if (process.env.NODE_ENV !== 'production') {
15411
+ measureLifeCyclePerf(function () {
15412
+ return inst.componentWillMount();
15413
+ }, debugID, 'componentWillMount');
15414
+ } else {
15415
+ inst.componentWillMount();
15416
+ }
15417
+ // When mounting, calls to `setState` by `componentWillMount` will set
15418
+ // `this._pendingStateQueue` without triggering a re-render.
15419
+ if (this._pendingStateQueue) {
15420
+ inst.state = this._processPendingState(inst.props, inst.context);
15421
+ }
15422
+ }
15423
+
15424
+ // If not a stateless component, we now render
15425
+ if (renderedElement === undefined) {
15426
+ renderedElement = this._renderValidatedComponent();
15427
+ }
15428
+
15429
+ var nodeType = ReactNodeTypes.getType(renderedElement);
15430
+ this._renderedNodeType = nodeType;
15431
+ var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */
15432
+ );
15433
+ this._renderedComponent = child;
15434
+
15435
+ var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);
15436
+
15437
+ if (process.env.NODE_ENV !== 'production') {
15438
+ if (debugID !== 0) {
15439
+ var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];
15440
+ ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);
15441
+ }
15442
+ }
15443
+
15444
+ return markup;
15445
+ },
15446
+
15447
+ getHostNode: function () {
15448
+ return ReactReconciler.getHostNode(this._renderedComponent);
15449
+ },
15450
+
15451
+ /**
15452
+ * Releases any resources allocated by `mountComponent`.
15453
+ *
15454
+ * @final
15455
+ * @internal
15456
+ */
15457
+ unmountComponent: function (safely) {
15458
+ if (!this._renderedComponent) {
15459
+ return;
15460
+ }
15461
+
15462
+ var inst = this._instance;
15463
+
15464
+ if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {
15465
+ inst._calledComponentWillUnmount = true;
15466
+
15467
+ if (safely) {
15468
+ var name = this.getName() + '.componentWillUnmount()';
15469
+ ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));
15470
+ } else {
15471
+ if (process.env.NODE_ENV !== 'production') {
15472
+ measureLifeCyclePerf(function () {
15473
+ return inst.componentWillUnmount();
15474
+ }, this._debugID, 'componentWillUnmount');
15475
+ } else {
15476
+ inst.componentWillUnmount();
15477
+ }
15478
+ }
15479
+ }
15480
+
15481
+ if (this._renderedComponent) {
15482
+ ReactReconciler.unmountComponent(this._renderedComponent, safely);
15483
+ this._renderedNodeType = null;
15484
+ this._renderedComponent = null;
15485
+ this._instance = null;
15486
+ }
15487
+
15488
+ // Reset pending fields
15489
+ // Even if this component is scheduled for another update in ReactUpdates,
15490
+ // it would still be ignored because these fields are reset.
15491
+ this._pendingStateQueue = null;
15492
+ this._pendingReplaceState = false;
15493
+ this._pendingForceUpdate = false;
15494
+ this._pendingCallbacks = null;
15495
+ this._pendingElement = null;
15496
+
15497
+ // These fields do not really need to be reset since this object is no
15498
+ // longer accessible.
15499
+ this._context = null;
15500
+ this._rootNodeID = 0;
15501
+ this._topLevelWrapper = null;
15502
+
15503
+ // Delete the reference from the instance to this internal representation
15504
+ // which allow the internals to be properly cleaned up even if the user
15505
+ // leaks a reference to the public instance.
15506
+ ReactInstanceMap.remove(inst);
15507
+
15508
+ // Some existing components rely on inst.props even after they've been
15509
+ // destroyed (in event handlers).
15510
+ // TODO: inst.props = null;
15511
+ // TODO: inst.state = null;
15512
+ // TODO: inst.context = null;
15513
+ },
15514
+
15515
+ /**
15516
+ * Filters the context object to only contain keys specified in
15517
+ * `contextTypes`
15518
+ *
15519
+ * @param {object} context
15520
+ * @return {?object}
15521
+ * @private
15522
+ */
15523
+ _maskContext: function (context) {
15524
+ var Component = this._currentElement.type;
15525
+ var contextTypes = Component.contextTypes;
15526
+ if (!contextTypes) {
15527
+ return emptyObject;
15528
+ }
15529
+ var maskedContext = {};
15530
+ for (var contextName in contextTypes) {
15531
+ maskedContext[contextName] = context[contextName];
15532
+ }
15533
+ return maskedContext;
15534
+ },
15535
+
15536
+ /**
15537
+ * Filters the context object to only contain keys specified in
15538
+ * `contextTypes`, and asserts that they are valid.
15539
+ *
15540
+ * @param {object} context
15541
+ * @return {?object}
15542
+ * @private
15543
+ */
15544
+ _processContext: function (context) {
15545
+ var maskedContext = this._maskContext(context);
15546
+ if (process.env.NODE_ENV !== 'production') {
15547
+ var Component = this._currentElement.type;
15548
+ if (Component.contextTypes) {
15549
+ this._checkContextTypes(Component.contextTypes, maskedContext, 'context');
15550
+ }
15551
+ }
15552
+ return maskedContext;
15553
+ },
15554
+
15555
+ /**
15556
+ * @param {object} currentContext
15557
+ * @return {object}
15558
+ * @private
15559
+ */
15560
+ _processChildContext: function (currentContext) {
15561
+ var Component = this._currentElement.type;
15562
+ var inst = this._instance;
15563
+ var childContext;
15564
+
15565
+ if (inst.getChildContext) {
15566
+ if (process.env.NODE_ENV !== 'production') {
15567
+ ReactInstrumentation.debugTool.onBeginProcessingChildContext();
15568
+ try {
15569
+ childContext = inst.getChildContext();
15570
+ } finally {
15571
+ ReactInstrumentation.debugTool.onEndProcessingChildContext();
15572
+ }
15573
+ } else {
15574
+ childContext = inst.getChildContext();
15575
+ }
15576
+ }
15577
+
15578
+ if (childContext) {
15579
+ !(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;
15580
+ if (process.env.NODE_ENV !== 'production') {
15581
+ this._checkContextTypes(Component.childContextTypes, childContext, 'childContext');
15582
+ }
15583
+ for (var name in childContext) {
15584
+ !(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;
15585
+ }
15586
+ return _assign({}, currentContext, childContext);
15587
+ }
15588
+ return currentContext;
15589
+ },
15590
+
15591
+ /**
15592
+ * Assert that the context types are valid
15593
+ *
15594
+ * @param {object} typeSpecs Map of context field to a ReactPropType
15595
+ * @param {object} values Runtime values that need to be type-checked
15596
+ * @param {string} location e.g. "prop", "context", "child context"
15597
+ * @private
15598
+ */
15599
+ _checkContextTypes: function (typeSpecs, values, location) {
15600
+ if (process.env.NODE_ENV !== 'production') {
15601
+ checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);
15602
+ }
15603
+ },
15604
+
15605
+ receiveComponent: function (nextElement, transaction, nextContext) {
15606
+ var prevElement = this._currentElement;
15607
+ var prevContext = this._context;
15608
+
15609
+ this._pendingElement = null;
15610
+
15611
+ this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);
15612
+ },
15613
+
15614
+ /**
15615
+ * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`
15616
+ * is set, update the component.
15617
+ *
15618
+ * @param {ReactReconcileTransaction} transaction
15619
+ * @internal
15620
+ */
15621
+ performUpdateIfNecessary: function (transaction) {
15622
+ if (this._pendingElement != null) {
15623
+ ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);
15624
+ } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {
15625
+ this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);
15626
+ } else {
15627
+ this._updateBatchNumber = null;
15628
+ }
15629
+ },
15630
+
15631
+ /**
15632
+ * Perform an update to a mounted component. The componentWillReceiveProps and
15633
+ * shouldComponentUpdate methods are called, then (assuming the update isn't
15634
+ * skipped) the remaining update lifecycle methods are called and the DOM
15635
+ * representation is updated.
15636
+ *
15637
+ * By default, this implements React's rendering and reconciliation algorithm.
15638
+ * Sophisticated clients may wish to override this.
15639
+ *
15640
+ * @param {ReactReconcileTransaction} transaction
15641
+ * @param {ReactElement} prevParentElement
15642
+ * @param {ReactElement} nextParentElement
15643
+ * @internal
15644
+ * @overridable
15645
+ */
15646
+ updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {
15647
+ var inst = this._instance;
15648
+ !(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;
15649
+
15650
+ var willReceive = false;
15651
+ var nextContext;
15652
+
15653
+ // Determine if the context has changed or not
15654
+ if (this._context === nextUnmaskedContext) {
15655
+ nextContext = inst.context;
15656
+ } else {
15657
+ nextContext = this._processContext(nextUnmaskedContext);
15658
+ willReceive = true;
15659
+ }
15660
+
15661
+ var prevProps = prevParentElement.props;
15662
+ var nextProps = nextParentElement.props;
15663
+
15664
+ // Not a simple state update but a props update
15665
+ if (prevParentElement !== nextParentElement) {
15666
+ willReceive = true;
15667
+ }
15668
+
15669
+ // An update here will schedule an update but immediately set
15670
+ // _pendingStateQueue which will ensure that any state updates gets
15671
+ // immediately reconciled instead of waiting for the next batch.
15672
+ if (willReceive && inst.componentWillReceiveProps) {
15673
+ if (process.env.NODE_ENV !== 'production') {
15674
+ measureLifeCyclePerf(function () {
15675
+ return inst.componentWillReceiveProps(nextProps, nextContext);
15676
+ }, this._debugID, 'componentWillReceiveProps');
15677
+ } else {
15678
+ inst.componentWillReceiveProps(nextProps, nextContext);
15679
+ }
15680
+ }
15681
+
15682
+ var nextState = this._processPendingState(nextProps, nextContext);
15683
+ var shouldUpdate = true;
15684
+
15685
+ if (!this._pendingForceUpdate) {
15686
+ if (inst.shouldComponentUpdate) {
15687
+ if (process.env.NODE_ENV !== 'production') {
15688
+ shouldUpdate = measureLifeCyclePerf(function () {
15689
+ return inst.shouldComponentUpdate(nextProps, nextState, nextContext);
15690
+ }, this._debugID, 'shouldComponentUpdate');
15691
+ } else {
15692
+ shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);
15693
+ }
15694
+ } else {
15695
+ if (this._compositeType === CompositeTypes.PureClass) {
15696
+ shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);
15697
+ }
15698
+ }
15699
+ }
15700
+
15701
+ if (process.env.NODE_ENV !== 'production') {
15702
+ 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;
15703
+ }
15704
+
15705
+ this._updateBatchNumber = null;
15706
+ if (shouldUpdate) {
15707
+ this._pendingForceUpdate = false;
15708
+ // Will set `this.props`, `this.state` and `this.context`.
15709
+ this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);
15710
+ } else {
15711
+ // If it's determined that a component should not update, we still want
15712
+ // to set props and state but we shortcut the rest of the update.
15713
+ this._currentElement = nextParentElement;
15714
+ this._context = nextUnmaskedContext;
15715
+ inst.props = nextProps;
15716
+ inst.state = nextState;
15717
+ inst.context = nextContext;
15718
+ }
15719
+ },
15720
+
15721
+ _processPendingState: function (props, context) {
15722
+ var inst = this._instance;
15723
+ var queue = this._pendingStateQueue;
15724
+ var replace = this._pendingReplaceState;
15725
+ this._pendingReplaceState = false;
15726
+ this._pendingStateQueue = null;
15727
+
15728
+ if (!queue) {
15729
+ return inst.state;
15730
+ }
15731
+
15732
+ if (replace && queue.length === 1) {
15733
+ return queue[0];
15734
+ }
15735
+
15736
+ var nextState = _assign({}, replace ? queue[0] : inst.state);
15737
+ for (var i = replace ? 1 : 0; i < queue.length; i++) {
15738
+ var partial = queue[i];
15739
+ _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);
15740
+ }
15741
+
15742
+ return nextState;
15743
+ },
15744
+
15745
+ /**
15746
+ * Merges new props and state, notifies delegate methods of update and
15747
+ * performs update.
15748
+ *
15749
+ * @param {ReactElement} nextElement Next element
15750
+ * @param {object} nextProps Next public object to set as properties.
15751
+ * @param {?object} nextState Next object to set as state.
15752
+ * @param {?object} nextContext Next public object to set as context.
15753
+ * @param {ReactReconcileTransaction} transaction
15754
+ * @param {?object} unmaskedContext
15755
+ * @private
15756
+ */
15757
+ _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {
15758
+ var _this2 = this;
15759
+
15760
+ var inst = this._instance;
15761
+
15762
+ var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);
15763
+ var prevProps;
15764
+ var prevState;
15765
+ var prevContext;
15766
+ if (hasComponentDidUpdate) {
15767
+ prevProps = inst.props;
15768
+ prevState = inst.state;
15769
+ prevContext = inst.context;
15770
+ }
15771
+
15772
+ if (inst.componentWillUpdate) {
15773
+ if (process.env.NODE_ENV !== 'production') {
15774
+ measureLifeCyclePerf(function () {
15775
+ return inst.componentWillUpdate(nextProps, nextState, nextContext);
15776
+ }, this._debugID, 'componentWillUpdate');
15777
+ } else {
15778
+ inst.componentWillUpdate(nextProps, nextState, nextContext);
15779
+ }
15780
+ }
15781
+
15782
+ this._currentElement = nextElement;
15783
+ this._context = unmaskedContext;
15784
+ inst.props = nextProps;
15785
+ inst.state = nextState;
15786
+ inst.context = nextContext;
15787
+
15788
+ this._updateRenderedComponent(transaction, unmaskedContext);
15789
+
15790
+ if (hasComponentDidUpdate) {
15791
+ if (process.env.NODE_ENV !== 'production') {
15792
+ transaction.getReactMountReady().enqueue(function () {
15793
+ measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');
15794
+ });
15795
+ } else {
15796
+ transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);
15797
+ }
15798
+ }
15799
+ },
15800
+
15801
+ /**
15802
+ * Call the component's `render` method and update the DOM accordingly.
15803
+ *
15804
+ * @param {ReactReconcileTransaction} transaction
15805
+ * @internal
15806
+ */
15807
+ _updateRenderedComponent: function (transaction, context) {
15808
+ var prevComponentInstance = this._renderedComponent;
15809
+ var prevRenderedElement = prevComponentInstance._currentElement;
15810
+ var nextRenderedElement = this._renderValidatedComponent();
15811
+
15812
+ var debugID = 0;
15813
+ if (process.env.NODE_ENV !== 'production') {
15814
+ debugID = this._debugID;
15815
+ }
15816
+
15817
+ if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {
15818
+ ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));
15819
+ } else {
15820
+ var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);
15821
+ ReactReconciler.unmountComponent(prevComponentInstance, false);
15822
+
15823
+ var nodeType = ReactNodeTypes.getType(nextRenderedElement);
15824
+ this._renderedNodeType = nodeType;
15825
+ var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */
15826
+ );
15827
+ this._renderedComponent = child;
15828
+
15829
+ var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);
15830
+
15831
+ if (process.env.NODE_ENV !== 'production') {
15832
+ if (debugID !== 0) {
15833
+ var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];
15834
+ ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);
15835
+ }
15836
+ }
15837
+
15838
+ this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);
15839
+ }
15840
+ },
15841
+
15842
+ /**
15843
+ * Overridden in shallow rendering.
15844
+ *
15845
+ * @protected
15846
+ */
15847
+ _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {
15848
+ ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);
15849
+ },
15850
+
15851
+ /**
15852
+ * @protected
15853
+ */
15854
+ _renderValidatedComponentWithoutOwnerOrContext: function () {
15855
+ var inst = this._instance;
15856
+ var renderedElement;
15857
+
15858
+ if (process.env.NODE_ENV !== 'production') {
15859
+ renderedElement = measureLifeCyclePerf(function () {
15860
+ return inst.render();
15861
+ }, this._debugID, 'render');
15862
+ } else {
15863
+ renderedElement = inst.render();
15864
+ }
15865
+
15866
+ if (process.env.NODE_ENV !== 'production') {
15867
+ // We allow auto-mocks to proceed as if they're returning null.
15868
+ if (renderedElement === undefined && inst.render._isMockFunction) {
15869
+ // This is probably bad practice. Consider warning here and
15870
+ // deprecating this convenience.
15871
+ renderedElement = null;
15872
+ }
15873
+ }
15874
+
15875
+ return renderedElement;
15876
+ },
15877
+
15878
+ /**
15879
+ * @private
15880
+ */
15881
+ _renderValidatedComponent: function () {
15882
+ var renderedElement;
15883
+ if (process.env.NODE_ENV !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {
15884
+ ReactCurrentOwner.current = this;
15885
+ try {
15886
+ renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();
15887
+ } finally {
15888
+ ReactCurrentOwner.current = null;
15889
+ }
15890
+ } else {
15891
+ renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();
15892
+ }
15893
+ !(
15894
+ // TODO: An `isValidNode` function would probably be more appropriate
15895
+ 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;
15896
+
15897
+ return renderedElement;
15898
+ },
15899
+
15900
+ /**
15901
+ * Lazily allocates the refs object and stores `component` as `ref`.
15902
+ *
15903
+ * @param {string} ref Reference name.
15904
+ * @param {component} component Component to store as `ref`.
15905
+ * @final
15906
+ * @private
15907
+ */
15908
+ attachRef: function (ref, component) {
15909
+ var inst = this.getPublicInstance();
15910
+ !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;
15911
+ var publicComponentInstance = component.getPublicInstance();
15912
+ if (process.env.NODE_ENV !== 'production') {
15913
+ var componentName = component && component.getName ? component.getName() : 'a component';
15914
+ 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;
15915
+ }
15916
+ var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;
15917
+ refs[ref] = publicComponentInstance;
15918
+ },
15919
+
15920
+ /**
15921
+ * Detaches a reference name.
15922
+ *
15923
+ * @param {string} ref Name to dereference.
15924
+ * @final
15925
+ * @private
15926
+ */
15927
+ detachRef: function (ref) {
15928
+ var refs = this.getPublicInstance().refs;
15929
+ delete refs[ref];
15930
+ },
15931
+
15932
+ /**
15933
+ * Get a text description of the component that can be used to identify it
15934
+ * in error messages.
15935
+ * @return {string} The name or null.
15936
+ * @internal
15937
+ */
15938
+ getName: function () {
15939
+ var type = this._currentElement.type;
15940
+ var constructor = this._instance && this._instance.constructor;
15941
+ return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;
15942
+ },
15943
+
15944
+ /**
15945
+ * Get the publicly accessible representation of this component - i.e. what
15946
+ * is exposed by refs and returned by render. Can be null for stateless
15947
+ * components.
15948
+ *
15949
+ * @return {ReactComponent} the public component instance.
15950
+ * @internal
15951
+ */
15952
+ getPublicInstance: function () {
15953
+ var inst = this._instance;
15954
+ if (this._compositeType === CompositeTypes.StatelessFunctional) {
15955
+ return null;
15956
+ }
15957
+ return inst;
15958
+ },
15959
+
15960
+ // Stub
15961
+ _instantiateReactComponent: null
15962
+
15963
+ };
15964
+
15965
+ module.exports = ReactCompositeComponent;
15966
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
15967
+
15968
+ /***/ },
15969
+ /* 122 */
15970
+ /***/ function(module, exports, __webpack_require__) {
15971
+
15972
+ /* WEBPACK VAR INJECTION */(function(process) {/**
15973
+ * Copyright 2013-present, Facebook, Inc.
15974
+ * All rights reserved.
15975
+ *
15976
+ * This source code is licensed under the BSD-style license found in the
15977
+ * LICENSE file in the root directory of this source tree. An additional grant
15978
+ * of patent rights can be found in the PATENTS file in the same directory.
15979
+ *
15980
+ *
15981
+ */
15982
+
15983
+ 'use strict';
15984
+
15985
+ var _prodInvariant = __webpack_require__(36);
15986
+
15987
+ var React = __webpack_require__(3);
15988
+
15989
+ var invariant = __webpack_require__(9);
15990
+
15991
+ var ReactNodeTypes = {
15992
+ HOST: 0,
15993
+ COMPOSITE: 1,
15994
+ EMPTY: 2,
15995
+
15996
+ getType: function (node) {
15997
+ if (node === null || node === false) {
15998
+ return ReactNodeTypes.EMPTY;
15999
+ } else if (React.isValidElement(node)) {
16000
+ if (typeof node.type === 'function') {
16001
+ return ReactNodeTypes.COMPOSITE;
16002
+ } else {
16003
+ return ReactNodeTypes.HOST;
16004
+ }
16005
+ }
16006
+ true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;
16007
+ }
16008
+ };
16009
+
16010
+ module.exports = ReactNodeTypes;
16011
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
16012
+
16013
+ /***/ },
16014
+ /* 123 */
16015
+ /***/ function(module, exports, __webpack_require__) {
16016
+
16017
+ /* WEBPACK VAR INJECTION */(function(process) {/**
16018
+ * Copyright 2013-present, Facebook, Inc.
16019
+ * All rights reserved.
16020
+ *
16021
+ * This source code is licensed under the BSD-style license found in the
16022
+ * LICENSE file in the root directory of this source tree. An additional grant
16023
+ * of patent rights can be found in the PATENTS file in the same directory.
16024
+ *
16025
+ */
16026
+
16027
+ 'use strict';
16028
+
16029
+ var _prodInvariant = __webpack_require__(36);
16030
+
16031
+ var ReactPropTypeLocationNames = __webpack_require__(124);
16032
+ var ReactPropTypesSecret = __webpack_require__(112);
16033
+
16034
+ var invariant = __webpack_require__(9);
16035
+ var warning = __webpack_require__(12);
16036
+
16037
+ var ReactComponentTreeHook;
16038
+
16039
+ if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {
16040
+ // Temporary hack.
16041
+ // Inline requires don't work well with Jest:
16042
+ // https://github.com/facebook/react/issues/7240
16043
+ // Remove the inline requires when we don't need them anymore:
16044
+ // https://github.com/facebook/react/pull/7178
16045
+ ReactComponentTreeHook = __webpack_require__(27);
16046
+ }
16047
+
16048
+ var loggedTypeFailures = {};
16049
+
16050
+ /**
16051
+ * Assert that the values match with the type specs.
16052
+ * Error messages are memorized and will only be shown once.
16053
+ *
16054
+ * @param {object} typeSpecs Map of name to a ReactPropType
16055
+ * @param {object} values Runtime values that need to be type-checked
16056
+ * @param {string} location e.g. "prop", "context", "child context"
16057
+ * @param {string} componentName Name of the component for error messages.
16058
+ * @param {?object} element The React element that is being type-checked
16059
+ * @param {?number} debugID The React component instance that is being type-checked
16060
+ * @private
16061
+ */
16062
+ function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) {
16063
+ for (var typeSpecName in typeSpecs) {
16064
+ if (typeSpecs.hasOwnProperty(typeSpecName)) {
16065
+ var error;
16066
+ // Prop type validation may throw. In case they do, we don't want to
16067
+ // fail the render phase where it didn't fail before. So we log it.
16068
+ // After these have been cleaned up, we'll let them throw.
16069
+ try {
16070
+ // This is intentionally an invariant that gets caught. It's the same
16071
+ // behavior as without this statement except with a better message.
16072
+ !(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;
16073
+ error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
16074
+ } catch (ex) {
16075
+ error = ex;
16076
+ }
16077
+ 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;
16078
+ if (error instanceof Error && !(error.message in loggedTypeFailures)) {
16079
+ // Only monitor this failure once because there tends to be a lot of the
16080
+ // same error.
16081
+ loggedTypeFailures[error.message] = true;
16082
+
16083
+ var componentStackInfo = '';
16084
+
16085
+ if (process.env.NODE_ENV !== 'production') {
16086
+ if (!ReactComponentTreeHook) {
16087
+ ReactComponentTreeHook = __webpack_require__(27);
16088
+ }
16089
+ if (debugID !== null) {
16090
+ componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID);
16091
+ } else if (element !== null) {
16092
+ componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element);
16093
+ }
16094
+ }
16095
+
16096
+ process.env.NODE_ENV !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0;
16097
+ }
16098
+ }
16099
+ }
16100
+ }
16101
+
16102
+ module.exports = checkReactTypeSpec;
16103
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
16104
+
16105
+ /***/ },
16106
+ /* 124 */
16107
+ /***/ function(module, exports, __webpack_require__) {
16108
+
16109
+ /* WEBPACK VAR INJECTION */(function(process) {/**
16110
+ * Copyright 2013-present, Facebook, Inc.
16111
+ * All rights reserved.
16112
+ *
16113
+ * This source code is licensed under the BSD-style license found in the
16114
+ * LICENSE file in the root directory of this source tree. An additional grant
16115
+ * of patent rights can be found in the PATENTS file in the same directory.
16116
+ *
16117
+ *
16118
+ */
16119
+
16120
+ 'use strict';
16121
+
16122
+ var ReactPropTypeLocationNames = {};
16123
+
16124
+ if (process.env.NODE_ENV !== 'production') {
16125
+ ReactPropTypeLocationNames = {
16126
+ prop: 'prop',
16127
+ context: 'context',
16128
+ childContext: 'child context'
16129
+ };
16130
+ }
16131
+
16132
+ module.exports = ReactPropTypeLocationNames;
16133
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
16134
+
16135
+ /***/ },
16136
+ /* 125 */
16137
+ /***/ function(module, exports) {
16138
+
16139
+ /**
16140
+ * Copyright (c) 2013-present, Facebook, Inc.
16141
+ * All rights reserved.
16142
+ *
16143
+ * This source code is licensed under the BSD-style license found in the
16144
+ * LICENSE file in the root directory of this source tree. An additional grant
16145
+ * of patent rights can be found in the PATENTS file in the same directory.
16146
+ *
16147
+ * @typechecks
16148
+ *
16149
+ */
16150
+
16151
+ /*eslint-disable no-self-compare */
16152
+
16153
+ 'use strict';
16154
+
16155
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
16156
+
16157
+ /**
16158
+ * inlined Object.is polyfill to avoid requiring consumers ship their own
16159
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
16160
+ */
16161
+ function is(x, y) {
16162
+ // SameValue algorithm
16163
+ if (x === y) {
16164
+ // Steps 1-5, 7-10
16165
+ // Steps 6.b-6.e: +0 != -0
16166
+ // Added the nonzero y check to make Flow happy, but it is redundant
16167
+ return x !== 0 || y !== 0 || 1 / x === 1 / y;
16168
+ } else {
16169
+ // Step 6.a: NaN == NaN
16170
+ return x !== x && y !== y;
16171
+ }
16172
+ }
16173
+
16174
+ /**
16175
+ * Performs equality by iterating through keys on an object and returning false
16176
+ * when any key has values which are not strictly equal between the arguments.
16177
+ * Returns true when the values of all keys are strictly equal.
16178
+ */
16179
+ function shallowEqual(objA, objB) {
16180
+ if (is(objA, objB)) {
16181
+ return true;
16182
+ }
16183
+
16184
+ if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
16185
+ return false;
16186
+ }
16187
+
16188
+ var keysA = Object.keys(objA);
16189
+ var keysB = Object.keys(objB);
16190
+
16191
+ if (keysA.length !== keysB.length) {
16192
+ return false;
16193
+ }
16194
+
16195
+ // Test for A's keys different from B.
16196
+ for (var i = 0; i < keysA.length; i++) {
16197
+ if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
16198
+ return false;
16199
+ }
16200
+ }
16201
+
16202
+ return true;
16203
+ }
16204
+
16205
+ module.exports = shallowEqual;
16206
+
16207
+ /***/ },
16208
+ /* 126 */
16209
+ /***/ function(module, exports) {
16210
+
16211
+ /**
16212
+ * Copyright 2013-present, Facebook, Inc.
16213
+ * All rights reserved.
16214
+ *
16215
+ * This source code is licensed under the BSD-style license found in the
16216
+ * LICENSE file in the root directory of this source tree. An additional grant
16217
+ * of patent rights can be found in the PATENTS file in the same directory.
16218
+ *
16219
+ */
16220
+
16221
+ 'use strict';
16222
+
16223
+ /**
16224
+ * Given a `prevElement` and `nextElement`, determines if the existing
16225
+ * instance should be updated as opposed to being destroyed or replaced by a new
16226
+ * instance. Both arguments are elements. This ensures that this logic can
16227
+ * operate on stateless trees without any backing instance.
16228
+ *
16229
+ * @param {?object} prevElement
16230
+ * @param {?object} nextElement
16231
+ * @return {boolean} True if the existing instance should be updated.
16232
+ * @protected
16233
+ */
16234
+
16235
+ function shouldUpdateReactComponent(prevElement, nextElement) {
16236
+ var prevEmpty = prevElement === null || prevElement === false;
16237
+ var nextEmpty = nextElement === null || nextElement === false;
16238
+ if (prevEmpty || nextEmpty) {
16239
+ return prevEmpty === nextEmpty;
16240
+ }
16241
+
16242
+ var prevType = typeof prevElement;
16243
+ var nextType = typeof nextElement;
16244
+ if (prevType === 'string' || prevType === 'number') {
16245
+ return nextType === 'string' || nextType === 'number';
16246
+ } else {
16247
+ return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;
16248
+ }
16249
+ }
16250
+
16251
+ module.exports = shouldUpdateReactComponent;
16252
+
16253
+ /***/ },
16254
+ /* 127 */
16255
+ /***/ function(module, exports) {
16256
+
16257
+ /**
16258
+ * Copyright 2014-present, Facebook, Inc.
16259
+ * All rights reserved.
16260
+ *
16261
+ * This source code is licensed under the BSD-style license found in the
16262
+ * LICENSE file in the root directory of this source tree. An additional grant
16263
+ * of patent rights can be found in the PATENTS file in the same directory.
16264
+ *
16265
+ */
16266
+
16267
+ 'use strict';
16268
+
16269
+ var emptyComponentFactory;
16270
+
16271
+ var ReactEmptyComponentInjection = {
16272
+ injectEmptyComponentFactory: function (factory) {
16273
+ emptyComponentFactory = factory;
16274
+ }
16275
+ };
16276
+
16277
+ var ReactEmptyComponent = {
16278
+ create: function (instantiate) {
16279
+ return emptyComponentFactory(instantiate);
16280
+ }
16281
+ };
16282
+
16283
+ ReactEmptyComponent.injection = ReactEmptyComponentInjection;
16284
+
16285
+ module.exports = ReactEmptyComponent;
16286
+
16287
+ /***/ },
16288
+ /* 128 */
16289
+ /***/ function(module, exports, __webpack_require__) {
16290
+
16291
+ /* WEBPACK VAR INJECTION */(function(process) {/**
16292
+ * Copyright 2014-present, Facebook, Inc.
16293
+ * All rights reserved.
16294
+ *
16295
+ * This source code is licensed under the BSD-style license found in the
16296
+ * LICENSE file in the root directory of this source tree. An additional grant
16297
+ * of patent rights can be found in the PATENTS file in the same directory.
16298
+ *
16299
+ */
16300
+
16301
+ 'use strict';
16302
+
16303
+ var _prodInvariant = __webpack_require__(36),
16304
+ _assign = __webpack_require__(51);
16305
+
16306
+ var invariant = __webpack_require__(9);
16307
+
16308
+ var genericComponentClass = null;
16309
+ // This registry keeps track of wrapper classes around host tags.
16310
+ var tagToComponentClass = {};
16311
+ var textComponentClass = null;
16312
+
16313
+ var ReactHostComponentInjection = {
16314
+ // This accepts a class that receives the tag string. This is a catch all
16315
+ // that can render any kind of tag.
16316
+ injectGenericComponentClass: function (componentClass) {
16317
+ genericComponentClass = componentClass;
16318
+ },
16319
+ // This accepts a text component class that takes the text string to be
16320
+ // rendered as props.
16321
+ injectTextComponentClass: function (componentClass) {
16322
+ textComponentClass = componentClass;
16323
+ },
16324
+ // This accepts a keyed object with classes as values. Each key represents a
16325
+ // tag. That particular tag will use this class instead of the generic one.
16326
+ injectComponentClasses: function (componentClasses) {
16327
+ _assign(tagToComponentClass, componentClasses);
16328
+ }
16329
+ };
16330
+
16331
+ /**
16332
+ * Get a host internal component class for a specific tag.
16333
+ *
16334
+ * @param {ReactElement} element The element to create.
16335
+ * @return {function} The internal class constructor function.
16336
+ */
16337
+ function createInternalComponent(element) {
16338
+ !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;
16339
+ return new genericComponentClass(element);
16340
+ }
16341
+
16342
+ /**
16343
+ * @param {ReactText} text
16344
+ * @return {ReactComponent}
16345
+ */
16346
+ function createInstanceForText(text) {
16347
+ return new textComponentClass(text);
16348
+ }
16349
+
16350
+ /**
16351
+ * @param {ReactComponent} component
16352
+ * @return {boolean}
16353
+ */
16354
+ function isTextComponent(component) {
16355
+ return component instanceof textComponentClass;
16356
+ }
16357
+
16358
+ var ReactHostComponent = {
16359
+ createInternalComponent: createInternalComponent,
16360
+ createInstanceForText: createInstanceForText,
16361
+ isTextComponent: isTextComponent,
16362
+ injection: ReactHostComponentInjection
16363
+ };
16364
+
16365
+ module.exports = ReactHostComponent;
16366
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
16367
+
16368
+ /***/ },
16369
+ /* 129 */
16370
+ /***/ function(module, exports) {
16371
+
16372
+ /**
16373
+ * Copyright 2013-present, Facebook, Inc.
16374
+ * All rights reserved.
16375
+ *
16376
+ * This source code is licensed under the BSD-style license found in the
16377
+ * LICENSE file in the root directory of this source tree. An additional grant
16378
+ * of patent rights can be found in the PATENTS file in the same directory.
16379
+ *
16380
+ *
16381
+ */
16382
+
16383
+ 'use strict';
16384
+
16385
+ var nextDebugID = 1;
16386
+
16387
+ function getNextDebugID() {
16388
+ return nextDebugID++;
16389
+ }
16390
+
16391
+ module.exports = getNextDebugID;
16392
+
16393
+ /***/ },
16394
+ /* 130 */
16395
+ /***/ function(module, exports) {
16396
+
16397
+ /**
16398
+ * Copyright 2013-present, Facebook, Inc.
16399
+ * All rights reserved.
16400
+ *
16401
+ * This source code is licensed under the BSD-style license found in the
16402
+ * LICENSE file in the root directory of this source tree. An additional grant
16403
+ * of patent rights can be found in the PATENTS file in the same directory.
16404
+ *
16405
+ *
16406
+ */
16407
+
16408
+ 'use strict';
16409
+
16410
+ /**
16411
+ * Escape and wrap key so it is safe to use as a reactid
16412
+ *
16413
+ * @param {string} key to be escaped.
16414
+ * @return {string} the escaped key.
16415
+ */
16416
+
16417
+ function escape(key) {
16418
+ var escapeRegex = /[=:]/g;
16419
+ var escaperLookup = {
16420
+ '=': '=0',
16421
+ ':': '=2'
16422
+ };
16423
+ var escapedString = ('' + key).replace(escapeRegex, function (match) {
16424
+ return escaperLookup[match];
16425
+ });
16426
+
16427
+ return '$' + escapedString;
16428
+ }
16429
+
16430
+ /**
16431
+ * Unescape and unwrap key for human-readable display
16432
+ *
16433
+ * @param {string} key to unescape.
16434
+ * @return {string} the unescaped key.
16435
+ */
16436
+ function unescape(key) {
16437
+ var unescapeRegex = /(=0|=2)/g;
16438
+ var unescaperLookup = {
16439
+ '=0': '=',
16440
+ '=2': ':'
16441
+ };
16442
+ var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);
16443
+
16444
+ return ('' + keySubstring).replace(unescapeRegex, function (match) {
16445
+ return unescaperLookup[match];
16446
+ });
16447
+ }
16448
+
16449
+ var KeyEscapeUtils = {
16450
+ escape: escape,
16451
+ unescape: unescape
16452
+ };
16453
+
16454
+ module.exports = KeyEscapeUtils;
16455
+
16456
+ /***/ },
16457
+ /* 131 */
16458
+ /***/ function(module, exports, __webpack_require__) {
16459
+
16460
+ /* WEBPACK VAR INJECTION */(function(process) {/**
16461
+ * Copyright 2013-present, Facebook, Inc.
16462
+ * All rights reserved.
16463
+ *
16464
+ * This source code is licensed under the BSD-style license found in the
16465
+ * LICENSE file in the root directory of this source tree. An additional grant
16466
+ * of patent rights can be found in the PATENTS file in the same directory.
16467
+ *
16468
+ */
16469
+
16470
+ 'use strict';
16471
+
16472
+ var _prodInvariant = __webpack_require__(36);
16473
+
16474
+ var ReactCurrentOwner = __webpack_require__(11);
16475
+ var REACT_ELEMENT_TYPE = __webpack_require__(132);
16476
+
16477
+ var getIteratorFn = __webpack_require__(133);
16478
+ var invariant = __webpack_require__(9);
16479
+ var KeyEscapeUtils = __webpack_require__(130);
16480
+ var warning = __webpack_require__(12);
16481
+
16482
+ var SEPARATOR = '.';
16483
+ var SUBSEPARATOR = ':';
16484
+
16485
+ /**
16486
+ * This is inlined from ReactElement since this file is shared between
16487
+ * isomorphic and renderers. We could extract this to a
16488
+ *
16489
+ */
16490
+
16491
+ /**
16492
+ * TODO: Test that a single child and an array with one item have the same key
16493
+ * pattern.
16494
+ */
16495
+
16496
+ var didWarnAboutMaps = false;
16497
+
16498
+ /**
16499
+ * Generate a key string that identifies a component within a set.
16500
+ *
16501
+ * @param {*} component A component that could contain a manual key.
16502
+ * @param {number} index Index that is used if a manual key is not provided.
16503
+ * @return {string}
16504
+ */
16505
+ function getComponentKey(component, index) {
16506
+ // Do some typechecking here since we call this blindly. We want to ensure
16507
+ // that we don't block potential future ES APIs.
16508
+ if (component && typeof component === 'object' && component.key != null) {
16509
+ // Explicit key
16510
+ return KeyEscapeUtils.escape(component.key);
16511
+ }
16512
+ // Implicit key determined by the index in the set
16513
+ return index.toString(36);
16514
+ }
16515
+
16516
+ /**
16517
+ * @param {?*} children Children tree container.
16518
+ * @param {!string} nameSoFar Name of the key path so far.
16519
+ * @param {!function} callback Callback to invoke with each child found.
16520
+ * @param {?*} traverseContext Used to pass information throughout the traversal
16521
+ * process.
16522
+ * @return {!number} The number of children in this subtree.
16523
+ */
16524
+ function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {
16525
+ var type = typeof children;
16526
+
16527
+ if (type === 'undefined' || type === 'boolean') {
16528
+ // All of the above are perceived as null.
16529
+ children = null;
16530
+ }
16531
+
16532
+ if (children === null || type === 'string' || type === 'number' ||
16533
+ // The following is inlined from ReactElement. This means we can optimize
16534
+ // some checks. React Fiber also inlines this logic for similar purposes.
16535
+ type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {
16536
+ callback(traverseContext, children,
16537
+ // If it's the only child, treat the name as if it was wrapped in an array
16538
+ // so that it's consistent if the number of children grows.
16539
+ nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);
16540
+ return 1;
16541
+ }
16542
+
16543
+ var child;
16544
+ var nextName;
16545
+ var subtreeCount = 0; // Count of children found in the current subtree.
16546
+ var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;
16547
+
16548
+ if (Array.isArray(children)) {
16549
+ for (var i = 0; i < children.length; i++) {
16550
+ child = children[i];
16551
+ nextName = nextNamePrefix + getComponentKey(child, i);
16552
+ subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
16553
+ }
16554
+ } else {
16555
+ var iteratorFn = getIteratorFn(children);
16556
+ if (iteratorFn) {
16557
+ var iterator = iteratorFn.call(children);
16558
+ var step;
16559
+ if (iteratorFn !== children.entries) {
16560
+ var ii = 0;
16561
+ while (!(step = iterator.next()).done) {
16562
+ child = step.value;
16563
+ nextName = nextNamePrefix + getComponentKey(child, ii++);
16564
+ subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
16565
+ }
16566
+ } else {
16567
+ if (process.env.NODE_ENV !== 'production') {
16568
+ var mapsAsChildrenAddendum = '';
16569
+ if (ReactCurrentOwner.current) {
16570
+ var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();
16571
+ if (mapsAsChildrenOwnerName) {
16572
+ mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';
16573
+ }
16574
+ }
16575
+ 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;
16576
+ didWarnAboutMaps = true;
16577
+ }
16578
+ // Iterator will provide entry [k,v] tuples rather than values.
16579
+ while (!(step = iterator.next()).done) {
16580
+ var entry = step.value;
16581
+ if (entry) {
16582
+ child = entry[1];
16583
+ nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);
16584
+ subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
16585
+ }
16586
+ }
16587
+ }
16588
+ } else if (type === 'object') {
16589
+ var addendum = '';
16590
+ if (process.env.NODE_ENV !== 'production') {
16591
+ 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.';
16592
+ if (children._isReactElement) {
16593
+ 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.';
16594
+ }
16595
+ if (ReactCurrentOwner.current) {
16596
+ var name = ReactCurrentOwner.current.getName();
16597
+ if (name) {
16598
+ addendum += ' Check the render method of `' + name + '`.';
16599
+ }
16600
+ }
16601
+ }
16602
+ var childrenString = String(children);
16603
+ 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;
16604
+ }
16605
+ }
16606
+
16607
+ return subtreeCount;
16608
+ }
16609
+
16610
+ /**
16611
+ * Traverses children that are typically specified as `props.children`, but
16612
+ * might also be specified through attributes:
16613
+ *
16614
+ * - `traverseAllChildren(this.props.children, ...)`
16615
+ * - `traverseAllChildren(this.props.leftPanelChildren, ...)`
16616
+ *
16617
+ * The `traverseContext` is an optional argument that is passed through the
16618
+ * entire traversal. It can be used to store accumulations or anything else that
16619
+ * the callback might find relevant.
16620
+ *
16621
+ * @param {?*} children Children tree object.
16622
+ * @param {!function} callback To invoke upon traversing each child.
16623
+ * @param {?*} traverseContext Context for traversal.
16624
+ * @return {!number} The number of children in this subtree.
16625
+ */
16626
+ function traverseAllChildren(children, callback, traverseContext) {
16627
+ if (children == null) {
16628
+ return 0;
16629
+ }
16630
+
16631
+ return traverseAllChildrenImpl(children, '', callback, traverseContext);
16632
+ }
16633
+
16634
+ module.exports = traverseAllChildren;
16635
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
16636
+
16637
+ /***/ },
16638
+ /* 132 */
16639
+ /***/ function(module, exports) {
16640
+
16641
+ /**
16642
+ * Copyright 2014-present, Facebook, Inc.
16643
+ * All rights reserved.
16644
+ *
16645
+ * This source code is licensed under the BSD-style license found in the
16646
+ * LICENSE file in the root directory of this source tree. An additional grant
16647
+ * of patent rights can be found in the PATENTS file in the same directory.
16648
+ *
16649
+ *
16650
+ */
16651
+
16652
+ 'use strict';
16653
+
16654
+ // The Symbol used to tag the ReactElement type. If there is no native Symbol
16655
+ // nor polyfill, then a plain number is used for performance.
16656
+
16657
+ var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;
16658
+
16659
+ module.exports = REACT_ELEMENT_TYPE;
16660
+
16661
+ /***/ },
16662
+ /* 133 */
16663
+ /***/ function(module, exports) {
16664
+
16665
+ /**
16666
+ * Copyright 2013-present, Facebook, Inc.
16667
+ * All rights reserved.
16668
+ *
16669
+ * This source code is licensed under the BSD-style license found in the
16670
+ * LICENSE file in the root directory of this source tree. An additional grant
16671
+ * of patent rights can be found in the PATENTS file in the same directory.
16672
+ *
16673
+ *
16674
+ */
16675
+
16676
+ 'use strict';
16677
+
16678
+ /* global Symbol */
16679
+
16680
+ var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
16681
+ var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
16682
+
16683
+ /**
16684
+ * Returns the iterator method function contained on the iterable object.
16685
+ *
16686
+ * Be sure to invoke the function with the iterable as context:
16687
+ *
16688
+ * var iteratorFn = getIteratorFn(myIterable);
16689
+ * if (iteratorFn) {
16690
+ * var iterator = iteratorFn.call(myIterable);
16691
+ * ...
16692
+ * }
16693
+ *
16694
+ * @param {?object} maybeIterable
16695
+ * @return {?function}
16696
+ */
16697
+ function getIteratorFn(maybeIterable) {
16698
+ var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
16699
+ if (typeof iteratorFn === 'function') {
16700
+ return iteratorFn;
16701
+ }
16702
+ }
16703
+
16704
+ module.exports = getIteratorFn;
16705
+
16706
+ /*