Contact Form 7 Skins - Version 2.0

Version Description

  • 2018-06-19 =

  • FEATURE: Add drag & drop Visual Editor

  • FEATURE: Display Notices when update plugin

  • FIX: Update template files to match visual files

  • FIX: Ensure CF7 Skins connects to CF7 Form section

  • TWEAK: Show Getting Started Tab when activate plugin

  • TWEAK: Ensure deselecting within Template or Style List also deselects in Details or Expanded View

Download this release

Release Info

Developer buzztone
Plugin Icon 128x128 Contact Form 7 Skins
Version 2.0
Comparing to
See all releases

Code changes from version 1.2.2 to 2.0

css/admin.css CHANGED
@@ -550,4 +550,24 @@
550
  #cf7s .cf7s-info-sidebar ul {
551
  list-style: disc outside none;
552
  margin: 0 1.5em;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
553
  }
550
  #cf7s .cf7s-info-sidebar ul {
551
  list-style: disc outside none;
552
  margin: 0 1.5em;
553
+ }
554
+
555
+ /* Visual Tab @since 2.0.0 */
556
+ #cf7s #tab-visual {
557
+ padding: 20px;
558
+ background-color: #d3e398;
559
+ border-top: 1px solid #bcc986;
560
+ }
561
+
562
+ #cf7s .nav-tab-visual:hover,
563
+ #cf7s .nav-tab-visual.nav-tab-active {
564
+ background-color: #d3e398;
565
+ border-color: #bcc986;
566
+ border-bottom-color: transparent;
567
+ text-shadow: 0px 1px 4px #bcc986;
568
+ }
569
+
570
+ #cf7s .nav-tab-visual:hover .help,
571
+ #cf7s .nav-tab-visual.nav-tab-active .help {
572
+ background-color: #bcc986;
573
  }
freemius/assets/img/contact-form-7-skins.png ADDED
Binary file
images/cf7skins-forms.jpg DELETED
Binary file
images/cf7skins-icon-128x128.png ADDED
Binary file
images/cf7skins-solution.jpg DELETED
Binary file
images/cf7skins-styles.png ADDED
Binary file
images/cf7skins-templates.png ADDED
Binary file
images/cf7skins-visual-ui.png ADDED
Binary file
images/using-cf7skins.jpg DELETED
Binary file
includes/admin-notice.php ADDED
@@ -0,0 +1,172 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * CF7 Skins Admin Notice Class.
4
+ *
5
+ * Implement all functionality for CF7 Skins Admin notice on all admin pages
6
+ *
7
+ * @package cf7skins
8
+ * @author Neil Murray
9
+ *
10
+ * @since 2.0.0
11
+ */
12
+
13
+ class CF7_Skins_Admin_Notice {
14
+
15
+ private $skip_interval;
16
+
17
+ /**
18
+ * Class constructor
19
+ *
20
+ * @since 2.0.0
21
+ */
22
+ function __construct() {
23
+ $this->skip_interval = WEEK_IN_SECONDS * 2; // skip for 2 weeks
24
+
25
+ add_action( 'upgrader_process_complete', array( &$this, 'add_update_notice' ), 1, 2 );
26
+ add_action( 'admin_notices', array( &$this, 'update_notice' ) );
27
+ add_action( 'wp_ajax_cf7skins_dismiss_update_notice', array( &$this, 'dismiss_update_notice' ) );
28
+ add_action( 'admin_head', array( &$this, 'update_notice_css' ), 9 );
29
+ add_action( 'admin_footer', array( &$this, 'dismiss_update_notice_js' ), 9 );
30
+ }
31
+
32
+ /**
33
+ * Upgrade plugin version number after upgrading
34
+ *
35
+ * See https://github.com/WordPress/WordPress/blob/master/wp-admin/includes/class-wp-upgrader.php#L615
36
+ * @param $object WP upgrader class object
37
+ * @param (array) $args Example:
38
+ * Single update: array (
39
+ * [plugin] => contact-form-7-skins/index.php
40
+ * [type] => plugin
41
+ * [action] => update
42
+ * )
43
+ * Bulk update: array(
44
+ * [action] => update
45
+ * [type] => plugin
46
+ * [bulk] => 1
47
+ * [plugins] => array(
48
+ * [0] => akismet/akismet.php
49
+ * [1] => contact-form-7-skins/index.php
50
+ * )
51
+ * )
52
+ * @since 2.0.0
53
+ */
54
+ function add_update_notice( $object, $args ) {
55
+
56
+ // Bail early if this is not plugin update process
57
+ if ( 'update' !== $args['action'] || 'plugin' !== $args['type'] ) {
58
+ return;
59
+ }
60
+
61
+ // Do version update if this is a single update and the plugin file is $args['plugin']
62
+ if ( isset( $args['plugin'] ) && plugin_basename( __FILE__ ) === $args['plugin'] ) {
63
+ add_option( 'cf7skins_update_notice', 1 );
64
+ }
65
+
66
+ // Do version update if this is a bulk update and the plugin file is in the $args['plugins']
67
+ if ( isset( $args['plugins'] ) && in_array( plugin_basename( __FILE__ ), $args['plugins'] ) ) {
68
+ add_option( 'cf7skins_update_notice', 1 );
69
+ }
70
+ }
71
+
72
+ /**
73
+ * Display admin notice after update or skipped interval reached
74
+ *
75
+ * @since 2.0.0
76
+ */
77
+ function update_notice() {
78
+ $notice_option = get_option( 'cf7skins_update_notice' );
79
+
80
+ // If this is the first update notice, or skipped notice
81
+ if ( 1 === $notice_option || current_time( 'timestamp' ) > $notice_option ) {
82
+ ?>
83
+ <div id="cf7skins-update-notice" class="notice notice-success is-dismissible">
84
+ <img class="logo" src="<?php echo CF7SKINS_URL . 'images/cf7skins-icon-128x128.png'; ?>" alt="" />
85
+ <h3><?php _e( 'Introducing our new drag & drop Visual Editor for Contact Form 7 forms.', CF7SKINS_TEXTDOMAIN ); ?></h3>
86
+ <p>
87
+ <?php _e( 'Fast, easy form creation on the new CF7 Skins Form tab. Try it out on a new form.', CF7SKINS_TEXTDOMAIN ); ?>
88
+ <br />
89
+ <a href="http://kb.cf7skins.com/cf7-skins-visual-editor-tour/"><?php _e( 'Take a tour', CF7SKINS_TEXTDOMAIN ); ?></a> –
90
+ <a href="http://kb.cf7skins.com/edit-cf7-skins-form-visual-editor/"><?php _e( 'Visit our documentation', CF7SKINS_TEXTDOMAIN ); ?></a>
91
+ </p>
92
+ </div>
93
+ <?php
94
+ }
95
+ }
96
+
97
+ /**
98
+ * Update notice via AJAX after clicking dismiss button
99
+ *
100
+ * @since 2.0.0
101
+ */
102
+ function dismiss_update_notice() {
103
+ // Check the nonce and if not isset the id, just die.
104
+ if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'cf7skins_update_notice' ) ) {
105
+ die();
106
+ }
107
+
108
+ // Set skip interval based on current time
109
+ update_option( 'cf7skins_update_notice', current_time( 'timestamp' ) + $this->skip_interval );
110
+
111
+ exit();
112
+ }
113
+
114
+ /**
115
+ * Custom CSS for update admin notice
116
+ *
117
+ * @since 2.0.0
118
+ */
119
+ function update_notice_css() {
120
+ ?>
121
+ <style type="text/css">
122
+ #cf7skins-update-notice {
123
+ padding-left: 110px;
124
+ position: relative;
125
+ min-height: 84px;
126
+ }
127
+ #cf7skins-update-notice .logo {
128
+ position: absolute;
129
+ left: 12px;
130
+ top: 12px;
131
+ width: 80px;
132
+ height: 80px;
133
+ }
134
+ #cf7skins-update-notice p {
135
+ padding: 0;
136
+ margin: 1em 0;
137
+ }
138
+ #cf7skins-update-notice a {
139
+ text-decoration: none;
140
+ }
141
+ </style>
142
+ <?php
143
+ }
144
+
145
+ /**
146
+ * Dismiss update notice script
147
+ *
148
+ * @since 2.0.0
149
+ */
150
+ function dismiss_update_notice_js() {
151
+ if ( wp_script_is( 'jquery', 'done' ) ) {
152
+ ?>
153
+ <script type="text/javascript">
154
+ (function ($) {
155
+ $(function () { // shorthand for ready event
156
+ $(document).on( 'click', '#cf7skins-update-notice button.notice-dismiss', function(e) {
157
+ e.preventDefault();
158
+ var data = {
159
+ 'action': 'cf7skins_dismiss_update_notice',
160
+ 'nonce': '<?php echo wp_create_nonce( 'cf7skins_update_notice' ); ?>'
161
+ };
162
+ $.post( ajaxurl, data ); // update notice
163
+ });
164
+ })
165
+ }(jQuery));
166
+ </script>
167
+ <?php
168
+ }
169
+ }
170
+ }
171
+
172
+ new CF7_Skins_Admin_Notice();
includes/admin-visual.php ADDED
@@ -0,0 +1,807 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * CF7 Skins Visual Admin Class.
4
+ *
5
+ * @package cf7skins
6
+ * @author Neil Murray
7
+ *
8
+ * @since 2.0.0
9
+ */
10
+
11
+ Class CF7_Skins_Admin_Visual {
12
+
13
+ var $dom;
14
+ var $textdomain;
15
+
16
+ /**
17
+ * Class constructor
18
+ *
19
+ * @since 2.0.0
20
+ */
21
+ function __construct() {
22
+
23
+ // For debugging purpose, should be deleted for live
24
+ // Add in .htaccess file php_flag display_errors 1
25
+ ini_set( 'display_errors', 1 );
26
+
27
+ $this->nonce = CF7SKINS_OPTIONS;
28
+ $this->textdomain = CF7SKINS_TEXTDOMAIN;
29
+ $this->version = CF7SKINS_VERSION;
30
+ $this->url = CF7SKINS_URL;
31
+
32
+ $this->dom = new DOMDocument( '1.0', 'utf-8' );
33
+
34
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ), 11 );
35
+ add_action( 'admin_print_footer_scripts', array( $this, 'log_scripts' ) );
36
+ add_action( 'cf7s_update', array( $this, 'save_visual' ), 10, 1 );
37
+ add_action( 'cf7skins_copy', array( $this, 'copy_visual' ) );
38
+ add_action( 'cf7skins_tabs', array( $this, 'visual_tab' ) );
39
+ add_action( 'cf7skins_tab_content', array( $this, 'visual_content' ) );
40
+ add_action( 'wpcf7_admin_notices', array( &$this, 'admin_notice' ) );
41
+ add_action( 'wp_ajax_cf7skins_visual_update', array( &$this, 'cf7skins_visual_update' ) );
42
+ add_action( 'wp_ajax_visual_select_template', array( &$this, 'select_template' ) );
43
+ add_filter( 'cf7skins_setting_fields', array( &$this, 'setting_fields' ) );
44
+ }
45
+
46
+ /**
47
+ * Add visual form tab.
48
+ *
49
+ * @param {Array} $tabs CF7 Skins tabs
50
+ *
51
+ * @return {Array} visual tab
52
+ *
53
+ * @since 2.0.0
54
+ */
55
+ function visual_tab( $tabs ) {
56
+ return array ( 'visual' => array(
57
+ 'label' => __( 'Form', $this->textdomain ),
58
+ 'note' => __( 'Drag and drop fields up and down to re-order them. Any field content can be changed by clicking Edit on the field. Click Save Visual to update your Contact Form 7 form.', $this->textdomain ),
59
+ 'help' => __( 'Create a new form by selecting a template. Or, build your own. Drag and drop fields into the visual form editor from the Fields section. Edit, duplicate, or delete a field using the field’s icons.', $this->textdomain )
60
+ )) + $tabs;
61
+ }
62
+
63
+ /**
64
+ * Add visual form content/section.
65
+ *
66
+ * @param {Array} $tabs CF7 Skins tabs
67
+ *
68
+ * @since 2.0.0
69
+ */
70
+ function visual_content( $tabs ) {
71
+ // TODO
72
+ }
73
+
74
+ /**
75
+ * Save the visual form by clicking Save Visual button.
76
+ *
77
+ * @param {Object} $cf7 Contact Form 7 object
78
+ *
79
+ * @since 2.0.0
80
+ */
81
+ function save_visual( $cf7 ) {
82
+ // Debug statement to work with PHP Console, to log PHP data to Chrome DevTools for
83
+ // use with a local wordpress install https://github.com/unfulvio/wp-php-console
84
+
85
+ // Return if visual data does not exist
86
+ if ( ! isset( $_POST['cf7s-visual'] ) ) {
87
+ return;
88
+ }
89
+
90
+ $form_id = CF7_Skins_Contact::get_form_id( $cf7 );
91
+
92
+ // Remove extra backslashes, decode Visual JSON data
93
+ $visual = json_decode( stripslashes( $_POST['cf7s-visual'] ) );
94
+
95
+ // Remove visual meta data if is emptied by user or form does not have visual data
96
+ if ( ! $visual ) {
97
+ delete_post_meta( $form_id, 'cf7s_visual' );
98
+ return;
99
+ }
100
+
101
+ // Save visual meta data for further use
102
+ update_post_meta( $form_id, 'cf7s_visual', $visual );
103
+
104
+ // Update CF7 textarea form content
105
+ $visual_content = trim( $this->extract_visual( $visual ) );
106
+ update_post_meta( $form_id, '_form', $visual_content );
107
+ }
108
+
109
+ /**
110
+ * Create <div /> with specific ID for ReactDOM to render admin notification after Save
111
+ *
112
+ * @since 2.0.0
113
+ */
114
+ function admin_notice() {
115
+ ?><div id="cf7s-visual-notice"></div><?php
116
+ }
117
+
118
+ /**
119
+ * Saves the visual form using AJAX call.
120
+ *
121
+ * This function is intended for Visual template development
122
+ *
123
+ * @since 2.0.0
124
+ */
125
+ function cf7skins_visual_update() {
126
+ // Security check
127
+ if ( ! wp_verify_nonce( $_POST['nonce'], $this->nonce ) && ! isset( $_POST['visual'] ) ) {
128
+ die();
129
+ }
130
+
131
+ $visual = json_decode( stripslashes( $_POST['visual'] ) );
132
+ $form_id = (int) $_POST['form_id'];
133
+
134
+ // Save visual meta data for further use
135
+ update_post_meta( $form_id, 'cf7s_visual', $visual );
136
+
137
+ // Uncomment line below to generate visual template object
138
+ // print_r( str_replace("'", "\\'", stripslashes( $_POST['visual'] )) );
139
+
140
+ // Update form content
141
+ $visual_html = trim( $this->extract_visual( $visual ) );
142
+ update_post_meta( $form_id, '_form', $visual_html );
143
+
144
+ // Update form title if is set.
145
+ if ( isset( $_POST['title'] ) ) {
146
+ wp_update_post( array(
147
+ 'ID' => $form_id,
148
+ 'post_title' => $_POST['title'], // sanitized by WP
149
+ ) );
150
+ }
151
+
152
+ // Update select/deselect template
153
+ if ( $_POST['template'] ) { // selected
154
+ update_post_meta( $form_id, 'cf7s_template', esc_attr( $_POST['template'] ) );
155
+ } else { // deselected or empty
156
+ delete_post_meta( $form_id, 'cf7s_template' );
157
+ }
158
+
159
+ // Update select/deselect style
160
+ if ( $_POST['style'] ) { // selected
161
+ update_post_meta( $form_id, 'cf7s_style', esc_attr( $_POST['style'] ) );
162
+ } else { // deselected or empty
163
+ delete_post_meta( $form_id, 'cf7s_style' );
164
+ }
165
+
166
+ // Output visual HTML content
167
+ $output = array();
168
+ $output['form'] = $visual_html;
169
+
170
+ /**
171
+ * Run add-ons JavaScript callback functions
172
+ * Can be function within namespace or standalone function
173
+ * For example: myNameSpace.myFunction() or anotherFunction();
174
+ */
175
+ $output['callbacks'] = apply_filters( 'cf7s_visual_update_js_callbacks', array() );
176
+
177
+ echo json_encode( $output );
178
+
179
+ exit();
180
+ }
181
+
182
+ /**
183
+ * Extract visual items to CF7 form tag.
184
+ *
185
+ * @param {Object} $item cf7sItems properties
186
+ *
187
+ * @return ADD INFO
188
+ *
189
+ * @since 2.0.0
190
+ */
191
+ function extract_visual( $items ) {
192
+
193
+ // Return if visual is empty or invalid
194
+ if ( ! is_array( $items ) ) {
195
+ return false;
196
+ }
197
+
198
+ // Create new DOM
199
+ $dom = $this->dom;
200
+ $dom->preserveWhiteSpace = false;
201
+ $dom->formatOutput = true;
202
+
203
+ foreach( $items as $item ) {
204
+ $parent = $this->create_element( $item ); // parent item
205
+
206
+ if ( isset( $item->children ) && $item->children ) {
207
+ $this->loop_children( $item, $parent );
208
+ }
209
+
210
+ $dom->appendChild( $parent );
211
+ }
212
+
213
+ // Replace two spaces to single tab and save XML
214
+ $xml = preg_replace_callback( '/^( +)</m', function( $a ) {
215
+ return str_repeat( "\t", intval( strlen( $a[1]) / 2 ) ) . '<';
216
+ }, $dom->saveXML( $dom, LIBXML_NOEMPTYTAG ) );
217
+
218
+ $xml = preg_replace( "|<\?xml(.+?)\?>[\n\r]?|i", "", $xml ); // remove XML declaration
219
+ $xml = str_replace( array("<tag>","</tag>"), "", $xml ); // remove <tag> helper
220
+ $xml = preg_replace( "/<cf7content>\s*|\s*<\/cf7content>/", "", $xml ); // remove <tag> helper
221
+
222
+ return $xml;
223
+ }
224
+
225
+ /**
226
+ * Fetch loop recursive through item children.
227
+ *
228
+ * @param {Object} $item cf7sItems properties
229
+ * @param {DOM Object} $parent parent DOM element
230
+ *
231
+ * @since 2.0.0
232
+ */
233
+ function loop_children( $item, $parent ) {
234
+ foreach ( $item->children as $child ) {
235
+ $_item = $this->create_element( $child );
236
+
237
+ if ( isset( $child->children ) ) {
238
+ $this->loop_children( $child, $_item );
239
+ }
240
+
241
+ $parent->appendChild( $_item );
242
+ }
243
+ }
244
+
245
+ /**
246
+ * Append or insert child allowed HTML content to parent.
247
+ *
248
+ * DOM createDocumentFragment() can't handle malformed HTML
249
+ * DOM loadHTML() can handle malformed HTML using libxml_use_internal_errors() before and after insertion
250
+ * Malformed HTML tag will be fixed automatically
251
+ *
252
+ * @param {DOM Object} $node parent node to insert the child nodes
253
+ * @param {HTML} $content content contains HTML as child nodes
254
+ *
255
+ * @return {DOM Object} DOM parent with child nodes
256
+ *
257
+ * @since 2.0.0
258
+ */
259
+ function import_node( $parent, $content ) {
260
+ libxml_use_internal_errors( true ); // handle error
261
+ $html = new DOMDocument();
262
+
263
+ // It should be noted that when any text is provided within the body tag
264
+ // outside of a containing element, the DOMDocument will encapsulate that
265
+ // text into a paragraph tag (<p>). So we need to encapsulate it with our own tag
266
+ // and replace it later in extract_visual()
267
+ $html->loadHTML( "<cf7content>$content</cf7content>" );
268
+
269
+ foreach ( $html->getElementsByTagName('body')->item(0)->childNodes as $node ) {
270
+ $parent = $parent->ownerDocument->importNode( $node, true ); // overwrite
271
+ }
272
+
273
+ libxml_use_internal_errors( false ); // handle error
274
+ return $parent;
275
+ }
276
+
277
+ /**
278
+ * Create element based on item type.
279
+ *
280
+ * @todo Add data validation/sanitazion routine
281
+ *
282
+ * @param {Object} $item cf7sItems properties
283
+ *
284
+ * @return {DOM Object} element DOM
285
+ *
286
+ * @since 2.0.0
287
+ */
288
+ function create_element( $item ) {
289
+
290
+ $dom = $this->dom; // assign this class DOM, see __construct()
291
+
292
+ // CF7 Skins Visual items
293
+ $cf7_tags = array(
294
+ 'acceptance', 'checkbox', 'date', 'email', 'file', 'number', 'quiz', 'radio',
295
+ 'select', 'submit', 'tel', 'text', 'textarea', 'url', 'recaptcha',
296
+ );
297
+ $cf7s_items = array( 'fieldset', 'paragraph', 'list-ol', 'list-li' );
298
+
299
+ // Parse CF7 Skins items
300
+ switch( $item->cf7sType ) {
301
+ case 'fieldset':
302
+ $skin_item = $dom->createElement( 'fieldset' );
303
+ $label = isset( $item->cf7sLabel ) ? wp_strip_all_tags( $item->cf7sLabel ) : ''; // validate, set default to empty
304
+ $legend = $dom->createElement( 'legend', $label );
305
+ $skin_item->appendChild( $legend );
306
+ break;
307
+
308
+ case 'paragraph':
309
+ $skin_item = $dom->createElement( 'p' );
310
+
311
+ // Bail early if not set or empty content, no need to parse child nodes
312
+ if ( ! isset( $item->cf7sContent ) || ! $item->cf7sContent ) {
313
+ break;
314
+ }
315
+
316
+ // Append content to paragraph with allowed HTML
317
+ $cf7sContent = $this->import_node( $skin_item, $item->cf7sContent );
318
+ $skin_item->appendChild( $cf7sContent );
319
+ break;
320
+
321
+ case 'list-ol':
322
+ $skin_item = $dom->createElement( 'ol' );
323
+ break;
324
+
325
+ case 'list-li':
326
+ $skin_item = $dom->createElement( 'li' );
327
+
328
+ // Make list one line if <li> value is a text
329
+ // Nested <ol> will have tab indent
330
+ $_bool = array();
331
+
332
+ if ( isset( $item->children ) && $item->children ) {
333
+ foreach ( $item->children as $k => $child ) {
334
+ if ( in_array( $child->cf7sType, $cf7_tags ) ) {
335
+ $_bool[] = false;
336
+ } elseif ( in_array( $child->cf7sType, $cf7s_items ) ) { // contain HTML
337
+ $_bool[] = true;
338
+ }
339
+ }
340
+ }
341
+
342
+ if ( ! in_array( true, $_bool ) ) { // not true, display in one line
343
+ $skin_item->nodeValue = '';
344
+ }
345
+ break;
346
+
347
+ case in_array( $item->cf7sType, $cf7_tags ) :
348
+ // Put text as label before shortcode tag
349
+ // For submit button, value is used for the button text
350
+ $label = 'submit' != $item->cf7sType && isset( $item->cf7sLabel ) ? esc_attr( $item->cf7sLabel ) . ' ' : '';
351
+ $tags = $label . $this->create_cf7_tags( $item );
352
+
353
+ // Create tag helper, will be removed before saving
354
+ // Inserted as a child node rather than text for formatting
355
+ $skin_item = $dom->createElement( 'tag', $tags );
356
+
357
+ // Condition attributes is used for shortcode content that need a closing tag
358
+ // Check backward compatibility
359
+ if ( isset( $item->cf7Content ) && $item->cf7Content ) {
360
+
361
+ // Import the content
362
+ $cf7Content = $this->import_node( $skin_item, $item->cf7Content );
363
+ $skin_item->appendChild( $cf7Content );
364
+
365
+ // Add closing shortcode tag
366
+ $closing_tag = $dom->createTextNode( "[/{$item->cf7sType}]" );
367
+ $skin_item->appendChild( $closing_tag );
368
+ }
369
+
370
+ break;
371
+
372
+ default :
373
+ $skin_item = $dom->createElement( 'div' ); // create <div></div> element
374
+ break;
375
+ }
376
+
377
+ /**
378
+ * Element creation filter.
379
+ *
380
+ * @param {DOM Object} $skin_item visual DOM elements
381
+ * @param {Object} $item visual item
382
+ *
383
+ * @since 2.0.0
384
+ */
385
+ return apply_filters( 'cf7skins_create_element', $skin_item, $item );
386
+ }
387
+
388
+ /**
389
+ * Create CF7 form tag/shortcode based on visual item.
390
+ *
391
+ * @param {Object] $item cf7sItems properties
392
+ *
393
+ * @return {String} CF7 shortcode tag attributes
394
+ *
395
+ * @since 2.0.0
396
+ */
397
+ function create_cf7_tags( $item ) {
398
+
399
+ $arr = $tag = array();
400
+
401
+ // Set default value if exists, not empty and allow zero (0)
402
+ $defaultValue = null;
403
+ if ( isset( $item->cf7Values ) ) {
404
+ if ( ! empty( $item->cf7Values ) || $item->cf7Values === '0' ) {
405
+ $defaultValue = '"'. esc_attr( trim( $item->cf7Values ) ) . '"'; // trim space
406
+ }
407
+ }
408
+
409
+ // Name attributes for each item, no HTML tag
410
+ $cf7Name = wp_strip_all_tags( $item->cf7Name );
411
+
412
+ // Id attribute strips white space
413
+ $cf7IdAttribute = $item->cf7IdAttribute ? 'id:'. str_replace( ' ', '', esc_attr( $item->cf7IdAttribute ) ) : null; // remove space
414
+
415
+ // Split class name by white space
416
+ $cf7ClassAttribute = $this->class_attribute( $item );
417
+
418
+ switch( $item->cf7sType ) {
419
+ case 'acceptance': // [acceptance acceptance-46 id:myid class:myclass default:on invert]
420
+ $arr[] = 'acceptance';
421
+ $arr[] = $cf7Name;
422
+ $arr[] = $cf7IdAttribute;
423
+ $arr[] = $cf7ClassAttribute;
424
+ $arr[] = (bool) $item->cf7DefaultOn ? "default:on" : null;
425
+ $arr[] = (bool) $item->cf7Invert ? "invert" : null;
426
+ break;
427
+
428
+ case 'checkbox': // [checkbox* checkbox-991 id:my-id class:my-class label_first use_label_element exclusive "option 1" "option 2" "option 3"]
429
+ // @link https://contactform7.com/checkboxes-radio-buttons-and-menus/
430
+ $arr[] = (bool) $item->cf7Required ? 'checkbox*' : 'checkbox';
431
+ $arr[] = $cf7Name;
432
+ $arr[] = $cf7IdAttribute;
433
+ $arr[] = $cf7ClassAttribute;
434
+ $arr[] = (bool) $item->cf7LabelFirst ? "label_first" : null;
435
+ $arr[] = (bool) $item->cf7UseLabelElement ? "use_label_element" : null;
436
+ $arr[] = (bool) $item->cf7Exclusive ? "exclusive" : null;
437
+ $default = $this->default_tag( $item );
438
+ $arr = array_merge( $arr, $default );
439
+ break;
440
+
441
+ case 'radio': // [radio radio-699 id:my-id class:my-class label_first use_label_element default:1 "option 1" "option 2"]
442
+ $arr[] = 'radio';
443
+ $arr[] = $cf7Name;
444
+ $arr[] = $cf7IdAttribute;
445
+ $arr[] = $cf7ClassAttribute;
446
+ $arr[] = (bool) $item->cf7LabelFirst ? "label_first" : null;
447
+ $arr[] = (bool) $item->cf7UseLabelElement ? "use_label_element" : null;
448
+ $default = $this->default_tag( $item );
449
+ $arr = array_merge( $arr, $default );
450
+ break;
451
+
452
+ case 'select': // [select* menu-624 id:my-id class:my-class multiple include_blank "option 1" "option 2" "option 3"]
453
+ $arr[] = (bool) $item->cf7Required ? 'select*' : 'select';
454
+ $arr[] = $cf7Name;
455
+ $arr[] = $cf7IdAttribute;
456
+ $arr[] = $cf7ClassAttribute;
457
+ $arr[] = (bool) $item->cf7Multiple ? "multiple" : null;
458
+ $arr[] = (bool) $item->cf7IncludeBlank ? "include_blank" : null;
459
+ $default = $this->default_tag( $item );
460
+ $arr = array_merge( $arr, $default );
461
+ break;
462
+
463
+ case 'date': // [date* date-838 min:2016-12-07 max:2016-12-31 id:my-id class:my-class placeholder "my-default-value"]
464
+ $arr[] = (bool) $item->cf7Required ? 'date*' : 'date';
465
+ $arr[] = $cf7Name;
466
+ $arr[] = $item->cf7Min ? "min:{$item->cf7Min}" : null; // validation ??
467
+ $arr[] = $item->cf7Max ? "max:{$item->cf7Max}" : null; // validation ??
468
+ $arr[] = $cf7IdAttribute;
469
+ $arr[] = $cf7ClassAttribute;
470
+ $arr[] = (bool) $item->cf7Placeholder ? "placeholder" : null;
471
+ $arr[] = $defaultValue;
472
+ break;
473
+
474
+ case 'email': // [email* email-421 id:my-id class:my-class placeholder akismet:author_email "email@domain.com"]
475
+ $arr[] = (bool) $item->cf7Required ? 'email*' : 'email';
476
+ $arr[] = $cf7Name;
477
+ $arr[] = $cf7IdAttribute;
478
+ $arr[] = $cf7ClassAttribute;
479
+ $arr[] = (bool) $item->cf7Placeholder ? "placeholder" : null;
480
+ $arr[] = (bool) $item->cf7AkismetAuthorEmail ? "akismet:author_email" : null;
481
+ $arr[] = $defaultValue;
482
+ break;
483
+
484
+ case 'file': // [file* file-535 limit:55556 filetypes:png|type id:my-id class:my-class]
485
+ $arr[] = (bool) $item->cf7Required ? 'file*' : 'file';
486
+ $arr[] = $cf7Name;
487
+ $arr[] = $item->cf7Limit ? 'limit:'. (int) $item->cf7Limit : null; // integer, file size limit (bytes)
488
+ $arr[] = $item->cf7FileTypes ? 'filetypes:'. str_replace( ' ', '|', $item->cf7FileTypes ) : null; // replace space to pipe |
489
+ $arr[] = $cf7IdAttribute;
490
+ $arr[] = $cf7ClassAttribute;
491
+ break;
492
+
493
+ case 'number': // [range* number-83 min:14 max:33 id:my-id class:my-class placeholder "my-default-value"]
494
+ $required = $item->cf7Required ? '*' : '';
495
+ $arr[] = $item->cf7TagType === 'number' ? "number$required" : "range$required";
496
+ $arr[] = $cf7Name;
497
+ $arr[] = $item->cf7Min || 0 === $item->cf7Min ? 'min:'. (int) $item->cf7Min : null; // use isset to allow zero (0)
498
+ $arr[] = $item->cf7Max || 0 === $item->cf7Max ? 'max:'. (int) $item->cf7Max : null;
499
+ $arr[] = $cf7IdAttribute;
500
+ $arr[] = $cf7ClassAttribute;
501
+ $arr[] = (bool) $item->cf7Placeholder ? "placeholder" : null;
502
+ $arr[] = $defaultValue;
503
+ break;
504
+
505
+ case 'quiz': // [quiz quiz-135 id:my-id class:my-class "The capital of Japan?|Tokyo" "The capital of France?|Paris"]
506
+ $arr[] = 'quiz';
507
+ $arr[] = $cf7Name;
508
+ $arr[] = $cf7IdAttribute;
509
+ $arr[] = $cf7ClassAttribute;
510
+ foreach( $item->cf7Options as $option )
511
+ if ( isset( $option->question ) && $option->question && isset( $option->answer ) && $option->answer ) // check if both question & answers are set and not empty
512
+ $arr[] = '"'. $option->question . '|' . $option->answer . '"'; // put double quotes for each option
513
+ break;
514
+
515
+ case 'submit': // [submit id:my-id class:my-class "my-label"]
516
+ $arr[] = 'submit';
517
+ $arr[] = $cf7IdAttribute;
518
+ $arr[] = $cf7ClassAttribute;
519
+ $arr[] = $item->cf7sLabel ? '"'. esc_attr( $item->cf7sLabel ) .'"' : null;
520
+ break;
521
+
522
+ case 'tel': // [tel* tel-123 id:my-id class:my-class placeholder "my-default-value"]
523
+ $arr[] = (bool) $item->cf7Required ? 'tel*' : 'tel';
524
+ $arr[] = $cf7Name;
525
+ $arr[] = $cf7IdAttribute;
526
+ $arr[] = $cf7ClassAttribute;
527
+ $arr[] = $item->cf7Placeholder ? "placeholder" : null;
528
+ $arr[] = $defaultValue;
529
+ break;
530
+
531
+ case 'text': // [text* text-893 id:my-id class:my-class placeholder akismet:author "my-default-value"]
532
+ $arr[] = (bool) $item->cf7Required ? 'text*' : 'text';
533
+ $arr[] = $cf7Name;
534
+ $arr[] = $cf7IdAttribute;
535
+ $arr[] = $cf7ClassAttribute;
536
+ $arr[] = $item->cf7Placeholder ? "placeholder" : null;
537
+ $arr[] = $item->cf7AkismetAuthor ? "akismet:author" : null;
538
+ $arr[] = $defaultValue;
539
+ break;
540
+
541
+ case 'textarea': // [textarea* textarea-619 id:my-id class:my-class placeholder "my-default-value"]
542
+ $arr[] = (bool) $item->cf7Required ? 'textarea*' : 'textarea';
543
+ $arr[] = $cf7Name;
544
+ $arr[] = $cf7IdAttribute;
545
+ $arr[] = $cf7ClassAttribute;
546
+ $arr[] = (bool) $item->cf7Placeholder ? "placeholder" : null;
547
+ $arr[] = $defaultValue;
548
+ break;
549
+
550
+ case 'url': // [url* url-18 id:my-id class:my-class placeholder akismet:author_url "https://www.google.com/"]
551
+ $arr[] = (bool) $item->cf7Required ? 'url*' : 'url';
552
+ $arr[] = $cf7Name;
553
+ $arr[] = $cf7IdAttribute;
554
+ $arr[] = $cf7ClassAttribute;
555
+ $arr[] = (bool) $item->cf7Placeholder ? "placeholder" : null;
556
+ $arr[] = (bool) $item->cf7AkismetAuthorUrl ? "akismet:author_url" : null;
557
+ $arr[] = $defaultValue;
558
+ break;
559
+
560
+ case 'recaptcha': // [recaptcha id:my-id class:my-class size:compact theme:dark]
561
+ $arr[] = 'recaptcha';
562
+ $arr[] = $cf7IdAttribute;
563
+ $arr[] = $cf7ClassAttribute;
564
+ $arr[] = $item->cf7Size && 'normal' !== $item->cf7Size ? 'size:'. esc_attr( $item->cf7Size ) : null;
565
+ $arr[] = $item->cf7Theme &&'light' !== $item->cf7Theme ? 'theme:'. esc_attr( $item->cf7Theme ) : null;
566
+ break;
567
+ }
568
+
569
+ // Remove empty array
570
+ foreach( $arr as $ar ) {
571
+ if( $ar ) {
572
+ $tag[] = $ar;
573
+ }
574
+ }
575
+
576
+ // Output CF7 tag
577
+ return '[' . implode( " ", $tag ) . ']';
578
+ }
579
+
580
+ /**
581
+ * Split class name by space.
582
+ *
583
+ * For example: foo bar -> class:foo class:bar
584
+ *
585
+ * @param {Object} $item cf7sItems properties
586
+ *
587
+ * @return {String} joined className
588
+ *
589
+ * @since 2.0.0
590
+ */
591
+ function class_attribute( $item ) {
592
+ $cf7ClassAttribute = null;
593
+
594
+ // If class attribute is filled
595
+ if ( $item->cf7ClassAttribute ) {
596
+ $array = explode( " ", $item->cf7ClassAttribute ); // split by space
597
+
598
+ $className = array();
599
+
600
+ foreach( $array as $class ) {
601
+ $className[] = 'class:'. esc_attr( $class ); // class attribute with validation
602
+ }
603
+
604
+ $cf7ClassAttribute = implode( " ", $className ); // overwrite, join each className by space
605
+ }
606
+
607
+ return $cf7ClassAttribute;
608
+ }
609
+
610
+ /**
611
+ * Pre checked/selected options for checkbox, radio and select.
612
+ * Show default first, than all values
613
+ *
614
+ * @link https://contactform7.com/checkboxes-radio-buttons-and-menus/
615
+ *
616
+ * @param {Object} $item cf7sItems properties
617
+ *
618
+ * @return {String} CF7 default attribute
619
+ *
620
+ * @since 2.0.0
621
+ */
622
+ function default_tag( $item ) {
623
+ $default = $arr = $values = array();
624
+ $i = 1;
625
+
626
+ foreach( $item->cf7Options as $option ) {
627
+ $values[] = '"'. $option->value . '"'; // put double quotes for each option
628
+ if ( $option->isChecked ) {
629
+ $default[$i] = $i;
630
+ }
631
+ $i++;
632
+ }
633
+
634
+ if ( $default ) { // pre-checked options
635
+ $arr[] = 'default:'. implode( "_", $default );
636
+ }
637
+
638
+ $arr = array_merge( $arr, $values ); // merge, default first, then values
639
+
640
+ return $arr;
641
+ }
642
+
643
+ /**
644
+ * ADD DESCRIPTION
645
+ *
646
+ * Fires while selecting template
647
+ * Add visual template script object to the template list
648
+ * This is done in the admin page during AJAX call
649
+ *
650
+ * @since 2.0.0
651
+ */
652
+ function select_template() {
653
+ // Check nonce for security
654
+ if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], $this->nonce ) ) {
655
+ die();
656
+ }
657
+
658
+ // Deselect template return empty JSON
659
+ // @since 0.6.2
660
+ if ( 'true' === $_POST['deselect'] ) { // becomes a string from JavaScript
661
+ echo json_encode( array() ); // ouput empty JSON for Visual checking to avoid error
662
+ exit();
663
+ }
664
+
665
+ // Read visual template file
666
+ $templates = CF7_Skin_Template::cf7s_get_template_list();
667
+ $template = $templates[$_POST['template']];
668
+
669
+ // Load visual file if available
670
+ $visual_file = 'visual.json';
671
+
672
+ // https://codex.wordpress.org/Filesystem_API
673
+ global $wp_filesystem;
674
+
675
+ // Check if visual.json exists in directory
676
+ if ( in_array( $visual_file , $template['files'] ) ) {
677
+ echo $wp_filesystem->get_contents( $template['path'] . trailingslashit( $template['dir'] ) . $visual_file );
678
+
679
+ // File visual.json is not found in directory
680
+ // Return empty JSON to avoid error and empty Visual treeData as CF7 textarea changed
681
+ } else {
682
+ echo json_encode( array() );
683
+ }
684
+
685
+ exit();
686
+ }
687
+
688
+ /**
689
+ * Add backend scripts and styles.
690
+ *
691
+ * Priority set to 11, right after wpcf7_admin_enqueue_scripts() where priority default: 10.
692
+ *
693
+ * @since 2.0.0
694
+ */
695
+ function enqueue_scripts() {
696
+
697
+ if ( ! CF7_Skins_Admin::edit_page() ) { // return if this is not CF7 editing page
698
+ return;
699
+ }
700
+
701
+ wp_enqueue_script( 'visual',
702
+ $this->url . 'js/visual.js',
703
+ array( 'wpcf7-admin' ), $this->version, true ); // added after 'wpcf7-admin'
704
+
705
+ // Current contact form 7 object, null for non valid post ID
706
+ $cf7 = wpcf7_get_current_contact_form();
707
+
708
+ // Get visual meta data based on current editing CF7 form id
709
+ $items = array();
710
+ if ( isset( $_GET['post'] ) ) {
711
+ $items = get_post_meta( (int) $_GET['post'], 'cf7s_visual', true );
712
+ }
713
+
714
+ // Add options from CF7 Skins settings page
715
+ // @since 0.6.3
716
+ $options = array();
717
+ $cf7s_option = get_option( CF7SKINS_OPTIONS );
718
+ $options['showName'] = isset( $cf7s_option['show_name'] ) && $cf7s_option['show_name'] ? true : false;
719
+
720
+ // Add integration @since 0.5.4
721
+ $integration = array();
722
+
723
+ $recaptcha = WPCF7_RECAPTCHA::get_instance();
724
+
725
+ if ( $recaptcha->is_active() ) {
726
+ $integration['reCAPTCHA'] = $recaptcha->is_active();
727
+ }
728
+
729
+ // Output visual items as a JS var
730
+ wp_localize_script( 'visual', 'cf7svisual', array(
731
+ 'ajaxurl' => admin_url('admin-ajax.php'),
732
+ 'nonce' => wp_create_nonce( $this->nonce ), // generate a nonce for security checking
733
+ 'update' => 'cf7skins_visual_update', // post action for saving
734
+ 'l10n' => array(
735
+ 'save' => __( 'Save', $this->textdomain ),
736
+ 'done' => __( 'Done', $this->textdomain ),
737
+ 'error' => __( 'Error', $this->textdomain ),
738
+ ),
739
+ 'options' => $options,
740
+ 'title' => $cf7 ? $cf7->title() : '',
741
+ 'items' => $items,
742
+ 'integration' => $integration,
743
+ ) );
744
+ }
745
+
746
+ /**
747
+ * Copy/duplicate visual form.
748
+ *
749
+ * @param {Object} $cf7 CF7 object
750
+ *
751
+ * @since 2.0.0
752
+ */
753
+ function copy_visual( $cf7 ) {
754
+ $meta = get_post_meta( $cf7->copy_id, 'cf7s_visual', true ); // get original logic
755
+ update_post_meta( $cf7->id(), 'cf7s_visual', $meta ); // do copy
756
+ }
757
+
758
+ /**
759
+ * Add Visual setting fields
760
+ *
761
+ * @param {Array} $fields All CF7 Skins registered fields
762
+ *
763
+ * @return {Array} CF7 Skins fields
764
+ *
765
+ * @since 2.0.0
766
+ */
767
+ function setting_fields( $fields ) {
768
+ $fields['show_name'] = array(
769
+ 'section' => 'advanced',
770
+ 'label' => __( 'Show Name', $this->textdomain ),
771
+ 'type' => 'checkbox',
772
+ 'default' => false,
773
+ 'detail' => __( 'Show Visual tag name.', $this->textdomain ),
774
+ );
775
+
776
+ return $fields;
777
+ }
778
+
779
+ /**
780
+ * Development purpose, should be deleted for production
781
+ *
782
+ * @since 2.0.0
783
+ */
784
+ function log_scripts() {
785
+ if ( ! CF7_Skins_Admin::edit_page() ) { // return if this is not CF7 editing page
786
+ return;
787
+ }
788
+ ?>
789
+ <script type="text/javascript">
790
+ // logs the whole global cf7svisual object to the console
791
+ // console.log(JSON.stringify(cf7svisual,null,2));
792
+ </script>
793
+ <?php
794
+ }
795
+
796
+ } // end class
797
+
798
+ /**
799
+ * Visual admin panel will be available only for users with edit capability.
800
+ *
801
+ * @link http://contactform7.com/restricting-access-to-the-administration-panel/
802
+ *
803
+ * @since 2.0.0
804
+ */
805
+ if ( current_user_can( 'wpcf7_edit_contact_forms' ) ) {
806
+ new CF7_Skins_Admin_Visual();
807
+ }
includes/admin.php CHANGED
@@ -1,145 +1,171 @@
1
  <?php
2
  /**
3
- * CF7 Skins Admin Class
4
  *
5
  * Implement all functionality for CF7 Skins Admin on CF7 plugin page.
6
  *
7
  * @package cf7skins
8
  * @author Neil Murray
9
- * @since 0.0.1
10
- */
11
-
12
 
13
  class CF7_Skins_Admin {
14
 
15
  /**
16
- * Class constructor
17
  *
18
- * @since 0.0.1
19
- */
20
- function __construct() {
21
 
22
  /**
23
- * Return if current user does not have capability access
 
24
  * @since 1.1.1
25
- */
26
- if ( ! current_user_can( WPCF7_ADMIN_READ_WRITE_CAPABILITY ) )
27
  return;
28
-
29
- // Create the metabox for CF7 Skins
30
- add_action( 'wpcf7_add_meta_boxes', array( &$this, 'add_meta_boxes' ) );
31
- add_action( 'wpcf7_admin_footer', array( &$this, 'add_meta_boxes_42' ) );
32
-
 
 
 
 
 
33
  // Push the styles and scripts to the admin header
34
  add_action( 'admin_enqueue_scripts', array( &$this, 'admin_enqueue_scripts' ) );
35
 
36
- add_filter( 'wpcf7_copy', array( $this, 'store_copy_id' ), 1, 2 ); // @since 1.2
 
 
 
 
37
 
38
- // Action hooks to store selected template and style while updating or creating new CF7
39
- add_action( 'wpcf7_after_create', array( &$this, 'skin_update' ) );
40
- add_action( 'wpcf7_after_create', array( &$this, 'cf7skins_copy' ) ); // @since 1.2
41
- add_action( 'wpcf7_after_update', array( &$this, 'skin_update' ) );
42
- add_action( 'wpcf7_admin_footer', array( $this, 'cf7skins_admin_footer' ) ); // @since 1.1.1
43
- }
44
-
45
-
46
- /**
47
- * Store current form id while duplicating
48
- *
49
- * @param $new (object) new created contact form
50
- * $wpcf7 (class) WPCF7_ContactForm
51
- * @since 1.2
52
- */
53
- function store_copy_id( $new, $wpcf7 ) {
54
- update_option( '_cf7skins_copy_id', $wpcf7->id() ); // store copied ID to database
55
- return $new;
56
  }
57
 
58
-
59
  /**
60
- * Update current form post meta data with selected style and/or template
61
  *
62
- * Get post id (contact form 7 form id) in $_POST['cf7s-template'] and $_POST['cf7s-style']
63
- * Post meta name 'cf7s_template' for template and 'cf7s_style' for style
64
  *
65
- * @action cf7s_update
66
- * @param $cf7 is the contact form 7 object data
67
- * @since 0.0.1
68
- */
69
- function skin_update( $cf7 ) {
 
 
 
 
70
  // Get the current contact form 7 id
71
  $form_id = CF7_Skins_Contact::get_form_id( $cf7 );
72
 
73
  // Update the post meta
74
- if( isset( $_POST['cf7s-template'] ) )
75
  update_post_meta( $form_id, 'cf7s_template', esc_attr( $_POST['cf7s-template'] ) );
76
-
77
- if( isset( $_POST['cf7s-style'] ) )
 
78
  update_post_meta( $form_id, 'cf7s_style', esc_attr( $_POST['cf7s-style'] ) );
79
-
80
-
81
  // Update metabox state
82
- if( isset( $_POST['cf7s-postbox'] ) )
83
  update_post_meta( $form_id, 'cf7s_postbox', $_POST['cf7s-postbox'] );
84
-
85
- // Add action while saving the contact form 7
 
86
  do_action( 'cf7s_update', $cf7 );
87
- }
88
-
89
 
90
  /**
91
- * Copy function
 
 
 
92
  *
93
- * @param $cf7 (class) WPCF7_ContactForm
94
- * @since 1.2
95
- */
 
96
  function cf7skins_copy( $cf7 ) {
 
 
 
 
 
97
 
98
- if( ! $copy_id = get_option( '_cf7skins_copy_id' ) ) // make sure this is a copy action only
99
- return;
100
-
101
  $cf7->copy_id = $copy_id; // add new property to the class for further use
102
 
103
- // Get current skins
104
  $template = get_post_meta( $copy_id, 'cf7s_template', true );
105
  $style = get_post_meta( $copy_id, 'cf7s_style', true );
106
  $postbox = get_post_meta( $copy_id, 'cf7s_postbox', true );
107
 
108
  // Copy skins
109
- update_post_meta( $cf7->id(), 'cf7s_template', $template );
110
  update_post_meta( $cf7->id(), 'cf7s_style', $style );
111
- update_post_meta( $cf7->id(), 'cf7s_postbox', $postbox );
112
-
113
  /**
114
  * Copy hook action
115
  *
116
- * @param $cf7 (class) WPCF7_ContactForm.
117
- * $cf7->id() is the new created CF7 ID
118
  * $cf7->copy_id is the original copied CF7 ID
 
119
  * @since 1.1.2
120
- */
121
  do_action( 'cf7skins_copy', $cf7 );
122
 
123
- // Delete to avoid this function running twice while doing default saving
124
  delete_option( '_cf7skins_copy_id' );
125
- }
126
-
127
 
128
  /**
129
- * Enqueue CF7 Skins admin styles and scripts
 
 
 
 
 
130
  *
131
- * @action cf7s_admin_enqueue_scripts
132
- * @param $hook_suffix is the current page hook
133
- * @since 0.0.1
134
- */
 
 
 
 
 
 
 
 
 
 
 
 
 
135
  function admin_enqueue_scripts( $hook_suffix ) {
136
- if ( false === strpos( $hook_suffix, 'wpcf7' ) )
 
137
  return;
138
-
 
139
  wp_enqueue_style( 'tipsy',
140
  CF7SKINS_URL . 'css/tipsy.css',
141
  array( 'contact-form-7-admin' ), '1.0.0a', 'all' );
142
-
143
  wp_enqueue_style( 'typicons',
144
  CF7SKINS_URL . 'css/typicons/typicons.min.css',
145
  array( 'contact-form-7-admin' ), '2.0.7', 'all' );
@@ -157,57 +183,60 @@ class CF7_Skins_Admin {
157
  array( 'jquery', 'underscore' ), CF7SKINS_VERSION, true );
158
 
159
  wp_localize_script( 'cf7s-admin', 'cf7s', array(
160
- 'nonce' => wp_create_nonce( 'cf7s' ), // generate a nonce for security checking
161
- 'load' => 'load_template', // post action for reading and loading selected template
162
- 'sort' => 'cf7s_sort_skin', // post action for sorting skin
163
  'l10n' => array(
164
  'loading' => __('Loading template...', CF7SKINS_TEXTDOMAIN ),
165
  'emptyfilter' => __('Empty filter, please select a filter.', CF7SKINS_TEXTDOMAIN ),
166
  'select' => __('Select', CF7SKINS_TEXTDOMAIN ),
167
- 'selected' => __('Selected', CF7SKINS_TEXTDOMAIN ),
168
- 'deselect' => __('Deselect', CF7SKINS_TEXTDOMAIN ),
169
  'expanded' => __('Expanded View', CF7SKINS_TEXTDOMAIN ),
170
  'deselect_style' => __('Click to remove this Style from your form.', CF7SKINS_TEXTDOMAIN ),
171
  'deselect_template' => __('Click to remove this Template from your form.', CF7SKINS_TEXTDOMAIN ),
172
- 'goto_form_tab' => __('Unable to use this Skin. Please go to Form Tab.', CF7SKINS_TEXTDOMAIN ),
173
  )
174
  ));
175
 
176
  do_action( 'cf7s_admin_enqueue_scripts', $hook_suffix );
177
  }
178
 
179
-
180
  /**
181
- * Create the skins metabox
182
- *
183
- * @action cf7s_add_meta_boxes
184
- * @param $post_id is the current post editing ID
185
- * @since 0.0.1
186
- */
 
 
 
187
  function add_meta_boxes( $post_id ) {
188
  add_meta_box( 'cf7s', __( 'Skins', CF7SKINS_TEXTDOMAIN ),
189
  array( &$this, 'skins_meta_box' ), null, 'mail', 'core' );
190
 
191
  // Add action while creating the skins metabox
192
- do_action( 'cf7s_add_meta_boxes', $post_id );
193
  }
194
 
195
-
196
  /**
197
- * Custom skins dialog added in the CF7 Footer for version 4.2
198
  *
199
- * @action wpcf7_admin_footer
200
- * @param $post contact form object
201
- * @since 1.0.1
202
- */
 
 
203
  function add_meta_boxes_42( $cf7 ) {
204
  if (version_compare(WPCF7_VERSION, '4.2') >= 0) {
205
 
 
206
  $postbox_meta = get_post_meta( $cf7->id(), 'cf7s_postbox', true );
207
  $postbox_class = isset( $postbox_meta[CF7SKINS_OPTIONS] ) ? $postbox_meta[CF7SKINS_OPTIONS] : '';
208
-
209
- // Create the container id for javascript pointer
210
- // This is added if using add_meta_box() function
211
  echo '<div class="wrap">';
212
  echo '<div id="cf7skins-42" class="postbox '. $postbox_class .'">';
213
  echo '<input type="hidden" value="'.$postbox_class.'" class="cf7skins-42 cf7s-postbox" name="cf7s-postbox['. CF7SKINS_OPTIONS .']" />'; // postbox expand/collapse
@@ -215,7 +244,7 @@ class CF7_Skins_Admin {
215
  echo '<h3 class="hndle"><span>'. __('Skins', CF7SKINS_TEXTDOMAIN ) .'</span></h3>';
216
  echo '<div class="inside">';
217
  echo '<div id="cf7s" class="cf7-42">';
218
- $this->generate_tab( $cf7, null ); // in tab.php
219
  echo '</div>';
220
  echo '</div>';
221
  echo '</div>';
@@ -223,50 +252,98 @@ class CF7_Skins_Admin {
223
  }
224
  }
225
 
226
-
227
  /**
228
- * Display the skins metabox
229
  *
230
- * @param $post current post object
231
- * @param $box metabox arguments
232
- * @since 0.0.1
233
- */
 
234
  function skins_meta_box( $post, $box ) {
235
- $this->generate_tab( $post, $box ); // in tab.php
236
  }
237
 
238
-
239
  /**
240
- * Check if current admin page is contact form editing page
 
 
 
241
  * @since 1.0.2
242
  */
243
- public static function edit_page() {
244
  global $hook_suffix;
245
 
246
  // Don't show at the Contact Form 7 list wp-admin/admin.php?page=wpcf7
247
- if ( 'toplevel_page_wpcf7' == $hook_suffix && isset( $_GET['post'] ) && ! empty( $_GET['post'] ) )
248
  return true;
249
-
 
250
  // Don't show in the add new page
251
  if ( version_compare( WPCF7_VERSION, '4.4' ) <= 0 ) {
252
- if ( 'contact_page_wpcf7-new' == $hook_suffix && isset( $_GET['locale'] ) )
253
  return true;
 
254
  } else {
255
- if ( 'contact_page_wpcf7-new' == $hook_suffix )
256
  return true;
 
257
  }
258
 
259
  return false;
260
  }
261
 
262
-
263
  /**
264
- * Add CF7 admin footer hook
265
- * All other addons should use this action hook
 
 
 
 
266
  *
267
  * @since 1.1.1
268
  */
269
  function cf7skins_admin_footer() {
270
  do_action( 'cf7skins_admin_footer' );
271
  }
272
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
  /**
3
+ * CF7 Skins Admin Class.
4
  *
5
  * Implement all functionality for CF7 Skins Admin on CF7 plugin page.
6
  *
7
  * @package cf7skins
8
  * @author Neil Murray
9
+ *
10
+ * @since 0.1.0
11
+ */
12
 
13
  class CF7_Skins_Admin {
14
 
15
  /**
16
+ * Setup plugin hooks.
17
  *
18
+ * @since 0.1.0
19
+ */
20
+ function __construct() {
21
 
22
  /**
23
+ * Return if current user does not have capability access.
24
+ *
25
  * @since 1.1.1
26
+ */
27
+ if ( ! current_user_can( WPCF7_ADMIN_READ_WRITE_CAPABILITY ) ) {
28
  return;
29
+ }
30
+
31
+ // Action hooks to store selected template and style while updating or creating new CF7
32
+ add_action( 'wpcf7_after_create', array( &$this, 'skin_update' ) );
33
+ add_action( 'wpcf7_after_create', array( &$this, 'cf7skins_copy' ) ); // @since 1.2.0
34
+ add_action( 'wpcf7_after_update', array( &$this, 'skin_update' ) );
35
+
36
+ // Store current form id while duplicating
37
+ add_filter( 'wpcf7_copy', array( $this, 'store_copy_id' ), 1, 2 ); // @since 1.2.0
38
+
39
  // Push the styles and scripts to the admin header
40
  add_action( 'admin_enqueue_scripts', array( &$this, 'admin_enqueue_scripts' ) );
41
 
42
+ // Create metabox for CF7 Skins
43
+ // 'wpcf7_add_meta_boxes' hook removed from CF7 in v4.2
44
+ // @link https://contactform7.com/2015/05/18/contact-form-7-42-beta/
45
+ add_action( 'wpcf7_add_meta_boxes', array( &$this, 'add_meta_boxes' ) ); // CF7 < v4.2
46
+ add_action( 'wpcf7_admin_footer', array( &$this, 'add_meta_boxes_42' ) ); // CF7 >= v4.2
47
 
48
+ // All other Addons should use this action hook
49
+ add_action( 'wpcf7_admin_footer', array( $this, 'cf7skins_admin_footer' ) ); // @since 1.1.1
50
+ add_filter( 'cf7s_visual_update_js_callbacks', array( $this, 'visual_update' ) ); // @since 2.0.0
51
+ add_action( 'wp_ajax_cf7s_update_mailtags', array( &$this, 'update_mailtags' ) ); // @since 2.0.0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  }
53
 
 
54
  /**
55
+ * Update current form post meta data with selected style and/or template.
56
  *
57
+ * Get post id (contact form 7 form id) in $_POST['cf7s-template'] and $_POST['cf7s-style']
58
+ * Post meta name 'cf7s_template' for template and 'cf7s_style' for style
59
  *
60
+ * @action 'wpcf7_after_create'
61
+ * @action 'wpcf7_after_update'
62
+ * @do_action 'cf7s_update'
63
+ *
64
+ * @param $cf7 (class) WPCF7_ContactForm - Contact Form 7 object data
65
+ *
66
+ * @since 0.1.0
67
+ */
68
+ function skin_update( $cf7 ) { // NRM - CHANGE name to cf7skins_update & match with do_action
69
  // Get the current contact form 7 id
70
  $form_id = CF7_Skins_Contact::get_form_id( $cf7 );
71
 
72
  // Update the post meta
73
+ if( isset( $_POST['cf7s-template'] ) ) {
74
  update_post_meta( $form_id, 'cf7s_template', esc_attr( $_POST['cf7s-template'] ) );
75
+ }
76
+
77
+ if( isset( $_POST['cf7s-style'] ) ) {
78
  update_post_meta( $form_id, 'cf7s_style', esc_attr( $_POST['cf7s-style'] ) );
79
+ }
80
+
81
  // Update metabox state
82
+ if( isset( $_POST['cf7s-postbox'] ) ) {
83
  update_post_meta( $form_id, 'cf7s_postbox', $_POST['cf7s-postbox'] );
84
+ }
85
+
86
+ // Add action while saving the Contact Form 7 form
87
  do_action( 'cf7s_update', $cf7 );
88
+ }
 
89
 
90
  /**
91
+ * Copy Contact Form 7 form with CF7 Skins data included.
92
+ *
93
+ * @action 'wpcf7_after_create'
94
+ * @do_action 'cf7skins_copy'
95
  *
96
+ * @param $cf7 (class) WPCF7_ContactForm
97
+ *
98
+ * @since 1.2.0
99
+ */
100
  function cf7skins_copy( $cf7 ) {
101
+ // make sure this is a copy action only
102
+ // @see function store_copy_id()
103
+ if( ! $copy_id = get_option( '_cf7skins_copy_id' ) ) {
104
+ return;
105
+ }
106
 
 
 
 
107
  $cf7->copy_id = $copy_id; // add new property to the class for further use
108
 
109
+ // Get current skins
110
  $template = get_post_meta( $copy_id, 'cf7s_template', true );
111
  $style = get_post_meta( $copy_id, 'cf7s_style', true );
112
  $postbox = get_post_meta( $copy_id, 'cf7s_postbox', true );
113
 
114
  // Copy skins
115
+ update_post_meta( $cf7->id(), 'cf7s_template', $template );
116
  update_post_meta( $cf7->id(), 'cf7s_style', $style );
117
+ update_post_meta( $cf7->id(), 'cf7s_postbox', $postbox );
118
+
119
  /**
120
  * Copy hook action
121
  *
122
+ * @param $cf7 (class) WPCF7_ContactForm
123
+ * $cf7->id() is the newly created CF7 ID
124
  * $cf7->copy_id is the original copied CF7 ID
125
+ *
126
  * @since 1.1.2
127
+ */
128
  do_action( 'cf7skins_copy', $cf7 );
129
 
130
+ // Delete option to avoid this function running twice while doing default saving
131
  delete_option( '_cf7skins_copy_id' );
132
+ }
 
133
 
134
  /**
135
+ * Store current form id while duplicating.
136
+ *
137
+ * @filter 'wpcf7_copy'
138
+ *
139
+ * @param $new (object) newly created Contact Form 7
140
+ * $wpcf7 (class) WPCF7_ContactForm
141
  *
142
+ * @since 1.2.0
143
+ */
144
+ function store_copy_id( $new, $wpcf7 ) { // NRM - why is this called $wpcf7 & not $cf7 like elsewhere?
145
+ update_option( '_cf7skins_copy_id', $wpcf7->id() ); // store copied ID to database temporarily
146
+ return $new;
147
+ }
148
+
149
+ /**
150
+ * Enqueue CF7 Skins admin styles and scripts.
151
+ *
152
+ * @action 'admin_enqueue_scripts'
153
+ * @do_action 'cf7s_admin_enqueue_scripts'
154
+ *
155
+ * @param $hook_suffix current page hook
156
+ *
157
+ * @since 0.1.0
158
+ */
159
  function admin_enqueue_scripts( $hook_suffix ) {
160
+ // NRM - ADD EXPLANATION
161
+ if ( false === strpos( $hook_suffix, 'wpcf7' ) ) {
162
  return;
163
+ }
164
+
165
  wp_enqueue_style( 'tipsy',
166
  CF7SKINS_URL . 'css/tipsy.css',
167
  array( 'contact-form-7-admin' ), '1.0.0a', 'all' );
168
+
169
  wp_enqueue_style( 'typicons',
170
  CF7SKINS_URL . 'css/typicons/typicons.min.css',
171
  array( 'contact-form-7-admin' ), '2.0.7', 'all' );
183
  array( 'jquery', 'underscore' ), CF7SKINS_VERSION, true );
184
 
185
  wp_localize_script( 'cf7s-admin', 'cf7s', array(
186
+ 'nonce' => wp_create_nonce( 'cf7s' ), // generate a nonce for security checking
187
+ 'load' => 'load_template', // post action for reading and loading selected template
188
+ 'sort' => 'cf7s_sort_skin', // post action for sorting skin
189
  'l10n' => array(
190
  'loading' => __('Loading template...', CF7SKINS_TEXTDOMAIN ),
191
  'emptyfilter' => __('Empty filter, please select a filter.', CF7SKINS_TEXTDOMAIN ),
192
  'select' => __('Select', CF7SKINS_TEXTDOMAIN ),
193
+ 'selected' => __('Selected', CF7SKINS_TEXTDOMAIN ),
194
+ 'deselect' => __('Deselect', CF7SKINS_TEXTDOMAIN ),
195
  'expanded' => __('Expanded View', CF7SKINS_TEXTDOMAIN ),
196
  'deselect_style' => __('Click to remove this Style from your form.', CF7SKINS_TEXTDOMAIN ),
197
  'deselect_template' => __('Click to remove this Template from your form.', CF7SKINS_TEXTDOMAIN ),
 
198
  )
199
  ));
200
 
201
  do_action( 'cf7s_admin_enqueue_scripts', $hook_suffix );
202
  }
203
 
 
204
  /**
205
+ * Create the skins metabox - CF7 < v4.2 only.
206
+ *
207
+ * @action 'wpcf7_add_meta_boxes'
208
+ * @do_action 'cf7s_add_meta_boxes'
209
+ *
210
+ * @param $post_id is the current post editing ID
211
+ *
212
+ * @since 0.1.0
213
+ */
214
  function add_meta_boxes( $post_id ) {
215
  add_meta_box( 'cf7s', __( 'Skins', CF7SKINS_TEXTDOMAIN ),
216
  array( &$this, 'skins_meta_box' ), null, 'mail', 'core' );
217
 
218
  // Add action while creating the skins metabox
219
+ do_action( 'cf7s_add_meta_boxes', $post_id ); // NRM - why is this hook only added in CF7 < v4.2?
220
  }
221
 
 
222
  /**
223
+ * Custom skins dialog/metabox added in CF7 footer from CF7 version 4.2.
224
  *
225
+ * @action 'wpcf7_admin_footer'
226
+ *
227
+ * @param $post contact form object
228
+ *
229
+ * @since 1.0.1
230
+ */
231
  function add_meta_boxes_42( $cf7 ) {
232
  if (version_compare(WPCF7_VERSION, '4.2') >= 0) {
233
 
234
+ // set expand/collapse state for skins metabox
235
  $postbox_meta = get_post_meta( $cf7->id(), 'cf7s_postbox', true );
236
  $postbox_class = isset( $postbox_meta[CF7SKINS_OPTIONS] ) ? $postbox_meta[CF7SKINS_OPTIONS] : '';
237
+
238
+ // Create container id for JavaScript pointer
239
+ // This was previously added by add_meta_box() function
240
  echo '<div class="wrap">';
241
  echo '<div id="cf7skins-42" class="postbox '. $postbox_class .'">';
242
  echo '<input type="hidden" value="'.$postbox_class.'" class="cf7skins-42 cf7s-postbox" name="cf7s-postbox['. CF7SKINS_OPTIONS .']" />'; // postbox expand/collapse
244
  echo '<h3 class="hndle"><span>'. __('Skins', CF7SKINS_TEXTDOMAIN ) .'</span></h3>';
245
  echo '<div class="inside">';
246
  echo '<div id="cf7s" class="cf7-42">';
247
+ $this->generate_tab( $cf7, null ); // in tab.php
248
  echo '</div>';
249
  echo '</div>';
250
  echo '</div>';
252
  }
253
  }
254
 
 
255
  /**
256
+ * Display the skins metabox. CF7 < v4.2 only
257
  *
258
+ * @param $post current post object
259
+ * @param $box metabox arguments
260
+ *
261
+ * @since 0.1.0
262
+ */
263
  function skins_meta_box( $post, $box ) {
264
+ $this->generate_tab( $post, $box ); // in tab.php
265
  }
266
 
 
267
  /**
268
+ * Check if current admin page is Contact Form 7 editing page.
269
+ *
270
+ * @return {boolean}
271
+ *
272
  * @since 1.0.2
273
  */
274
+ public static function edit_page() { // NRM - where is this called?
275
  global $hook_suffix;
276
 
277
  // Don't show at the Contact Form 7 list wp-admin/admin.php?page=wpcf7
278
+ if ( 'toplevel_page_wpcf7' == $hook_suffix && isset( $_GET['post'] ) && ! empty( $_GET['post'] ) ) {
279
  return true;
280
+ }
281
+
282
  // Don't show in the add new page
283
  if ( version_compare( WPCF7_VERSION, '4.4' ) <= 0 ) {
284
+ if ( 'contact_page_wpcf7-new' == $hook_suffix && isset( $_GET['locale'] ) ) {
285
  return true;
286
+ }
287
  } else {
288
+ if ( 'contact_page_wpcf7-new' == $hook_suffix ) {
289
  return true;
290
+ }
291
  }
292
 
293
  return false;
294
  }
295
 
 
296
  /**
297
+ * Add CF7 Skins admin footer hook.
298
+ *
299
+ * All CF7 Skins addons should use this action hook.
300
+ *
301
+ * @action 'wpcf7_admin_footer'
302
+ * @do_action cf7skins_admin_footer
303
  *
304
  * @since 1.1.1
305
  */
306
  function cf7skins_admin_footer() {
307
  do_action( 'cf7skins_admin_footer' );
308
  }
309
+
310
+ /**
311
+ * Update mailtag after Visual AJAX save by running
312
+ * JavaScript callback function 'updateMailtags'.
313
+ * See /js/jquery.admin.js file.
314
+ *
315
+ * @since 2.0.0
316
+ */
317
+ function visual_update( $callbacks ) {
318
+ // We are using JavaScript namespace/class cf7sAdmin.updateMailtags
319
+ $callbacks[] = array( 'cf7sAdmin' => 'updateMailtags' );
320
+ return $callbacks;
321
+ }
322
+
323
+ /**
324
+ * Update mailtags after save Visual
325
+ *
326
+ * @since 2.0.0
327
+ */
328
+ function update_mailtags() {
329
+
330
+ // Check if we have the same nonce for security reason
331
+ if ( ! wp_verify_nonce( $_POST['nonce'], 'cf7s' ) || ! isset( $_POST['post_ID'] ) )
332
+ die();
333
+
334
+ $cf7 = WPCF7_ContactForm::get_instance( (int) $_POST['post_ID'] ); // get CF7 object
335
+ $cf7->set_properties( // manual set CF7 form value
336
+ array( 'form' => stripslashes( $_POST['form'] ) ) // remove extra backslases
337
+ );
338
+
339
+ // Get all mailtags for current form
340
+ // Uses ob_start because suggest_mail_tags() function echoing output
341
+ ob_start();
342
+ $cf7->suggest_mail_tags( 'mail' ); // exclude 'not-for-mail' tag type
343
+ $mailtags = ob_get_contents();
344
+ ob_end_clean();
345
+
346
+ echo json_encode( $mailtags );
347
+ exit;
348
+ }
349
+ }
includes/cf7-connect.php CHANGED
@@ -1,149 +1,158 @@
1
  <?php
2
  /**
3
- * CF7 Skins CF7 Connect Class
4
  *
5
- * Implement functionality where CF7 Skins interacts with CF7
6
  *
7
  * @package cf7skins
8
  * @author Neil Murray
9
- * @since 0.0.1
10
- */
 
11
 
12
-
13
  class CF7_Skins_CF7_Connect {
14
 
15
  /**
16
- * Class constructor
17
  *
18
- * @since 0.0.1
19
- */
20
- function __construct() {
21
- add_filter( 'wpcf7_form_class_attr', array( &$this, 'form_classes' ) );
22
  add_action( 'wpcf7_contact_form', array( &$this, 'cf7_form' ), 1 );
23
- add_action( 'cf7skins_enqueue_styles', array( $this, 'enqueue_skins_style' ), 9, 1 ); // Priority set to 9
24
- }
25
-
26
 
27
  /**
28
- * Get contact form 7 id
29
  *
30
- * Back compat for CF7 3.9
31
  * @see http://contactform7.com/2014/07/02/contact-form-7-39-beta/
32
  *
33
- * @param $cf7 Contact Form 7 object
34
- * @since 0.1.0
35
- */
 
36
  public static function get_form_id( $cf7 ) {
 
37
  if ( version_compare( WPCF7_VERSION, '3.9-alpha', '>' ) ) {
38
  return $cf7->id();
39
  }
40
  return $cf7->id;
41
  }
42
 
43
-
44
  /**
45
- * Get CF7 form content
46
  *
47
- * Back compat for CF7 3.9
48
  *
49
- * @param $cf7 Contact Form 7 object
50
- * @since 0.1.0
51
- */
 
52
  function get_form_content( $cf7 ) {
 
53
  if ( version_compare( WPCF7_VERSION, '3.9-alpha', '>' ) ) {
54
  return $cf7->prop( 'form' );
55
  }
56
  return $cf7->form;
57
  }
58
 
59
-
60
  /**
61
- * Stylesheet dependencies
62
- * Check if CF7 default stylesheet is still registered
63
- * Also used by other CF7 Skins plugins
 
 
 
64
  *
65
- * @param none
66
- * @since 1.1.1
67
- */
68
  public static function stylesheet_dependencies() {
69
- $deps = array();
70
-
71
- if ( wp_style_is( 'contact-form-7', 'registered' ) ) // Check if CF7 default stylesheet is still registered
72
- $deps = array( 'contact-form-7' );
73
-
 
74
  return $deps;
75
  }
76
 
77
-
78
  /**
79
- * Script dependencies
80
- * Check if CF7 default script is still registered
81
- * Also used by other CF7 Skins plugins
 
 
 
82
  *
83
- * @param none
84
- * @since 1.2.2
85
- */
86
  public static function script_dependencies() {
87
- $deps = array();
88
-
89
- if ( wp_script_is( 'contact-form-7', 'enqueued' ) ) // Check if CF7 default script is still registered
 
90
  $deps = array( 'contact-form-7' );
91
-
92
  return $deps;
93
- }
94
-
95
 
96
  /**
97
  * Enqueue cf7s-framework files to the frontend.
98
- *
99
- * @since 1.1.1
100
- */
101
- function enqueue_frameworks() {
102
- wp_enqueue_style( "cf7s-framework-normalize",
103
- CF7SKINS_URL . 'css/framework/cf7s-normalize.css',
104
- $this->stylesheet_dependencies(), CF7SKINS_VERSION, 'all' );
105
 
106
- wp_enqueue_style( "cf7s-framework-default",
107
- CF7SKINS_URL . 'css/framework/cf7s-default.css',
108
- $this->stylesheet_dependencies(), CF7SKINS_VERSION, 'all' );
 
 
 
 
109
  }
110
 
111
-
112
  /**
113
- * Allow other functions to run with this hook and enqueue styles to the front end
114
- *
115
- * @var $style - CF7 Skins style slug name applied to current CF7 form
116
- * @since 1.1
117
- */
 
 
 
118
  function enqueue_styles( $style ) {
119
  /**
120
- * Filter hook action enqueue styles after CF7 Skins Framework
121
- * or before selected skin style
122
  * @since 1.1.1
123
- */
124
  do_action( 'cf7skins_enqueue_styles', $style );
125
- }
126
-
127
 
128
  /**
129
- * Enqueue selected skin style .css file to the frontend by using the 'cf7skins_enqueue_styles' hook
130
- *
131
- * @var $style - CF7 Skins style slug name applied to current CF7 form
132
- * @previous skins_style
133
- * @since 1.1
134
- */
 
 
135
  function enqueue_skins_style( $style ) {
136
 
137
  $styles = CF7_Skin_Style::cf7s_get_style_list(); // get all installed styles
138
-
139
- if ( isset( $styles[$style] ) ) // check if style exists then enqueue it
140
  wp_enqueue_style( "cf7s-$style", $styles[$style]['url'] . trailingslashit( $styles[$style]['dir'] ) . $styles[$style]['index'],
141
  $this->stylesheet_dependencies(), CF7SKINS_VERSION, 'all' );
 
142
  }
143
 
144
-
145
  /**
146
- * Add CF7 Skins classes to the CF7 HTML form class
147
  *
148
  * Based on selected template & style
149
  * eg. class="wpcf7-form cf7t-fieldset cf7s-wild-west"
@@ -154,15 +163,18 @@ class CF7_Skins_CF7_Connect {
154
  *
155
  * @filter 'cf7skins_form_classes' - allows other CF7 Skins plugins to add their style classes
156
  *
157
- * @param $class is the CF7 HTML form class
158
- * @previous form_class_attr()
159
- * @since 0.0.1
160
- */
 
 
 
161
  function form_classes( $class ) {
162
 
163
  // Get the current CF7 form ID
164
  $cf7 = wpcf7_get_current_contact_form(); // Current contact form 7 object
165
- $form_id = $this->get_form_id( $cf7 );
166
 
167
  // Get current CF7 form template and style from post meta
168
  $template_class = get_post_meta( $form_id, 'cf7s_template', true ) ? ' cf7t-' . get_post_meta( $form_id, 'cf7s_template', true ) : '';
@@ -178,11 +190,10 @@ class CF7_Skins_CF7_Connect {
178
  return $class . $cf7skins_classes . $template_class . $skin_class;
179
  }
180
 
181
-
182
  /**
183
- * Modify the CF7 form content
184
  *
185
- * Back compat for CF7 3.9
186
  * @see http://contactform7.com/2014/07/02/contact-form-7-39-beta/
187
  *
188
  * @uses 'wpcf7_contact_form' action in WPCF7_ContactForm__construct()
@@ -190,22 +201,27 @@ class CF7_Skins_CF7_Connect {
190
  * @uses WPCF7_ContactForm->form - before CF7 3.9
191
  * @file wp-content\plugins\contact-form-7\includes\contact-form.php
192
  *
193
- * @param $cf7 Contact Form 7 object
194
- * @previous contact_form()
195
- * @since 0.0.1
196
- */
 
 
 
197
  function cf7_form( $cf7 ) {
 
198
  if( ! is_admin() ) {
199
 
200
  // Return if no cf7skins template or style was selected
201
- if ( ! get_post_meta( $cf7->id(), 'cf7s_template', true ) && ! get_post_meta( $cf7->id(), 'cf7s_style', true ) )
202
  return $cf7;
203
-
 
204
  // Enqueue CF7 Skins styles
205
  // @since 1.1
206
  if( $style = get_post_meta( $cf7->id(), 'cf7s_style', true ) ) {
207
- $this->enqueue_frameworks();
208
- $this->enqueue_styles( $style );
209
  }
210
 
211
  $form = $this->get_form_content( $cf7 );
@@ -223,48 +239,52 @@ class CF7_Skins_CF7_Connect {
223
  return $cf7;
224
  }
225
 
226
-
227
  /**
228
- * Modify current CF7 form
 
 
 
 
229
  *
230
- * @param $form Current CF7 form content
231
- * @since 0.0.1
232
- */
233
  function modify_form( $form ) {
234
 
235
  // Add label required
236
  $form = $this->mod_add_label_req( $form );
237
 
238
  return $form;
239
- }
240
-
241
 
242
  /**
243
- * Add label and require <em> to CF7 form
244
  *
245
- * e.g. <li>Name [text* cf7s-name]</li> CHANGED TO
246
- * <li><label for="cf7s-name">Name <em class="cf7s-reqd">*</em></label> [text* cf7s-name]</li>
247
  *
248
- * @param $form Current CF7 form content
249
- * @since 1.1.1
250
- */
 
251
  function mod_add_label_req( $form ) {
252
  // Get all current shortcode
253
- $scanned = $this->scan_shortcode( $form );
254
 
255
  // Get all shortcodes id with tag name as the index
256
- $ids = array();
257
- foreach ( $scanned as $tag ) {
 
258
 
259
  /**
260
  * Backward compatibility for CF7 4.6
261
  * @since 1.2.1
262
- */
263
- if ( version_compare( WPCF7_VERSION, '4.6', '<' ) ) // before CF7 4.6
264
  $tag = new WPCF7_Shortcode( $tag );
265
- else // CF7 4.6 or greater
 
266
  $tag = new WPCF7_FormTag( $tag );
267
-
268
  $ids[$tag->name] = $tag->get_id_option() ? $tag->get_id_option() : $tag->name;
269
  }
270
 
@@ -274,7 +294,7 @@ class CF7_Skins_CF7_Connect {
274
 
275
  if ( $matches[0] ) {
276
 
277
- // Loop trought each match
278
  foreach( $matches[0] as $list ) {
279
 
280
  // Process only if the list have a shortcode
@@ -283,7 +303,7 @@ class CF7_Skins_CF7_Connect {
283
  // Explode shortcode by spaces to get the shortcode name
284
  $explode = explode( ' ', str_replace( array('[', ']'), '', $shortcode[0] ) );
285
  $name = $explode[1];
286
- $id = isset( $ids[$name] ) ? $ids[$name] : $name;
287
 
288
  // Add opening label tag
289
  $new_list = preg_replace( "/(<li.*?>)(.*)(<\/li>)/", "$1<label for='$id'>$2$3", $list );
@@ -295,7 +315,7 @@ class CF7_Skins_CF7_Connect {
295
  $new_list = str_replace( '[', '</label>[', $new_list );
296
  }
297
 
298
- // Add label and em by replacing it.
299
  $form = str_replace( $list, $new_list, $form );
300
  }
301
  }
@@ -304,15 +324,17 @@ class CF7_Skins_CF7_Connect {
304
  return $form;
305
  }
306
 
307
-
308
  /**
309
- * Scan shortcode with backward compatibility CF7 4.6
 
 
 
 
310
  *
311
- * https://bitbucket.org/cf7skins/cf7skins-dev-cf7skins/issues/28/wpcf7_shortcode-deprecated
312
- * @param $form CF7 form content
313
- * @since 1.2.1
314
- */
315
  public static function scan_shortcode( $form ) {
 
316
  if ( version_compare( WPCF7_VERSION, '4.6', '<' ) ) { // before CF7 4.6
317
  $manager = WPCF7_ShortcodeManager::get_instance();
318
  return $manager->scan_shortcode( $form );
@@ -322,17 +344,15 @@ class CF7_Skins_CF7_Connect {
322
  return $manager->scan( $form );
323
  }
324
  }
325
- }
326
-
327
 
328
  /**
329
- * CF7_Skins_Contact class backcompat for older CF7 Skins versions (deprecated)
330
  *
331
  * @since 1.1.1
332
- * @author Neil Murray
333
  */
334
  class CF7_Skins_Contact extends CF7_Skins_CF7_Connect {
335
- function __construct() {
336
  parent::__construct();
337
- }
338
- } new CF7_Skins_Contact();
1
  <?php
2
  /**
3
+ * CF7 Skins CF7 Connect Class.
4
  *
5
+ * Implement functionality where CF7 Skins interacts with CF7.
6
  *
7
  * @package cf7skins
8
  * @author Neil Murray
9
+ *
10
+ * @since 0.1.0
11
+ */
12
 
 
13
  class CF7_Skins_CF7_Connect {
14
 
15
  /**
16
+ * Class constructor
17
  *
18
+ * @since 0.1.0
19
+ */
20
+ function __construct() {
21
+ add_filter( 'wpcf7_form_class_attr', array( &$this, 'form_classes' ) );
22
  add_action( 'wpcf7_contact_form', array( &$this, 'cf7_form' ), 1 );
23
+ add_action( 'cf7skins_enqueue_styles', array( $this, 'enqueue_skins_style' ), 9, 1 ); // Priority set to 9 - EXPLAIN WHY
24
+ }
 
25
 
26
  /**
27
+ * Get Contact Form 7 form id.
28
  *
29
+ * Back compat for CF7 3.9
30
  * @see http://contactform7.com/2014/07/02/contact-form-7-39-beta/
31
  *
32
+ * @param (Object) $cf7 Contact Form 7 object
33
+ *
34
+ * @since 0.1.0
35
+ */
36
  public static function get_form_id( $cf7 ) {
37
+
38
  if ( version_compare( WPCF7_VERSION, '3.9-alpha', '>' ) ) {
39
  return $cf7->id();
40
  }
41
  return $cf7->id;
42
  }
43
 
 
44
  /**
45
+ * Get Contact Form 7 form content.
46
  *
47
+ * Back compat for CF7 3.9
48
  *
49
+ * @param (Object) $cf7 Contact Form 7 object
50
+ *
51
+ * @since 0.1.0
52
+ */
53
  function get_form_content( $cf7 ) {
54
+
55
  if ( version_compare( WPCF7_VERSION, '3.9-alpha', '>' ) ) {
56
  return $cf7->prop( 'form' );
57
  }
58
  return $cf7->form;
59
  }
60
 
 
61
  /**
62
+ * Stylesheet dependencies.
63
+ *
64
+ * Check if CF7 default stylesheet is still registered
65
+ * as is used by other CF7 Skins plugins.
66
+ *
67
+ * @return $deps - ADD EXPLANATION
68
  *
69
+ * @since 1.1.1
70
+ */
 
71
  public static function stylesheet_dependencies() {
72
+
73
+ $deps = array();
74
+
75
+ if ( wp_style_is( 'contact-form-7', 'registered' ) ) { // Check if CF7 default stylesheet is still registered
76
+ $deps = array( 'contact-form-7' );
77
+ }
78
  return $deps;
79
  }
80
 
 
81
  /**
82
+ * Script dependencies.
83
+ *
84
+ * Check if CF7 default script is still registered
85
+ * as is used by other CF7 Skins plugins.
86
+ *
87
+ * @return $deps
88
  *
89
+ * @since 1.2.2
90
+ */
 
91
  public static function script_dependencies() {
92
+
93
+ $deps = array();
94
+
95
+ if ( wp_script_is( 'contact-form-7', 'enqueued' ) ) { // Check if CF7 default script is still registered
96
  $deps = array( 'contact-form-7' );
97
+ }
98
  return $deps;
99
+ }
 
100
 
101
  /**
102
  * Enqueue cf7s-framework files to the frontend.
103
+ *
104
+ * @since 1.1.1
105
+ */
106
+ function enqueue_frameworks() {
 
 
 
107
 
108
+ wp_enqueue_style( "cf7s-framework-normalize",
109
+ CF7SKINS_URL . 'css/framework/cf7s-normalize.css',
110
+ $this->stylesheet_dependencies(), CF7SKINS_VERSION, 'all' );
111
+
112
+ wp_enqueue_style( "cf7s-framework-default",
113
+ CF7SKINS_URL . 'css/framework/cf7s-default.css',
114
+ $this->stylesheet_dependencies(), CF7SKINS_VERSION, 'all' );
115
  }
116
 
 
117
  /**
118
+ * Allow other functions to run with this hook and enqueue styles to the front end.
119
+ *
120
+ * @do_action 'cf7skins_enqueue_styles'
121
+ *
122
+ * @param (TYPE) $style CF7 Skins style slug name applied to current CF7 form
123
+ *
124
+ * @since 1.1.0
125
+ */
126
  function enqueue_styles( $style ) {
127
  /**
128
+ * Enqueue styles after CF7 Skins Framework
129
+ * or before selected skin style.
130
  * @since 1.1.1
131
+ */
132
  do_action( 'cf7skins_enqueue_styles', $style );
133
+ }
 
134
 
135
  /**
136
+ * Enqueue selected skin style .css file to the frontend by using the 'cf7skins_enqueue_styles' hook.
137
+ *
138
+ * @action 'cf7skins_enqueue_styles'
139
+ *
140
+ * @param (TYPE) $style CF7 Skins style slug name applied to current CF7 form
141
+ *
142
+ * @since 1.1.0
143
+ */
144
  function enqueue_skins_style( $style ) {
145
 
146
  $styles = CF7_Skin_Style::cf7s_get_style_list(); // get all installed styles
147
+
148
+ if ( isset( $styles[$style] ) ) { // check if style exists then enqueue it
149
  wp_enqueue_style( "cf7s-$style", $styles[$style]['url'] . trailingslashit( $styles[$style]['dir'] ) . $styles[$style]['index'],
150
  $this->stylesheet_dependencies(), CF7SKINS_VERSION, 'all' );
151
+ }
152
  }
153
 
 
154
  /**
155
+ * Add CF7 Skins classes to the CF7 HTML form class.
156
  *
157
  * Based on selected template & style
158
  * eg. class="wpcf7-form cf7t-fieldset cf7s-wild-west"
163
  *
164
  * @filter 'cf7skins_form_classes' - allows other CF7 Skins plugins to add their style classes
165
  *
166
+ * @param (TYPE) $class CF7 HTML form class
167
+ * @previous form_class_attr()
168
+ *
169
+ * @return modified class
170
+ *
171
+ * @since 0.1.0
172
+ */
173
  function form_classes( $class ) {
174
 
175
  // Get the current CF7 form ID
176
  $cf7 = wpcf7_get_current_contact_form(); // Current contact form 7 object
177
+ $form_id = $this->get_form_id( $cf7 );
178
 
179
  // Get current CF7 form template and style from post meta
180
  $template_class = get_post_meta( $form_id, 'cf7s_template', true ) ? ' cf7t-' . get_post_meta( $form_id, 'cf7s_template', true ) : '';
190
  return $class . $cf7skins_classes . $template_class . $skin_class;
191
  }
192
 
 
193
  /**
194
+ * Modify the CF7 form content.
195
  *
196
+ * Back compat for CF7 3.9
197
  * @see http://contactform7.com/2014/07/02/contact-form-7-39-beta/
198
  *
199
  * @uses 'wpcf7_contact_form' action in WPCF7_ContactForm__construct()
201
  * @uses WPCF7_ContactForm->form - before CF7 3.9
202
  * @file wp-content\plugins\contact-form-7\includes\contact-form.php
203
  *
204
+ * @param (Object) $cf7 Contact Form 7 object
205
+ * @previous contact_form()
206
+ *
207
+ * @return $cf7 Modified Contact Form 7 object
208
+ *
209
+ * @since 0.1.0
210
+ */
211
  function cf7_form( $cf7 ) {
212
+
213
  if( ! is_admin() ) {
214
 
215
  // Return if no cf7skins template or style was selected
216
+ if ( ! get_post_meta( $cf7->id(), 'cf7s_template', true ) && ! get_post_meta( $cf7->id(), 'cf7s_style', true ) ) {
217
  return $cf7;
218
+ }
219
+
220
  // Enqueue CF7 Skins styles
221
  // @since 1.1
222
  if( $style = get_post_meta( $cf7->id(), 'cf7s_style', true ) ) {
223
+ $this->enqueue_frameworks();
224
+ $this->enqueue_styles( $style );
225
  }
226
 
227
  $form = $this->get_form_content( $cf7 );
239
  return $cf7;
240
  }
241
 
 
242
  /**
243
+ * Modify current CF7 form content.
244
+ *
245
+ * @param (TYPE) $form Current CF7 form content
246
+ *
247
+ * @return $form Modified CF7 form content
248
  *
249
+ * @since 0.1.0
250
+ */
 
251
  function modify_form( $form ) {
252
 
253
  // Add label required
254
  $form = $this->mod_add_label_req( $form );
255
 
256
  return $form;
257
+ }
 
258
 
259
  /**
260
+ * Add label and require <em> to CF7 form content.
261
  *
262
+ * e.g. <li>Name [text* cf7s-name]</li> changed to
263
+ * <li><label for="cf7s-name">Name <em class="cf7s-reqd">*</em></label> [text* cf7s-name]</li>
264
  *
265
+ * @param (TYPE) $form Current CF7 form content
266
+ *
267
+ * @since 1.1.1
268
+ */
269
  function mod_add_label_req( $form ) {
270
  // Get all current shortcode
271
+ $scanned = $this->scan_shortcode( $form );
272
 
273
  // Get all shortcodes id with tag name as the index
274
+ $ids = array();
275
+
276
+ foreach ( $scanned as $tag ) {
277
 
278
  /**
279
  * Backward compatibility for CF7 4.6
280
  * @since 1.2.1
281
+ */
282
+ if ( version_compare( WPCF7_VERSION, '4.6', '<' ) ) { // before CF7 4.6
283
  $tag = new WPCF7_Shortcode( $tag );
284
+ }
285
+ else { // CF7 4.6 or greater
286
  $tag = new WPCF7_FormTag( $tag );
287
+ }
288
  $ids[$tag->name] = $tag->get_id_option() ? $tag->get_id_option() : $tag->name;
289
  }
290
 
294
 
295
  if ( $matches[0] ) {
296
 
297
+ // Loop through each match
298
  foreach( $matches[0] as $list ) {
299
 
300
  // Process only if the list have a shortcode
303
  // Explode shortcode by spaces to get the shortcode name
304
  $explode = explode( ' ', str_replace( array('[', ']'), '', $shortcode[0] ) );
305
  $name = $explode[1];
306
+ $id = isset( $ids[$name] ) ? $ids[$name] : $name;
307
 
308
  // Add opening label tag
309
  $new_list = preg_replace( "/(<li.*?>)(.*)(<\/li>)/", "$1<label for='$id'>$2$3", $list );
315
  $new_list = str_replace( '[', '</label>[', $new_list );
316
  }
317
 
318
+ // Add label and em by replacing it
319
  $form = str_replace( $list, $new_list, $form );
320
  }
321
  }
324
  return $form;
325
  }
326
 
 
327
  /**
328
+ * Scan shortcode with backward compatibility CF7 4.6.
329
+ *
330
+ * @link https://bitbucket.org/cf7skins/cf7skins-dev-cf7skins/issues/28/wpcf7_shortcode-deprecated
331
+ *
332
+ * @param (TYPE) $form Current CF7 form content
333
  *
334
+ * @since 1.2.1
335
+ */
 
 
336
  public static function scan_shortcode( $form ) {
337
+
338
  if ( version_compare( WPCF7_VERSION, '4.6', '<' ) ) { // before CF7 4.6
339
  $manager = WPCF7_ShortcodeManager::get_instance();
340
  return $manager->scan_shortcode( $form );
344
  return $manager->scan( $form );
345
  }
346
  }
347
+ } // end class
 
348
 
349
  /**
350
+ * CF7_Skins_Contact class backcompat for older CF7 Skins versions (deprecated).
351
  *
352
  * @since 1.1.1
 
353
  */
354
  class CF7_Skins_Contact extends CF7_Skins_CF7_Connect {
355
+ function __construct() {
356
  parent::__construct();
357
+ }
358
+ } new CF7_Skins_Contact();
includes/front-visual.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * CF7 Skins Visual Front End Class.
4
+ *
5
+ * @since 2.0.0
6
+ */
7
+ Class CF7_Skins_Front_Visual {
8
+
9
+ var $form_id; // CF7 form ID
10
+ var $textdomain; // translation
11
+
12
+ /**
13
+ * Sets properties and hooks.
14
+ *
15
+ * @since 2.0.0
16
+ */
17
+ function __construct() {
18
+ add_filter( 'wpcf7_contact_form_properties', array( $this, 'set_form_id' ), 10, 2 );
19
+ }
20
+
21
+ /**
22
+ * Set class form id.
23
+ *
24
+ * This function does nothing to the current CF7 form, just add this class variable for further use.
25
+ *
26
+ * @param $properties (array) current contact form properties
27
+ * @param $cf7 (object) current contact form object
28
+ *
29
+ * @since 2.0.0
30
+ */
31
+ function set_form_id( $properties, $cf7 ) {
32
+ $this->form_id = $cf7->id();
33
+ return $properties;
34
+ }
35
+
36
+ } new CF7_Skins_Front_Visual();
includes/getting-started.php CHANGED
@@ -9,106 +9,202 @@
9
  ?>
10
  <div class="cf7s-info">
11
  <h2><?php _e( 'Quick Start Guide', CF7SKINS_TEXTDOMAIN ); ?></h2>
12
- <img src="<?php echo CF7SKINS_URL; ?>images/cf7skins-forms.jpg" alt="cf7skins-forms" width="400" height="320" class="alignright" /><p><a href="http://cf7skins.com" target="_blank"><strong><?php _ex('CF7 Skins','Stand-alone form. No conjugations needed.',CF7SKINS_TEXTDOMAIN); ?></strong></a> <?php _e( 'makes it easier for regular WordPress users to create Contact Form 7 forms using built in <strong>Templates</strong> and <strong>Styles</strong>.', CF7SKINS_TEXTDOMAIN ); ?></p>
13
 
14
- <p><?php _e( 'Simply select from a list of compatible <strong>Templates</strong> that cover many common forms and then choose from a range of professional and beautiful <strong>Styles</strong>.', CF7SKINS_TEXTDOMAIN ); ?> </p>
15
 
16
- <p><?php _e( 'Each <strong>Template</strong> acts as an easy to follow guide, which can be adapted to your particular requirements.', CF7SKINS_TEXTDOMAIN ); ?> <?php _e( 'Every <strong>Style</strong> covers the full range of Contact Form 7 form elements.', CF7SKINS_TEXTDOMAIN ); ?></p>
 
 
 
 
 
 
 
 
 
 
17
 
18
  <h3><?php _e( 'Using CF7 Skins', CF7SKINS_TEXTDOMAIN ); ?></h3>
19
- <p><?php _e( 'CF7 Skins appears in an extra <strong>Skins</strong> section in the Contact Form 7 form interface. Click on <strong>Contact</strong> in the WordPress admin menu and select an existing Contact Form 7 form or create a new one, then scroll down to the <strong>Skins</strong> section.', CF7SKINS_TEXTDOMAIN ); ?></p>
20
 
21
- <p><?php _e( 'The <strong>Template</strong> tab displays the available templates. Click on <strong>Details</strong> below each template to show more information. Click on <strong>Select</strong> to apply this template in the Form editing area, where you can adjust the fields to match your requirements.', CF7SKINS_TEXTDOMAIN ); ?></p>
22
 
23
- <p><?php _e( 'Click on the <strong>Style</strong> tab to view the list of available styles to choose from. <strong>Details</strong> below each style gives more information about each style. Find a style that you like and click <strong>Select</strong>. Then press <strong>Save</strong> to apply the style to your form.', CF7SKINS_TEXTDOMAIN ); ?></p>
24
 
25
- <h3><?php _e( 'Doing more with CF7 Skins', CF7SKINS_TEXTDOMAIN ); ?></h3>
26
- <img src="<?php echo CF7SKINS_URL; ?>images/using-cf7skins.jpg" alt="cf7skins-forms" width="400" height="200" class="alignright" /><p><?php _e( 'The CF7 Skins Knowledge Base can help you get more out of using CF7 Skins with your Contact Form 7 forms.', CF7SKINS_TEXTDOMAIN ); ?></p>
 
 
 
 
 
 
 
 
27
 
28
  <ul>
29
  <li>
30
- <a href="http://kb.cf7skins.com/understanding-templates-and-styles/" target="_blank"><?php _e( 'Understanding Templates and Styles', CF7SKINS_TEXTDOMAIN ); ?></a>
31
  </li>
32
  <li>
33
- <a href="http://kb.cf7skins.com/why-we-use-fieldset-legend-lists-in-cf7-skins/" target="_blank"><?php _e( 'Fieldset, Legend & Lists in CF7 Skins', CF7SKINS_TEXTDOMAIN ); ?></a>
34
  </li>
 
 
 
 
 
35
  <li>
36
- <a href="http://kb.cf7skins.com/edit-your-cf7-skins-form/" target="_blank"><?php _e( 'Edit your CF7 Skins Form', CF7SKINS_TEXTDOMAIN ); ?></a>
37
  </li>
38
  <li>
39
- <a href="http://kb.cf7skins.com/use-custom-css-plugin/" target="_blank"><?php _e( 'Modify your CF7 Skins Style', CF7SKINS_TEXTDOMAIN ); ?></a>
40
  </li>
41
  </ul>
42
 
43
- <p><a class="cf7s-btn" target="_blank" href="http://kb.cf7skins.com/category/using-cf7skins/"><?php _e( 'Learn More', CF7SKINS_TEXTDOMAIN ); ?></a></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
 
45
- <h3><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN ); ?></h3>
46
- <img src="<?php echo CF7SKINS_URL; ?>images/cf7skins-solution.jpg" alt="cf7skins-forms" width="400" height="200" class="alignright size-medium wp-image-2919" /><p><?php _e( 'Our in-depth documentation is a great place to find detailed answers.', CF7SKINS_TEXTDOMAIN ); ?></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
 
48
  <ul>
49
  <li>
50
- <strong><a href="http://docs.cf7skins.com/" target="_blank"><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'covers from how to get started up to how to customize your forms and everything else in between.', CF7SKINS_TEXTDOMAIN ); ?>
51
  </li>
52
  <li>
53
- <strong><a href="http://kb.cf7skins.com/" target="_blank"><?php _e( 'Knowledge Base', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'you can search by Categories & Tags or Keywords.', CF7SKINS_TEXTDOMAIN ); ?>
54
  </li>
55
  <li>
56
- <strong><a href="http://kb.cf7skins.com/category/tutorials/" target="_blank"><?php _e( 'Tutorials', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'to help you get started using CF7 Skins quickly & easily.', CF7SKINS_TEXTDOMAIN ); ?>
 
 
 
57
  </li>
58
  </ul>
59
 
60
- <p><a href="http://cf7skins.com" target="_blank"><?php _e( 'Plugin Website', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://cf7skins.com/pro-version/" target="_blank"><?php _e( 'Pro Version', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://cf7skins.com/add-ons/" target="_blank"><?php _e( 'Add-ons', CF7SKINS_TEXTDOMAIN ); ?></a></p>
61
 
62
- <p><a href="http://kb.cf7skins.com/faq/" target="_blank"><?php _e( 'FAQ', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://docs.cf7skins.com/" target="_blank"><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://kb.cf7skins.com/category/tutorials/" target="_blank"><?php _e( 'Tutorials', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://kb.cf7skins.com/" target="_blank"><?php _e( 'Knowledge Base', CF7SKINS_TEXTDOMAIN ); ?></a></p>
63
  </div>
64
 
65
  <div class="cf7s-info-sidebar">
66
  <h2><?php _e( 'Do you enjoy using this plugin?', CF7SKINS_TEXTDOMAIN ); ?></h2>
67
- <p><?php _e( 'You can help fellow WordPress users in the following simple ways:', CF7SKINS_TEXTDOMAIN ); ?></p>
68
  <ul>
69
  <li>
70
- <strong><a href="https://wordpress.org/support/view/plugin-reviews/contact-form-7-skins" target="_blank"><?php _e( 'Review', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'leave a plugin review on WordPress.org', CF7SKINS_TEXTDOMAIN ); ?>
71
- </li>
72
- <li>
73
- <strong><a href="http://cf7skins.com/pro-version/testimonials/" target="_blank"><?php _e( 'Testimonial', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'add your Testimonial to those listed', CF7SKINS_TEXTDOMAIN ); ?>
74
  </li>
75
  <li>
76
- <strong><a href="https://wordpress.org/plugins/contact-form-7-skins/" target="_blank"><?php _e( 'Compatibility', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'log in & vote "works" on your current versions', CF7SKINS_TEXTDOMAIN ); ?>
77
  </li>
78
  <li>
79
  <strong><a href="http://cf7skins.com/support/#feedback" target="_blank"><?php _e( 'Feedback', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'help us to improve CF7 Skins by offering feedback', CF7SKINS_TEXTDOMAIN ); ?>
80
  </li>
81
  </ul>
82
 
83
- <h2><?php _e( 'Need some help?', CF7SKINS_TEXTDOMAIN ); ?></h2>
84
- <p><?php _e( 'You have a number of options to help you use CF7 Skins:', CF7SKINS_TEXTDOMAIN ); ?></p>
85
  <ul>
86
  <li>
87
  <strong><a href="http://kb.cf7skins.com/faq/" target="_blank"><?php _e( 'FAQ', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'browse over some commonly asked questions.', CF7SKINS_TEXTDOMAIN ); ?>
88
  </li>
89
  <li>
90
- <strong><a href="http://docs.cf7skins.com/" target="_blank"><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'a great place to find detailed answers.', CF7SKINS_TEXTDOMAIN ); ?>
91
- </li>
92
- <li>
93
- <strong><a href="http://kb.cf7skins.com/" target="_blank"><?php _e( 'Knowledge Base', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'search by Categories & Tags or Keywords.', CF7SKINS_TEXTDOMAIN ); ?>
94
  </li>
95
  <li>
96
  <strong><a href="http://kb.cf7skins.com/category/tutorials/" target="_blank"><?php _e( 'Tutorials', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'to help you get started quickly with CF7 Skins.', CF7SKINS_TEXTDOMAIN ); ?>
97
  </li>
 
 
 
 
 
98
  <li><strong><?php _e( 'Free Version', CF7SKINS_TEXTDOMAIN ); ?></strong></li>
99
  <ul>
100
  <li>
101
  <strong><a href="https://wordpress.org/support/plugin/contact-form-7-skins" target="_blank"><?php _e( 'WordPress.org Support Forum', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'community based support offered by other CF7 Skin users (we visit the forum intermittently to assist with plugin bugs only).', CF7SKINS_TEXTDOMAIN ); ?>
102
  </li>
103
  </ul>
104
- <li><strong><?php _e( 'Pro Version & Add-ons', CF7SKINS_TEXTDOMAIN ); ?></strong></li>
105
  <ul>
106
  <li>
107
- <strong><a href="http://cf7skins.com/support/#premium-email-support" target="_blank"><?php _e( 'Premium Email Support', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'available (for current paid licenses) to deal with CF7 Skins Pro users questions and problems.', CF7SKINS_TEXTDOMAIN ); ?>
108
  </li>
109
  </ul>
110
  </ul>
111
- <p><a href="http://cf7skins.com" target="_blank"><?php _e( 'Plugin Website', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://cf7skins.com/pro-version/" target="_blank"><?php _e( 'Pro Version', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://cf7skins.com/add-ons/" target="_blank"><?php _e( 'Add-ons', CF7SKINS_TEXTDOMAIN ); ?></a></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
 
113
- <p><a href="http://kb.cf7skins.com/faq/" target="_blank"><?php _e( 'FAQ', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://docs.cf7skins.com/" target="_blank"><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://kb.cf7skins.com/category/tutorials/" target="_blank"><?php _e( 'Tutorials', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://kb.cf7skins.com/" target="_blank"><?php _e( 'Knowledge Base', CF7SKINS_TEXTDOMAIN ); ?></a></p>
114
  </div>
9
  ?>
10
  <div class="cf7s-info">
11
  <h2><?php _e( 'Quick Start Guide', CF7SKINS_TEXTDOMAIN ); ?></h2>
 
12
 
13
+ <p><?php _e( 'To get started using <strong>CF7 Skins</strong>:', CF7SKINS_TEXTDOMAIN ); ?></p>
14
 
15
+ <ul>
16
+ <li>
17
+ <?php _e( 'Click on <strong>Contact</strong> in the WordPress admin menu.', CF7SKINS_TEXTDOMAIN ); ?>
18
+ </li>
19
+ <li>
20
+ <?php _e( 'Select an existing Contact Form 7 form or create a new one.', CF7SKINS_TEXTDOMAIN ); ?>
21
+ </li>
22
+ <li>
23
+ <?php _e( 'Scroll down to the <strong>Skins</strong> section.', CF7SKINS_TEXTDOMAIN ); ?>
24
+ </li>
25
+ </ul>
26
 
27
  <h3><?php _e( 'Using CF7 Skins', CF7SKINS_TEXTDOMAIN ); ?></h3>
 
28
 
29
+ <p>1. <a href="http://cf7skins.com/visual-editor/" target="_blank"><strong><?php _ex('CF7 Skins','Stand-alone form. No conjugations needed.',CF7SKINS_TEXTDOMAIN); ?><?php _e( ' Visual Editor', CF7SKINS_TEXTDOMAIN ); ?></strong></a><?php _e( ' where you edit and build your form.', CF7SKINS_TEXTDOMAIN ); ?></p>
30
 
31
+ <p><img src="<?php echo CF7SKINS_URL; ?>images/cf7skins-visual-ui.png" alt="CF7 Skins Visual Editor UI" width="600" height="449" class="alignright" /><em><?php _e( 'Start with a CF7 Skins Template.', CF7SKINS_TEXTDOMAIN ); ?> </em></p>
32
 
33
+ <ul>
34
+ <li>
35
+ <?php _e( 'Select a <strong>Template</strong> & add it to the <strong>Form</strong> tab.', CF7SKINS_TEXTDOMAIN ); ?>
36
+ </li>
37
+ <li>
38
+ <?php _e( 'The <strong>Form</strong> tab is where you build your form.', CF7SKINS_TEXTDOMAIN ); ?>
39
+ </li>
40
+ </ul>
41
+
42
+ <p><em><?php _e( 'Add fields and arrange them using drag and drop.', CF7SKINS_TEXTDOMAIN ); ?> </em></p>
43
 
44
  <ul>
45
  <li>
46
+ <?php _e( '<strong>Drag-and-drop</strong> new fields onto your form.', CF7SKINS_TEXTDOMAIN ); ?>
47
  </li>
48
  <li>
49
+ <?php _e( 'Rearrange fields into the correct position.', CF7SKINS_TEXTDOMAIN ); ?>
50
  </li>
51
+ </ul>
52
+
53
+ <p><em><?php _e( 'Edit the form to match your requirements.', CF7SKINS_TEXTDOMAIN ); ?> </em></p>
54
+
55
+ <ul>
56
  <li>
57
+ <?php _e( 'Click <strong>Edit</strong>, <strong>Duplicate</strong> & <strong>Delete</strong> to adjust fields.', CF7SKINS_TEXTDOMAIN ); ?>
58
  </li>
59
  <li>
60
+ <?php _e( 'Add <strong>CF7 Tag</strong> options in the <strong>Edit</strong> dialog.', CF7SKINS_TEXTDOMAIN ); ?>
61
  </li>
62
  </ul>
63
 
64
+ <p><em><?php _e( 'Review & save your Form.', CF7SKINS_TEXTDOMAIN ); ?> </em></p>
65
+
66
+ <ul>
67
+ <li>
68
+ <?php _e( '<strong>Duplicate</strong> groups of fields to speed form creation.', CF7SKINS_TEXTDOMAIN ); ?>
69
+ </li>
70
+ <li>
71
+ <?php _e( 'Click <strong>Save Visual</strong> - your changes are added in the <strong>CF7 Form</strong> tab.', CF7SKINS_TEXTDOMAIN ); ?>
72
+ </li>
73
+ </ul>
74
+
75
+ <p><a class="cf7s-btn" target="_blank" href="http://kb.cf7skins.com/category/visual-editor/"><?php _e( 'Learn More', CF7SKINS_TEXTDOMAIN ); ?></a></p>
76
+
77
+ <div class="clearfix"></div>
78
+
79
+ <p>2. <a href="http://cf7skins.com/templates/" target="_blank"><strong><?php _e( ' Templates', CF7SKINS_TEXTDOMAIN ); ?></strong></a><?php _e( ' – give you a starting point for your form.', CF7SKINS_TEXTDOMAIN ); ?></p>
80
+
81
+
82
+ <p><img src="<?php echo CF7SKINS_URL; ?>images/cf7skins-templates.png" alt="CF7 Skins Templates" width="600" height="238" class="alignright" /><em><?php _e( 'Each <strong>Template</strong> acts as an easy to follow guide, which can be adapted to your particular requirements.', CF7SKINS_TEXTDOMAIN ); ?></em></p>
83
+
84
+ <ul>
85
+ <li>
86
+ <?php _e( 'The <strong>Template</strong> tab displays the available templates.', CF7SKINS_TEXTDOMAIN ); ?>
87
+ </li>
88
+ <li>
89
+ <?php _e( 'Click <strong>Select</strong> to add this template in the <strong>Form</strong> tab.', CF7SKINS_TEXTDOMAIN ); ?>
90
+ </li>
91
+ <li>
92
+ <?php _e( 'Then use the <strong>Visual Editor</strong> to adjust the form to your requirements.', CF7SKINS_TEXTDOMAIN ); ?>
93
+ </li>
94
+ </ul>
95
 
96
+ <p><a class="cf7s-btn" target="_blank" href="http://kb.cf7skins.com/category/templates/"><?php _e( 'Learn More', CF7SKINS_TEXTDOMAIN ); ?></a></p>
97
+
98
+ <div class="clearfix"></div>
99
+
100
+ <p>3. <a href="http://cf7skins.com/styles/" target="_blank"><strong><?php _e( ' Styles', CF7SKINS_TEXTDOMAIN ); ?></strong></a><?php _e( ' – control the appearance for your form.', CF7SKINS_TEXTDOMAIN ); ?></p>
101
+
102
+ <p><img src="<?php echo CF7SKINS_URL; ?>images/cf7skins-styles.png" alt="CF7 Skins Styles" width="600" height="239" class="alignright" /><em><?php _e( 'Every <strong>Style</strong> covers the full range of Contact Form 7 form elements.', CF7SKINS_TEXTDOMAIN ); ?></em></p>
103
+
104
+ <ul>
105
+ <li>
106
+ <?php _e( 'View the <strong>Style</strong> tab to see the available styles.', CF7SKINS_TEXTDOMAIN ); ?>
107
+ </li>
108
+ <li>
109
+ <?php _e( 'Find a style you like and click <strong>Select</strong>.', CF7SKINS_TEXTDOMAIN ); ?>
110
+ </li>
111
+ <li>
112
+ <?php _e( 'Then press <strong>Save</strong> or <strong>Save Visual</strong> to apply the style to your form.', CF7SKINS_TEXTDOMAIN ); ?>
113
+ </li>
114
+ </ul>
115
+
116
+ <p><a class="cf7s-btn" target="_blank" href="http://kb.cf7skins.com/category/styles/"><?php _e( 'Learn More', CF7SKINS_TEXTDOMAIN ); ?></a></p>
117
+
118
+ <div class="clearfix"></div>
119
+
120
+ <h3><?php _e( 'Doing more with CF7 Skins', CF7SKINS_TEXTDOMAIN ); ?></h3>
121
+ <p><?php _e( 'To take advantage of the full functionality of CF7 Skins we recommend reading the following items.', CF7SKINS_TEXTDOMAIN ); ?></p>
122
 
123
  <ul>
124
  <li>
125
+ <a href="http://kb.cf7skins.com/getting-started-using-cf7-skins/" target="_blank"><?php _e( 'Getting Started Using CF7 Skins', CF7SKINS_TEXTDOMAIN ); ?></a>
126
  </li>
127
  <li>
128
+ <a href="http://kb.cf7skins.com/edit-cf7-skins-form-visual-editor/" target="_blank"><?php _e( 'Edit your CF7 Skins Form', CF7SKINS_TEXTDOMAIN ); ?></a>
129
  </li>
130
  <li>
131
+ <a href="http://kb.cf7skins.com/why-we-use-fieldset-legend-lists-in-cf7-skins/" target="_blank"><?php _e( 'Fieldset, Legend & Lists in CF7 Skins', CF7SKINS_TEXTDOMAIN ); ?></a>
132
+ </li>
133
+ <li>
134
+ <a href="http://kb.cf7skins.com/use-custom-css-plugin/" target="_blank"><?php _e( 'Modify your CF7 Skins Style', CF7SKINS_TEXTDOMAIN ); ?></a>
135
  </li>
136
  </ul>
137
 
138
+ <p><a class="cf7s-btn" target="_blank" href="http://kb.cf7skins.com/category/using-cf7skins/"><?php _e( 'Learn More', CF7SKINS_TEXTDOMAIN ); ?></a></p>
139
 
 
140
  </div>
141
 
142
  <div class="cf7s-info-sidebar">
143
  <h2><?php _e( 'Do you enjoy using this plugin?', CF7SKINS_TEXTDOMAIN ); ?></h2>
144
+ <p><?php _e( 'You can help fellow WordPress users in the following simple ways', CF7SKINS_TEXTDOMAIN ); ?></p>
145
  <ul>
146
  <li>
147
+ <strong><a href="https://wordpress.org/plugins/contact-form-7-skins/#reviews" target="_blank"><?php _e( 'Review', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'leave a plugin review on WordPress.org', CF7SKINS_TEXTDOMAIN ); ?>
 
 
 
148
  </li>
149
  <li>
150
+ <strong><a href="http://cf7skins.com/testimonials/" target="_blank"><?php _e( 'Testimonial', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'add your Testimonial to those listed', CF7SKINS_TEXTDOMAIN ); ?>
151
  </li>
152
  <li>
153
  <strong><a href="http://cf7skins.com/support/#feedback" target="_blank"><?php _e( 'Feedback', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'help us to improve CF7 Skins by offering feedback', CF7SKINS_TEXTDOMAIN ); ?>
154
  </li>
155
  </ul>
156
 
157
+ <h2><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN ); ?></h2>
158
+ <p><?php _e( 'Our in-depth documentation is a great place to find detailed answers', CF7SKINS_TEXTDOMAIN ); ?></p>
159
  <ul>
160
  <li>
161
  <strong><a href="http://kb.cf7skins.com/faq/" target="_blank"><?php _e( 'FAQ', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'browse over some commonly asked questions.', CF7SKINS_TEXTDOMAIN ); ?>
162
  </li>
163
  <li>
164
+ <strong><a href="http://kb.cf7skins.com/" target="_blank"><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'search by Categories & Tags or Keywords.', CF7SKINS_TEXTDOMAIN ); ?>
 
 
 
165
  </li>
166
  <li>
167
  <strong><a href="http://kb.cf7skins.com/category/tutorials/" target="_blank"><?php _e( 'Tutorials', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'to help you get started quickly with CF7 Skins.', CF7SKINS_TEXTDOMAIN ); ?>
168
  </li>
169
+ </ul>
170
+
171
+ <h2><?php _e( 'Need some help?', CF7SKINS_TEXTDOMAIN ); ?></h2>
172
+ <p><?php _e( 'You have a number of options to help you use CF7 Skins', CF7SKINS_TEXTDOMAIN ); ?></p>
173
+ <ul>
174
  <li><strong><?php _e( 'Free Version', CF7SKINS_TEXTDOMAIN ); ?></strong></li>
175
  <ul>
176
  <li>
177
  <strong><a href="https://wordpress.org/support/plugin/contact-form-7-skins" target="_blank"><?php _e( 'WordPress.org Support Forum', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'community based support offered by other CF7 Skin users (we visit the forum intermittently to assist with plugin bugs only).', CF7SKINS_TEXTDOMAIN ); ?>
178
  </li>
179
  </ul>
180
+ <li><strong><?php _e( 'Add-ons', CF7SKINS_TEXTDOMAIN ); ?></strong></li>
181
  <ul>
182
  <li>
183
+ <strong><a href="http://cf7skins.com/support/#premium-email-support" target="_blank"><?php _e( 'Premium Email Support', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'available (for current paid licenses) to deal with users questions and problems.', CF7SKINS_TEXTDOMAIN ); ?>
184
  </li>
185
  </ul>
186
  </ul>
187
+ <p><a href="http://cf7skins.com" target="_blank"><?php _e( 'Website', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://kb.cf7skins.com/faq/" target="_blank"><?php _e( 'FAQ', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://kb.cf7skins.com/" target="_blank"><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://kb.cf7skins.com/category/tutorials/" target="_blank"><?php _e( 'Tutorials', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://cf7skins.com/add-ons/" target="_blank"><?php _e( 'Add-ons', CF7SKINS_TEXTDOMAIN ); ?></a></p>
188
+
189
+ <h2><?php _e( 'Add-ons', CF7SKINS_TEXTDOMAIN ); ?></h2>
190
+
191
+ <p><?php printf( __( 'Ongoing development of CF7 Skins is made possible by sales of renewable annual licenses of our %1$s.', CF7SKINS_TEXTDOMAIN), '<a href="http://cf7skins.com/add-ons/" target="_blank">'. __( 'Add-ons', CF7SKINS_TEXTDOMAIN ) .'</a>' ); ?></p>
192
+
193
+ <ul>
194
+ <li>
195
+ <strong><a href="http://cf7skins.com/add-ons/pro/" target="_blank"><?php _e( 'CF7 Skins Pro', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'Extra Templates & Styles', CF7SKINS_TEXTDOMAIN ); ?>
196
+ </li>
197
+ <li>
198
+ <strong><a href="http://cf7skins.com/add-ons/ready/" target="_blank"><?php _e( 'CF7 Skins Ready', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'Useful styling options', CF7SKINS_TEXTDOMAIN ); ?>
199
+ </li>
200
+ <li>
201
+ <strong><a href="http://cf7skins.com/add-ons/multi/" target="_blank"><?php _e( 'CF7 Skins Multi', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'Multi-part forms', CF7SKINS_TEXTDOMAIN ); ?>
202
+ </li>
203
+ <li>
204
+ <strong><a href="http://cf7skins.com/add-ons/logic/" target="_blank"><?php _e( 'CF7 Skins Logic', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'Conditional logic for your forms', CF7SKINS_TEXTDOMAIN ); ?>
205
+ </li>
206
+ </ul>
207
+
208
+ <p><em><?php _e( 'Our range of', CF7SKINS_TEXTDOMAIN ); ?> <a href="http://cf7skins.com/add-ons/" target="_blank"><strong><?php _ex( 'Add-ons','Subject form. Add conjugations if needed.', CF7SKINS_TEXTDOMAIN ); ?></strong></a> <?php _e( 'brings the functionality available in other premium WordPress form plugins directly within Contact Form 7.', CF7SKINS_TEXTDOMAIN ); ?></em></p>
209
 
 
210
  </div>
includes/license.php CHANGED
@@ -1,45 +1,50 @@
1
  <?php
2
  /**
3
- * License Class
4
  *
5
- * Implements EDD Licensing & Updates
6
  *
7
  * @package cf7skins
8
  * @author Neil Murray
9
- * @version 0.0.1
10
  * @since 0.2.0
11
  */
12
 
13
  class CF7_Skins_License {
14
 
15
-
16
  /**
17
- * Class constructor
18
- * @uses http://codex.wordpress.org/Function_Reference/add_action
19
- * @since 0.2.0
20
- */
 
 
21
  function __construct() {
22
-
23
  // License tab should not be shown if CF7 Skins Pro is not installed
24
  // add_filter( 'cf7skins_setting_tabs', array( &$this, 'license_tab' ), 1, 1 );
25
  add_action( 'cf7skins_section_license', array( &$this, 'active_sites' ) );
26
  }
27
 
28
-
29
  /**
30
- * Enable license tab if other plugins need activation
 
 
 
 
31
  *
32
- * @param $tabs
33
  * @since 0.5.0
34
- */
35
- function license_tab( $tabs ) {
36
  $tabs['license'] = __( 'Licenses', CF7SKINS_TEXTDOMAIN );
37
  return $tabs;
38
- }
39
-
40
-
41
  /**
42
- * Add active sites based on license key
 
 
 
43
  * @since 0.2.0
44
  */
45
  function active_sites() {
@@ -54,9 +59,9 @@ class CF7_Skins_License {
54
  <th scope="row"><b>'. __( 'Site URL', CF7SKINS_TEXTDOMAIN ) .'</b></th>
55
  </tr>';
56
 
57
- $logs = apply_filters( 'cf7skins_activation_logs', get_option( 'cf7skins_activation' ) ); // @since 1.2
58
 
59
- if( is_array( $logs ) ) {
60
 
61
  foreach( $logs as $log ) {
62
  echo '<tr>';
@@ -64,7 +69,7 @@ class CF7_Skins_License {
64
  echo '<td>'. $log->license_key .'</td>';
65
 
66
  echo '<td>';
67
- $sites = json_decode( $log->sites );
68
  foreach( $sites as $site )
69
  echo $site . '<br />';
70
  echo '</td>';
@@ -74,7 +79,7 @@ class CF7_Skins_License {
74
 
75
  echo '
76
  </tbody>
77
- </table>';
78
  }
79
 
80
- } new CF7_Skins_License();
1
  <?php
2
  /**
3
+ * License Class.
4
  *
5
+ * Implements EDD Licensing & Updates.
6
  *
7
  * @package cf7skins
8
  * @author Neil Murray
9
+ *
10
  * @since 0.2.0
11
  */
12
 
13
  class CF7_Skins_License {
14
 
 
15
  /**
16
+ * Class constructor
17
+ *
18
+ * @action 'cf7skins_section_license'
19
+ *
20
+ * @since 0.2.0
21
+ */
22
  function __construct() {
23
+
24
  // License tab should not be shown if CF7 Skins Pro is not installed
25
  // add_filter( 'cf7skins_setting_tabs', array( &$this, 'license_tab' ), 1, 1 );
26
  add_action( 'cf7skins_section_license', array( &$this, 'active_sites' ) );
27
  }
28
 
 
29
  /**
30
+ * Enable license tab if other plugins need activation.
31
+ *
32
+ * NRM - where is this now called?
33
+ *
34
+ * @param (TYPE) $tabs ADD EXPLANATION
35
  *
 
36
  * @since 0.5.0
37
+ */
38
+ function license_tab( $tabs ) {
39
  $tabs['license'] = __( 'Licenses', CF7SKINS_TEXTDOMAIN );
40
  return $tabs;
41
+ }
42
+
 
43
  /**
44
+ * Add active sites based on license key.
45
+ *
46
+ * NRM - why is this not done in CF7 Skins Pro plugin?
47
+ *
48
  * @since 0.2.0
49
  */
50
  function active_sites() {
59
  <th scope="row"><b>'. __( 'Site URL', CF7SKINS_TEXTDOMAIN ) .'</b></th>
60
  </tr>';
61
 
62
+ $logs = apply_filters( 'cf7skins_activation_logs', get_option( 'cf7skins_activation' ) ); // @since 1.2.0
63
 
64
+ if( is_array( $logs ) ) {
65
 
66
  foreach( $logs as $log ) {
67
  echo '<tr>';
69
  echo '<td>'. $log->license_key .'</td>';
70
 
71
  echo '<td>';
72
+ $sites = json_decode( $log->sites );
73
  foreach( $sites as $site )
74
  echo $site . '<br />';
75
  echo '</td>';
79
 
80
  echo '
81
  </tbody>
82
+ </table>';
83
  }
84
 
85
+ } new CF7_Skins_License();
includes/pro-version.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * Pro Version & Add-ons
4
  *
5
  * @package cf7skins
6
  * @author Neil Murray
@@ -8,18 +8,9 @@
8
  */
9
  ?>
10
  <div class="cf7s-info">
11
- <h2><?php _e( 'Pro Version & Add-ons', CF7SKINS_TEXTDOMAIN ); ?></h2>
12
 
13
- <img title="CF7 Skins" src="<?php echo CF7SKINS_URL; ?>images/cf7skins-logo.png" alt="CF7 Skins" width="400" height="150" class="alignright" /><p><?php printf( __( 'Ongoing development of CF7 Skins is made possible by sales of renewable annual licenses of our %1$s and %2$s.', CF7SKINS_TEXTDOMAIN), '<a href="http://cf7skins.com/pro-version/" target="_blank">'. __( 'Pro Version', CF7SKINS_TEXTDOMAIN ) .'</a>', '<a href="http://cf7skins.com/add-ons/" target="_blank">'. __( 'Add-ons', CF7SKINS_TEXTDOMAIN ) .'</a>' ); ?></p>
14
-
15
- <h3><?php _e( 'Pro Version', CF7SKINS_TEXTDOMAIN ); ?></h3>
16
-
17
- <p><a href="http://cf7skins.com/pro-version/" target="_blank"><strong><?php _ex( 'CF7 Skins Pro', 'Subject form. Add conjugations if needed.' , CF7SKINS_TEXTDOMAIN ); ?></strong></a> <?php _e( 'offers a wider range of Templates & Styles for commonly used forms', CF7SKINS_TEXTDOMAIN ); ?>.</p>
18
-
19
- <p><a href="http://cf7skins.com/support/#premium-email-support" target="_blank"><strong><?php _ex( 'Premium Email Support','Subject form. Add conjugations if needed.', CF7SKINS_TEXTDOMAIN ); ?></strong></a> <?php _e( 'is provided by paid staff to deal with Premium users questions and problems', CF7SKINS_TEXTDOMAIN ); ?>.</p>
20
-
21
- <h3><?php _e( 'Add-ons', CF7SKINS_TEXTDOMAIN ); ?></h3>
22
- <p><?php _e( 'Our range of', CF7SKINS_TEXTDOMAIN ); ?> <a href="http://cf7skins.com/add-ons/" target="_blank"><strong><?php _ex( 'Add-ons','Subject form. Add conjugations if needed.', CF7SKINS_TEXTDOMAIN ); ?></strong></a> <?php _e( 'brings the functionality available in other premium WordPress form plugins directly within Contact Form 7.', CF7SKINS_TEXTDOMAIN ); ?></p>
23
 
24
  <h4><?php _e( 'CF7 Skins Add-ons offer a number of advantages:', CF7SKINS_TEXTDOMAIN ); ?></h4>
25
  <ul>
@@ -33,12 +24,22 @@
33
  <?php _e( 'Purchase only the CF7 Skins Add-ons your require - mix and match to suit your needs', CF7SKINS_TEXTDOMAIN ); ?>
34
  </li>
35
  </ul>
36
-
 
 
 
 
 
 
 
 
 
 
37
  <h3><?php _ex('CF7 Skins Ready','Stand-alone form. No conjugations needed.',CF7SKINS_TEXTDOMAIN); ?></h3>
38
 
39
- <a target="_blank" href="http://cf7skins.com/add-ons/ready/"><img title="CF7 Skins Ready" src="<?php echo CF7SKINS_URL; ?>images/cf7skins-ready-logo.png" alt="CF7 Skins Ready" width="400" height="150" class="alignright" /></a>
40
 
41
- <p><a target="_blank" href="http://cf7skins.com/add-ons/ready/"><?php _ex('CF7 Skins Ready','Subject form. Add conjugations if needed.',CF7SKINS_TEXTDOMAIN); ?></a> <?php _e( 'provides a range of useful pre-defined styles that can be used in all Contact Form 7 forms:', CF7SKINS_TEXTDOMAIN ); ?></p>
42
 
43
  <ul>
44
  <li>
@@ -54,17 +55,17 @@
54
  <strong><?php _e( 'singleline', CF7SKINS_TEXTDOMAIN ); ?></strong> - <?php _e( 'displays enclosed elements on a single line', CF7SKINS_TEXTDOMAIN ); ?>
55
  </li>
56
  <li>
57
- <strong><?php _e( 'checkbox-radio-horizontal', CF7SKINS_TEXTDOMAIN ); ?></strong> - <?php _e( 'displays checkbox & radio button elements in horizontal line', CF7SKINS_TEXTDOMAIN ); ?>
58
  </li>
59
  </ul>
60
 
61
  <p><a class="cf7s-btn" target="_blank" href="http://cf7skins.com/add-ons/ready/"><?php _ex('CF7 Skins Ready','Stand-alone form. No conjugations needed.',CF7SKINS_TEXTDOMAIN); ?></a></p>
62
 
63
- <h3>CF7 Skins Multi</h3>
64
 
65
- <a target="_blank" href="http://cf7skins.com/add-ons/multi/"><img title="CF7 Skins Multi" src="<?php echo CF7SKINS_URL; ?>images/cf7skins-multi-logo.png" alt="CF7 Skins Multi" width="400" height="150" class="alignright" /></a>
66
 
67
- <p><a target="_blank" href="http://cf7skins.com/add-ons/multi/"><?php _ex('CF7 Skins Multi','Subject form. Add conjugations if needed.',CF7SKINS_TEXTDOMAIN); ?></a> <?php _e( 'includes the features you need to make user friendly multi-part Contact Form 7 forms:', CF7SKINS_TEXTDOMAIN ); ?></p>
68
 
69
  <ul>
70
  <li>
@@ -94,9 +95,9 @@
94
 
95
  <h3><?php _ex('CF7 Skins Logic','Stand-alone form. No conjugations needed.',CF7SKINS_TEXTDOMAIN); ?></h3>
96
 
97
- <a target="_blank" href="http://cf7skins.com/add-ons/logic/"><img title="CF7 Skins Logic" src="<?php echo CF7SKINS_URL; ?>images/cf7skins-logic-logo.png" alt="CF7 Skins Logic" width="400" height="150" class="alignright" /></a>
98
 
99
- <p><a target="_blank" href="http://cf7skins.com/add-ons/logic/"><?php _ex('CF7 Skins Logic','Subject form. Add conjugations if needed.',CF7SKINS_TEXTDOMAIN); ?></a> <?php _e( 'provides Conditional Logic for Contact Form 7 forms:', CF7SKINS_TEXTDOMAIN ); ?></p>
100
 
101
  <ul>
102
  <li>
@@ -121,58 +122,53 @@
121
 
122
  <p><a class="cf7s-btn" target="_blank" href="http://cf7skins.com/add-ons/logic/"><?php _ex('CF7 Skins Logic','Stand-alone form. No conjugations needed.',CF7SKINS_TEXTDOMAIN); ?></a></p>
123
 
124
- <p><a href="http://cf7skins.com" target="_blank"><?php _e( 'Plugin Website', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://cf7skins.com/pro-version/" target="_blank"><?php _e( 'Pro Version', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://cf7skins.com/add-ons/" target="_blank"><?php _e( 'Add-ons', CF7SKINS_TEXTDOMAIN ); ?></a></p>
125
-
126
- <p><a href="http://kb.cf7skins.com/faq/" target="_blank"><?php _e( 'FAQ', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://docs.cf7skins.com/" target="_blank"><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://kb.cf7skins.com/category/tutorials/" target="_blank"><?php _e( 'Tutorials', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://kb.cf7skins.com/" target="_blank"><?php _e( 'Knowledge Base', CF7SKINS_TEXTDOMAIN ); ?></a></p>
127
  </div>
128
 
129
  <div class="cf7s-info-sidebar">
130
  <h2><?php _e( 'Do you enjoy using this plugin?', CF7SKINS_TEXTDOMAIN ); ?></h2>
131
- <p><?php _e( 'You can help fellow WordPress users in the following simple ways:', CF7SKINS_TEXTDOMAIN ); ?></p>
132
  <ul>
133
  <li>
134
- <strong><a href="https://wordpress.org/support/view/plugin-reviews/contact-form-7-skins" target="_blank"><?php _e( 'Review', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'leave a plugin review on WordPress.org', CF7SKINS_TEXTDOMAIN ); ?>
135
- </li>
136
- <li>
137
- <strong><a href="http://cf7skins.com/pro-version/testimonials/" target="_blank"><?php _e( 'Testimonial', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'add your Testimonial to those listed', CF7SKINS_TEXTDOMAIN ); ?>
138
  </li>
139
  <li>
140
- <strong><a href="https://wordpress.org/plugins/contact-form-7-skins/" target="_blank"><?php _e( 'Compatibility', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'log in & vote "works" on your current versions', CF7SKINS_TEXTDOMAIN ); ?>
141
  </li>
142
  <li>
143
  <strong><a href="http://cf7skins.com/support/#feedback" target="_blank"><?php _e( 'Feedback', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'help us to improve CF7 Skins by offering feedback', CF7SKINS_TEXTDOMAIN ); ?>
144
  </li>
145
  </ul>
146
 
147
- <h2><?php _e( 'Need some help?', CF7SKINS_TEXTDOMAIN ); ?></h2>
148
- <p><?php _e( 'You have a number of options to help you use CF7 Skins:', CF7SKINS_TEXTDOMAIN ); ?></p>
149
  <ul>
150
  <li>
151
- <strong><a href="http://kb.cf7skins.com/faq/" target="_blank"><?php _e( 'FAQ', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'browse over some commonly asked questions. Chances are your question has been asked before and answered here.', CF7SKINS_TEXTDOMAIN ); ?>
152
  </li>
153
  <li>
154
- <strong><a href="http://docs.cf7skins.com/" target="_blank"><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'a great place to find detailed answers. It covers how to get started, how to customize your forms with CF7 Skins and everything else in between.', CF7SKINS_TEXTDOMAIN ); ?>
155
  </li>
156
  <li>
157
- <strong><a href="http://kb.cf7skins.com/" target="_blank"><?php _e( 'Knowledge Base', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'maintained by the CF7 Skins Support Team to help you solve most questions. You can search it either by Categories & Tags or Keywords.', CF7SKINS_TEXTDOMAIN ); ?>
158
- </li>
159
- <li>
160
- <strong><a href="http://kb.cf7skins.com/category/tutorials/" target="_blank"><?php _e( 'Tutorials', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'to help you get started using CF7 Skins quickly & easily.', CF7SKINS_TEXTDOMAIN ); ?>
161
  </li>
 
 
 
 
 
162
  <li><strong><?php _e( 'Free Version', CF7SKINS_TEXTDOMAIN ); ?></strong></li>
163
  <ul>
164
  <li>
165
  <strong><a href="https://wordpress.org/support/plugin/contact-form-7-skins" target="_blank"><?php _e( 'WordPress.org Support Forum', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'community based support offered by other CF7 Skin users (we visit the forum intermittently to assist with plugin bugs only).', CF7SKINS_TEXTDOMAIN ); ?>
166
  </li>
167
  </ul>
168
- <li><strong><?php _e( 'Pro Version & Add-ons', CF7SKINS_TEXTDOMAIN ); ?></strong></li>
169
  <ul>
170
  <li>
171
- <strong><a href="http://cf7skins.com/support/#premium-email-support" target="_blank"><?php _e( 'Premium Email Support', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'available (for current paid licenses) to deal with CF7 Skins Pro users questions and problems.', CF7SKINS_TEXTDOMAIN ); ?>
172
  </li>
173
  </ul>
174
  </ul>
175
- <p><a href="http://cf7skins.com" target="_blank"><?php _e( 'Plugin Website', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://cf7skins.com/pro-version/" target="_blank"><?php _e( 'Pro Version', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://cf7skins.com/add-ons/" target="_blank"><?php _e( 'Add-ons', CF7SKINS_TEXTDOMAIN ); ?></a></p>
176
 
177
- <p><a href="http://kb.cf7skins.com/faq/" target="_blank"><?php _e( 'FAQ', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://docs.cf7skins.com/" target="_blank"><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://kb.cf7skins.com/category/tutorials/" target="_blank"><?php _e( 'Tutorials', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://kb.cf7skins.com/" target="_blank"><?php _e( 'Knowledge Base', CF7SKINS_TEXTDOMAIN ); ?></a></p>
178
  </div>
1
  <?php
2
  /**
3
+ * Add-ons
4
  *
5
  * @package cf7skins
6
  * @author Neil Murray
8
  */
9
  ?>
10
  <div class="cf7s-info">
11
+ <h2><?php _e( 'Add-ons', CF7SKINS_TEXTDOMAIN ); ?></h2>
12
 
13
+ <img title="CF7 Skins" src="<?php echo CF7SKINS_URL; ?>images/cf7skins-logo.png" alt="CF7 Skins Logo" width="400" height="150" class="alignright" /><p><?php printf( __( 'Ongoing development of CF7 Skins is made possible by sales of renewable annual licenses of our %1$s.', CF7SKINS_TEXTDOMAIN), '<a href="http://cf7skins.com/add-ons/" target="_blank">'. __( 'Add-ons', CF7SKINS_TEXTDOMAIN ) .'</a>' ); ?></p>
 
 
 
 
 
 
 
 
 
14
 
15
  <h4><?php _e( 'CF7 Skins Add-ons offer a number of advantages:', CF7SKINS_TEXTDOMAIN ); ?></h4>
16
  <ul>
24
  <?php _e( 'Purchase only the CF7 Skins Add-ons your require - mix and match to suit your needs', CF7SKINS_TEXTDOMAIN ); ?>
25
  </li>
26
  </ul>
27
+
28
+ <p><em><?php _e( 'Our range of', CF7SKINS_TEXTDOMAIN ); ?> <a href="http://cf7skins.com/add-ons/" target="_blank"><strong><?php _ex( 'Add-ons','Subject form. Add conjugations if needed.', CF7SKINS_TEXTDOMAIN ); ?></strong></a> <?php _e( 'brings the functionality available in other premium WordPress form plugins directly within Contact Form 7.', CF7SKINS_TEXTDOMAIN ); ?></em></p>
29
+
30
+ <h3><?php _ex('CF7 Skins Pro','Stand-alone form. No conjugations needed.',CF7SKINS_TEXTDOMAIN); ?></h3>
31
+
32
+ <p><a href="http://cf7skins.com/add-ons/pro/" target="_blank"><strong><?php _ex( 'CF7 Skins Pro', 'Subject form. Add conjugations if needed.' , CF7SKINS_TEXTDOMAIN ); ?></strong></a> <?php _e( '- offers a wider range of Templates & Styles for commonly used forms', CF7SKINS_TEXTDOMAIN ); ?>.</p>
33
+
34
+ <p><a href="http://cf7skins.com/support/#premium-email-support" target="_blank"><strong><?php _ex( 'Premium Email Support','Subject form. Add conjugations if needed.', CF7SKINS_TEXTDOMAIN ); ?></strong></a> <?php _e( 'is provided by paid staff to deal with Premium users questions and problems', CF7SKINS_TEXTDOMAIN ); ?>.</p>
35
+
36
+ <p><a class="cf7s-btn" target="_blank" href="http://cf7skins.com/add-ons/pro/"><?php _ex('CF7 Skins Pro','Stand-alone form. No conjugations needed.',CF7SKINS_TEXTDOMAIN); ?></a></p>
37
+
38
  <h3><?php _ex('CF7 Skins Ready','Stand-alone form. No conjugations needed.',CF7SKINS_TEXTDOMAIN); ?></h3>
39
 
40
+ <a target="_blank" href="http://cf7skins.com/add-ons/ready/"><img title="CF7 Skins Ready" src="<?php echo CF7SKINS_URL; ?>images/cf7skins-ready-logo.png" alt="CF7 Skins Ready Logo" width="400" height="150" class="alignright" /></a>
41
 
42
+ <p><a target="_blank" href="http://cf7skins.com/add-ons/ready/"><?php _ex('CF7 Skins Ready','Subject form. Add conjugations if needed.',CF7SKINS_TEXTDOMAIN); ?></a> <?php _e( '- provides a range of useful pre-defined styles that can be used in all Contact Form 7 forms:', CF7SKINS_TEXTDOMAIN ); ?></p>
43
 
44
  <ul>
45
  <li>
55
  <strong><?php _e( 'singleline', CF7SKINS_TEXTDOMAIN ); ?></strong> - <?php _e( 'displays enclosed elements on a single line', CF7SKINS_TEXTDOMAIN ); ?>
56
  </li>
57
  <li>
58
+ <strong><?php _e( 'horizontal', CF7SKINS_TEXTDOMAIN ); ?></strong> - <?php _e( 'displays checkbox & radio button elements in horizontal line', CF7SKINS_TEXTDOMAIN ); ?>
59
  </li>
60
  </ul>
61
 
62
  <p><a class="cf7s-btn" target="_blank" href="http://cf7skins.com/add-ons/ready/"><?php _ex('CF7 Skins Ready','Stand-alone form. No conjugations needed.',CF7SKINS_TEXTDOMAIN); ?></a></p>
63
 
64
+ <h3><?php _ex('CF7 Skins Multi','Stand-alone form. No conjugations needed.',CF7SKINS_TEXTDOMAIN); ?></h3>
65
 
66
+ <a target="_blank" href="http://cf7skins.com/add-ons/multi/"><img title="CF7 Skins Multi" src="<?php echo CF7SKINS_URL; ?>images/cf7skins-multi-logo.png" alt="CF7 Skins Multi Logo" width="400" height="150" class="alignright" /></a>
67
 
68
+ <p><a target="_blank" href="http://cf7skins.com/add-ons/multi/"><?php _ex('CF7 Skins Multi','Subject form. Add conjugations if needed.',CF7SKINS_TEXTDOMAIN); ?></a> <?php _e( '- includes the features you need to make user friendly multi-part Contact Form 7 forms:', CF7SKINS_TEXTDOMAIN ); ?></p>
69
 
70
  <ul>
71
  <li>
95
 
96
  <h3><?php _ex('CF7 Skins Logic','Stand-alone form. No conjugations needed.',CF7SKINS_TEXTDOMAIN); ?></h3>
97
 
98
+ <a target="_blank" href="http://cf7skins.com/add-ons/logic/"><img title="CF7 Skins Logic" src="<?php echo CF7SKINS_URL; ?>images/cf7skins-logic-logo.png" alt="CF7 Skins Logic Logo" width="400" height="150" class="alignright" /></a>
99
 
100
+ <p><a target="_blank" href="http://cf7skins.com/add-ons/logic/"><?php _ex('CF7 Skins Logic','Subject form. Add conjugations if needed.',CF7SKINS_TEXTDOMAIN); ?></a> <?php _e( '- provides Conditional Logic for Contact Form 7 forms:', CF7SKINS_TEXTDOMAIN ); ?></p>
101
 
102
  <ul>
103
  <li>
122
 
123
  <p><a class="cf7s-btn" target="_blank" href="http://cf7skins.com/add-ons/logic/"><?php _ex('CF7 Skins Logic','Stand-alone form. No conjugations needed.',CF7SKINS_TEXTDOMAIN); ?></a></p>
124
 
 
 
 
125
  </div>
126
 
127
  <div class="cf7s-info-sidebar">
128
  <h2><?php _e( 'Do you enjoy using this plugin?', CF7SKINS_TEXTDOMAIN ); ?></h2>
129
+ <p><?php _e( 'You can help fellow WordPress users in the following simple ways', CF7SKINS_TEXTDOMAIN ); ?></p>
130
  <ul>
131
  <li>
132
+ <strong><a href="https://wordpress.org/plugins/contact-form-7-skins/#reviews" target="_blank"><?php _e( 'Review', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'leave a plugin review on WordPress.org', CF7SKINS_TEXTDOMAIN ); ?>
 
 
 
133
  </li>
134
  <li>
135
+ <strong><a href="http://cf7skins.com/testimonials/" target="_blank"><?php _e( 'Testimonial', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'add your Testimonial to those listed', CF7SKINS_TEXTDOMAIN ); ?>
136
  </li>
137
  <li>
138
  <strong><a href="http://cf7skins.com/support/#feedback" target="_blank"><?php _e( 'Feedback', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'help us to improve CF7 Skins by offering feedback', CF7SKINS_TEXTDOMAIN ); ?>
139
  </li>
140
  </ul>
141
 
142
+ <h2><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN ); ?></h2>
143
+ <p><?php _e( 'Our in-depth documentation is a great place to find detailed answers', CF7SKINS_TEXTDOMAIN ); ?></p>
144
  <ul>
145
  <li>
146
+ <strong><a href="http://kb.cf7skins.com/faq/" target="_blank"><?php _e( 'FAQ', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'browse over some commonly asked questions.', CF7SKINS_TEXTDOMAIN ); ?>
147
  </li>
148
  <li>
149
+ <strong><a href="http://kb.cf7skins.com/" target="_blank"><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'search by Categories & Tags or Keywords.', CF7SKINS_TEXTDOMAIN ); ?>
150
  </li>
151
  <li>
152
+ <strong><a href="http://kb.cf7skins.com/category/tutorials/" target="_blank"><?php _e( 'Tutorials', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'to help you get started quickly with CF7 Skins.', CF7SKINS_TEXTDOMAIN ); ?>
 
 
 
153
  </li>
154
+ </ul>
155
+
156
+ <h2><?php _e( 'Need some help?', CF7SKINS_TEXTDOMAIN ); ?></h2>
157
+ <p><?php _e( 'You have a number of options to help you use CF7 Skins', CF7SKINS_TEXTDOMAIN ); ?></p>
158
+ <ul>
159
  <li><strong><?php _e( 'Free Version', CF7SKINS_TEXTDOMAIN ); ?></strong></li>
160
  <ul>
161
  <li>
162
  <strong><a href="https://wordpress.org/support/plugin/contact-form-7-skins" target="_blank"><?php _e( 'WordPress.org Support Forum', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'community based support offered by other CF7 Skin users (we visit the forum intermittently to assist with plugin bugs only).', CF7SKINS_TEXTDOMAIN ); ?>
163
  </li>
164
  </ul>
165
+ <li><strong><?php _e( 'Add-ons', CF7SKINS_TEXTDOMAIN ); ?></strong></li>
166
  <ul>
167
  <li>
168
+ <strong><a href="http://cf7skins.com/support/#premium-email-support" target="_blank"><?php _e( 'Premium Email Support', CF7SKINS_TEXTDOMAIN ); ?></a></strong> - <?php _e( 'available (for current paid licenses) to deal with users questions and problems.', CF7SKINS_TEXTDOMAIN ); ?>
169
  </li>
170
  </ul>
171
  </ul>
172
+ <p><a href="http://cf7skins.com" target="_blank"><?php _e( 'Website', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://kb.cf7skins.com/faq/" target="_blank"><?php _e( 'FAQ', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://kb.cf7skins.com/" target="_blank"><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://kb.cf7skins.com/category/tutorials/" target="_blank"><?php _e( 'Tutorials', CF7SKINS_TEXTDOMAIN ); ?></a> | <a href="http://cf7skins.com/add-ons/" target="_blank"><?php _e( 'Add-ons', CF7SKINS_TEXTDOMAIN ); ?></a></p>
173
 
 
174
  </div>
includes/settings.php CHANGED
@@ -1,121 +1,121 @@
1
  <?php
2
  /**
3
- * CF7 Skins Settings Class
4
  *
5
  * Implement all functionality on CF7 Skins Settings page.
6
  *
7
  * @package cf7skins
8
  * @author Neil Murray
 
9
  * @since 0.1.0
10
  */
11
 
12
-
13
  class CF7_Skins_Settings {
14
 
15
- // Holds the values to be used in the fields callbacks
16
- private $options;
17
 
18
  // Define class variables
19
  var $tabs, $section, $fields, $slug, $textdomain;
20
 
21
-
22
- /**
23
- * Class constructor
24
  *
25
  * @filter cf7skins_setting_tabs
26
  * @filter cf7skins_color_scheme
27
  * @filter cf7skins_section_tab
28
  * do_action cf7skins_settings_enqueue_script
 
29
  * @since 0.1.0
30
- */
31
  function __construct() {
32
  $this->slug = CF7SKINS_OPTIONS;
33
- $this->textdomain = CF7SKINS_TEXTDOMAIN;
34
 
35
  $this->section = isset( $_GET['tab'] ) ? $_GET['tab'] : 'general';
36
  $this->options = get_option( $this->slug );
37
 
38
- add_action( 'admin_menu', array( $this, 'add_menu_page' ) );
39
- add_action( 'admin_init', array( $this, 'page_init' ) );
40
- add_action( 'cf7skins_section_getting-started', array( $this, 'getting_started_section' ) );
41
- add_action( 'cf7skins_section_add-ons', array( $this, 'add_ons_section' ) );
42
- }
43
-
44
 
45
- /**
46
- * Add CF7 Skins Settings page as submenu under Contact Form 7 plugin menu item
47
  *
48
  * @filter 'cf7skins_setting_tabs'
49
  *
50
- * @see add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function );
 
51
  * @since 0.1.0
52
- */
53
- function add_menu_page() {
54
 
55
  // Apply filter to allow other functions to add tabs
56
  $this->tabs = apply_filters( 'cf7skins_setting_tabs', array(
57
  'general' => __( 'General', $this->textdomain ),
58
  'advanced' => __( 'Advanced', $this->textdomain ),
59
  'add-ons' => __( 'Add-ons', $this->textdomain ),
60
- 'getting-started' => __( 'Getting Started', $this->textdomain )
61
- ));
62
 
63
  // Add the submenu page under the CF7 page
64
- $page = add_submenu_page( 'wpcf7', __( 'CF7 Skins Settings', $this->textdomain ), __( 'CF7 Skins', $this->textdomain ), 'manage_options', 'cf7skins', array( $this, 'create_settings' ) );
 
 
65
 
66
  // Display our admin scripts
67
  add_action( 'admin_print_scripts-' . $page, array( &$this, 'enqueue_script' ) );
68
- }
69
-
70
 
71
  /**
72
- * Display the admin setting page script
73
  *
74
- * do_action cf7skins_settings_enqueue_script
75
  *
76
  * @since 0.1.0
77
- */
78
- function enqueue_script() {
79
  wp_enqueue_style( $this->slug, CF7SKINS_URL . 'css/admin.css', array(), CF7SKINS_VERSION );
80
  wp_enqueue_script( $this->slug, CF7SKINS_URL . 'js/jquery.settings.js', array( 'jquery', 'jquery-ui-sortable' ), CF7SKINS_VERSION );
81
 
82
  /**
83
- * Hook action
84
  * Allow other functions to enqueue scripts after the settings.js file
85
  * @since 1.1.1
86
- */
87
  do_action( 'cf7skins_settings_enqueue_script' );
88
- }
89
-
90
 
91
- /**
92
- * Display CF7 Skins Settings page in Tabs
93
  *
94
  * Output nonce, action, and option_page fields for a settings page settings_fields( $option_group )
95
  * @see settings_fields ( string $option_group = null )
96
  * Print out the settings fields for a particular settings section
97
  * @see do_settings_fields ( string $page = null, section $section = null )
98
  *
99
- * do_action cf7skins_section_$section
100
  *
101
- * @previous settings_fields()
102
- * @since 0.1.0
103
- */
104
- function create_settings() {
 
105
  ?>
106
  <div id="cf7skins-settings" class="wrap">
107
  <?php //echo '<pre style="font-size:10px;line-height:10px;">'. print_r( $this->options, true ) .'</pre>'; ?>
108
  <h2><?php _e( 'CF7 Skins Settings', $this->textdomain ); ?></h2><br />
109
  <h2 class="nav-tab-wrapper">
110
- <?php
111
  foreach( $this->tabs as $tab => $name ) {
112
  $class = ( $tab == $this->section ) ? ' nav-tab-active' : '';
113
  echo "<a class='nav-tab$class tab-$tab' href='?page=". $this->slug ."&tab=$tab'>$name</a>";
114
  }
115
  ?>
116
- </h2>
117
- <form method="post" action="options.php">
118
- <?php
119
  settings_fields( $this->slug );
120
  echo "<input name='{$this->slug}[section]' value='{$this->section}' type='hidden' />"; // handle section
121
  echo '<table class="form-table">';
@@ -123,33 +123,34 @@ class CF7_Skins_Settings {
123
  echo '</table>';
124
 
125
  /**
126
- * Hook action cf7skins_section_$section
127
  * Allow other functions to create options for the setting section
128
  * @since 0.1.0
129
- */
130
  do_action( "cf7skins_section_{$this->section}" );
131
 
132
  submit_button( __( 'Save Changes', $this->textdomain ) );
133
- ?>
134
- </form>
135
- </div>
136
- <?php
137
- }
138
-
139
 
140
- /**
141
- * Register and add settings
142
  *
143
  * @see register_setting( $option_group, $option_name, $sanitize_callback );
144
  * @see add_settings_section( $id, $title, $callback, $page );
145
  * @see add_settings_field( $id, $title, $callback, $page, $section, $args );
 
 
 
146
  * @since 0.1.0
147
- */
148
- function page_init() {
149
  if( ! isset( $this->tabs ) )
150
  return;
151
 
152
- register_setting( $this->slug, $this->slug, array( $this, 'sanitize_callback' ) );
153
 
154
  // Add section for each tab on Settings page
155
  foreach( $this->tabs as $tab => $name ) {
@@ -164,15 +165,14 @@ class CF7_Skins_Settings {
164
  $styles[$k] = $v['details']['Style Name'];
165
  */
166
 
167
- /* Add Initial Fields
168
- *
169
- * Licenses are added via apply_filters () in license.php
170
- *
171
- * @filter cf7skins_setting_fields
172
  * @since 0.2.0.
173
  */
174
- $fields = apply_filters( 'cf7skins_setting_fields', array(
175
- 'color_scheme' => array(
176
  'section' => 'general',
177
  'label' => __( 'Color Scheme', $this->textdomain ),
178
  'type' => 'color-scheme',
@@ -215,8 +215,8 @@ class CF7_Skins_Settings {
215
  'type' => 'checkbox',
216
  'default' => false,
217
  'detail' => __( 'Remove all plugin data on plugin deletion.', $this->textdomain ),
218
- ),
219
- ));
220
 
221
  $this->fields = $fields; // @since 0.5.0 set class object
222
 
@@ -240,16 +240,18 @@ class CF7_Skins_Settings {
240
  }
241
  update_option( $this->slug, $array );
242
  }
243
- }
244
-
245
 
246
- /**
247
- * Sanitize each setting field as needed
 
 
 
 
248
  *
249
- * @param array $input Contains all settings fields as array keys
250
- * @since 0.1.0
251
- */
252
- function sanitize_callback( $inputs ) {
253
  // return if inputs are empty
254
  if( ! isset( $inputs['section'] ) )
255
  return $inputs;
@@ -278,33 +280,32 @@ class CF7_Skins_Settings {
278
  foreach( $section as $k => $field )
279
  if( 'checkbox' == $field['args']['type'] )
280
  if( ! isset( $inputs[$k] ) )
281
- $this->options[$k] = false;
282
 
283
- /* $this->options is the new and $inputs is old
284
- *
285
  * Sanitized Licenses are added via apply_filters () in license.php
286
- *
287
- * @filter cf7skins_setting_sanitize
288
  * @since 0.2.0
289
  */
290
- return apply_filters( 'cf7skins_setting_sanitize', $this->options, $old_option, $inputs );
291
- }
292
-
293
 
294
- /**
295
- * Display the option field in the section
296
- * Public function, can be used in other files
 
297
  *
298
- * @params $args
299
- * @since 0.1.0
300
- */
301
- public function setting_field( $args ) {
 
302
  // echo '<pre style="font-size:10px;line-height:10px;">'. print_r( $this->options, true ) .'</pre>';
303
  // echo '<pre style="font-size:10px;line-height:10px;">'. print_r( $args, true ) .'</pre>';
304
 
305
  extract( $args );
306
 
307
- $id = isset( $label_for ) ? $label_for : ''; // Use label_for arg as id if set
308
 
309
  switch ( $type ) {
310
  case 'textarea':
@@ -319,7 +320,7 @@ class CF7_Skins_Settings {
319
  printf( '<label><input id="%1$s" name="'.$this->slug.'[%1$s][%2$s]" type="checkbox" value="1" %3$s />%4$s</label><br />',
320
  $id, $k, isset( $value[$k] ) ? 'checked="checked"' : '', $v );
321
 
322
- } else {
323
  $value = isset( $this->options[$id] ) ? $this->options[$id] : $this->fields[$id]['default'];
324
  printf( '<label><input id="%1$s" name="'.$this->slug.'[%1$s]" type="checkbox" value="1" %2$s />%3$s</label>',
325
  $id, $value ? 'checked="checked"' : '', $detail );
@@ -360,8 +361,8 @@ class CF7_Skins_Settings {
360
  echo '<span style="color:red;padding:0 10px;font-size:12px">'. __( 'invalid', CF7SKINS_TEXTDOMAIN ) .'</span>';
361
 
362
  echo '&nbsp;<input type="submit" class="button" name="'. "{$this->slug}[$id" .'_activate]" value="'. __('Activate License',CF7SKINS_TEXTDOMAIN) .'"/>';
363
- }
364
- break;
365
 
366
  case 'info':
367
  do_action( 'cf7skins_setting_info', $args );
@@ -387,15 +388,16 @@ class CF7_Skins_Settings {
387
  break;
388
  }
389
  }
390
- }
391
 
392
 
393
  /**
394
- * Custom option for the color scheme
395
  *
396
- * @filter cf7skins_color_scheme
397
- * @since 0.1.0
398
- */
 
399
  function color_scheme() {
400
  $colors = array();
401
 
@@ -422,36 +424,32 @@ class CF7_Skins_Settings {
422
 
423
  /**
424
  * Allow other functions to add or modify the color scheme
425
- *
426
- * @filter cf7skins_color_scheme
427
  * @param $colors (object) see above for example
428
  * @since 0.1.0
429
- */
430
  return apply_filters( 'cf7skins_color_scheme', $colors );
431
  }
432
 
433
-
434
  /**
435
- * Getting started tab content section
436
  *
437
- * @since 1.1.2
438
- */
439
  function getting_started_section() { ?>
440
  <div class="info-wrapper"><?php
441
  require_once( CF7SKINS_PATH . 'includes/getting-started.php' ); ?>
442
  </div><?php
443
  }
444
 
445
-
446
  /**
447
- * Add-ons tab content section
448
  *
449
- * @since 1.1.2
450
- */
451
  function add_ons_section() { ?>
452
  <div class="info-wrapper"><?php
453
  require_once( CF7SKINS_PATH . 'includes/pro-version.php' ); ?>
454
  </div><?php
455
  }
456
 
457
- } new CF7_Skins_Settings();
1
  <?php
2
  /**
3
+ * CF7 Skins Settings Class.
4
  *
5
  * Implement all functionality on CF7 Skins Settings page.
6
  *
7
  * @package cf7skins
8
  * @author Neil Murray
9
+ *
10
  * @since 0.1.0
11
  */
12
 
 
13
  class CF7_Skins_Settings {
14
 
15
+ // Holds the values to be used in the fields callbacks
16
+ private $options;
17
 
18
  // Define class variables
19
  var $tabs, $section, $fields, $slug, $textdomain;
20
 
21
+ /**
22
+ * Class constructor
 
23
  *
24
  * @filter cf7skins_setting_tabs
25
  * @filter cf7skins_color_scheme
26
  * @filter cf7skins_section_tab
27
  * do_action cf7skins_settings_enqueue_script
28
+ *
29
  * @since 0.1.0
30
+ */
31
  function __construct() {
32
  $this->slug = CF7SKINS_OPTIONS;
33
+ $this->textdomain = CF7SKINS_TEXTDOMAIN;
34
 
35
  $this->section = isset( $_GET['tab'] ) ? $_GET['tab'] : 'general';
36
  $this->options = get_option( $this->slug );
37
 
38
+ add_action( 'admin_menu', array( $this, 'add_menu_page' ) );
39
+ add_action( 'admin_init', array( $this, 'page_init' ) );
40
+ add_action( 'cf7skins_section_getting-started', array( $this, 'getting_started_section' ) );
41
+ add_action( 'cf7skins_section_add-ons', array( $this, 'add_ons_section' ) );
42
+ }
 
43
 
44
+ /**
45
+ * Add CF7 Skins Settings page as submenu under Contact Form 7 plugin menu item.
46
  *
47
  * @filter 'cf7skins_setting_tabs'
48
  *
49
+ * @see add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function );
50
+ *
51
  * @since 0.1.0
52
+ */
53
+ function add_menu_page() {
54
 
55
  // Apply filter to allow other functions to add tabs
56
  $this->tabs = apply_filters( 'cf7skins_setting_tabs', array(
57
  'general' => __( 'General', $this->textdomain ),
58
  'advanced' => __( 'Advanced', $this->textdomain ),
59
  'add-ons' => __( 'Add-ons', $this->textdomain ),
60
+ 'getting-started' => __( 'Getting Started', $this->textdomain )
61
+ ) );
62
 
63
  // Add the submenu page under the CF7 page
64
+ $page = add_submenu_page( 'wpcf7',
65
+ __( 'CF7 Skins Settings', $this->textdomain ),
66
+ __( 'CF7 Skins', $this->textdomain ), 'manage_options', 'cf7skins', array( $this, 'create_settings' ) );
67
 
68
  // Display our admin scripts
69
  add_action( 'admin_print_scripts-' . $page, array( &$this, 'enqueue_script' ) );
70
+ }
 
71
 
72
  /**
73
+ * Display the admin setting page script.
74
  *
75
+ * @do_action 'cf7skins_settings_enqueue_script'
76
  *
77
  * @since 0.1.0
78
+ */
79
+ function enqueue_script() {
80
  wp_enqueue_style( $this->slug, CF7SKINS_URL . 'css/admin.css', array(), CF7SKINS_VERSION );
81
  wp_enqueue_script( $this->slug, CF7SKINS_URL . 'js/jquery.settings.js', array( 'jquery', 'jquery-ui-sortable' ), CF7SKINS_VERSION );
82
 
83
  /**
 
84
  * Allow other functions to enqueue scripts after the settings.js file
85
  * @since 1.1.1
86
+ */
87
  do_action( 'cf7skins_settings_enqueue_script' );
88
+ }
 
89
 
90
+ /**
91
+ * Display CF7 Skins Settings page in Tabs.
92
  *
93
  * Output nonce, action, and option_page fields for a settings page settings_fields( $option_group )
94
  * @see settings_fields ( string $option_group = null )
95
  * Print out the settings fields for a particular settings section
96
  * @see do_settings_fields ( string $page = null, section $section = null )
97
  *
98
+ * @do_action 'cf7skins_section_$section'
99
  *
100
+ * @previous settings_fields()
101
+ *
102
+ * @since 0.1.0
103
+ */
104
+ function create_settings() {
105
  ?>
106
  <div id="cf7skins-settings" class="wrap">
107
  <?php //echo '<pre style="font-size:10px;line-height:10px;">'. print_r( $this->options, true ) .'</pre>'; ?>
108
  <h2><?php _e( 'CF7 Skins Settings', $this->textdomain ); ?></h2><br />
109
  <h2 class="nav-tab-wrapper">
110
+ <?php
111
  foreach( $this->tabs as $tab => $name ) {
112
  $class = ( $tab == $this->section ) ? ' nav-tab-active' : '';
113
  echo "<a class='nav-tab$class tab-$tab' href='?page=". $this->slug ."&tab=$tab'>$name</a>";
114
  }
115
  ?>
116
+ </h2>
117
+ <form method="post" action="options.php">
118
+ <?php
119
  settings_fields( $this->slug );
120
  echo "<input name='{$this->slug}[section]' value='{$this->section}' type='hidden' />"; // handle section
121
  echo '<table class="form-table">';
123
  echo '</table>';
124
 
125
  /**
 
126
  * Allow other functions to create options for the setting section
127
  * @since 0.1.0
128
+ */
129
  do_action( "cf7skins_section_{$this->section}" );
130
 
131
  submit_button( __( 'Save Changes', $this->textdomain ) );
132
+ ?>
133
+ </form>
134
+ </div>
135
+ <?php
136
+ }
 
137
 
138
+ /**
139
+ * Register and add settings.
140
  *
141
  * @see register_setting( $option_group, $option_name, $sanitize_callback );
142
  * @see add_settings_section( $id, $title, $callback, $page );
143
  * @see add_settings_field( $id, $title, $callback, $page, $section, $args );
144
+ *
145
+ * @filter 'cf7skins_setting_fields'
146
+ *
147
  * @since 0.1.0
148
+ */
149
+ function page_init() {
150
  if( ! isset( $this->tabs ) )
151
  return;
152
 
153
+ register_setting( $this->slug, $this->slug, array( $this, 'sanitize_callback' ) );
154
 
155
  // Add section for each tab on Settings page
156
  foreach( $this->tabs as $tab => $name ) {
165
  $styles[$k] = $v['details']['Style Name'];
166
  */
167
 
168
+ /**
169
+ * Add Initial Fields
170
+ * Licenses are added via apply_filters () in license.php
171
+ * @filter 'cf7skins_setting_fields'
 
172
  * @since 0.2.0.
173
  */
174
+ $fields = apply_filters( 'cf7skins_setting_fields', array(
175
+ 'color_scheme' => array(
176
  'section' => 'general',
177
  'label' => __( 'Color Scheme', $this->textdomain ),
178
  'type' => 'color-scheme',
215
  'type' => 'checkbox',
216
  'default' => false,
217
  'detail' => __( 'Remove all plugin data on plugin deletion.', $this->textdomain ),
218
+ ),
219
+ ) );
220
 
221
  $this->fields = $fields; // @since 0.5.0 set class object
222
 
240
  }
241
  update_option( $this->slug, $array );
242
  }
243
+ }
 
244
 
245
+ /**
246
+ * Sanitize each setting field as needed.
247
+ *
248
+ * @filter 'cf7skins_setting_sanitize'
249
+ *
250
+ * @param array $input Contains all settings fields as array keys
251
  *
252
+ * @since 0.1.0
253
+ */
254
+ function sanitize_callback( $inputs ) {
 
255
  // return if inputs are empty
256
  if( ! isset( $inputs['section'] ) )
257
  return $inputs;
280
  foreach( $section as $k => $field )
281
  if( 'checkbox' == $field['args']['type'] )
282
  if( ! isset( $inputs[$k] ) )
283
+ $this->options[$k] = false;
284
 
285
+ /**
 
286
  * Sanitized Licenses are added via apply_filters () in license.php
287
+ * $this->options is the new and $inputs is old
 
288
  * @since 0.2.0
289
  */
290
+ return apply_filters( 'cf7skins_setting_sanitize', $this->options, $old_option, $inputs );
291
+ }
 
292
 
293
+ /**
294
+ * Display the option field in the section.
295
+ *
296
+ * Public function, can be used in other files
297
  *
298
+ * @param $args ADD EXPLANATION
299
+ *
300
+ * @since 0.1.0
301
+ */
302
+ public function setting_field( $args ) {
303
  // echo '<pre style="font-size:10px;line-height:10px;">'. print_r( $this->options, true ) .'</pre>';
304
  // echo '<pre style="font-size:10px;line-height:10px;">'. print_r( $args, true ) .'</pre>';
305
 
306
  extract( $args );
307
 
308
+ $id = isset( $label_for ) ? $label_for : ''; // Use label_for arg as id if set
309
 
310
  switch ( $type ) {
311
  case 'textarea':
320
  printf( '<label><input id="%1$s" name="'.$this->slug.'[%1$s][%2$s]" type="checkbox" value="1" %3$s />%4$s</label><br />',
321
  $id, $k, isset( $value[$k] ) ? 'checked="checked"' : '', $v );
322
 
323
+ } else {
324
  $value = isset( $this->options[$id] ) ? $this->options[$id] : $this->fields[$id]['default'];
325
  printf( '<label><input id="%1$s" name="'.$this->slug.'[%1$s]" type="checkbox" value="1" %2$s />%3$s</label>',
326
  $id, $value ? 'checked="checked"' : '', $detail );
361
  echo '<span style="color:red;padding:0 10px;font-size:12px">'. __( 'invalid', CF7SKINS_TEXTDOMAIN ) .'</span>';
362
 
363
  echo '&nbsp;<input type="submit" class="button" name="'. "{$this->slug}[$id" .'_activate]" value="'. __('Activate License',CF7SKINS_TEXTDOMAIN) .'"/>';
364
+ }
365
+ break;
366
 
367
  case 'info':
368
  do_action( 'cf7skins_setting_info', $args );
388
  break;
389
  }
390
  }
391
+ }
392
 
393
 
394
  /**
395
+ * Custom option for the color scheme.
396
  *
397
+ * @filter 'cf7skins_color_scheme'
398
+ *
399
+ * @since 0.1.0
400
+ */
401
  function color_scheme() {
402
  $colors = array();
403
 
424
 
425
  /**
426
  * Allow other functions to add or modify the color scheme
 
 
427
  * @param $colors (object) see above for example
428
  * @since 0.1.0
429
+ */
430
  return apply_filters( 'cf7skins_color_scheme', $colors );
431
  }
432
 
 
433
  /**
434
+ * Getting started tab content section.
435
  *
436
+ * @since 1.1.2
437
+ */
438
  function getting_started_section() { ?>
439
  <div class="info-wrapper"><?php
440
  require_once( CF7SKINS_PATH . 'includes/getting-started.php' ); ?>
441
  </div><?php
442
  }
443
 
 
444
  /**
445
+ * Add-ons tab content section
446
  *
447
+ * @since 1.1.2
448
+ */
449
  function add_ons_section() { ?>
450
  <div class="info-wrapper"><?php
451
  require_once( CF7SKINS_PATH . 'includes/pro-version.php' ); ?>
452
  </div><?php
453
  }
454
 
455
+ } new CF7_Skins_Settings();
includes/skin.php CHANGED
@@ -1,99 +1,101 @@
1
  <?php
2
  /**
3
- * CF7 Skins - Skins Class
4
  *
5
- * Base class for templates and styles
6
  *
7
  * @package cf7skins
8
  * @author Neil Murray
9
- * @since 0.0.1
 
10
  */
11
-
12
-
13
  /**
14
  * Return if class already exists in theme or other plugins to avoid errors.
15
  *
16
  * @since 0.2.0
17
- */
18
- if ( class_exists( 'CF7_Skin' ) )
19
  return;
 
20
 
21
-
22
  class CF7_Skin {
23
 
24
  // Class variables
25
- var $name, $version, $textdomain;
26
 
27
  /**
28
- * Class constructor
29
  *
30
- * @since 0.0.1
31
- */
32
- function __construct() {
33
  // Set class variables
34
  $this->name = CF7SKINS_OPTIONS;
35
  $this->version = CF7SKINS_VERSION;
36
  $this->textdomain = CF7SKINS_TEXTDOMAIN;
37
- }
38
 
39
 
40
  /**
41
- * Get post id in post edit screen
42
- *
43
- * @since 0.0.1
44
- */
45
  function get_id() {
46
  $post_id = isset( $_GET['post'] ) ? (int) $_GET['post'] : 0;
47
  return $post_id;
48
- }
49
-
50
 
51
  /**
52
- * Get slug name for template or style based on directory name
 
 
53
  *
54
- * @param $skin current processed template or style reading data
55
- * @since 0.0.1
56
- */
57
  function get_slug_name( $skin ) {
58
  echo str_replace(' ', '-', $skin['dir'] );
59
- }
60
-
61
 
62
  /**
63
- * Return the skin thumbnail image url
 
 
64
  *
65
- * @param $skin current processed template or style reading data
66
- * @since 0.1.0
67
- */
68
  function get_skin_thumbnail( $skin ) {
69
  $imgpath = $skin['path'] . $skin['dir'] . '/thumbnail.png';
70
 
71
  // Check if thumbnail.png exists or load default thumbnail
72
- if( file_exists( $imgpath ) )
73
  $imgurl = $skin['url'] . $skin['dir'] . '/thumbnail.png';
74
- else
 
75
  $imgurl = CF7SKINS_URL . 'images/no-preview.png';
76
-
77
  return $imgurl;
78
- }
79
-
80
 
81
  /**
82
- * Return the skin modal image url, if does not exist thumbnail.png will be returned
 
 
83
  *
84
- * @parameter $skin is the current processed skin reading data
85
- * @since 0.1.0
86
- */
87
  function get_skin_modal( $skin ) {
88
  $imgpath = $skin['path'] . $skin['dir'] . '/modal.png';
89
 
90
  // Check if modal.png exists
91
- if( file_exists( $imgpath ) )
92
  $imgurl = $skin['url'] . $skin['dir'] . '/modal.png';
93
- else
 
94
  $imgurl = $this->get_skin_thumbnail( $skin );
95
-
96
  return $imgurl;
97
- }
98
 
99
  } // End class
1
  <?php
2
  /**
3
+ * CF7 Skins - Skins Class.
4
  *
5
+ * Base class for templates and styles.
6
  *
7
  * @package cf7skins
8
  * @author Neil Murray
9
+ *
10
+ * @since 0.1.0
11
  */
12
+
 
13
  /**
14
  * Return if class already exists in theme or other plugins to avoid errors.
15
  *
16
  * @since 0.2.0
17
+ */
18
+ if ( class_exists( 'CF7_Skin' ) ) {
19
  return;
20
+ }
21
 
 
22
  class CF7_Skin {
23
 
24
  // Class variables
25
+ var $name, $version, $textdomain;
26
 
27
  /**
28
+ * Class constructor
29
  *
30
+ * @since 0.1.0
31
+ */
32
+ function __construct() {
33
  // Set class variables
34
  $this->name = CF7SKINS_OPTIONS;
35
  $this->version = CF7SKINS_VERSION;
36
  $this->textdomain = CF7SKINS_TEXTDOMAIN;
37
+ }
38
 
39
 
40
  /**
41
+ * Get post id in post edit screen.
42
+ *
43
+ * @since 0.1.0
44
+ */
45
  function get_id() {
46
  $post_id = isset( $_GET['post'] ) ? (int) $_GET['post'] : 0;
47
  return $post_id;
48
+ }
 
49
 
50
  /**
51
+ * Get slug name for template or style based on directory name.
52
+ *
53
+ * @param $skin (TYPE) current processed template or style reading data
54
  *
55
+ * @since 0.1.0
56
+ */
 
57
  function get_slug_name( $skin ) {
58
  echo str_replace(' ', '-', $skin['dir'] );
59
+ }
 
60
 
61
  /**
62
+ * Return the skin thumbnail image url.
63
+ *
64
+ * @param $skin (TYPE) current processed template or style reading data
65
  *
66
+ * @since 0.1.0
67
+ */
 
68
  function get_skin_thumbnail( $skin ) {
69
  $imgpath = $skin['path'] . $skin['dir'] . '/thumbnail.png';
70
 
71
  // Check if thumbnail.png exists or load default thumbnail
72
+ if( file_exists( $imgpath ) ) {
73
  $imgurl = $skin['url'] . $skin['dir'] . '/thumbnail.png';
74
+ }
75
+ else {
76
  $imgurl = CF7SKINS_URL . 'images/no-preview.png';
77
+ }
78
  return $imgurl;
79
+ }
 
80
 
81
  /**
82
+ * Return the skin modal image url, if does not exist thumbnail.png will be returned.
83
+ *
84
+ * @parameter $skin is the current processed skin reading data
85
  *
86
+ * @since 0.1.0
87
+ */
 
88
  function get_skin_modal( $skin ) {
89
  $imgpath = $skin['path'] . $skin['dir'] . '/modal.png';
90
 
91
  // Check if modal.png exists
92
+ if( file_exists( $imgpath ) ) {
93
  $imgurl = $skin['url'] . $skin['dir'] . '/modal.png';
94
+ }
95
+ else {
96
  $imgurl = $this->get_skin_thumbnail( $skin );
97
+ }
98
  return $imgurl;
99
+ }
100
 
101
  } // End class
includes/style-instructions.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * @package cf7skins
6
  * @author Neil Murray
7
- * @version 0.0.2
8
  * @since 0.2.0
9
  */
10
  ?>
4
  *
5
  * @package cf7skins
6
  * @author Neil Murray
7
+ *
8
  * @since 0.2.0
9
  */
10
  ?>
includes/style.php CHANGED
@@ -1,47 +1,47 @@
1
  <?php
2
  /**
3
- * CF7 Skins Style Class
4
  *
5
  * @package cf7skins
6
  * @author Neil Murray
7
- * @since 0.0.1
 
8
  */
9
 
10
-
11
  class CF7_Skin_Style extends CF7_Skin {
12
 
13
  /**
14
- * Class constructor
15
  *
16
- * @since 0.0.1
17
- */
18
- function __construct() {
19
  parent::__construct(); // Run parent class
20
- }
21
-
22
 
23
  /**
24
- * Get list of styles - sorted alphabetically [a-z]
25
  *
26
  * @filter cf7skins_styles
27
  * @return (array) array of styles
28
- * @since 0.0.1
29
- */
 
30
  public static function cf7s_get_style_list() {
31
  $styles = self::read_styles( CF7SKINS_STYLES_PATH, CF7SKINS_STYLES_URL );
32
- $styles = apply_filters( 'cf7skins_styles', $styles ); // add filter for other plugins
33
  ksort( $styles ); // sort by array keys
34
- return $styles;
35
- }
36
 
37
-
38
  /**
39
- * Get list of styles from the styles directory
40
  *
41
- * @param $path current plugin styles directory path
42
- * @param $url current plugin styles directory url
43
  * @return (array) arrays of style information
44
- * @since 0.0.1
 
45
  */
46
  public static function read_styles( $path, $url ) {
47
 
@@ -50,10 +50,13 @@ class CF7_Skin_Style extends CF7_Skin {
50
  if ( $handle = opendir( $path ) ) {
51
 
52
  // Uses WP file system for reading description.txt and instruction.txt
53
- if( is_admin() ) WP_Filesystem();
54
- global $wp_filesystem;
 
 
55
 
56
- while (false !== ( $entry = readdir( $handle ) ) )
 
57
  if ( $entry != '.' && $entry != '..' ) {
58
 
59
  // Add default instructions
@@ -61,7 +64,7 @@ class CF7_Skin_Style extends CF7_Skin {
61
  include( CF7SKINS_PATH . 'includes/style-instructions.php' );
62
  $instructions = ob_get_contents();
63
  $instructions = str_replace( "\r", "<br />", $instructions ); // replace newline as HTML <br />
64
- ob_end_clean();
65
 
66
  // Step up default headers
67
  $default_headers = array(
@@ -76,7 +79,7 @@ class CF7_Skin_Style extends CF7_Skin {
76
  'License' => 'License',
77
  'License URI' => 'License URI',
78
  'Tags' => 'Tags'
79
- );
80
 
81
  // Start reading files
82
  $files = scandir( $path . $entry );
@@ -89,8 +92,8 @@ class CF7_Skin_Style extends CF7_Skin {
89
  $file_path = $path . trailingslashit($entry) . $file;
90
  $file_data = get_file_data( $file_path, $default_headers, 'test' );
91
 
92
- // Load description from description.txt if is existed.
93
- // Inline description will be overwrited if description.txt if is existed.
94
  $description_file = $path . trailingslashit($entry) . 'description.txt';
95
  if ( is_admin() && $wp_filesystem->is_file( $description_file ) ) {
96
  $_description = $wp_filesystem->get_contents( $description_file );
@@ -100,8 +103,8 @@ class CF7_Skin_Style extends CF7_Skin {
100
  // Use default instruction if there is no instruction
101
  $file_data['Instructions'] = $file_data['Instructions'] ? $file_data['Instructions'] : $instructions;
102
 
103
- // Load instruction from instruction.txt if is existed
104
- // Inline or default description will be overwrited if description.txt if is existed.
105
  $instructions_file = $path . trailingslashit($entry) . 'instruction.txt';
106
  if ( is_admin() && $wp_filesystem->is_file( $instructions_file ) ) {
107
  $_instructions = $wp_filesystem->get_contents( $instructions_file );
@@ -117,22 +120,24 @@ class CF7_Skin_Style extends CF7_Skin {
117
 
118
  $styles[$entry]['tags'] = array_map('trim', explode( ',', $styles[$entry]['details']['Tags'] ) );
119
  }
 
120
  closedir($handle);
121
  }
122
 
123
- return $styles;
124
- }
125
-
126
 
127
  /**
128
- * Returns a list of style filter tags // move to style-feature.php?
129
  *
130
  * Uses the same method as get_theme_feature_list() function
131
  * @see http://codex.wordpress.org/Function_Reference/get_theme_feature_list
 
132
  * @filter style_filter_tags
133
  * @return (array)
 
134
  * @since 0.1.0
135
- */
136
  function filter_tags() {
137
  $filter_tags = array(
138
 
@@ -180,16 +185,15 @@ class CF7_Skin_Style extends CF7_Skin {
180
  return apply_filters( 'style_filter_tags', $filter_tags );
181
  }
182
 
183
-
184
  /**
185
- * Output style filter tags for backend // move to style-feature.php?
186
  *
187
  * @compat WP3.9
188
  * @output (HTML)
189
- * @since 0.0.1
190
- */
191
-
192
- function cf7s_show_style_list_39() {
193
  $val = get_post_meta( $this->get_id(), 'cf7s_style', true ); // Get current post selected style
194
  ?>
195
  <div class="theme-navigation theme-install-php">
@@ -198,10 +202,8 @@ class CF7_Skin_Style extends CF7_Skin {
198
  <a class="theme-section skin-sort balloon" href="#" data-sort="featured" title="<?php _e( 'Selected by the CF7 Skins team', $this->textdomain ); ?>"><?php _e('Featured', $this->textdomain); ?></a>
199
  <a class="theme-section skin-sort balloon" href="#" data-sort="popular" title="<?php _e( 'Commonly used', $this->textdomain ); ?>"><?php _e('Popular', $this->textdomain); ?></a>
200
  <a class="theme-section skin-sort balloon" href="#" data-sort="new" title="<?php _e( 'Recently added', $this->textdomain ); ?>"><?php _e('Latest', $this->textdomain); ?></a>
201
-
202
  <div class="theme-top-filters">
203
- <!-- <span class="theme-filter" data-filter="photoblogging">Photography</span>
204
- <span class="theme-filter" data-filter="responsive-layout">Responsive</span> -->
205
  <?php if( CF7SKINS_FEATURE_FILTER ) : ?>
206
  <a class="more-filters balloon" title="<?php _e( 'Narrow your choices based on your specific requirements', $this->textdomain ); ?>" href="#">Feature Filter</a>
207
  <?php endif; ?>
@@ -211,7 +213,7 @@ class CF7_Skin_Style extends CF7_Skin {
211
  <a class="apply-filters button button-secondary balloon" href="#" title="<?php _e('Check all the boxes that meet your specific requirements and then click apply filters.', $this->textdomain); ?>"><?php _e('Apply Filters', $this->textdomain); ?><span></span></a>
212
  <a class="clear-filters button button-secondary balloon" href="#"><?php _e('Clear', $this->textdomain); ?></a>
213
  <br class="clear">
214
-
215
  <?php
216
  $feature_list = $this->filter_tags();
217
 
@@ -222,7 +224,7 @@ class CF7_Skin_Style extends CF7_Skin {
222
  } else {
223
  echo '<div class="filters-group">';
224
  }
225
-
226
  $feature_name = esc_html( $feature_name );
227
  echo '<h4 class="feature-name">' . $feature_name . '</h4>';
228
  echo '<ol class="feature-group">';
@@ -241,7 +243,7 @@ class CF7_Skin_Style extends CF7_Skin {
241
  <a href="#"><?php _e('Edit', $this->textdomain); ?></a>
242
  </div>
243
  </div>
244
-
245
  <div class="skins-sort">
246
  <label class="balloon" for="skins-sort" title="<?php _e( 'Sort by Name, Date and License (free or pro) – use arrow to reverse sort order', $this->textdomain ); ?>"><?php _e('Sort by', $this->textdomain); ?></label>
247
  <select class="sort-by balloon" name="sort-by" title="" autocomplete="off">
@@ -250,10 +252,10 @@ class CF7_Skin_Style extends CF7_Skin {
250
  <option value="license"><?php _e( 'License', $this->textdomain ); ?></option>
251
  </select>
252
  <a href="javascript:void(0)" class="dashicons dashicons-arrow-down-alt"></a>
253
- </div>
254
  <label class="screen-reader-text" for="theme-search-input"><?php _e('Search Styles', $this->textdomain); ?></label>
255
  <input type="search" class="theme-search skins-search" id="theme-search-input" placeholder="<?php _e('Search styles...', $this->textdomain); ?>" />
256
- </div>
257
 
258
  <div class="skin-list clearfix">
259
  <span class="spinner"></span>
@@ -261,21 +263,21 @@ class CF7_Skin_Style extends CF7_Skin {
261
  </div>
262
 
263
  <div class="skin-details clearfix hidden">
264
- <?php foreach( $this->cf7s_get_style_list() as $style )
265
  $this->cf7s_details_view( $style ); ?>
266
  </div>
267
  <input type="hidden" value="<?php echo $val; ?>" name="cf7s-style" id="cf7s-style" />
268
  <?php
269
- }
270
-
271
-
272
  /**
273
- * Output style filter tags for backend // move to style-feature.php?
274
  *
275
  * @output (HTML)
276
- * @since 0.0.1
277
- */
278
- function cf7s_show_style_list() {
 
279
  $val = get_post_meta( $this->get_id(), 'cf7s_style', true ); // Get current post selected style
280
  ?>
281
  <div class="wp-filter">
@@ -295,14 +297,14 @@ class CF7_Skin_Style extends CF7_Skin {
295
  <div class="search-form">
296
  <label class="screen-reader-text" for="theme-search-input"><?php _e('Search Styles', $this->textdomain); ?></label>
297
  <input type="search" class="theme-search skins-search" id="theme-search-input" placeholder="<?php _e('Search styles...', $this->textdomain); ?>" />
298
- </div>
299
 
300
  <div class="filter-drawer">
301
  <div class="buttons">
302
  <a class="apply-filters button button-secondary balloon" href="#" title="<?php _e('Check all the boxes that meet your specific requirements and then click apply filters.', $this->textdomain); ?>"><?php _e('Apply Filters', $this->textdomain); ?><span></span></a>
303
  <a class="clear-filters button button-secondary balloon" href="#"><?php _e('Clear', $this->textdomain); ?></a>
304
  </div>
305
-
306
  <?php
307
  $feature_list = $this->filter_tags();
308
  foreach ( $feature_list as $feature_name => $features ) {
@@ -338,28 +340,29 @@ class CF7_Skin_Style extends CF7_Skin {
338
  <option value="license"><?php _e( 'License', $this->textdomain ); ?></option>
339
  </select>
340
  <a href="javascript:void(0)" class="dashicons dashicons-arrow-down-alt"></a>
341
- </div>
342
- </div>
343
 
344
  <div class="skin-list clearfix">
345
  <span class="spinner"></span>
346
  <?php $this->styles_list(); ?>
347
  </div>
348
  <div class="skin-details clearfix hidden">
349
- <?php foreach( $this->cf7s_get_style_list() as $style )
350
  $this->cf7s_details_view( $style ); ?>
351
  </div>
 
352
  <input type="hidden" value="<?php echo $val; ?>" name="cf7s-style" id="cf7s-style" />
353
  <?php
354
- }
355
-
356
 
357
  /**
358
- * Output each style in the style tab
359
  *
360
  * @deprecated cf7s_show_style_inlist
361
  * @param $styles (array) of all the styles
362
  * @output (HTML)
 
363
  * @since 0.1.0
364
  */
365
  function styles_list( $styles = array() ) {
@@ -371,7 +374,7 @@ class CF7_Skin_Style extends CF7_Skin {
371
  $id = isset( $_POST['id'] ) ? $_POST['id'] : $this->get_id();
372
 
373
  foreach( $styles as $key => $style ) {
374
- $class = $style['dir'] == get_post_meta( $id, 'cf7s_style', true ) ? ' selected' : '';
375
  $select_text = $style['dir'] == get_post_meta( $id, 'cf7s_style', true ) ? __( 'Selected', $this->textdomain ) : __( 'Select', $this->textdomain );
376
 
377
  $skin_class = $style['dir'] == get_post_meta( $id, 'cf7s_style', true ) ? 'skin skin-selected' : 'skin';
@@ -379,9 +382,9 @@ class CF7_Skin_Style extends CF7_Skin {
379
  $date = mysql2date( 'U', $style_date[0] );
380
 
381
  // Check if skin is free or pro version
382
- $license = 'free';
383
  if ( defined( 'CF7SKINSPRO_PATH' ) )
384
- $license = strpos( $style['path'], CF7SKINSPRO_PATH ) !== false ? 'pro' : $license;
385
  ?>
386
  <div class="<?php echo $skin_class; ?>" data-name="<?php echo $key; ?>" data-date="<?php echo $date; ?>" data-license="<?php echo $license; ?>">
387
  <div class="wrapper">
@@ -395,21 +398,21 @@ class CF7_Skin_Style extends CF7_Skin {
395
  <li><a class="select<?php echo $class; ?> balloon" title="<?php _e( 'Select to apply the Style to your form - is applied to your form once you Save.',$this->textdomain ); ?>" data-value="<?php $this->get_slug_name( $style ); ?>" href="#cf7s-style"><?php echo $select_text; ?></a></li>
396
  <li><a class="detail balloon" title="<?php _e( 'Show detailed information about this Style - overview of the appearance and layout with description and usage details.' ,$this->textdomain ); ?>" href="#<?php $this->get_slug_name( $style ); ?>"><?php _e('Details', $this->textdomain ); ?></a></li>
397
  </ul>
398
- </div>
399
- </div>
400
  <?php
401
  }
402
- }
403
-
404
 
405
- /**
406
- * Output expanded and details view of selected style
407
  *
408
  * @TODO Display in pop-over window
409
  * @param $style current processed style
410
  * @output (HTML)
411
- * @since 0.0.1
412
- */
 
413
  function cf7s_details_view( $style ) {
414
 
415
  $class = $style['dir'] == get_post_meta( $this->get_id(), 'cf7s_style', true ) ? ' selected' : ''; // set link class
@@ -420,13 +423,12 @@ class CF7_Skin_Style extends CF7_Skin {
420
  <div class="block-thumbnail">
421
  <img src="<?php echo $style['url'] . $style['dir'] . '/thumbnail.png'; ?>" />
422
  </div>
423
-
424
  <div class="block-details"><div>
425
  <ul class="clearfix skin-action">
426
  <li><a class="balloon view" data-value="<?php $this->get_slug_name( $style ); ?>" href="#cf7s-style" title="<?php _e( 'Use Expanded View to view Styles features - shows all form fields available in Contact Form 7.', $this->textdomain ); ?>"><?php _e('Expanded View', $this->textdomain ); ?></a></li>
427
  <li><a class="balloon select<?php echo $class; ?>" data-value="<?php $this->get_slug_name( $style ); ?>" href="#cf7s-style" title="<?php _e( 'Select to apply the Style to your form - is applied to your form once you Save.', $this->textdomain ); ?>"><?php echo $select_text; ?></a></li>
428
  <li><a class="balloon close" href="#" title="<?php _e( 'Return to Style Gallery/Grid view.', $this->textdomain ); ?>"><?php _e('Close', $this->textdomain ); ?></a></li>
429
- </ul>
430
  <?php // print_r( $style ); ?>
431
  <h1><?php echo $style['details']['Style Name']; ?></h1>
432
 
@@ -450,14 +452,14 @@ class CF7_Skin_Style extends CF7_Skin {
450
  <div class="large-thumbnail">
451
  <img src="<?php echo $this->get_skin_modal( $style ); ?>" />
452
  </div>
453
- <h4><strong><?php _e('Description', $this->textdomain ); ?></strong></h4>
454
  <p class="description"><?php echo $style['details']['Description']; ?></p>
455
 
456
  <h4><strong><?php _e('Instructions', $this->textdomain ); ?></strong></h4>
457
- <p class="description"><?php echo $style['details']['Instructions']; ?></p>
458
  </div>
459
- </div>
460
  <?php
461
- }
462
 
463
  } // End class
1
  <?php
2
  /**
3
+ * CF7 Skins Style Class.
4
  *
5
  * @package cf7skins
6
  * @author Neil Murray
7
+ *
8
+ * @since 0.1.0
9
  */
10
 
 
11
  class CF7_Skin_Style extends CF7_Skin {
12
 
13
  /**
14
+ * Class constructor
15
  *
16
+ * @since 0.1.0
17
+ */
18
+ function __construct() {
19
  parent::__construct(); // Run parent class
20
+ }
 
21
 
22
  /**
23
+ * Get list of styles - sorted alphabetically [a-z].
24
  *
25
  * @filter cf7skins_styles
26
  * @return (array) array of styles
27
+ *
28
+ * @since 0.0.1
29
+ */
30
  public static function cf7s_get_style_list() {
31
  $styles = self::read_styles( CF7SKINS_STYLES_PATH, CF7SKINS_STYLES_URL );
32
+ $styles = apply_filters( 'cf7skins_styles', $styles ); // add filter for other plugins
33
  ksort( $styles ); // sort by array keys
34
+ return $styles;
35
+ }
36
 
 
37
  /**
38
+ * Get list of styles from the styles directory.
39
  *
40
+ * @param $path (TYPE) current plugin styles directory path
41
+ * @param $url (TYPE) current plugin styles directory url
42
  * @return (array) arrays of style information
43
+ *
44
+ * @since 0.1.0
45
  */
46
  public static function read_styles( $path, $url ) {
47
 
50
  if ( $handle = opendir( $path ) ) {
51
 
52
  // Uses WP file system for reading description.txt and instruction.txt
53
+ if( is_admin() ) {
54
+ WP_Filesystem();
55
+ }
56
+ global $wp_filesystem;
57
 
58
+ while ( false !== ( $entry = readdir( $handle ) ) ) {
59
+
60
  if ( $entry != '.' && $entry != '..' ) {
61
 
62
  // Add default instructions
64
  include( CF7SKINS_PATH . 'includes/style-instructions.php' );
65
  $instructions = ob_get_contents();
66
  $instructions = str_replace( "\r", "<br />", $instructions ); // replace newline as HTML <br />
67
+ ob_end_clean();
68
 
69
  // Step up default headers
70
  $default_headers = array(
79
  'License' => 'License',
80
  'License URI' => 'License URI',
81
  'Tags' => 'Tags'
82
+ );
83
 
84
  // Start reading files
85
  $files = scandir( $path . $entry );
92
  $file_path = $path . trailingslashit($entry) . $file;
93
  $file_data = get_file_data( $file_path, $default_headers, 'test' );
94
 
95
+ // Load description from description.txt if it exists
96
+ // Inline description will be overwrited if description.txt if it exists
97
  $description_file = $path . trailingslashit($entry) . 'description.txt';
98
  if ( is_admin() && $wp_filesystem->is_file( $description_file ) ) {
99
  $_description = $wp_filesystem->get_contents( $description_file );
103
  // Use default instruction if there is no instruction
104
  $file_data['Instructions'] = $file_data['Instructions'] ? $file_data['Instructions'] : $instructions;
105
 
106
+ // Load instruction from instruction.txt if it exists
107
+ // Inline or default description will be overwrited if description.txt if it exists
108
  $instructions_file = $path . trailingslashit($entry) . 'instruction.txt';
109
  if ( is_admin() && $wp_filesystem->is_file( $instructions_file ) ) {
110
  $_instructions = $wp_filesystem->get_contents( $instructions_file );
120
 
121
  $styles[$entry]['tags'] = array_map('trim', explode( ',', $styles[$entry]['details']['Tags'] ) );
122
  }
123
+ }
124
  closedir($handle);
125
  }
126
 
127
+ return $styles;
128
+ }
 
129
 
130
  /**
131
+ * Returns a list of style filter tags. // NRM - move to style-feature.php
132
  *
133
  * Uses the same method as get_theme_feature_list() function
134
  * @see http://codex.wordpress.org/Function_Reference/get_theme_feature_list
135
+ *
136
  * @filter style_filter_tags
137
  * @return (array)
138
+ *
139
  * @since 0.1.0
140
+ */
141
  function filter_tags() {
142
  $filter_tags = array(
143
 
185
  return apply_filters( 'style_filter_tags', $filter_tags );
186
  }
187
 
 
188
  /**
189
+ * Output style filter tags for backend // NRM - move to style-feature.php
190
  *
191
  * @compat WP3.9
192
  * @output (HTML)
193
+ *
194
+ * @since 0.1.0
195
+ */
196
+ function cf7s_show_style_list_39() {
197
  $val = get_post_meta( $this->get_id(), 'cf7s_style', true ); // Get current post selected style
198
  ?>
199
  <div class="theme-navigation theme-install-php">
202
  <a class="theme-section skin-sort balloon" href="#" data-sort="featured" title="<?php _e( 'Selected by the CF7 Skins team', $this->textdomain ); ?>"><?php _e('Featured', $this->textdomain); ?></a>
203
  <a class="theme-section skin-sort balloon" href="#" data-sort="popular" title="<?php _e( 'Commonly used', $this->textdomain ); ?>"><?php _e('Popular', $this->textdomain); ?></a>
204
  <a class="theme-section skin-sort balloon" href="#" data-sort="new" title="<?php _e( 'Recently added', $this->textdomain ); ?>"><?php _e('Latest', $this->textdomain); ?></a>
205
+
206
  <div class="theme-top-filters">
 
 
207
  <?php if( CF7SKINS_FEATURE_FILTER ) : ?>
208
  <a class="more-filters balloon" title="<?php _e( 'Narrow your choices based on your specific requirements', $this->textdomain ); ?>" href="#">Feature Filter</a>
209
  <?php endif; ?>
213
  <a class="apply-filters button button-secondary balloon" href="#" title="<?php _e('Check all the boxes that meet your specific requirements and then click apply filters.', $this->textdomain); ?>"><?php _e('Apply Filters', $this->textdomain); ?><span></span></a>
214
  <a class="clear-filters button button-secondary balloon" href="#"><?php _e('Clear', $this->textdomain); ?></a>
215
  <br class="clear">
216
+
217
  <?php
218
  $feature_list = $this->filter_tags();
219
 
224
  } else {
225
  echo '<div class="filters-group">';
226
  }
227
+
228
  $feature_name = esc_html( $feature_name );
229
  echo '<h4 class="feature-name">' . $feature_name . '</h4>';
230
  echo '<ol class="feature-group">';
243
  <a href="#"><?php _e('Edit', $this->textdomain); ?></a>
244
  </div>
245
  </div>
246
+
247
  <div class="skins-sort">
248
  <label class="balloon" for="skins-sort" title="<?php _e( 'Sort by Name, Date and License (free or pro) – use arrow to reverse sort order', $this->textdomain ); ?>"><?php _e('Sort by', $this->textdomain); ?></label>
249
  <select class="sort-by balloon" name="sort-by" title="" autocomplete="off">
252
  <option value="license"><?php _e( 'License', $this->textdomain ); ?></option>
253
  </select>
254
  <a href="javascript:void(0)" class="dashicons dashicons-arrow-down-alt"></a>
255
+ </div>
256
  <label class="screen-reader-text" for="theme-search-input"><?php _e('Search Styles', $this->textdomain); ?></label>
257
  <input type="search" class="theme-search skins-search" id="theme-search-input" placeholder="<?php _e('Search styles...', $this->textdomain); ?>" />
258
+ </div>
259
 
260
  <div class="skin-list clearfix">
261
  <span class="spinner"></span>
263
  </div>
264
 
265
  <div class="skin-details clearfix hidden">
266
+ <?php foreach( $this->cf7s_get_style_list() as $style )
267
  $this->cf7s_details_view( $style ); ?>
268
  </div>
269
  <input type="hidden" value="<?php echo $val; ?>" name="cf7s-style" id="cf7s-style" />
270
  <?php
271
+ }
272
+
 
273
  /**
274
+ * Output style filter tags for backend. // NRM - move to style-feature.php?
275
  *
276
  * @output (HTML)
277
+ *
278
+ * @since 0.1.0
279
+ */
280
+ function cf7s_show_style_list() {
281
  $val = get_post_meta( $this->get_id(), 'cf7s_style', true ); // Get current post selected style
282
  ?>
283
  <div class="wp-filter">
297
  <div class="search-form">
298
  <label class="screen-reader-text" for="theme-search-input"><?php _e('Search Styles', $this->textdomain); ?></label>
299
  <input type="search" class="theme-search skins-search" id="theme-search-input" placeholder="<?php _e('Search styles...', $this->textdomain); ?>" />
300
+ </div>
301
 
302
  <div class="filter-drawer">
303
  <div class="buttons">
304
  <a class="apply-filters button button-secondary balloon" href="#" title="<?php _e('Check all the boxes that meet your specific requirements and then click apply filters.', $this->textdomain); ?>"><?php _e('Apply Filters', $this->textdomain); ?><span></span></a>
305
  <a class="clear-filters button button-secondary balloon" href="#"><?php _e('Clear', $this->textdomain); ?></a>
306
  </div>
307
+
308
  <?php
309
  $feature_list = $this->filter_tags();
310
  foreach ( $feature_list as $feature_name => $features ) {
340
  <option value="license"><?php _e( 'License', $this->textdomain ); ?></option>
341
  </select>
342
  <a href="javascript:void(0)" class="dashicons dashicons-arrow-down-alt"></a>
343
+ </div>
344
+ </div>
345
 
346
  <div class="skin-list clearfix">
347
  <span class="spinner"></span>
348
  <?php $this->styles_list(); ?>
349
  </div>
350
  <div class="skin-details clearfix hidden">
351
+ <?php foreach( $this->cf7s_get_style_list() as $style )
352
  $this->cf7s_details_view( $style ); ?>
353
  </div>
354
+
355
  <input type="hidden" value="<?php echo $val; ?>" name="cf7s-style" id="cf7s-style" />
356
  <?php
357
+ }
 
358
 
359
  /**
360
+ * Output each style in the style tab.
361
  *
362
  * @deprecated cf7s_show_style_inlist
363
  * @param $styles (array) of all the styles
364
  * @output (HTML)
365
+ *
366
  * @since 0.1.0
367
  */
368
  function styles_list( $styles = array() ) {
374
  $id = isset( $_POST['id'] ) ? $_POST['id'] : $this->get_id();
375
 
376
  foreach( $styles as $key => $style ) {
377
+ $class = $style['dir'] == get_post_meta( $id, 'cf7s_style', true ) ? ' selected' : '';
378
  $select_text = $style['dir'] == get_post_meta( $id, 'cf7s_style', true ) ? __( 'Selected', $this->textdomain ) : __( 'Select', $this->textdomain );
379
 
380
  $skin_class = $style['dir'] == get_post_meta( $id, 'cf7s_style', true ) ? 'skin skin-selected' : 'skin';
382
  $date = mysql2date( 'U', $style_date[0] );
383
 
384
  // Check if skin is free or pro version
385
+ $license = 'free';
386
  if ( defined( 'CF7SKINSPRO_PATH' ) )
387
+ $license = strpos( $style['path'], CF7SKINSPRO_PATH ) !== false ? 'pro' : $license;
388
  ?>
389
  <div class="<?php echo $skin_class; ?>" data-name="<?php echo $key; ?>" data-date="<?php echo $date; ?>" data-license="<?php echo $license; ?>">
390
  <div class="wrapper">
398
  <li><a class="select<?php echo $class; ?> balloon" title="<?php _e( 'Select to apply the Style to your form - is applied to your form once you Save.',$this->textdomain ); ?>" data-value="<?php $this->get_slug_name( $style ); ?>" href="#cf7s-style"><?php echo $select_text; ?></a></li>
399
  <li><a class="detail balloon" title="<?php _e( 'Show detailed information about this Style - overview of the appearance and layout with description and usage details.' ,$this->textdomain ); ?>" href="#<?php $this->get_slug_name( $style ); ?>"><?php _e('Details', $this->textdomain ); ?></a></li>
400
  </ul>
401
+ </div>
402
+ </div>
403
  <?php
404
  }
405
+ }
 
406
 
407
+ /**
408
+ * Output expanded and details view of selected style.
409
  *
410
  * @TODO Display in pop-over window
411
  * @param $style current processed style
412
  * @output (HTML)
413
+ *
414
+ * @since 0.1.0
415
+ */
416
  function cf7s_details_view( $style ) {
417
 
418
  $class = $style['dir'] == get_post_meta( $this->get_id(), 'cf7s_style', true ) ? ' selected' : ''; // set link class
423
  <div class="block-thumbnail">
424
  <img src="<?php echo $style['url'] . $style['dir'] . '/thumbnail.png'; ?>" />
425
  </div>
 
426
  <div class="block-details"><div>
427
  <ul class="clearfix skin-action">
428
  <li><a class="balloon view" data-value="<?php $this->get_slug_name( $style ); ?>" href="#cf7s-style" title="<?php _e( 'Use Expanded View to view Styles features - shows all form fields available in Contact Form 7.', $this->textdomain ); ?>"><?php _e('Expanded View', $this->textdomain ); ?></a></li>
429
  <li><a class="balloon select<?php echo $class; ?>" data-value="<?php $this->get_slug_name( $style ); ?>" href="#cf7s-style" title="<?php _e( 'Select to apply the Style to your form - is applied to your form once you Save.', $this->textdomain ); ?>"><?php echo $select_text; ?></a></li>
430
  <li><a class="balloon close" href="#" title="<?php _e( 'Return to Style Gallery/Grid view.', $this->textdomain ); ?>"><?php _e('Close', $this->textdomain ); ?></a></li>
431
+ </ul>
432
  <?php // print_r( $style ); ?>
433
  <h1><?php echo $style['details']['Style Name']; ?></h1>
434
 
452
  <div class="large-thumbnail">
453
  <img src="<?php echo $this->get_skin_modal( $style ); ?>" />
454
  </div>
455
+ <h4><strong><?php _e('Description', $this->textdomain ); ?></strong></h4>
456
  <p class="description"><?php echo $style['details']['Description']; ?></p>
457
 
458
  <h4><strong><?php _e('Instructions', $this->textdomain ); ?></strong></h4>
459
+ <p class="description"><?php echo $style['details']['Instructions']; ?></p>
460
  </div>
461
+ </div>
462
  <?php
463
+ }
464
 
465
  } // End class
includes/tab.php CHANGED
@@ -1,25 +1,25 @@
1
  <?php
2
  /**
3
- * CF7 Skins Admin Tab Class
4
  *
5
- * Implement Tab functionality on CF7 Skins Admin
6
  *
7
  * @package cf7skins
8
  * @author Neil Murray
9
- * @since 0.0.1
 
10
  */
11
 
12
-
13
  class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
14
 
15
  // Class variables
16
- var $tabs, $template, $style;
17
 
18
  /**
19
  * Class constructor
20
  *
21
- * @since 0.0.1
22
- */
23
  function __construct() {
24
  parent::__construct(); // run parent class
25
 
@@ -27,18 +27,18 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
27
  $this->style = new CF7_Skin_Style();
28
 
29
  add_action( 'wp_ajax_cf7s_sort_skin', array( &$this, 'sort_skin' ) );
30
- add_action( 'wp_ajax_nopriv_cf7s_sort_skin', array( &$this, 'sort_skin' ) );
31
- add_action( 'cf7skins_tab_content', array( &$this, 'style_content' ) ); // @since 1.2
32
- add_action( 'cf7skins_tab_content', array( &$this, 'template_content' ) ); // @since 1.2
33
  }
34
 
35
-
36
  /**
37
- * Sort styles/templates based on selected filter using AJAX
38
  *
39
  * @options all, new, search, tag
40
  * @output HTML
41
- * @since 0.0.1
 
42
  */
43
  function sort_skin() {
44
  // Check the nonce and if not isset the id, just die.
@@ -52,15 +52,15 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
52
 
53
  switch ( $_POST['sort'] ) :
54
 
55
- case 'all': // display all
56
  $new_templates = $templates;
57
  break;
58
 
59
- case 'new': // sort by date
60
  foreach( $templates as $key => $template ) {
61
  if( $template['details']['Version Date'] ) {
62
  $template_date = explode( "//", $template['details']['Version Date'] );
63
- $template_date = $template_date[0];
64
  $dates[$key] = mysql2date( 'U', $template_date );
65
  }
66
  }
@@ -69,11 +69,11 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
69
  $dates = array_slice( $dates, 0, 10, true ); // get only the first 10
70
 
71
  foreach( $dates as $key => $date )
72
- $new_templates[$key] = $templates[$key];
73
  break;
74
 
75
  case 'search':
76
- if( ! isset( $_POST['keyword'] ) && empty( $_POST['keyword'] ) )
77
  return;
78
 
79
  $keyword = esc_attr( $_POST['keyword'] );
@@ -87,7 +87,7 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
87
  $new_templates[$key] = $template;
88
  }
89
  break;
90
-
91
  case 'tag':
92
  if( ! isset( $_POST['tags'] ) && empty( $_POST['tags'] ) )
93
  return;
@@ -95,24 +95,24 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
95
  foreach( $templates as $key => $template ) {
96
  if( empty( $template['details']['Tags'] ) ) // bail early if empty
97
  continue;
98
-
99
  $stripped_tags = str_replace( ' ', '', $template['details']['Tags'] ); // strip all spaces before exploding
100
  $template_tags = explode( ',', $stripped_tags );
101
  $match = false;
102
 
103
- foreach( $_POST['tags'] as $tag )
104
  if( in_array( esc_attr( $tag ), $template_tags ) )
105
  $match = true;
106
 
107
  if( $match )
108
  $new_templates[$key] = $template;
109
- }
110
- break;
111
 
112
  default:
113
  foreach( $templates as $key => $template )
114
  if( in_array( $_POST['sort'], $template['tags'] ) )
115
- $new_templates[$key] = $template;
116
  break;
117
 
118
  endswitch;
@@ -133,12 +133,12 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
133
  $new_styles = $styles;
134
  break;
135
 
136
- case 'new': // sort by date
137
  foreach( $styles as $key => $style ) {
138
  if( $style['details']['Version Date'] ) {
139
  $skin_date = explode( "//", $style['details']['Version Date'] );
140
  $skin_date = $skin_date[0];
141
- $dates[$key] = mysql2date( 'U', $skin_date );
142
  }
143
  }
144
 
@@ -149,7 +149,7 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
149
  break;
150
 
151
  case 'search':
152
- if( ! isset( $_POST['keyword'] ) && empty( $_POST['keyword'] ) )
153
  return;
154
 
155
  $keyword = esc_attr( $_POST['keyword'] );
@@ -159,13 +159,13 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
159
  if( stristr( $details, $keyword ) !== false )
160
  $match = true;
161
 
162
- if( $match )
163
  $new_styles[$key] = $style;
164
  }
165
  break;
166
 
167
  case 'tag':
168
- if( ! isset( $_POST['tags'] ) && empty( $_POST['tags'] ) )
169
  return;
170
 
171
  foreach( $styles as $key => $style ) {
@@ -176,14 +176,14 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
176
  $style_tags = explode( ',', $stripped_tags );
177
  $match = false;
178
 
179
- foreach( $_POST['tags'] as $tag )
180
  if( in_array( esc_attr( $tag ), $style_tags ) )
181
  $match = true;
182
 
183
  if( $match )
184
- $new_styles[$key] = $style;
185
  }
186
- break;
187
 
188
  default:
189
  foreach( $styles as $key => $style )
@@ -196,23 +196,26 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
196
  if( $new_styles )
197
  $this->style->styles_list( $new_styles );
198
  else
199
- echo '<p class="no-themes no-skins">'. __( 'No styles found. Try a different search.', CF7SKINS_TEXTDOMAIN ) . '</p>';
200
  }
201
 
202
  exit();
203
  }
204
 
205
-
206
  /**
207
- * Create tabs for styles or templates
208
  *
209
- * Function called in admin.php
210
  *
211
  * @output HTML
 
 
 
212
  * @param $post current post object
213
  * @param $box metabox arguments
214
- * @since 0.0.1
215
- */
 
216
  function generate_tab( $post, $box ) {
217
  $option = get_option( CF7SKINS_OPTIONS );
218
  $color_scheme = isset( $option['color_scheme'] ) ? $option['color_scheme'] : '';
@@ -222,23 +225,24 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
222
  // Template tooltip text @since 0.2.0
223
  $tabs['template'] = array(
224
  'label' => __( 'Template', CF7SKINS_TEXTDOMAIN ),
225
- 'note' => __( 'Each Template acts as an easy to follow guide, which can be adapted to your requirements', CF7SKINS_TEXTDOMAIN ),
226
- 'help' => __( 'Choose a Template for your form then you can add, copy or remove fields to match your requirements.', CF7SKINS_TEXTDOMAIN ),
227
  );
228
 
229
  // Style tooltip text @since 0.2.0
230
  $tabs['style'] = array(
231
  'label' => __( 'Style', CF7SKINS_TEXTDOMAIN ),
232
- 'note' => __( 'Each Style covers the full range of standard form elements available within Contact Form 7', CF7SKINS_TEXTDOMAIN ),
233
- 'help' => __( 'You can change the Style applied to your form by simply selecting a different Style', CF7SKINS_TEXTDOMAIN )
234
  );
235
 
236
- $this->tabs = apply_filters( 'cf7skins_tabs', $tabs ); // tabs filter @since 1.2
 
237
 
238
  // Get current post ID, check if CF7 version < 4.2
239
  $post_id = isset( $post->ID ) ? $post->ID : $post->id();
240
 
241
- // Get selected template/style
242
  $template = get_post_meta( $post_id, 'cf7s_template', true );
243
  $style = get_post_meta( $post_id, 'cf7s_style', true );
244
 
@@ -250,8 +254,7 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
250
  $template_name = isset( $templates[$template] ) ?
251
  $templates[$template]['details']['Template Name'] :
252
  sprintf( __( "%s-missing", CF7SKINS_TEXTDOMAIN ), $template ) .
253
- '<span class="help balloon-hover balloon" title="'. __( 'Selected CF7 Skins Template is not available', CF7SKINS_TEXTDOMAIN ) .'">?</span>';
254
-
255
  }
256
 
257
  // Get style name
@@ -260,7 +263,7 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
260
  $style_name = isset( $styles[$style] ) ?
261
  $styles[$style]['details']['Style Name'] :
262
  sprintf( __( "%s-missing", CF7SKINS_TEXTDOMAIN ), $style ) .
263
- '<span class="help balloon-hover balloon" title="'. __( 'Selected CF7 Skins Style is not available', CF7SKINS_TEXTDOMAIN ) .'">?</span>';
264
  }
265
 
266
  ?>
@@ -288,13 +291,12 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
288
  </h2>
289
 
290
  <div class="nav-tab-content <?php echo $color_scheme; ?>">
291
- <?php foreach( $this->tabs as $key => $value ) : ?>
292
  <div id="tab-<?php echo $key; ?>" class="tab-content clearfix">
293
  <?php do_action( 'cf7skins_tab_content', $key ); ?>
294
- </div>
295
  <?php endforeach; ?>
296
 
297
-
298
  <div id="tab-getting-started" class="tab-content info-tab clearfix">
299
  <div class="info-wrapper"><?php require_once( CF7SKINS_PATH . 'includes/getting-started.php' ); ?></div>
300
  </div>
@@ -305,45 +307,47 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
305
  <?php
306
  }
307
 
308
-
309
  /**
310
- * Style Tab content
311
  *
312
- * @since 1.2
313
- */
 
 
314
  function style_content( $tab ) {
315
  if ( 'style' != $tab )
316
  return;
317
-
318
  if ( version_compare( get_bloginfo( 'version' ), '4', '<' ) )
319
  $this->style->cf7s_show_style_list_39();
320
  else
321
  $this->style->cf7s_show_style_list();
322
  }
323
 
324
-
325
  /**
326
- * Template Tab content
 
 
327
  *
328
- * @since 1.2
329
- */
330
  function template_content( $tab ) {
331
  if ( 'template' != $tab )
332
  return;
333
-
334
  if ( version_compare( get_bloginfo( 'version' ), '4', '<' ) )
335
  $this->template->cf7s_show_template_list_39();
336
  else
337
- $this->template->cf7s_show_template_list();
338
  }
339
 
340
-
341
  /**
342
- * Custom link 1
343
  *
344
  * @output HTML
345
- * @since 0.0.1
346
- */
 
347
  function links1() { ?>
348
  <a href="http://docs.cf7skins.com/"><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN); ?></a>&nbsp;|&nbsp;
349
  <a href="http://kb.cf7skins.com/faq/"><?php _e( 'FAQ', CF7SKINS_TEXTDOMAIN); ?></a>&nbsp;|&nbsp;
@@ -352,13 +356,13 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
352
  <?php
353
  }
354
 
355
-
356
  /**
357
- * Custom link 2
358
  *
359
  * @output HTML
360
- * @since 0.0.1
361
- */
 
362
  function links2() { ?>
363
  <a href="http://cf7skins.com/support/"><?php _e( 'Support', CF7SKINS_TEXTDOMAIN ); ?></a>&nbsp;|&nbsp;
364
  <a href="http://cf7skins.com/blog/"><?php _e( 'Blog', CF7SKINS_TEXTDOMAIN ); ?></a>&nbsp;|&nbsp;
@@ -366,15 +370,16 @@ class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
366
  <?php
367
  }
368
 
369
-
370
  /**
371
- * Custom link 3
 
372
  * @output HTML
373
- * @since 0.0.1
374
- */
 
375
  function links3() { ?>
376
  <a class="help" href="http://cf7skins.com/" title="Click a link to learn more"><?php _e( '?', CF7SKINS_TEXTDOMAIN ); ?></a>
377
  <?php
378
  }
379
 
380
- } new CF7_Skins_Admin_Tab();
1
  <?php
2
  /**
3
+ * CF7 Skins Admin Tab Class.
4
  *
5
+ * Implement Tab functionality on CF7 Skins Admin.
6
  *
7
  * @package cf7skins
8
  * @author Neil Murray
9
+ *
10
+ * @since 0.1.0
11
  */
12
 
 
13
  class CF7_Skins_Admin_Tab extends CF7_Skins_Admin {
14
 
15
  // Class variables
16
+ var $tabs, $template, $style;
17
 
18
  /**
19
  * Class constructor
20
  *
21
+ * @since 0.1.0
22
+ */
23
  function __construct() {
24
  parent::__construct(); // run parent class
25
 
27
  $this->style = new CF7_Skin_Style();
28
 
29
  add_action( 'wp_ajax_cf7s_sort_skin', array( &$this, 'sort_skin' ) );
30
+ add_action( 'wp_ajax_nopriv_cf7s_sort_skin', array( &$this, 'sort_skin' ) );
31
+ add_action( 'cf7skins_tab_content', array( &$this, 'style_content' ) ); // @since 1.2.0
32
+ add_action( 'cf7skins_tab_content', array( &$this, 'template_content' ) ); // @since 1.2.0
33
  }
34
 
 
35
  /**
36
+ * Sort styles/templates based on selected filter using AJAX.
37
  *
38
  * @options all, new, search, tag
39
  * @output HTML
40
+ *
41
+ * @since 0.1.0
42
  */
43
  function sort_skin() {
44
  // Check the nonce and if not isset the id, just die.
52
 
53
  switch ( $_POST['sort'] ) :
54
 
55
+ case 'all': // display all
56
  $new_templates = $templates;
57
  break;
58
 
59
+ case 'new': // sort by date
60
  foreach( $templates as $key => $template ) {
61
  if( $template['details']['Version Date'] ) {
62
  $template_date = explode( "//", $template['details']['Version Date'] );
63
+ $template_date = $template_date[0];
64
  $dates[$key] = mysql2date( 'U', $template_date );
65
  }
66
  }
69
  $dates = array_slice( $dates, 0, 10, true ); // get only the first 10
70
 
71
  foreach( $dates as $key => $date )
72
+ $new_templates[$key] = $templates[$key];
73
  break;
74
 
75
  case 'search':
76
+ if( ! isset( $_POST['keyword'] ) && empty( $_POST['keyword'] ) )
77
  return;
78
 
79
  $keyword = esc_attr( $_POST['keyword'] );
87
  $new_templates[$key] = $template;
88
  }
89
  break;
90
+
91
  case 'tag':
92
  if( ! isset( $_POST['tags'] ) && empty( $_POST['tags'] ) )
93
  return;
95
  foreach( $templates as $key => $template ) {
96
  if( empty( $template['details']['Tags'] ) ) // bail early if empty
97
  continue;
98
+
99
  $stripped_tags = str_replace( ' ', '', $template['details']['Tags'] ); // strip all spaces before exploding
100
  $template_tags = explode( ',', $stripped_tags );
101
  $match = false;
102
 
103
+ foreach( $_POST['tags'] as $tag )
104
  if( in_array( esc_attr( $tag ), $template_tags ) )
105
  $match = true;
106
 
107
  if( $match )
108
  $new_templates[$key] = $template;
109
+ }
110
+ break;
111
 
112
  default:
113
  foreach( $templates as $key => $template )
114
  if( in_array( $_POST['sort'], $template['tags'] ) )
115
+ $new_templates[$key] = $template;
116
  break;
117
 
118
  endswitch;
133
  $new_styles = $styles;
134
  break;
135
 
136
+ case 'new': // sort by date
137
  foreach( $styles as $key => $style ) {
138
  if( $style['details']['Version Date'] ) {
139
  $skin_date = explode( "//", $style['details']['Version Date'] );
140
  $skin_date = $skin_date[0];
141
+ $dates[$key] = mysql2date( 'U', $skin_date );
142
  }
143
  }
144
 
149
  break;
150
 
151
  case 'search':
152
+ if( ! isset( $_POST['keyword'] ) && empty( $_POST['keyword'] ) )
153
  return;
154
 
155
  $keyword = esc_attr( $_POST['keyword'] );
159
  if( stristr( $details, $keyword ) !== false )
160
  $match = true;
161
 
162
+ if( $match )
163
  $new_styles[$key] = $style;
164
  }
165
  break;
166
 
167
  case 'tag':
168
+ if( ! isset( $_POST['tags'] ) && empty( $_POST['tags'] ) )
169
  return;
170
 
171
  foreach( $styles as $key => $style ) {
176
  $style_tags = explode( ',', $stripped_tags );
177
  $match = false;
178
 
179
+ foreach( $_POST['tags'] as $tag )
180
  if( in_array( esc_attr( $tag ), $style_tags ) )
181
  $match = true;
182
 
183
  if( $match )
184
+ $new_styles[$key] = $style;
185
  }
186
+ break;
187
 
188
  default:
189
  foreach( $styles as $key => $style )
196
  if( $new_styles )
197
  $this->style->styles_list( $new_styles );
198
  else
199
+ echo '<p class="no-themes no-skins">'. __( 'No styles found. Try a different search.', CF7SKINS_TEXTDOMAIN ) . '</p>';
200
  }
201
 
202
  exit();
203
  }
204
 
 
205
  /**
206
+ * Create tabs for styles or templates.
207
  *
208
+ * Function called in parent class admin.php
209
  *
210
  * @output HTML
211
+ * @filter 'cf7skins_tabs'
212
+ * @do_action 'cf7skins_tab_content'
213
+ *
214
  * @param $post current post object
215
  * @param $box metabox arguments
216
+ *
217
+ * @since 0.1.0
218
+ */
219
  function generate_tab( $post, $box ) {
220
  $option = get_option( CF7SKINS_OPTIONS );
221
  $color_scheme = isset( $option['color_scheme'] ) ? $option['color_scheme'] : '';
225
  // Template tooltip text @since 0.2.0
226
  $tabs['template'] = array(
227
  'label' => __( 'Template', CF7SKINS_TEXTDOMAIN ),
228
+ 'note' => __( 'Templates are pre-created forms that automatically create the form’s structure and content for you. Each template works as an easy to follow guide.', CF7SKINS_TEXTDOMAIN ),
229
+ 'help' => __( 'Select a template that closely matches your needs then switch to the CF7 Skins Form tab to add, duplicate or remove fields to match your requirements. Any field content can be changed by clicking Edit on the field.', CF7SKINS_TEXTDOMAIN ),
230
  );
231
 
232
  // Style tooltip text @since 0.2.0
233
  $tabs['style'] = array(
234
  'label' => __( 'Style', CF7SKINS_TEXTDOMAIN ),
235
+ 'note' => __( 'Styles are pre-created designs (CSS code) that are automatically applied to your entire form. They cover all standard Contact Form 7 elements.', CF7SKINS_TEXTDOMAIN ),
236
+ 'help' => __( 'Select a style that aligns with your site’s design. To see the style applied, save and go to the page that has the form. To change the style, select another any time.', CF7SKINS_TEXTDOMAIN )
237
  );
238
 
239
+ // ADD EXPLANATION
240
+ $this->tabs = apply_filters( 'cf7skins_tabs', $tabs ); // tabs filter @since 1.2.0
241
 
242
  // Get current post ID, check if CF7 version < 4.2
243
  $post_id = isset( $post->ID ) ? $post->ID : $post->id();
244
 
245
+ // Get selected template/style
246
  $template = get_post_meta( $post_id, 'cf7s_template', true );
247
  $style = get_post_meta( $post_id, 'cf7s_style', true );
248
 
254
  $template_name = isset( $templates[$template] ) ?
255
  $templates[$template]['details']['Template Name'] :
256
  sprintf( __( "%s-missing", CF7SKINS_TEXTDOMAIN ), $template ) .
257
+ '<span class="help balloon-hover balloon" title="'. __( 'Selected CF7 Skins Template is not available', CF7SKINS_TEXTDOMAIN ) .'">?</span>';
 
258
  }
259
 
260
  // Get style name
263
  $style_name = isset( $styles[$style] ) ?
264
  $styles[$style]['details']['Style Name'] :
265
  sprintf( __( "%s-missing", CF7SKINS_TEXTDOMAIN ), $style ) .
266
+ '<span class="help balloon-hover balloon" title="'. __( 'Selected CF7 Skins Style is not available', CF7SKINS_TEXTDOMAIN ) .'">?</span>';
267
  }
268
 
269
  ?>
291
  </h2>
292
 
293
  <div class="nav-tab-content <?php echo $color_scheme; ?>">
294
+ <?php foreach( $this->tabs as $key => $value ) : ?>
295
  <div id="tab-<?php echo $key; ?>" class="tab-content clearfix">
296
  <?php do_action( 'cf7skins_tab_content', $key ); ?>
297
+ </div>
298
  <?php endforeach; ?>
299
 
 
300
  <div id="tab-getting-started" class="tab-content info-tab clearfix">
301
  <div class="info-wrapper"><?php require_once( CF7SKINS_PATH . 'includes/getting-started.php' ); ?></div>
302
  </div>
307
  <?php
308
  }
309
 
 
310
  /**
311
+ * Style Tab content.
312
  *
313
+ * @param $tab
314
+ *
315
+ * @since 1.2.0
316
+ */
317
  function style_content( $tab ) {
318
  if ( 'style' != $tab )
319
  return;
320
+ // ADD EXPLANATION
321
  if ( version_compare( get_bloginfo( 'version' ), '4', '<' ) )
322
  $this->style->cf7s_show_style_list_39();
323
  else
324
  $this->style->cf7s_show_style_list();
325
  }
326
 
 
327
  /**
328
+ * Template Tab content.
329
+ *
330
+ * @param $tab
331
  *
332
+ * @since 1.2.0
333
+ */
334
  function template_content( $tab ) {
335
  if ( 'template' != $tab )
336
  return;
337
+ // ADD EXPLANATION
338
  if ( version_compare( get_bloginfo( 'version' ), '4', '<' ) )
339
  $this->template->cf7s_show_template_list_39();
340
  else
341
+ $this->template->cf7s_show_template_list();
342
  }
343
 
 
344
  /**
345
+ * Custom link 1.
346
  *
347
  * @output HTML
348
+ *
349
+ * @since 0.1.0
350
+ */
351
  function links1() { ?>
352
  <a href="http://docs.cf7skins.com/"><?php _e( 'Documentation', CF7SKINS_TEXTDOMAIN); ?></a>&nbsp;|&nbsp;
353
  <a href="http://kb.cf7skins.com/faq/"><?php _e( 'FAQ', CF7SKINS_TEXTDOMAIN); ?></a>&nbsp;|&nbsp;
356
  <?php
357
  }
358
 
 
359
  /**
360
+ * Custom link 2.
361
  *
362
  * @output HTML
363
+ *
364
+ * @since 0.1.0
365
+ */
366
  function links2() { ?>
367
  <a href="http://cf7skins.com/support/"><?php _e( 'Support', CF7SKINS_TEXTDOMAIN ); ?></a>&nbsp;|&nbsp;
368
  <a href="http://cf7skins.com/blog/"><?php _e( 'Blog', CF7SKINS_TEXTDOMAIN ); ?></a>&nbsp;|&nbsp;
370
  <?php
371
  }
372
 
 
373
  /**
374
+ * Custom link 3.
375
+ *
376
  * @output HTML
377
+ *
378
+ * @since 0.1.0
379
+ */
380
  function links3() { ?>
381
  <a class="help" href="http://cf7skins.com/" title="Click a link to learn more"><?php _e( '?', CF7SKINS_TEXTDOMAIN ); ?></a>
382
  <?php
383
  }
384
 
385
+ } new CF7_Skins_Admin_Tab();
includes/template-instructions.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * @package cf7skins
6
  * @author Neil Murray
7
- * @version 0.0.2
8
  * @since 0.2.0
9
  */
10
  ?>
4
  *
5
  * @package cf7skins
6
  * @author Neil Murray
7
+ *
8
  * @since 0.2.0
9
  */
10
  ?>
includes/template.php CHANGED
@@ -1,79 +1,79 @@
1
  <?php
2
  /**
3
- * CF7 Skins Template Class
4
  *
5
  * @package cf7skins
6
  * @author Neil Murray
7
- * @since 0.0.1
 
8
  */
9
 
10
-
11
  class CF7_Skin_Template extends CF7_Skin {
12
-
13
  /**
14
- * Class constructor
15
  *
16
- * @since 0.0.1
17
- */
18
- function __construct() {
19
  parent::__construct(); // Run parent class
20
  add_action( 'wp_ajax_load_template', array( &$this, 'load_template' ) );
21
- }
22
-
23
 
24
  /**
25
- * Load selected template and translate.
 
 
26
  *
27
- * @uses wpcf7_load_textdomain
28
- * @since 0.0.1
29
- */
30
  function load_template() {
31
  // Check the nonce and if not valid, just die.
32
- if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'cf7s' ) )
33
  die();
34
-
35
  // Get translation if locale is set and exists in the Contact Form 7 l10n
36
  if( isset( $_POST['locale'] )
37
  && ! empty( $_POST['locale'] )
38
- && array_key_exists( $_POST['locale'], wpcf7_l10n() ) )
39
  wpcf7_load_textdomain( $_POST['locale'] );
40
-
41
  // Get translation based on post ID
42
  if( isset( $_POST['post'] ) && ! empty( $_POST['post'] ) ) {
43
- $wpcf7 = wpcf7_contact_form( (int) $_POST['post'] ); // current CF7 form
44
  wpcf7_load_textdomain( $wpcf7->locale );
45
  }
46
 
47
  // Load selected template file
48
- $templates = $this->cf7s_get_template_list();
49
  $template = $templates[$_POST['template']];
50
  require_once( $template['path'] . trailingslashit( $template['dir'] ) . $template['index'] );
51
  exit();
52
- }
53
-
54
 
55
  /**
56
- * Get list of templates - sorted alphabetically [a-z]
57
  *
58
  * @filter cf7skins_templates
59
  * @return (array) array of templates
60
- * @since 0.0.1
61
- */
 
62
  public static function cf7s_get_template_list() {
63
  $templates = self::read_templates( CF7SKINS_TEMPLATES_PATH, CF7SKINS_TEMPLATES_URL );
64
- $templates = apply_filters( 'cf7skins_templates', $templates ); // add filter for other plugins
65
- ksort( $templates ); // sort by array keys
66
- return $templates;
67
- }
68
-
69
 
70
  /**
71
- * Get list of templates from the templates directory
72
  *
73
  * @param $path current plugin templates directory path
74
  * @param $url current plugin templates directory url
75
  * @return (array) arrays of template information
76
- * @since 0.0.1
 
77
  */
78
  public static function read_templates( $path, $url ) {
79
 
@@ -82,11 +82,14 @@ class CF7_Skin_Template extends CF7_Skin {
82
  if ( $handle = opendir( $path ) ) {
83
 
84
  // Uses WP file system for reading description.txt and instruction.txt
85
- if( is_admin() ) WP_Filesystem();
 
 
86
  global $wp_filesystem;
87
 
88
- while (false !== ( $entry = readdir( $handle ) ) )
89
- if ( $entry != '.' && $entry != '..' ) {
 
90
 
91
  // Add default instructions
92
  ob_start();
@@ -115,15 +118,15 @@ class CF7_Skin_Template extends CF7_Skin {
115
  $files = scandir( $path . $entry );
116
  $templates[$entry]['dir'] = $entry;
117
  $templates[$entry]['path'] = $path;
118
- $templates[$entry]['url'] = $url;
119
  foreach( $files as $file ) {
120
  if ( $file != '.' && $file != '..' ) {
121
  $templates[$entry]['files'][] = $file;
122
  $file_path = $path . trailingslashit($entry) . $file;
123
  $file_data = get_file_data( $file_path, $default_headers );
124
 
125
- // Load description from description.txt if is existed.
126
- // Inline description will be overwrited if description.txt if is existed.
127
  $description_file = $path . trailingslashit($entry) . 'description.txt';
128
  if ( is_admin() && $wp_filesystem->is_file( $description_file ) ) {
129
  $_description = $wp_filesystem->get_contents( $description_file );
@@ -133,8 +136,8 @@ class CF7_Skin_Template extends CF7_Skin {
133
  // Use default instruction if there is no instruction
134
  $file_data['Instructions'] = $file_data['Instructions'] ? $file_data['Instructions'] : $instructions;
135
 
136
- // Load instruction from instruction.txt if is existed
137
- // Inline or default description will be overwrited if description.txt if is existed.
138
  $instructions_file = $path . trailingslashit($entry) . 'instruction.txt';
139
  if ( is_admin() && $wp_filesystem->is_file( $instructions_file ) ) {
140
  $_instructions = $wp_filesystem->get_contents( $instructions_file );
@@ -150,23 +153,24 @@ class CF7_Skin_Template extends CF7_Skin {
150
 
151
  $templates[$entry]['tags'] = array_map('trim', explode( ',', $templates[$entry]['details']['Tags'] ) );
152
  }
153
-
154
  closedir( $handle );
155
  }
156
 
157
  return $templates;
158
- }
159
-
160
 
161
  /**
162
- * Returns a list of template filter tags // move to template-feature.php?
163
  *
164
  * Uses the same method as get_theme_feature_list() function
165
  * @see http://codex.wordpress.org/Function_Reference/get_theme_feature_list
 
166
  * @filter template_filter_tags
167
  * @return (array)
 
168
  * @since 0.1.0
169
- */
170
  function filter_tags() {
171
  $filter_tags = array(
172
 
@@ -197,14 +201,14 @@ class CF7_Skin_Template extends CF7_Skin {
197
  return apply_filters( 'template_filter_tags', $filter_tags );
198
  }
199
 
200
-
201
  /**
202
- * Output template filter tags for backend // move to template-filter.php?
203
  *
204
  * @compat WP3.9
205
  * @output (HTML)
206
- * @since 0.0.1
207
- */
 
208
  function cf7s_show_template_list_39() {
209
  $val = get_post_meta( $this->get_id(), 'cf7s_template', true ); // Get current post selected template
210
  ?>
@@ -216,8 +220,6 @@ class CF7_Skin_Template extends CF7_Skin {
216
  <a class="theme-section skin-sort balloon" title="<?php _e( 'Recently added', $this->textdomain ); ?>" href="#" data-sort="new"><?php _e('Latest', $this->textdomain); ?></a>
217
 
218
  <div class="theme-top-filters">
219
- <!-- <span class="theme-filter" data-filter="photoblogging">Photography</span>
220
- <span class="theme-filter" data-filter="responsive-layout">Responsive</span> -->
221
  <?php if( CF7SKINS_FEATURE_FILTER ) : ?>
222
  <a class="more-filters balloon" title="<?php _e( 'Narrow your choices based on your specific requirements', $this->textdomain ); ?>" href="#"><?php _e('Feature Filter', $this->textdomain); ?></a>
223
  <?php endif; ?>
@@ -227,6 +229,7 @@ class CF7_Skin_Template extends CF7_Skin {
227
  <a class="apply-filters button button-secondary" href="#"><?php _e('Apply Filters', $this->textdomain); ?><span></span></a>
228
  <a class="clear-filters button button-secondary" href="#"><?php _e('Clear', $this->textdomain); ?></a>
229
  <br class="clear">
 
230
  <?php
231
  $feature_list = $this->filter_tags();
232
 
@@ -273,20 +276,20 @@ class CF7_Skin_Template extends CF7_Skin {
273
  </div>
274
 
275
  <div class="skin-details clearfix hidden">
276
- <?php foreach( $this->cf7s_get_template_list() as $template )
277
  $this->cf7s_details_view( $template ); ?>
278
  </div>
279
  <input type="hidden" value="<?php echo $val; ?>" name="cf7s-template" id="cf7s-template" />
280
  <?php
281
- }
282
-
283
-
284
  /**
285
- * Output template filter tags for backend // move to template-filter.php?
286
  *
287
  * @output (HTML)
288
- * @since 0.0.1
289
- */
 
290
  function cf7s_show_template_list() {
291
  $val = get_post_meta( $this->get_id(), 'cf7s_template', true ); // Get current post selected template
292
  ?>
@@ -307,14 +310,14 @@ class CF7_Skin_Template extends CF7_Skin {
307
  <div class="search-form">
308
  <label class="screen-reader-text" for="theme-search-input"><?php _e('Search Templates', $this->textdomain); ?></label>
309
  <input type="search" class="theme-search skins-search" id="theme-search-input" placeholder="<?php _e('Search templates...', $this->textdomain); ?>" />
310
- </div>
311
 
312
  <div class="filter-drawer">
313
  <div class="buttons">
314
  <a class="apply-filters button button-secondary" href="#"><?php _e('Apply Filters', $this->textdomain); ?><span></span></a>
315
  <a class="clear-filters button button-secondary" href="#"><?php _e('Clear', $this->textdomain); ?></a>
316
  </div>
317
-
318
  <?php
319
  $feature_list = $this->filter_tags();
320
  foreach ( $feature_list as $feature_name => $features ) {
@@ -337,6 +340,7 @@ class CF7_Skin_Template extends CF7_Skin {
337
  <a href="#"><?php _e('Edit', $this->textdomain); ?></a>
338
  </div>
339
  </div>
 
340
  <div class="skins-sort">
341
  <label class="balloon" title="<?php _e( 'Sort by Name, Date and License (free or pro) – use arrow to reverse sort order', $this->textdomain ); ?>" for="skins-sort"><?php _e('Sort by', $this->textdomain); ?></label>
342
  <select class="balloon sort-by" name="sort-by" title="" autocomplete="off">
@@ -345,8 +349,8 @@ class CF7_Skin_Template extends CF7_Skin {
345
  <option value="license"><?php _e( 'License', $this->textdomain ); ?></option>
346
  </select>
347
  <a href="javascript:void(0)" class="dashicons dashicons-arrow-down-alt"></a>
348
- </div>
349
- </div>
350
 
351
  <div class="skin-list clearfix">
352
  <span class="spinner"></span>
@@ -359,27 +363,27 @@ class CF7_Skin_Template extends CF7_Skin {
359
 
360
  <input type="hidden" value="<?php echo $val; ?>" name="cf7s-template" id="cf7s-template" />
361
  <?php
362
- }
363
-
364
-
365
  /**
366
- * Output each template in the template tab
367
  *
368
  * @deprecated cf7s_show_template_inlist
369
  * @param $templates (array) of all the templates
370
  * @output (HTML)
 
371
  * @since 0.1.0
372
- */
373
  function templates_list( $templates = array() ) {
374
  if( ! $templates )
375
  $templates = $this->cf7s_get_template_list();
376
  //print_r( $templates );
377
 
378
  // Get the current contact form ID, check if request comes from AJAX
379
- $id = isset( $_POST['id'] ) ? $_POST['id'] : $this->get_id();
380
 
381
  foreach( $templates as $key => $template ) {
382
- $class = $template['dir'] == get_post_meta( $id, 'cf7s_template', true ) ? ' selected' : '';
383
  $select_text = $template['dir'] == get_post_meta( $id, 'cf7s_template', true ) ? __('Selected', $this->textdomain ) : __('Select', $this->textdomain );
384
  $locale = isset( $_GET['locale'] ) ? $_GET['locale'] : '';
385
  $post = isset( $_GET['post'] ) ? (int) $_GET['post'] : '';
@@ -388,9 +392,9 @@ class CF7_Skin_Template extends CF7_Skin {
388
  $date = mysql2date( 'U', $template['details']['Version Date'] );
389
 
390
  // Check if skin is free or pro version
391
- $license = 'free';
392
  if ( defined( 'CF7SKINSPRO_PATH' ) )
393
- $license = strpos( $template['path'], CF7SKINSPRO_PATH ) !== false ? 'pro' : $license;
394
  ?>
395
  <div class="<?php echo $skin_class; ?>" data-name="<?php echo $key; ?>" data-date="<?php echo $date; ?>" data-license="<?php echo $license; ?>">
396
  <div class="wrapper">
@@ -403,32 +407,32 @@ class CF7_Skin_Template extends CF7_Skin {
403
  <ul class="clearfix skin-action">
404
  <li><a class="select<?php echo $class; ?> balloon" title="<?php _e( 'Select to apply the Template to your form - appears in the form editing area, where you can edit your requirements.',$this->textdomain ); ?>" data-post="<?php echo $post; ?>" data-locale="<?php echo $locale; ?>" data-value="<?php $this->get_slug_name( $template ); ?>" href="#cf7s-template"><?php echo $select_text; ?></a></li>
405
  <li><a class="detail balloon" title="<?php _e( 'Show detailed information about this Template, with layout, description and usage details.' ,$this->textdomain ); ?>" href="#tpl-<?php $this->get_slug_name( $template ); ?>-detail"><?php _e('Details', $this->textdomain ); ?></a></li>
406
- </ul>
407
- </div>
408
  </div>
409
  <?php
410
  }
411
- }
412
-
413
 
414
- /**
415
- * Output expanded and details view of selected template
416
- *
417
  * @TODO Display in pop-over window
418
  * @param $template current processed template
419
  * @output (HTML)
420
- * @since 0.0.1
421
- */
 
422
  function cf7s_details_view( $template ) {
423
 
424
- $class = $template['dir'] == get_post_meta( $this->get_id(), 'cf7s_template', true ) ? ' selected' : ''; // set link class
425
  $select_text = $template['dir'] == get_post_meta( $this->get_id(), 'cf7s_template', true ) ? __('Selected', $this->textdomain) : __('Select', $this->textdomain);
426
  ?>
427
  <div id="tpl-<?php $this->get_slug_name( $template ); ?>-detail" class="details hidden">
428
  <div class="details-view">
429
  <div class="block-thumbnail">
430
  <img src="<?php echo $template['url'] . $template['dir'] . '/thumbnail.png'; ?>" />
431
- </div>
432
  <div class="block-details"><div>
433
  <ul class="clearfix skin-action">
434
  <li><a class="balloon view" data-value="<?php $this->get_slug_name( $template ); ?>" href="#cf7s-template" title="<?php _e( 'Use Expanded View to view Template features - shows layout, description & usage details.', $this->textdomain ); ?>"><?php _e('Expanded View', $this->textdomain ); ?></a></li>
@@ -445,6 +449,7 @@ class CF7_Skin_Template extends CF7_Skin {
445
  <p class="description"><?php echo $template['details']['Instructions']; ?></p>
446
  </div></div>
447
  </div>
 
448
  <div class="expanded-view">
449
  <ul class="clearfix skin-action">
450
  <li><a class="balloon view" data-value="<?php $this->get_slug_name( $template ); ?>" href="#cf7s-template" title="<?php _e( 'Return to Details View', $this->textdomain ); ?>"><?php _e('Details View', $this->textdomain ); ?></a></li>
@@ -461,10 +466,10 @@ class CF7_Skin_Template extends CF7_Skin {
461
  <p class="description"><?php echo $template['details']['Description']; ?></p>
462
 
463
  <h4><strong><?php _e('Instructions', $this->textdomain ); ?></strong></h4>
464
- <p class="description"><?php echo $template['details']['Instructions']; ?></p>
465
  </div>
466
  </div>
467
  <?php
468
- }
469
 
470
  } // End class
1
  <?php
2
  /**
3
+ * CF7 Skins Template Class.
4
  *
5
  * @package cf7skins
6
  * @author Neil Murray
7
+ *
8
+ * @since 0.1.0
9
  */
10
 
 
11
  class CF7_Skin_Template extends CF7_Skin {
12
+
13
  /**
14
+ * Class constructor
15
  *
16
+ * @since 0.1.0
17
+ */
18
+ function __construct() {
19
  parent::__construct(); // Run parent class
20
  add_action( 'wp_ajax_load_template', array( &$this, 'load_template' ) );
21
+ }
 
22
 
23
  /**
24
+ * Load selected template and translate.
25
+ *
26
+ * @uses wpcf7_load_textdomain
27
  *
28
+ * @since 0.1.0
29
+ */
 
30
  function load_template() {
31
  // Check the nonce and if not valid, just die.
32
+ if ( ! isset( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'cf7s' ) ) {
33
  die();
34
+ }
35
  // Get translation if locale is set and exists in the Contact Form 7 l10n
36
  if( isset( $_POST['locale'] )
37
  && ! empty( $_POST['locale'] )
38
+ && array_key_exists( $_POST['locale'], wpcf7_l10n() ) ) {
39
  wpcf7_load_textdomain( $_POST['locale'] );
40
+ }
41
  // Get translation based on post ID
42
  if( isset( $_POST['post'] ) && ! empty( $_POST['post'] ) ) {
43
+ $wpcf7 = wpcf7_contact_form( (int) $_POST['post'] ); // current CF7 form
44
  wpcf7_load_textdomain( $wpcf7->locale );
45
  }
46
 
47
  // Load selected template file
48
+ $templates = $this->cf7s_get_template_list();
49
  $template = $templates[$_POST['template']];
50
  require_once( $template['path'] . trailingslashit( $template['dir'] ) . $template['index'] );
51
  exit();
52
+ }
 
53
 
54
  /**
55
+ * Get list of templates - sorted alphabetically [a-z].
56
  *
57
  * @filter cf7skins_templates
58
  * @return (array) array of templates
59
+
60
+ * @since 0.1.0
61
+ */
62
  public static function cf7s_get_template_list() {
63
  $templates = self::read_templates( CF7SKINS_TEMPLATES_PATH, CF7SKINS_TEMPLATES_URL );
64
+ $templates = apply_filters( 'cf7skins_templates', $templates ); // add filter for other plugins
65
+ ksort( $templates ); // sort by array keys
66
+ return $templates;
67
+ }
 
68
 
69
  /**
70
+ * Get list of templates from the templates directory.
71
  *
72
  * @param $path current plugin templates directory path
73
  * @param $url current plugin templates directory url
74
  * @return (array) arrays of template information
75
+ *
76
+ * @since 0.1.0
77
  */
78
  public static function read_templates( $path, $url ) {
79
 
82
  if ( $handle = opendir( $path ) ) {
83
 
84
  // Uses WP file system for reading description.txt and instruction.txt
85
+ if( is_admin() ) {
86
+ WP_Filesystem();
87
+ }
88
  global $wp_filesystem;
89
 
90
+ while (false !== ( $entry = readdir( $handle ) ) ) {
91
+
92
+ if ( $entry != '.' && $entry != '..' ) {
93
 
94
  // Add default instructions
95
  ob_start();
118
  $files = scandir( $path . $entry );
119
  $templates[$entry]['dir'] = $entry;
120
  $templates[$entry]['path'] = $path;
121
+ $templates[$entry]['url'] = $url;
122
  foreach( $files as $file ) {
123
  if ( $file != '.' && $file != '..' ) {
124
  $templates[$entry]['files'][] = $file;
125
  $file_path = $path . trailingslashit($entry) . $file;
126
  $file_data = get_file_data( $file_path, $default_headers );
127
 
128
+ // Load description from description.txt if it exists
129
+ // Inline description will be overwrited if description.txt if it exists
130
  $description_file = $path . trailingslashit($entry) . 'description.txt';
131
  if ( is_admin() && $wp_filesystem->is_file( $description_file ) ) {
132
  $_description = $wp_filesystem->get_contents( $description_file );
136
  // Use default instruction if there is no instruction
137
  $file_data['Instructions'] = $file_data['Instructions'] ? $file_data['Instructions'] : $instructions;
138
 
139
+ // Load instruction from instruction.txt if it exists
140
+ // Inline or default description will be overwrited if description.txt if it exists
141
  $instructions_file = $path . trailingslashit($entry) . 'instruction.txt';
142
  if ( is_admin() && $wp_filesystem->is_file( $instructions_file ) ) {
143
  $_instructions = $wp_filesystem->get_contents( $instructions_file );
153
 
154
  $templates[$entry]['tags'] = array_map('trim', explode( ',', $templates[$entry]['details']['Tags'] ) );
155
  }
156
+ }
157
  closedir( $handle );
158
  }
159
 
160
  return $templates;
161
+ }
 
162
 
163
  /**
164
+ * Returns a list of template filter tags. // NRM - move to template-feature.php
165
  *
166
  * Uses the same method as get_theme_feature_list() function
167
  * @see http://codex.wordpress.org/Function_Reference/get_theme_feature_list
168
+ *
169
  * @filter template_filter_tags
170
  * @return (array)
171
+ *
172
  * @since 0.1.0
173
+ */
174
  function filter_tags() {
175
  $filter_tags = array(
176
 
201
  return apply_filters( 'template_filter_tags', $filter_tags );
202
  }
203
 
 
204
  /**
205
+ * Output template filter tags for backend // NRM - move to template-filter.php
206
  *
207
  * @compat WP3.9
208
  * @output (HTML)
209
+ *
210
+ * @since 0.1.0
211
+ */
212
  function cf7s_show_template_list_39() {
213
  $val = get_post_meta( $this->get_id(), 'cf7s_template', true ); // Get current post selected template
214
  ?>
220
  <a class="theme-section skin-sort balloon" title="<?php _e( 'Recently added', $this->textdomain ); ?>" href="#" data-sort="new"><?php _e('Latest', $this->textdomain); ?></a>
221
 
222
  <div class="theme-top-filters">
 
 
223
  <?php if( CF7SKINS_FEATURE_FILTER ) : ?>
224
  <a class="more-filters balloon" title="<?php _e( 'Narrow your choices based on your specific requirements', $this->textdomain ); ?>" href="#"><?php _e('Feature Filter', $this->textdomain); ?></a>
225
  <?php endif; ?>
229
  <a class="apply-filters button button-secondary" href="#"><?php _e('Apply Filters', $this->textdomain); ?><span></span></a>
230
  <a class="clear-filters button button-secondary" href="#"><?php _e('Clear', $this->textdomain); ?></a>
231
  <br class="clear">
232
+
233
  <?php
234
  $feature_list = $this->filter_tags();
235
 
276
  </div>
277
 
278
  <div class="skin-details clearfix hidden">
279
+ <?php foreach( $this->cf7s_get_template_list() as $template )
280
  $this->cf7s_details_view( $template ); ?>
281
  </div>
282
  <input type="hidden" value="<?php echo $val; ?>" name="cf7s-template" id="cf7s-template" />
283
  <?php
284
+ }
285
+
 
286
  /**
287
+ * Output template filter tags for backend. // NRM - move to template-filter.php?
288
  *
289
  * @output (HTML)
290
+ *
291
+ * @since 0.1.0
292
+ */
293
  function cf7s_show_template_list() {
294
  $val = get_post_meta( $this->get_id(), 'cf7s_template', true ); // Get current post selected template
295
  ?>
310
  <div class="search-form">
311
  <label class="screen-reader-text" for="theme-search-input"><?php _e('Search Templates', $this->textdomain); ?></label>
312
  <input type="search" class="theme-search skins-search" id="theme-search-input" placeholder="<?php _e('Search templates...', $this->textdomain); ?>" />
313
+ </div>
314
 
315
  <div class="filter-drawer">
316
  <div class="buttons">
317
  <a class="apply-filters button button-secondary" href="#"><?php _e('Apply Filters', $this->textdomain); ?><span></span></a>
318
  <a class="clear-filters button button-secondary" href="#"><?php _e('Clear', $this->textdomain); ?></a>
319
  </div>
320
+
321
  <?php
322
  $feature_list = $this->filter_tags();
323
  foreach ( $feature_list as $feature_name => $features ) {
340
  <a href="#"><?php _e('Edit', $this->textdomain); ?></a>
341
  </div>
342
  </div>
343
+
344
  <div class="skins-sort">
345
  <label class="balloon" title="<?php _e( 'Sort by Name, Date and License (free or pro) – use arrow to reverse sort order', $this->textdomain ); ?>" for="skins-sort"><?php _e('Sort by', $this->textdomain); ?></label>
346
  <select class="balloon sort-by" name="sort-by" title="" autocomplete="off">
349
  <option value="license"><?php _e( 'License', $this->textdomain ); ?></option>
350
  </select>
351
  <a href="javascript:void(0)" class="dashicons dashicons-arrow-down-alt"></a>
352
+ </div>
353
+ </div>
354
 
355
  <div class="skin-list clearfix">
356
  <span class="spinner"></span>
363
 
364
  <input type="hidden" value="<?php echo $val; ?>" name="cf7s-template" id="cf7s-template" />
365
  <?php
366
+ }
367
+
 
368
  /**
369
+ * Output each template in the template tab.
370
  *
371
  * @deprecated cf7s_show_template_inlist
372
  * @param $templates (array) of all the templates
373
  * @output (HTML)
374
+ *
375
  * @since 0.1.0
376
+ */
377
  function templates_list( $templates = array() ) {
378
  if( ! $templates )
379
  $templates = $this->cf7s_get_template_list();
380
  //print_r( $templates );
381
 
382
  // Get the current contact form ID, check if request comes from AJAX
383
+ $id = isset( $_POST['id'] ) ? $_POST['id'] : $this->get_id();
384
 
385
  foreach( $templates as $key => $template ) {
386
+ $class = $template['dir'] == get_post_meta( $id, 'cf7s_template', true ) ? ' selected' : '';
387
  $select_text = $template['dir'] == get_post_meta( $id, 'cf7s_template', true ) ? __('Selected', $this->textdomain ) : __('Select', $this->textdomain );
388
  $locale = isset( $_GET['locale'] ) ? $_GET['locale'] : '';
389
  $post = isset( $_GET['post'] ) ? (int) $_GET['post'] : '';
392
  $date = mysql2date( 'U', $template['details']['Version Date'] );
393
 
394
  // Check if skin is free or pro version
395
+ $license = 'free';
396
  if ( defined( 'CF7SKINSPRO_PATH' ) )
397
+ $license = strpos( $template['path'], CF7SKINSPRO_PATH ) !== false ? 'pro' : $license;
398
  ?>
399
  <div class="<?php echo $skin_class; ?>" data-name="<?php echo $key; ?>" data-date="<?php echo $date; ?>" data-license="<?php echo $license; ?>">
400
  <div class="wrapper">
407
  <ul class="clearfix skin-action">
408
  <li><a class="select<?php echo $class; ?> balloon" title="<?php _e( 'Select to apply the Template to your form - appears in the form editing area, where you can edit your requirements.',$this->textdomain ); ?>" data-post="<?php echo $post; ?>" data-locale="<?php echo $locale; ?>" data-value="<?php $this->get_slug_name( $template ); ?>" href="#cf7s-template"><?php echo $select_text; ?></a></li>
409
  <li><a class="detail balloon" title="<?php _e( 'Show detailed information about this Template, with layout, description and usage details.' ,$this->textdomain ); ?>" href="#tpl-<?php $this->get_slug_name( $template ); ?>-detail"><?php _e('Details', $this->textdomain ); ?></a></li>
410
+ </ul>
411
+ </div>
412
  </div>
413
  <?php
414
  }
415
+ }
 
416
 
417
+ /**
418
+ * Output expanded and details view of selected template.
419
+ *
420
  * @TODO Display in pop-over window
421
  * @param $template current processed template
422
  * @output (HTML)
423
+ *
424
+ * @since 0.1.0
425
+ */
426
  function cf7s_details_view( $template ) {
427
 
428
+ $class = $template['dir'] == get_post_meta( $this->get_id(), 'cf7s_template', true ) ? ' selected' : ''; // set link class
429
  $select_text = $template['dir'] == get_post_meta( $this->get_id(), 'cf7s_template', true ) ? __('Selected', $this->textdomain) : __('Select', $this->textdomain);
430
  ?>
431
  <div id="tpl-<?php $this->get_slug_name( $template ); ?>-detail" class="details hidden">
432
  <div class="details-view">
433
  <div class="block-thumbnail">
434
  <img src="<?php echo $template['url'] . $template['dir'] . '/thumbnail.png'; ?>" />
435
+ </div>
436
  <div class="block-details"><div>
437
  <ul class="clearfix skin-action">
438
  <li><a class="balloon view" data-value="<?php $this->get_slug_name( $template ); ?>" href="#cf7s-template" title="<?php _e( 'Use Expanded View to view Template features - shows layout, description & usage details.', $this->textdomain ); ?>"><?php _e('Expanded View', $this->textdomain ); ?></a></li>
449
  <p class="description"><?php echo $template['details']['Instructions']; ?></p>
450
  </div></div>
451
  </div>
452
+
453
  <div class="expanded-view">
454
  <ul class="clearfix skin-action">
455
  <li><a class="balloon view" data-value="<?php $this->get_slug_name( $template ); ?>" href="#cf7s-template" title="<?php _e( 'Return to Details View', $this->textdomain ); ?>"><?php _e('Details View', $this->textdomain ); ?></a></li>
466
  <p class="description"><?php echo $template['details']['Description']; ?></p>
467
 
468
  <h4><strong><?php _e('Instructions', $this->textdomain ); ?></strong></h4>
469
+ <p class="description"><?php echo $template['details']['Instructions']; ?></p>
470
  </div>
471
  </div>
472
  <?php
473
+ }
474
 
475
  } // End class
index.php CHANGED
@@ -2,50 +2,36 @@
2
  /**
3
  * Plugin Name: Contact Form 7 Skins
4
  * Plugin URI: http://cf7skins.com
5
- * Description: Adds Skins including Templates & Styles to Contact Form 7. Requires Contact Form 7.
6
- * Version: 1.2.2
7
  * Author: Neil Murray
8
  * Author URI: http://cf7skins.com
9
  * License: GPL-2.0+
10
  * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
11
  * Text Domain: contact-form-7-skins
12
- * Domain Path: languages
13
- *
14
- * Contact Form 7 Skins is free software: you can redistribute it and/or modify
15
- * it under the terms of the GNU General Public License as published by
16
- * the Free Software Foundation, either version 2 of the License, or
17
- * any later version.
18
- *
19
- * Contact Form 7 Skins is distributed in the hope that it will be useful,
20
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
21
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
- * GNU General Public License for more details.
23
- *
24
- * You should have received a copy of the GNU General Public License
25
- * along with Contact Form 7 Skins. If not, see <http://www.gnu.org/licenses/>.
26
  *
27
  * @package cf7skins
28
  * @author Neil Murray
29
- * @copyright Copyright (c) 2014, Neil Murray
30
  */
31
 
32
-
33
  /**
34
- * Exit if accessed directly
35
  *
36
- * @since 0.0.1
37
  */
38
- if ( ! defined( 'ABSPATH' ) )
39
  exit;
40
-
41
 
42
  /**
43
- * Define global constants
44
  *
45
- * @since 0.0.1
46
  */
47
- define( 'CF7SKINS_VERSION', '1.2.2' );
48
- define( 'CF7SKINS_OPTIONS', 'cf7skins' );
49
  define( 'CF7SKINS_TEXTDOMAIN', 'contact-form-7-skins' );
50
  define( 'CF7SKINS_FEATURE_FILTER', false ); // @since 0.4.0
51
  define( 'CF7SKINS_PATH', plugin_dir_path( __FILE__ ) );
@@ -56,79 +42,78 @@ define( 'CF7SKINS_TEMPLATES_PATH', CF7SKINS_PATH . 'skins/templates/' );
56
  define( 'CF7SKINS_TEMPLATES_URL', CF7SKINS_URL . 'skins/templates/' );
57
  define( 'CF7SKINS_UPDATE_URL', 'http://cf7skins.com' ); // @since 0.7.0
58
 
59
-
60
  /**
61
- * WP Options & Metas
62
- *
63
- * @since 1.1.2
64
  *
65
  * Options (stored at wp_options table):
66
- * 'cf7skins' - (array) store all settings page fields. Uses CF7SKINS_OPTIONS variable name.
67
- * 'cf7skins_version_installed' - (string) hold current installed version,
68
- * 'cf7skins_activated' - (bool) option for checking if plugin is activated by user
69
- * 'cf7skins_get_version' - (array) plugins version data from remote site using EDD plugin updater
70
- * 'cf7skins_activation' - (array) plugins activation data from remote site using EDD plugin updater
71
- * 'cf7skins_deactivation' - (array) plugins activation data from remote site using EDD plugin updater
72
- * 'cf7skins_license_status' - (string) plugin license activation status
73
- *
74
  * Metas (stored at wp_postmeta table):
75
  * 'cf7s_template' - (string) selected skins template
76
  * 'cf7s_style' - (string) selected skins style
77
  * 'cf7s_postbox' - (string) store expand/collapse state for skins metabox
78
  *
79
  * NOTE: All options are deleted in uninstall.php if is enabled from settings page
 
 
80
  */
81
-
82
 
83
  /**
84
- * Plugin actions
85
  *
86
- * @since 0.0.1
87
  */
88
  register_activation_hook( __FILE__, 'cf7skins_activation_hook' );
89
  add_action( 'admin_init', 'cf7skins_on_activation' );
90
  add_action( 'upgrader_process_complete', 'cf7skins_upgrader_process_complete', 1, 2 );
91
  add_action( 'plugins_loaded', 'cf7skins_plugin_loaded', 1 );
92
 
93
-
94
  /**
95
- * Create option for further action after plugin was activated
96
  *
97
  * @since 0.2.0
98
  */
99
- function cf7skins_activation_hook() {
100
- add_option( 'cf7skins_activated', true );
101
  }
102
 
103
-
104
  /**
105
- * Activation checks
106
  *
107
  * @since 0.2.0
108
  */
109
  function cf7skins_on_activation() {
110
 
111
  // Check if Contact Form 7 is installed
112
- if( ! defined( 'WPCF7_VERSION' ) )
113
  return;
 
114
 
115
  // Return if activation option does not exist after plugin was activated
116
- if( ! get_option( 'cf7skins_activated' ) )
117
- return;
 
118
 
119
  // Add plugin version to the database for further upgrade checking
120
  // @since 0.6.1
121
- update_option( 'cf7skins_version_installed', CF7SKINS_VERSION );
122
 
123
- if ( current_user_can( 'activate_plugins' ) && is_admin() )
124
  delete_option( 'cf7skins_activated' ); // delete activation checker, need no more redirects
 
125
  }
126
 
127
-
128
  /**
129
- * Upgrade plugin version number after upgrading
 
 
130
  *
131
- * See https://github.com/WordPress/WordPress/blob/master/wp-admin/includes/class-wp-upgrader.php#L615
132
  * @param $instance WP upgrader class object
133
  * @param (array) $args Example:
134
  * Single update: array (
@@ -145,27 +130,31 @@ function cf7skins_on_activation() {
145
  * [1] => contact-form-7-skins/index.php
146
  * )
147
  * )
 
148
  * @since 0.6.1
149
  */
150
  function cf7skins_upgrader_process_complete( $instance, $args ) {
151
 
152
  // Bail early if this is not plugin update process
153
- if( 'update' != $args['action'] || 'plugin' != $args['type'] )
154
  return;
 
155
 
156
  // Do version update if this is a single update and the plugin file is $args['plugin']
157
- if ( ! isset( $args['bulk'] ) && plugin_basename( __FILE__ ) == $args['plugin'] )
158
  add_option( 'cf7skins_activated', true );
 
159
 
160
  // Do version update if this is a bulk update and the plugin file is in the $args['plugins']
161
- if ( isset( $args['bulk'] ) && in_array( plugin_basename( __FILE__ ), $args['plugins'] ) )
162
  add_option( 'cf7skins_activated', true );
 
163
  }
164
 
165
-
166
  /**
167
- * Initialize the plugin
168
- * @since 0.0.1
 
169
  */
170
  function cf7skins_plugin_loaded() {
171
 
@@ -173,50 +162,54 @@ function cf7skins_plugin_loaded() {
173
  load_plugin_textdomain( CF7SKINS_TEXTDOMAIN, false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
174
 
175
  // Check if CF7 is installed
176
- if( defined( 'WPCF7_VERSION' ) ) {
177
 
178
  require_once( CF7SKINS_PATH . 'includes/skin.php' );
179
  require_once( CF7SKINS_PATH . 'includes/template.php' );
180
  require_once( CF7SKINS_PATH . 'includes/style.php' );
181
- require_once( CF7SKINS_PATH . 'includes/cf7-connect.php' );
182
 
183
- // Load required files only for admin/backend
184
- if( is_admin() ) {
185
  require_once( CF7SKINS_PATH . 'includes/admin.php' );
 
186
  require_once( CF7SKINS_PATH . 'includes/license.php' );
187
- require_once( CF7SKINS_PATH . 'includes/tab.php' );
188
  require_once( CF7SKINS_PATH . 'includes/settings.php' );
 
189
 
190
  cf7s_fs(); // init Freemius
191
  do_action( 'cf7s_fs_loaded' ); // signal that SDK was initiated.
 
 
192
  }
193
 
194
- if( ! class_exists( 'EDD_SL_Plugin_Updater' ) )
195
  require_once( CF7SKINS_PATH . 'includes/EDD_SL_Plugin_Updater.php' );
 
196
 
197
  // Display admin notifications
198
  } else {
199
  add_action( 'admin_notices', 'cf7skins_require_admin_message' );
200
- }
201
  }
202
 
203
-
204
  /**
205
- * Display admin notifications if Contact Form 7 is not installed
206
- * @since 0.0.1
 
207
  */
208
  function cf7skins_require_admin_message() {
209
- if ( current_user_can( 'manage_options' ) ) {
210
 
211
  $message = '';
212
 
213
- if ( ! defined( 'WPCF7_VERSION' ) )
214
- $message = sprintf( __( '<a href="%s">Contact Form 7</a> must be installed to use this plugin.' , CF7SKINS_TEXTDOMAIN ), 'https://wordpress.org/plugins/contact-form-7/' );
215
-
216
  echo "<div id='cf7skins-message' class='notice notice-warning'>
217
  <p><strong>Contact Form 7 Skins</strong><br />$message</p>
218
  </div>";
219
- }
220
  }
221
 
222
  /**
@@ -241,6 +234,7 @@ function cf7s_fs() {
241
  'has_paid_plans' => false,
242
  'menu' => array(
243
  'slug' => 'cf7skins',
 
244
  'first-path' => 'admin.php?page=cf7skins&tab=getting-started',
245
  'account' => false,
246
  'contact' => false,
@@ -254,3 +248,19 @@ function cf7s_fs() {
254
 
255
  return $cf7s_fs;
256
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  /**
3
  * Plugin Name: Contact Form 7 Skins
4
  * Plugin URI: http://cf7skins.com
5
+ * Description: Adds drag & drop Visual Editor with Templates & Styles to Contact Form 7. Requires Contact Form 7.
6
+ * Version: 2.0
7
  * Author: Neil Murray
8
  * Author URI: http://cf7skins.com
9
  * License: GPL-2.0+
10
  * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
11
  * Text Domain: contact-form-7-skins
12
+ * Domain Path: /languages
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  *
14
  * @package cf7skins
15
  * @author Neil Murray
16
+ * @copyright Copyright (c) 2014-2018 Neil Murray
17
  */
18
 
 
19
  /**
20
+ * Prevent direct access.
21
  *
22
+ * @since 0.1.0
23
  */
24
+ if ( ! defined( 'ABSPATH' ) ) {
25
  exit;
26
+ }
27
 
28
  /**
29
+ * Define global constants.
30
  *
31
+ * @since 0.1.0
32
  */
33
+ define( 'CF7SKINS_VERSION', '2.0' );
34
+ define( 'CF7SKINS_OPTIONS', 'cf7skins' ); // Database option names
35
  define( 'CF7SKINS_TEXTDOMAIN', 'contact-form-7-skins' );
36
  define( 'CF7SKINS_FEATURE_FILTER', false ); // @since 0.4.0
37
  define( 'CF7SKINS_PATH', plugin_dir_path( __FILE__ ) );
42
  define( 'CF7SKINS_TEMPLATES_URL', CF7SKINS_URL . 'skins/templates/' );
43
  define( 'CF7SKINS_UPDATE_URL', 'http://cf7skins.com' ); // @since 0.7.0
44
 
 
45
  /**
46
+ * WP Options & Metas.
 
 
47
  *
48
  * Options (stored at wp_options table):
49
+ * 'cf7skins' (array) store all settings page fields. Uses CF7SKINS_OPTIONS variable name.
50
+ * 'cf7skins_version_installed' (string) hold current installed version
51
+ * 'cf7skins_activated' (bool) option for checking if plugin is activated by user
52
+ * 'cf7skins_get_version' (array) plugins version data from remote site using EDD plugin updater
53
+ * 'cf7skins_activation' (array) plugins activation data from remote site using EDD plugin updater
54
+ * 'cf7skins_deactivation' (array) plugins activation data from remote site using EDD plugin updater
55
+ * 'cf7skins_license_status' (string) plugin license activation status
56
+ *
57
  * Metas (stored at wp_postmeta table):
58
  * 'cf7s_template' - (string) selected skins template
59
  * 'cf7s_style' - (string) selected skins style
60
  * 'cf7s_postbox' - (string) store expand/collapse state for skins metabox
61
  *
62
  * NOTE: All options are deleted in uninstall.php if is enabled from settings page
63
+ *
64
+ * @since 1.1.2
65
  */
 
66
 
67
  /**
68
+ * Plugin initial hooks.
69
  *
70
+ * @since 0.1.0
71
  */
72
  register_activation_hook( __FILE__, 'cf7skins_activation_hook' );
73
  add_action( 'admin_init', 'cf7skins_on_activation' );
74
  add_action( 'upgrader_process_complete', 'cf7skins_upgrader_process_complete', 1, 2 );
75
  add_action( 'plugins_loaded', 'cf7skins_plugin_loaded', 1 );
76
 
 
77
  /**
78
+ * Create option for activation check.
79
  *
80
  * @since 0.2.0
81
  */
82
+ function cf7skins_activation_hook() {
83
+ add_option( 'cf7skins_activated', true );
84
  }
85
 
 
86
  /**
87
+ * Activation checks.
88
  *
89
  * @since 0.2.0
90
  */
91
  function cf7skins_on_activation() {
92
 
93
  // Check if Contact Form 7 is installed
94
+ if ( ! defined( 'WPCF7_VERSION' ) ) {
95
  return;
96
+ }
97
 
98
  // Return if activation option does not exist after plugin was activated
99
+ if ( ! get_option( 'cf7skins_activated' ) ) {
100
+ return;
101
+ }
102
 
103
  // Add plugin version to the database for further upgrade checking
104
  // @since 0.6.1
105
+ update_option( 'cf7skins_version_installed', CF7SKINS_VERSION );
106
 
107
+ if ( current_user_can( 'activate_plugins' ) && is_admin() ) {
108
  delete_option( 'cf7skins_activated' ); // delete activation checker, need no more redirects
109
+ }
110
  }
111
 
 
112
  /**
113
+ * Upgrade plugin version number after upgrading.
114
+ *
115
+ * @see https://github.com/WordPress/WordPress/blob/master/wp-admin/includes/class-wp-upgrader.php#L615
116
  *
 
117
  * @param $instance WP upgrader class object
118
  * @param (array) $args Example:
119
  * Single update: array (
130
  * [1] => contact-form-7-skins/index.php
131
  * )
132
  * )
133
+ *
134
  * @since 0.6.1
135
  */
136
  function cf7skins_upgrader_process_complete( $instance, $args ) {
137
 
138
  // Bail early if this is not plugin update process
139
+ if ( 'update' != $args['action'] || 'plugin' != $args['type'] ) {
140
  return;
141
+ }
142
 
143
  // Do version update if this is a single update and the plugin file is $args['plugin']
144
+ if ( ! isset( $args['bulk'] ) && plugin_basename( __FILE__ ) == $args['plugin'] ) {
145
  add_option( 'cf7skins_activated', true );
146
+ }
147
 
148
  // Do version update if this is a bulk update and the plugin file is in the $args['plugins']
149
+ if ( isset( $args['bulk'] ) && in_array( plugin_basename( __FILE__ ), $args['plugins'] ) ) {
150
  add_option( 'cf7skins_activated', true );
151
+ }
152
  }
153
 
 
154
  /**
155
+ * Initialize the plugin.
156
+ *
157
+ * @since 0.1.0
158
  */
159
  function cf7skins_plugin_loaded() {
160
 
162
  load_plugin_textdomain( CF7SKINS_TEXTDOMAIN, false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
163
 
164
  // Check if CF7 is installed
165
+ if ( defined( 'WPCF7_VERSION' ) ) {
166
 
167
  require_once( CF7SKINS_PATH . 'includes/skin.php' );
168
  require_once( CF7SKINS_PATH . 'includes/template.php' );
169
  require_once( CF7SKINS_PATH . 'includes/style.php' );
170
+ require_once( CF7SKINS_PATH . 'includes/cf7-connect.php' );
171
 
172
+ if ( is_admin() ) {
 
173
  require_once( CF7SKINS_PATH . 'includes/admin.php' );
174
+ require_once( CF7SKINS_PATH . 'includes/admin-visual.php' ); // @since 2.0.0
175
  require_once( CF7SKINS_PATH . 'includes/license.php' );
176
+ require_once( CF7SKINS_PATH . 'includes/tab.php' );
177
  require_once( CF7SKINS_PATH . 'includes/settings.php' );
178
+ require_once( CF7SKINS_PATH . 'includes/admin-notice.php' );
179
 
180
  cf7s_fs(); // init Freemius
181
  do_action( 'cf7s_fs_loaded' ); // signal that SDK was initiated.
182
+ } else {
183
+ require_once( CF7SKINS_PATH . 'includes/front-visual.php' ); // @since 2.0.0
184
  }
185
 
186
+ if ( ! class_exists( 'EDD_SL_Plugin_Updater' ) ) {
187
  require_once( CF7SKINS_PATH . 'includes/EDD_SL_Plugin_Updater.php' );
188
+ }
189
 
190
  // Display admin notifications
191
  } else {
192
  add_action( 'admin_notices', 'cf7skins_require_admin_message' );
193
+ }
194
  }
195
 
 
196
  /**
197
+ * Display admin notifications.
198
+ *
199
+ * @since 0.1.0
200
  */
201
  function cf7skins_require_admin_message() {
202
+ if ( current_user_can( 'manage_options' ) ) {
203
 
204
  $message = '';
205
 
206
+ if ( ! defined( 'WPCF7_VERSION' ) ) {
207
+ $message = sprintf( __( '<a href="%s">Contact Form 7</a> must be installed to use this plugin.' , CF7SKINS_TEXTDOMAIN ), 'https://wordpress.org/plugins/contact-form-7/' ) . '<br />';
208
+ }
209
  echo "<div id='cf7skins-message' class='notice notice-warning'>
210
  <p><strong>Contact Form 7 Skins</strong><br />$message</p>
211
  </div>";
212
+ }
213
  }
214
 
215
  /**
234
  'has_paid_plans' => false,
235
  'menu' => array(
236
  'slug' => 'cf7skins',
237
+ 'override_exact' => true, // always start at getting-started tab @since 2.0.0
238
  'first-path' => 'admin.php?page=cf7skins&tab=getting-started',
239
  'account' => false,
240
  'contact' => false,
248
 
249
  return $cf7s_fs;
250
  }
251
+
252
+ /**
253
+ * Redirect to CF7 Skins Getting Started tab URL
254
+ * Allow & Continue, will remove Freemius content for next activation and shows getting-started content.
255
+ * Skip, will remove Freemius content but will be shown again for next activation
256
+ *
257
+ * @since 2.0
258
+ */
259
+ function cf7s_fs_settings_url() {
260
+ return admin_url( 'admin.php?page=cf7skins&tab=getting-started' );
261
+ }
262
+
263
+ cf7s_fs()->add_filter( 'connect_url', 'cf7s_fs_settings_url' );
264
+ cf7s_fs()->add_filter( 'after_skip_url', 'cf7s_fs_settings_url' );
265
+ cf7s_fs()->add_filter( 'after_connect_url', 'cf7s_fs_settings_url' );
266
+ cf7s_fs()->add_filter( 'after_pending_connect_url', 'cf7s_fs_settings_url' );
js/jquery.admin.js CHANGED
@@ -74,7 +74,7 @@
74
  });
75
 
76
  // Skin ordering for template and style tab
77
- $("#cf7s .dashicons").on( "click", function(e) {
78
  t.orderSkin(e);
79
  });
80
  $("#cf7s select.sort-by").change( function(e) {
@@ -151,22 +151,14 @@
151
  },
152
 
153
  getTextarea : function() {
154
- var textarea;
155
-
156
  // Default contact form editor id is #wpcf7-form
157
- // In case if another plugins modify the textarea for cf7 editor, get the first visible textarea in the container
158
- // Check if CF7 is above or 4.2
159
- if ( $("#formdiv .half-left")[0] ) {
160
- textarea = $("#formdiv .half-left").find('textarea').filter(':visible:first');
161
- } else {
162
- textarea = $("#form-panel").find('textarea').filter(':visible:first');
163
  }
164
 
165
- // If there is no visible textarea found, select default to CF7 textarea
166
- if ( textarea.length == 0 )
167
- textarea = $("#wpcf7-form");
168
-
169
- return textarea;
170
  },
171
 
172
  select : function(e) {
@@ -177,21 +169,8 @@
177
  $(inp).val(skin).trigger('change'); // update the skin hidden input value and trigger change for saving
178
  details = $(e).closest(".details");
179
  name = $(e).closest(".skin").find(".skin-name").text();
180
-
181
- // Default contact form editor id is #wpcf7-form
182
- // In case if another plugins modify the textarea for cf7 editor, get the first visible textarea in the container
183
- // Check if CF7 is above or 4.2
184
- if ( $("#formdiv .half-left")[0] ) {
185
- textarea = $("#formdiv .half-left").find('textarea').filter(':visible:first');
186
- } else {
187
- textarea = $("#form-panel").find('textarea').filter(':visible:first');
188
-
189
- // If textarea is not visible, or users not in Form tab
190
- if ( textarea.length == 0 ) {
191
- alert( l10n.goto_form_tab );
192
- return;
193
- }
194
- }
195
 
196
  // Remove and add highlight to the selected skin
197
  $(".skin", wrap).removeClass("skin-selected");
@@ -224,7 +203,7 @@
224
  post: $(e).attr("data-post"),
225
  locale: $(e).attr("data-locale"),
226
  nonce: cf7s.nonce
227
- }, function( data ) {
228
  $(textarea).val( data ).trigger('change');
229
  $('body').trigger( 'select-template', [{template:skin,post:$(e).attr("data-post")}] );
230
  });
@@ -255,8 +234,9 @@
255
  skin = $(e).attr("data-value"); // get template/style name slug
256
  wrap = $(e).closest(".tab-content"); // get current template/style tab content
257
  $(".skin", wrap).removeClass("skin-selected"); // remove all class 'skin-selected'
258
- $(e).text( l10n.select ); // change to select text
259
- $(e).removeClass( "selected" ); // remove selected class
 
260
 
261
  $(inp).val("").trigger('change'); // empty the skin hidden input value and trigger change for saving
262
 
@@ -508,6 +488,27 @@
508
  skinlist.append( $(".skin[data-"+sortby+"='"+e+"']", skinlist) );
509
  });
510
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
511
  };
512
 
513
  $(document).ready(function(){
74
  });
75
 
76
  // Skin ordering for template and style tab
77
+ $("#cf7s .skins-sort .dashicons").on( "click", function(e) {
78
  t.orderSkin(e);
79
  });
80
  $("#cf7s select.sort-by").change( function(e) {
151
  },
152
 
153
  getTextarea : function() {
 
 
154
  // Default contact form editor id is #wpcf7-form
155
+ if ( ! cf7s.textarea ) { // @since 2.1 vis-0.6.4
156
+ cf7s.textarea = document.getElementById( "wpcf7-form" );
 
 
 
 
157
  }
158
 
159
+ // Returns HTML DOM not a jQuery object,
160
+ // can be use with jQuery, $( cf7sAdmin.getTextarea() ).
161
+ return cf7s.textarea;
 
 
162
  },
163
 
164
  select : function(e) {
169
  $(inp).val(skin).trigger('change'); // update the skin hidden input value and trigger change for saving
170
  details = $(e).closest(".details");
171
  name = $(e).closest(".skin").find(".skin-name").text();
172
+
173
+ textarea = this.getTextarea(); // updated @since 2.1 vis-0.6.4
 
 
 
 
 
 
 
 
 
 
 
 
 
174
 
175
  // Remove and add highlight to the selected skin
176
  $(".skin", wrap).removeClass("skin-selected");
203
  post: $(e).attr("data-post"),
204
  locale: $(e).attr("data-locale"),
205
  nonce: cf7s.nonce
206
+ }, function( data ) {
207
  $(textarea).val( data ).trigger('change');
208
  $('body').trigger( 'select-template', [{template:skin,post:$(e).attr("data-post")}] );
209
  });
234
  skin = $(e).attr("data-value"); // get template/style name slug
235
  wrap = $(e).closest(".tab-content"); // get current template/style tab content
236
  $(".skin", wrap).removeClass("skin-selected"); // remove all class 'skin-selected'
237
+
238
+ $(".selected", wrap).text( l10n.select ); // change all a.selected text in tab-content to 'select'
239
+ $(".selected", wrap).removeClass( "selected" ); // remove all 'selected' class in tab-content
240
 
241
  $(inp).val("").trigger('change'); // empty the skin hidden input value and trigger change for saving
242
 
488
  skinlist.append( $(".skin[data-"+sortby+"='"+e+"']", skinlist) );
489
  });
490
  },
491
+
492
+ updateMailtags : function() {
493
+ // Form data for AJAX post
494
+ var postData = {};
495
+ postData.nonce = cf7s.nonce;
496
+ postData.action = 'cf7s_update_mailtags';
497
+ postData.post_ID = document.getElementById( 'post_ID' ).value;
498
+ postData.form = document.getElementById( 'wpcf7-form' ).value;
499
+
500
+ // AJAX post with JSON output to replace mailtags
501
+ $.post( ajaxurl, postData, function( data ) {
502
+
503
+ let wpcf7Mail = document.getElementById('wpcf7-mail'); // get wpcf7-mail element
504
+ let legend = wpcf7Mail.getElementsByTagName('legend')[0]; // find legend
505
+ let mailtags = legend.getElementsByClassName('mailtag'); // find element with mailtag class
506
+ for ( let i = mailtags.length - 1; i >= 0; i-- ) {
507
+ legend.removeChild( mailtags[i] ); // remove all mailtags
508
+ }
509
+ legend.insertAdjacentHTML( 'beforeend', data ); // insert new mailtags
510
+ }, "json" );
511
+ },
512
  };
513
 
514
  $(document).ready(function(){
js/visual.js ADDED
@@ -0,0 +1,88139 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /******/ (function(modules) { // webpackBootstrap
2
+ /******/ // install a JSONP callback for chunk loading
3
+ /******/ var parentJsonpFunction = window["webpackJsonp"];
4
+ /******/ window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {
5
+ /******/ // add "moreModules" to the modules object,
6
+ /******/ // then flag all "chunkIds" as loaded and fire callback
7
+ /******/ var moduleId, chunkId, i = 0, resolves = [], result;
8
+ /******/ for(;i < chunkIds.length; i++) {
9
+ /******/ chunkId = chunkIds[i];
10
+ /******/ if(installedChunks[chunkId]) {
11
+ /******/ resolves.push(installedChunks[chunkId][0]);
12
+ /******/ }
13
+ /******/ installedChunks[chunkId] = 0;
14
+ /******/ }
15
+ /******/ for(moduleId in moreModules) {
16
+ /******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
17
+ /******/ modules[moduleId] = moreModules[moduleId];
18
+ /******/ }
19
+ /******/ }
20
+ /******/ if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);
21
+ /******/ while(resolves.length) {
22
+ /******/ resolves.shift()();
23
+ /******/ }
24
+ /******/ if(executeModules) {
25
+ /******/ for(i=0; i < executeModules.length; i++) {
26
+ /******/ result = __webpack_require__(__webpack_require__.s = executeModules[i]);
27
+ /******/ }
28
+ /******/ }
29
+ /******/ return result;
30
+ /******/ };
31
+ /******/
32
+ /******/ // The module cache
33
+ /******/ var installedModules = {};
34
+ /******/
35
+ /******/ // objects to store loaded and loading chunks
36
+ /******/ var installedChunks = {
37
+ /******/ 1: 0
38
+ /******/ };
39
+ /******/
40
+ /******/ // The require function
41
+ /******/ function __webpack_require__(moduleId) {
42
+ /******/
43
+ /******/ // Check if module is in cache
44
+ /******/ if(installedModules[moduleId]) {
45
+ /******/ return installedModules[moduleId].exports;
46
+ /******/ }
47
+ /******/ // Create a new module (and put it into the cache)
48
+ /******/ var module = installedModules[moduleId] = {
49
+ /******/ i: moduleId,
50
+ /******/ l: false,
51
+ /******/ exports: {}
52
+ /******/ };
53
+ /******/
54
+ /******/ // Execute the module function
55
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
56
+ /******/
57
+ /******/ // Flag the module as loaded
58
+ /******/ module.l = true;
59
+ /******/
60
+ /******/ // Return the exports of the module
61
+ /******/ return module.exports;
62
+ /******/ }
63
+ /******/
64
+ /******/ // This file contains only the entry chunk.
65
+ /******/ // The chunk loading function for additional chunks
66
+ /******/ __webpack_require__.e = function requireEnsure(chunkId) {
67
+ /******/ var installedChunkData = installedChunks[chunkId];
68
+ /******/ if(installedChunkData === 0) {
69
+ /******/ return new Promise(function(resolve) { resolve(); });
70
+ /******/ }
71
+ /******/
72
+ /******/ // a Promise means "currently loading".
73
+ /******/ if(installedChunkData) {
74
+ /******/ return installedChunkData[2];
75
+ /******/ }
76
+ /******/
77
+ /******/ // setup Promise in chunk cache
78
+ /******/ var promise = new Promise(function(resolve, reject) {
79
+ /******/ installedChunkData = installedChunks[chunkId] = [resolve, reject];
80
+ /******/ });
81
+ /******/ installedChunkData[2] = promise;
82
+ /******/
83
+ /******/ // start chunk loading
84
+ /******/ var head = document.getElementsByTagName('head')[0];
85
+ /******/ var script = document.createElement('script');
86
+ /******/ script.type = 'text/javascript';
87
+ /******/ script.charset = 'utf-8';
88
+ /******/ script.async = true;
89
+ /******/ script.timeout = 120000;
90
+ /******/
91
+ /******/ if (__webpack_require__.nc) {
92
+ /******/ script.setAttribute("nonce", __webpack_require__.nc);
93
+ /******/ }
94
+ /******/ script.src = __webpack_require__.p + "dist/" + chunkId + ".js";
95
+ /******/ var timeout = setTimeout(onScriptComplete, 120000);
96
+ /******/ script.onerror = script.onload = onScriptComplete;
97
+ /******/ function onScriptComplete() {
98
+ /******/ // avoid mem leaks in IE.
99
+ /******/ script.onerror = script.onload = null;
100
+ /******/ clearTimeout(timeout);
101
+ /******/ var chunk = installedChunks[chunkId];
102
+ /******/ if(chunk !== 0) {
103
+ /******/ if(chunk) {
104
+ /******/ chunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));
105
+ /******/ }
106
+ /******/ installedChunks[chunkId] = undefined;
107
+ /******/ }
108
+ /******/ };
109
+ /******/ head.appendChild(script);
110
+ /******/
111
+ /******/ return promise;
112
+ /******/ };
113
+ /******/
114
+ /******/ // expose the modules object (__webpack_modules__)
115
+ /******/ __webpack_require__.m = modules;
116
+ /******/
117
+ /******/ // expose the module cache
118
+ /******/ __webpack_require__.c = installedModules;
119
+ /******/
120
+ /******/ // define getter function for harmony exports
121
+ /******/ __webpack_require__.d = function(exports, name, getter) {
122
+ /******/ if(!__webpack_require__.o(exports, name)) {
123
+ /******/ Object.defineProperty(exports, name, {
124
+ /******/ configurable: false,
125
+ /******/ enumerable: true,
126
+ /******/ get: getter
127
+ /******/ });
128
+ /******/ }
129
+ /******/ };
130
+ /******/
131
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
132
+ /******/ __webpack_require__.n = function(module) {
133
+ /******/ var getter = module && module.__esModule ?
134
+ /******/ function getDefault() { return module['default']; } :
135
+ /******/ function getModuleExports() { return module; };
136
+ /******/ __webpack_require__.d(getter, 'a', getter);
137
+ /******/ return getter;
138
+ /******/ };
139
+ /******/
140
+ /******/ // Object.prototype.hasOwnProperty.call
141
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
142
+ /******/
143
+ /******/ // __webpack_public_path__
144
+ /******/ __webpack_require__.p = "";
145
+ /******/
146
+ /******/ // on error function for async loading
147
+ /******/ __webpack_require__.oe = function(err) { console.error(err); throw err; };
148
+ /******/
149
+ /******/ // Load entry module and return exports
150
+ /******/ return __webpack_require__(__webpack_require__.s = 303);
151
+ /******/ })
152
+ /************************************************************************/
153
+ /******/ ([
154
+ /* 0 */
155
+ /***/ (function(module, exports, __webpack_require__) {
156
+
157
+ /* WEBPACK VAR INJECTION */(function(process) {/**
158
+ * Copyright (c) 2013-present, Facebook, Inc.
159
+ *
160
+ * This source code is licensed under the MIT license found in the
161
+ * LICENSE file in the root directory of this source tree.
162
+ */
163
+
164
+ if (process.env.NODE_ENV !== 'production') {
165
+ var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&
166
+ Symbol.for &&
167
+ Symbol.for('react.element')) ||
168
+ 0xeac7;
169
+
170
+ var isValidElement = function(object) {
171
+ return typeof object === 'object' &&
172
+ object !== null &&
173
+ object.$$typeof === REACT_ELEMENT_TYPE;
174
+ };
175
+
176
+ // By explicitly using `prop-types` you are opting into new development behavior.
177
+ // http://fb.me/prop-types-in-prod
178
+ var throwOnDirectAccess = true;
179
+ module.exports = __webpack_require__(518)(isValidElement, throwOnDirectAccess);
180
+ } else {
181
+ // By explicitly using `prop-types` you are opting into new production behavior.
182
+ // http://fb.me/prop-types-in-prod
183
+ module.exports = __webpack_require__(519)();
184
+ }
185
+
186
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
187
+
188
+ /***/ }),
189
+ /* 1 */
190
+ /***/ (function(module, exports, __webpack_require__) {
191
+
192
+ var global = __webpack_require__(4);
193
+ var core = __webpack_require__(38);
194
+ var hide = __webpack_require__(25);
195
+ var redefine = __webpack_require__(26);
196
+ var ctx = __webpack_require__(35);
197
+ var PROTOTYPE = 'prototype';
198
+
199
+ var $export = function (type, name, source) {
200
+ var IS_FORCED = type & $export.F;
201
+ var IS_GLOBAL = type & $export.G;
202
+ var IS_STATIC = type & $export.S;
203
+ var IS_PROTO = type & $export.P;
204
+ var IS_BIND = type & $export.B;
205
+ var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
206
+ var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
207
+ var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
208
+ var key, own, out, exp;
209
+ if (IS_GLOBAL) source = name;
210
+ for (key in source) {
211
+ // contains in native
212
+ own = !IS_FORCED && target && target[key] !== undefined;
213
+ // export native or passed
214
+ out = (own ? target : source)[key];
215
+ // bind timers to global for call from export context
216
+ exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
217
+ // extend global
218
+ if (target) redefine(target, key, out, type & $export.U);
219
+ // export
220
+ if (exports[key] != out) hide(exports, key, exp);
221
+ if (IS_PROTO && expProto[key] != out) expProto[key] = out;
222
+ }
223
+ };
224
+ global.core = core;
225
+ // type bitmap
226
+ $export.F = 1; // forced
227
+ $export.G = 2; // global
228
+ $export.S = 4; // static
229
+ $export.P = 8; // proto
230
+ $export.B = 16; // bind
231
+ $export.W = 32; // wrap
232
+ $export.U = 64; // safe
233
+ $export.R = 128; // real proto method for `library`
234
+ module.exports = $export;
235
+
236
+
237
+ /***/ }),
238
+ /* 2 */
239
+ /***/ (function(module, exports, __webpack_require__) {
240
+
241
+ "use strict";
242
+ /* WEBPACK VAR INJECTION */(function(process) {
243
+
244
+ if (process.env.NODE_ENV === 'production') {
245
+ module.exports = __webpack_require__(507);
246
+ } else {
247
+ module.exports = __webpack_require__(508);
248
+ }
249
+
250
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
251
+
252
+ /***/ }),
253
+ /* 3 */
254
+ /***/ (function(module, exports, __webpack_require__) {
255
+
256
+ var isObject = __webpack_require__(6);
257
+ module.exports = function (it) {
258
+ if (!isObject(it)) throw TypeError(it + ' is not an object!');
259
+ return it;
260
+ };
261
+
262
+
263
+ /***/ }),
264
+ /* 4 */
265
+ /***/ (function(module, exports) {
266
+
267
+ // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
268
+ var global = module.exports = typeof window != 'undefined' && window.Math == Math
269
+ ? window : typeof self != 'undefined' && self.Math == Math ? self
270
+ // eslint-disable-next-line no-new-func
271
+ : Function('return this')();
272
+ if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
273
+
274
+
275
+ /***/ }),
276
+ /* 5 */
277
+ /***/ (function(module, exports) {
278
+
279
+ module.exports = function (exec) {
280
+ try {
281
+ return !!exec();
282
+ } catch (e) {
283
+ return true;
284
+ }
285
+ };
286
+
287
+
288
+ /***/ }),
289
+ /* 6 */
290
+ /***/ (function(module, exports) {
291
+
292
+ module.exports = function (it) {
293
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
294
+ };
295
+
296
+
297
+ /***/ }),
298
+ /* 7 */
299
+ /***/ (function(module, exports) {
300
+
301
+ // shim for using process in browser
302
+ var process = module.exports = {};
303
+
304
+ // cached from whatever global is present so that test runners that stub it
305
+ // don't break things. But we need to wrap it in a try catch in case it is
306
+ // wrapped in strict mode code which doesn't define any globals. It's inside a
307
+ // function because try/catches deoptimize in certain engines.
308
+
309
+ var cachedSetTimeout;
310
+ var cachedClearTimeout;
311
+
312
+ function defaultSetTimout() {
313
+ throw new Error('setTimeout has not been defined');
314
+ }
315
+ function defaultClearTimeout () {
316
+ throw new Error('clearTimeout has not been defined');
317
+ }
318
+ (function () {
319
+ try {
320
+ if (typeof setTimeout === 'function') {
321
+ cachedSetTimeout = setTimeout;
322
+ } else {
323
+ cachedSetTimeout = defaultSetTimout;
324
+ }
325
+ } catch (e) {
326
+ cachedSetTimeout = defaultSetTimout;
327
+ }
328
+ try {
329
+ if (typeof clearTimeout === 'function') {
330
+ cachedClearTimeout = clearTimeout;
331
+ } else {
332
+ cachedClearTimeout = defaultClearTimeout;
333
+ }
334
+ } catch (e) {
335
+ cachedClearTimeout = defaultClearTimeout;
336
+ }
337
+ } ())
338
+ function runTimeout(fun) {
339
+ if (cachedSetTimeout === setTimeout) {
340
+ //normal enviroments in sane situations
341
+ return setTimeout(fun, 0);
342
+ }
343
+ // if setTimeout wasn't available but was latter defined
344
+ if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
345
+ cachedSetTimeout = setTimeout;
346
+ return setTimeout(fun, 0);
347
+ }
348
+ try {
349
+ // when when somebody has screwed with setTimeout but no I.E. maddness
350
+ return cachedSetTimeout(fun, 0);
351
+ } catch(e){
352
+ try {
353
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
354
+ return cachedSetTimeout.call(null, fun, 0);
355
+ } catch(e){
356
+ // 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
357
+ return cachedSetTimeout.call(this, fun, 0);
358
+ }
359
+ }
360
+
361
+
362
+ }
363
+ function runClearTimeout(marker) {
364
+ if (cachedClearTimeout === clearTimeout) {
365
+ //normal enviroments in sane situations
366
+ return clearTimeout(marker);
367
+ }
368
+ // if clearTimeout wasn't available but was latter defined
369
+ if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
370
+ cachedClearTimeout = clearTimeout;
371
+ return clearTimeout(marker);
372
+ }
373
+ try {
374
+ // when when somebody has screwed with setTimeout but no I.E. maddness
375
+ return cachedClearTimeout(marker);
376
+ } catch (e){
377
+ try {
378
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
379
+ return cachedClearTimeout.call(null, marker);
380
+ } catch (e){
381
+ // 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.
382
+ // Some versions of I.E. have different rules for clearTimeout vs setTimeout
383
+ return cachedClearTimeout.call(this, marker);
384
+ }
385
+ }
386
+
387
+
388
+
389
+ }
390
+ var queue = [];
391
+ var draining = false;
392
+ var currentQueue;
393
+ var queueIndex = -1;
394
+
395
+ function cleanUpNextTick() {
396
+ if (!draining || !currentQueue) {
397
+ return;
398
+ }
399
+ draining = false;
400
+ if (currentQueue.length) {
401
+ queue = currentQueue.concat(queue);
402
+ } else {
403
+ queueIndex = -1;
404
+ }
405
+ if (queue.length) {
406
+ drainQueue();
407
+ }
408
+ }
409
+
410
+ function drainQueue() {
411
+ if (draining) {
412
+ return;
413
+ }
414
+ var timeout = runTimeout(cleanUpNextTick);
415
+ draining = true;
416
+
417
+ var len = queue.length;
418
+ while(len) {
419
+ currentQueue = queue;
420
+ queue = [];
421
+ while (++queueIndex < len) {
422
+ if (currentQueue) {
423
+ currentQueue[queueIndex].run();
424
+ }
425
+ }
426
+ queueIndex = -1;
427
+ len = queue.length;
428
+ }
429
+ currentQueue = null;
430
+ draining = false;
431
+ runClearTimeout(timeout);
432
+ }
433
+
434
+ process.nextTick = function (fun) {
435
+ var args = new Array(arguments.length - 1);
436
+ if (arguments.length > 1) {
437
+ for (var i = 1; i < arguments.length; i++) {
438
+ args[i - 1] = arguments[i];
439
+ }
440
+ }
441
+ queue.push(new Item(fun, args));
442
+ if (queue.length === 1 && !draining) {
443
+ runTimeout(drainQueue);
444
+ }
445
+ };
446
+
447
+ // v8 likes predictible objects
448
+ function Item(fun, array) {
449
+ this.fun = fun;
450
+ this.array = array;
451
+ }
452
+ Item.prototype.run = function () {
453
+ this.fun.apply(null, this.array);
454
+ };
455
+ process.title = 'browser';
456
+ process.browser = true;
457
+ process.env = {};
458
+ process.argv = [];
459
+ process.version = ''; // empty string to avoid regexp issues
460
+ process.versions = {};
461
+
462
+ function noop() {}
463
+
464
+ process.on = noop;
465
+ process.addListener = noop;
466
+ process.once = noop;
467
+ process.off = noop;
468
+ process.removeListener = noop;
469
+ process.removeAllListeners = noop;
470
+ process.emit = noop;
471
+ process.prependListener = noop;
472
+ process.prependOnceListener = noop;
473
+
474
+ process.listeners = function (name) { return [] }
475
+
476
+ process.binding = function (name) {
477
+ throw new Error('process.binding is not supported');
478
+ };
479
+
480
+ process.cwd = function () { return '/' };
481
+ process.chdir = function (dir) {
482
+ throw new Error('process.chdir is not supported');
483
+ };
484
+ process.umask = function() { return 0; };
485
+
486
+
487
+ /***/ }),
488
+ /* 8 */
489
+ /***/ (function(module, exports, __webpack_require__) {
490
+
491
+ "use strict";
492
+
493
+
494
+ exports.__esModule = true;
495
+
496
+ exports.default = function (instance, Constructor) {
497
+ if (!(instance instanceof Constructor)) {
498
+ throw new TypeError("Cannot call a class as a function");
499
+ }
500
+ };
501
+
502
+ /***/ }),
503
+ /* 9 */
504
+ /***/ (function(module, exports, __webpack_require__) {
505
+
506
+ var store = __webpack_require__(97)('wks');
507
+ var uid = __webpack_require__(54);
508
+ var Symbol = __webpack_require__(4).Symbol;
509
+ var USE_SYMBOL = typeof Symbol == 'function';
510
+
511
+ var $exports = module.exports = function (name) {
512
+ return store[name] || (store[name] =
513
+ USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
514
+ };
515
+
516
+ $exports.store = store;
517
+
518
+
519
+ /***/ }),
520
+ /* 10 */
521
+ /***/ (function(module, exports, __webpack_require__) {
522
+
523
+ "use strict";
524
+
525
+
526
+ exports.__esModule = true;
527
+
528
+ var _defineProperty = __webpack_require__(240);
529
+
530
+ var _defineProperty2 = _interopRequireDefault(_defineProperty);
531
+
532
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
533
+
534
+ exports.default = function () {
535
+ function defineProperties(target, props) {
536
+ for (var i = 0; i < props.length; i++) {
537
+ var descriptor = props[i];
538
+ descriptor.enumerable = descriptor.enumerable || false;
539
+ descriptor.configurable = true;
540
+ if ("value" in descriptor) descriptor.writable = true;
541
+ (0, _defineProperty2.default)(target, descriptor.key, descriptor);
542
+ }
543
+ }
544
+
545
+ return function (Constructor, protoProps, staticProps) {
546
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
547
+ if (staticProps) defineProperties(Constructor, staticProps);
548
+ return Constructor;
549
+ };
550
+ }();
551
+
552
+ /***/ }),
553
+ /* 11 */
554
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
555
+
556
+ "use strict";
557
+ Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
558
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(2);
559
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);
560
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_ScalingCellSizeAndPositionManager__ = __webpack_require__(176);
561
+
562
+
563
+
564
+ var babelPluginFlowReactPropTypes_proptype_CellPosition = {
565
+ columnIndex: __webpack_require__(0).number.isRequired,
566
+ rowIndex: __webpack_require__(0).number.isRequired
567
+ };
568
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_CellPosition', {
569
+ value: babelPluginFlowReactPropTypes_proptype_CellPosition,
570
+ configurable: true
571
+ });
572
+ var babelPluginFlowReactPropTypes_proptype_CellRendererParams = {
573
+ columnIndex: __webpack_require__(0).number.isRequired,
574
+ isScrolling: __webpack_require__(0).bool.isRequired,
575
+ isVisible: __webpack_require__(0).bool.isRequired,
576
+ key: __webpack_require__(0).string.isRequired,
577
+ parent: __webpack_require__(0).object.isRequired,
578
+ rowIndex: __webpack_require__(0).number.isRequired,
579
+ style: __webpack_require__(0).object.isRequired
580
+ };
581
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_CellRendererParams', {
582
+ value: babelPluginFlowReactPropTypes_proptype_CellRendererParams,
583
+ configurable: true
584
+ });
585
+
586
+ var babelPluginFlowReactPropTypes_proptype_CellRenderer = __webpack_require__(0).func;
587
+
588
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_CellRenderer', {
589
+ value: babelPluginFlowReactPropTypes_proptype_CellRenderer,
590
+ configurable: true
591
+ });
592
+ var babelPluginFlowReactPropTypes_proptype_CellRangeRendererParams = {
593
+ cellCache: __webpack_require__(0).object.isRequired,
594
+ cellRenderer: __webpack_require__(0).func.isRequired,
595
+ columnSizeAndPositionManager: typeof __WEBPACK_IMPORTED_MODULE_1__utils_ScalingCellSizeAndPositionManager__["a" /* default */] === 'function' ? __webpack_require__(0).instanceOf(__WEBPACK_IMPORTED_MODULE_1__utils_ScalingCellSizeAndPositionManager__["a" /* default */]).isRequired : __webpack_require__(0).any.isRequired,
596
+ columnStartIndex: __webpack_require__(0).number.isRequired,
597
+ columnStopIndex: __webpack_require__(0).number.isRequired,
598
+ deferredMeasurementCache: __webpack_require__(0).object,
599
+ horizontalOffsetAdjustment: __webpack_require__(0).number.isRequired,
600
+ isScrolling: __webpack_require__(0).bool.isRequired,
601
+ parent: __webpack_require__(0).object.isRequired,
602
+ rowSizeAndPositionManager: typeof __WEBPACK_IMPORTED_MODULE_1__utils_ScalingCellSizeAndPositionManager__["a" /* default */] === 'function' ? __webpack_require__(0).instanceOf(__WEBPACK_IMPORTED_MODULE_1__utils_ScalingCellSizeAndPositionManager__["a" /* default */]).isRequired : __webpack_require__(0).any.isRequired,
603
+ rowStartIndex: __webpack_require__(0).number.isRequired,
604
+ rowStopIndex: __webpack_require__(0).number.isRequired,
605
+ scrollLeft: __webpack_require__(0).number.isRequired,
606
+ scrollTop: __webpack_require__(0).number.isRequired,
607
+ styleCache: __webpack_require__(0).object.isRequired,
608
+ verticalOffsetAdjustment: __webpack_require__(0).number.isRequired,
609
+ visibleColumnIndices: __webpack_require__(0).object.isRequired,
610
+ visibleRowIndices: __webpack_require__(0).object.isRequired
611
+ };
612
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_CellRangeRendererParams', {
613
+ value: babelPluginFlowReactPropTypes_proptype_CellRangeRendererParams,
614
+ configurable: true
615
+ });
616
+
617
+ var babelPluginFlowReactPropTypes_proptype_CellRangeRenderer = __webpack_require__(0).func;
618
+
619
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_CellRangeRenderer', {
620
+ value: babelPluginFlowReactPropTypes_proptype_CellRangeRenderer,
621
+ configurable: true
622
+ });
623
+
624
+ var babelPluginFlowReactPropTypes_proptype_CellSizeGetter = __webpack_require__(0).func;
625
+
626
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_CellSizeGetter', {
627
+ value: babelPluginFlowReactPropTypes_proptype_CellSizeGetter,
628
+ configurable: true
629
+ });
630
+
631
+ var babelPluginFlowReactPropTypes_proptype_CellSize = __webpack_require__(0).oneOfType([__webpack_require__(0).func, __webpack_require__(0).number]);
632
+
633
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_CellSize', {
634
+ value: babelPluginFlowReactPropTypes_proptype_CellSize,
635
+ configurable: true
636
+ });
637
+
638
+ var babelPluginFlowReactPropTypes_proptype_NoContentRenderer = __webpack_require__(0).func;
639
+
640
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_NoContentRenderer', {
641
+ value: babelPluginFlowReactPropTypes_proptype_NoContentRenderer,
642
+ configurable: true
643
+ });
644
+ var babelPluginFlowReactPropTypes_proptype_Scroll = {
645
+ clientHeight: __webpack_require__(0).number.isRequired,
646
+ clientWidth: __webpack_require__(0).number.isRequired,
647
+ scrollHeight: __webpack_require__(0).number.isRequired,
648
+ scrollLeft: __webpack_require__(0).number.isRequired,
649
+ scrollTop: __webpack_require__(0).number.isRequired,
650
+ scrollWidth: __webpack_require__(0).number.isRequired
651
+ };
652
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_Scroll', {
653
+ value: babelPluginFlowReactPropTypes_proptype_Scroll,
654
+ configurable: true
655
+ });
656
+ var babelPluginFlowReactPropTypes_proptype_ScrollbarPresenceChange = {
657
+ horizontal: __webpack_require__(0).bool.isRequired,
658
+ vertical: __webpack_require__(0).bool.isRequired,
659
+ size: __webpack_require__(0).number.isRequired
660
+ };
661
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_ScrollbarPresenceChange', {
662
+ value: babelPluginFlowReactPropTypes_proptype_ScrollbarPresenceChange,
663
+ configurable: true
664
+ });
665
+ var babelPluginFlowReactPropTypes_proptype_RenderedSection = {
666
+ columnOverscanStartIndex: __webpack_require__(0).number.isRequired,
667
+ columnOverscanStopIndex: __webpack_require__(0).number.isRequired,
668
+ columnStartIndex: __webpack_require__(0).number.isRequired,
669
+ columnStopIndex: __webpack_require__(0).number.isRequired,
670
+ rowOverscanStartIndex: __webpack_require__(0).number.isRequired,
671
+ rowOverscanStopIndex: __webpack_require__(0).number.isRequired,
672
+ rowStartIndex: __webpack_require__(0).number.isRequired,
673
+ rowStopIndex: __webpack_require__(0).number.isRequired
674
+ };
675
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_RenderedSection', {
676
+ value: babelPluginFlowReactPropTypes_proptype_RenderedSection,
677
+ configurable: true
678
+ });
679
+ var babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetterParams = {
680
+ // One of SCROLL_DIRECTION_HORIZONTAL or SCROLL_DIRECTION_VERTICAL
681
+ direction: __webpack_require__(0).oneOf(['horizontal', 'vertical']).isRequired,
682
+
683
+
684
+ // One of SCROLL_DIRECTION_BACKWARD or SCROLL_DIRECTION_FORWARD
685
+ scrollDirection: __webpack_require__(0).oneOf([-1, 1]).isRequired,
686
+
687
+
688
+ // Number of rows or columns in the current axis
689
+ cellCount: __webpack_require__(0).number.isRequired,
690
+
691
+
692
+ // Maximum number of cells to over-render in either direction
693
+ overscanCellsCount: __webpack_require__(0).number.isRequired,
694
+
695
+
696
+ // Begin of range of visible cells
697
+ startIndex: __webpack_require__(0).number.isRequired,
698
+
699
+
700
+ // End of range of visible cells
701
+ stopIndex: __webpack_require__(0).number.isRequired
702
+ };
703
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetterParams', {
704
+ value: babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetterParams,
705
+ configurable: true
706
+ });
707
+ var babelPluginFlowReactPropTypes_proptype_OverscanIndices = {
708
+ overscanStartIndex: __webpack_require__(0).number.isRequired,
709
+ overscanStopIndex: __webpack_require__(0).number.isRequired
710
+ };
711
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_OverscanIndices', {
712
+ value: babelPluginFlowReactPropTypes_proptype_OverscanIndices,
713
+ configurable: true
714
+ });
715
+
716
+ var babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter = __webpack_require__(0).func;
717
+
718
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter', {
719
+ value: babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter,
720
+ configurable: true
721
+ });
722
+
723
+ var babelPluginFlowReactPropTypes_proptype_Alignment = __webpack_require__(0).oneOf(['auto', 'end', 'start', 'center']);
724
+
725
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_Alignment', {
726
+ value: babelPluginFlowReactPropTypes_proptype_Alignment,
727
+ configurable: true
728
+ });
729
+ var babelPluginFlowReactPropTypes_proptype_VisibleCellRange = {
730
+ start: __webpack_require__(0).number,
731
+ stop: __webpack_require__(0).number
732
+ };
733
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_VisibleCellRange', {
734
+ value: babelPluginFlowReactPropTypes_proptype_VisibleCellRange,
735
+ configurable: true
736
+ });
737
+
738
+ /***/ }),
739
+ /* 12 */
740
+ /***/ (function(module, exports, __webpack_require__) {
741
+
742
+ "use strict";
743
+
744
+
745
+ exports.__esModule = true;
746
+
747
+ var _typeof2 = __webpack_require__(114);
748
+
749
+ var _typeof3 = _interopRequireDefault(_typeof2);
750
+
751
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
752
+
753
+ exports.default = function (self, call) {
754
+ if (!self) {
755
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
756
+ }
757
+
758
+ return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self;
759
+ };
760
+
761
+ /***/ }),
762
+ /* 13 */
763
+ /***/ (function(module, exports, __webpack_require__) {
764
+
765
+ "use strict";
766
+
767
+
768
+ exports.__esModule = true;
769
+
770
+ var _setPrototypeOf = __webpack_require__(549);
771
+
772
+ var _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);
773
+
774
+ var _create = __webpack_require__(553);
775
+
776
+ var _create2 = _interopRequireDefault(_create);
777
+
778
+ var _typeof2 = __webpack_require__(114);
779
+
780
+ var _typeof3 = _interopRequireDefault(_typeof2);
781
+
782
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
783
+
784
+ exports.default = function (subClass, superClass) {
785
+ if (typeof superClass !== "function" && superClass !== null) {
786
+ throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === "undefined" ? "undefined" : (0, _typeof3.default)(superClass)));
787
+ }
788
+
789
+ subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {
790
+ constructor: {
791
+ value: subClass,
792
+ enumerable: false,
793
+ writable: true,
794
+ configurable: true
795
+ }
796
+ });
797
+ if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;
798
+ };
799
+
800
+ /***/ }),
801
+ /* 14 */
802
+ /***/ (function(module, exports, __webpack_require__) {
803
+
804
+ // Thank's IE8 for his funny defineProperty
805
+ module.exports = !__webpack_require__(5)(function () {
806
+ return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
807
+ });
808
+
809
+
810
+ /***/ }),
811
+ /* 15 */
812
+ /***/ (function(module, exports, __webpack_require__) {
813
+
814
+ var anObject = __webpack_require__(3);
815
+ var IE8_DOM_DEFINE = __webpack_require__(195);
816
+ var toPrimitive = __webpack_require__(39);
817
+ var dP = Object.defineProperty;
818
+
819
+ exports.f = __webpack_require__(14) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
820
+ anObject(O);
821
+ P = toPrimitive(P, true);
822
+ anObject(Attributes);
823
+ if (IE8_DOM_DEFINE) try {
824
+ return dP(O, P, Attributes);
825
+ } catch (e) { /* empty */ }
826
+ if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
827
+ if ('value' in Attributes) O[P] = Attributes.value;
828
+ return O;
829
+ };
830
+
831
+
832
+ /***/ }),
833
+ /* 16 */
834
+ /***/ (function(module, exports, __webpack_require__) {
835
+
836
+ // 7.1.15 ToLength
837
+ var toInteger = __webpack_require__(41);
838
+ var min = Math.min;
839
+ module.exports = function (it) {
840
+ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
841
+ };
842
+
843
+
844
+ /***/ }),
845
+ /* 17 */
846
+ /***/ (function(module, exports, __webpack_require__) {
847
+
848
+ "use strict";
849
+
850
+
851
+ exports.__esModule = true;
852
+
853
+ var _assign = __webpack_require__(556);
854
+
855
+ var _assign2 = _interopRequireDefault(_assign);
856
+
857
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
858
+
859
+ exports.default = _assign2.default || function (target) {
860
+ for (var i = 1; i < arguments.length; i++) {
861
+ var source = arguments[i];
862
+
863
+ for (var key in source) {
864
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
865
+ target[key] = source[key];
866
+ }
867
+ }
868
+ }
869
+
870
+ return target;
871
+ };
872
+
873
+ /***/ }),
874
+ /* 18 */
875
+ /***/ (function(module, exports, __webpack_require__) {
876
+
877
+ // 7.1.13 ToObject(argument)
878
+ var defined = __webpack_require__(40);
879
+ module.exports = function (it) {
880
+ return Object(defined(it));
881
+ };
882
+
883
+
884
+ /***/ }),
885
+ /* 19 */
886
+ /***/ (function(module, exports, __webpack_require__) {
887
+
888
+ "use strict";
889
+ /* WEBPACK VAR INJECTION */(function(process) {
890
+
891
+ function checkDCE() {
892
+ /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
893
+ if (
894
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||
895
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'
896
+ ) {
897
+ return;
898
+ }
899
+ if (process.env.NODE_ENV !== 'production') {
900
+ // This branch is unreachable because this function is only called
901
+ // in production, but the condition is true only in development.
902
+ // Therefore if the branch is still here, dead code elimination wasn't
903
+ // properly applied.
904
+ // Don't change the message. React DevTools relies on it. Also make sure
905
+ // this message doesn't occur elsewhere in this function, or it will cause
906
+ // a false positive.
907
+ throw new Error('^_^');
908
+ }
909
+ try {
910
+ // Verify that the code above has been dead code eliminated (DCE'd).
911
+ __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);
912
+ } catch (err) {
913
+ // DevTools shouldn't crash React, no matter what.
914
+ // We should still report in case we break this code.
915
+ console.error(err);
916
+ }
917
+ }
918
+
919
+ if (process.env.NODE_ENV === 'production') {
920
+ // DCE check should happen before ReactDOM bundle executes so that
921
+ // DevTools can report bad minification during injection.
922
+ checkDCE();
923
+ module.exports = __webpack_require__(509);
924
+ } else {
925
+ module.exports = __webpack_require__(512);
926
+ }
927
+
928
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
929
+
930
+ /***/ }),
931
+ /* 20 */
932
+ /***/ (function(module, exports) {
933
+
934
+ module.exports = function (it) {
935
+ if (typeof it != 'function') throw TypeError(it + ' is not a function!');
936
+ return it;
937
+ };
938
+
939
+
940
+ /***/ }),
941
+ /* 21 */
942
+ /***/ (function(module, exports, __webpack_require__) {
943
+
944
+ module.exports = { "default": __webpack_require__(522), __esModule: true };
945
+
946
+ /***/ }),
947
+ /* 22 */
948
+ /***/ (function(module, exports) {
949
+
950
+ var core = module.exports = { version: '2.5.3' };
951
+ if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
952
+
953
+
954
+ /***/ }),
955
+ /* 23 */
956
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
957
+
958
+ "use strict";
959
+ Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
960
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Grid__ = __webpack_require__(246);
961
+ /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return __WEBPACK_IMPORTED_MODULE_0__Grid__["a"]; });
962
+ /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Grid", function() { return __WEBPACK_IMPORTED_MODULE_0__Grid__["a"]; });
963
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__accessibilityOverscanIndicesGetter__ = __webpack_require__(568);
964
+ /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "accessibilityOverscanIndicesGetter", function() { return __WEBPACK_IMPORTED_MODULE_1__accessibilityOverscanIndicesGetter__["a"]; });
965
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__defaultCellRangeRenderer__ = __webpack_require__(249);
966
+ /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "defaultCellRangeRenderer", function() { return __WEBPACK_IMPORTED_MODULE_2__defaultCellRangeRenderer__["a"]; });
967
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__defaultOverscanIndicesGetter__ = __webpack_require__(248);
968
+ /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "defaultOverscanIndicesGetter", function() { return __WEBPACK_IMPORTED_MODULE_3__defaultOverscanIndicesGetter__["c"]; });
969
+
970
+
971
+
972
+
973
+
974
+
975
+
976
+
977
+
978
+ /***/ }),
979
+ /* 24 */
980
+ /***/ (function(module, exports) {
981
+
982
+ var hasOwnProperty = {}.hasOwnProperty;
983
+ module.exports = function (it, key) {
984
+ return hasOwnProperty.call(it, key);
985
+ };
986
+
987
+
988
+ /***/ }),
989
+ /* 25 */
990
+ /***/ (function(module, exports, __webpack_require__) {
991
+
992
+ var dP = __webpack_require__(15);
993
+ var createDesc = __webpack_require__(53);
994
+ module.exports = __webpack_require__(14) ? function (object, key, value) {
995
+ return dP.f(object, key, createDesc(1, value));
996
+ } : function (object, key, value) {
997
+ object[key] = value;
998
+ return object;
999
+ };
1000
+
1001
+
1002
+ /***/ }),
1003
+ /* 26 */
1004
+ /***/ (function(module, exports, __webpack_require__) {
1005
+
1006
+ var global = __webpack_require__(4);
1007
+ var hide = __webpack_require__(25);
1008
+ var has = __webpack_require__(24);
1009
+ var SRC = __webpack_require__(54)('src');
1010
+ var TO_STRING = 'toString';
1011
+ var $toString = Function[TO_STRING];
1012
+ var TPL = ('' + $toString).split(TO_STRING);
1013
+
1014
+ __webpack_require__(38).inspectSource = function (it) {
1015
+ return $toString.call(it);
1016
+ };
1017
+
1018
+ (module.exports = function (O, key, val, safe) {
1019
+ var isFunction = typeof val == 'function';
1020
+ if (isFunction) has(val, 'name') || hide(val, 'name', key);
1021
+ if (O[key] === val) return;
1022
+ if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
1023
+ if (O === global) {
1024
+ O[key] = val;
1025
+ } else if (!safe) {
1026
+ delete O[key];
1027
+ hide(O, key, val);
1028
+ } else if (O[key]) {
1029
+ O[key] = val;
1030
+ } else {
1031
+ hide(O, key, val);
1032
+ }
1033
+ // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
1034
+ })(Function.prototype, TO_STRING, function toString() {
1035
+ return typeof this == 'function' && this[SRC] || $toString.call(this);
1036
+ });
1037
+
1038
+
1039
+ /***/ }),
1040
+ /* 27 */
1041
+ /***/ (function(module, exports, __webpack_require__) {
1042
+
1043
+ var $export = __webpack_require__(1);
1044
+ var fails = __webpack_require__(5);
1045
+ var defined = __webpack_require__(40);
1046
+ var quot = /"/g;
1047
+ // B.2.3.2.1 CreateHTML(string, tag, attribute, value)
1048
+ var createHTML = function (string, tag, attribute, value) {
1049
+ var S = String(defined(string));
1050
+ var p1 = '<' + tag;
1051
+ if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '&quot;') + '"';
1052
+ return p1 + '>' + S + '</' + tag + '>';
1053
+ };
1054
+ module.exports = function (NAME, exec) {
1055
+ var O = {};
1056
+ O[NAME] = exec(createHTML);
1057
+ $export($export.P + $export.F * fails(function () {
1058
+ var test = ''[NAME]('"');
1059
+ return test !== test.toLowerCase() || test.split('"').length > 3;
1060
+ }), 'String', O);
1061
+ };
1062
+
1063
+
1064
+ /***/ }),
1065
+ /* 28 */
1066
+ /***/ (function(module, exports, __webpack_require__) {
1067
+
1068
+ "use strict";
1069
+ /* WEBPACK VAR INJECTION */(function(process) {/**
1070
+ * Copyright 2013-2015, Facebook, Inc.
1071
+ * All rights reserved.
1072
+ *
1073
+ * This source code is licensed under the BSD-style license found in the
1074
+ * LICENSE file in the root directory of this source tree. An additional grant
1075
+ * of patent rights can be found in the PATENTS file in the same directory.
1076
+ */
1077
+
1078
+
1079
+
1080
+ /**
1081
+ * Use invariant() to assert state which your program assumes to be true.
1082
+ *
1083
+ * Provide sprintf-style format (only %s is supported) and arguments
1084
+ * to provide information about what broke and what you were
1085
+ * expecting.
1086
+ *
1087
+ * The invariant message will be stripped in production, but the invariant
1088
+ * will remain to ensure logic does not differ in production.
1089
+ */
1090
+
1091
+ var invariant = function(condition, format, a, b, c, d, e, f) {
1092
+ if (process.env.NODE_ENV !== 'production') {
1093
+ if (format === undefined) {
1094
+ throw new Error('invariant requires an error message argument');
1095
+ }
1096
+ }
1097
+
1098
+ if (!condition) {
1099
+ var error;
1100
+ if (format === undefined) {
1101
+ error = new Error(
1102
+ 'Minified exception occurred; use the non-minified dev environment ' +
1103
+ 'for the full error message and additional helpful warnings.'
1104
+ );
1105
+ } else {
1106
+ var args = [a, b, c, d, e, f];
1107
+ var argIndex = 0;
1108
+ error = new Error(
1109
+ format.replace(/%s/g, function() { return args[argIndex++]; })
1110
+ );
1111
+ error.name = 'Invariant Violation';
1112
+ }
1113
+
1114
+ error.framesToPop = 1; // we don't care about invariant's own frame
1115
+ throw error;
1116
+ }
1117
+ };
1118
+
1119
+ module.exports = invariant;
1120
+
1121
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
1122
+
1123
+ /***/ }),
1124
+ /* 29 */
1125
+ /***/ (function(module, exports, __webpack_require__) {
1126
+
1127
+ // to indexed object, toObject with fallback for non-array-like ES3 strings
1128
+ var IObject = __webpack_require__(84);
1129
+ var defined = __webpack_require__(40);
1130
+ module.exports = function (it) {
1131
+ return IObject(defined(it));
1132
+ };
1133
+
1134
+
1135
+ /***/ }),
1136
+ /* 30 */
1137
+ /***/ (function(module, exports, __webpack_require__) {
1138
+
1139
+ var pIE = __webpack_require__(85);
1140
+ var createDesc = __webpack_require__(53);
1141
+ var toIObject = __webpack_require__(29);
1142
+ var toPrimitive = __webpack_require__(39);
1143
+ var has = __webpack_require__(24);
1144
+ var IE8_DOM_DEFINE = __webpack_require__(195);
1145
+ var gOPD = Object.getOwnPropertyDescriptor;
1146
+
1147
+ exports.f = __webpack_require__(14) ? gOPD : function getOwnPropertyDescriptor(O, P) {
1148
+ O = toIObject(O);
1149
+ P = toPrimitive(P, true);
1150
+ if (IE8_DOM_DEFINE) try {
1151
+ return gOPD(O, P);
1152
+ } catch (e) { /* empty */ }
1153
+ if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
1154
+ };
1155
+
1156
+
1157
+ /***/ }),
1158
+ /* 31 */
1159
+ /***/ (function(module, exports, __webpack_require__) {
1160
+
1161
+ // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
1162
+ var has = __webpack_require__(24);
1163
+ var toObject = __webpack_require__(18);
1164
+ var IE_PROTO = __webpack_require__(131)('IE_PROTO');
1165
+ var ObjectProto = Object.prototype;
1166
+
1167
+ module.exports = Object.getPrototypeOf || function (O) {
1168
+ O = toObject(O);
1169
+ if (has(O, IE_PROTO)) return O[IE_PROTO];
1170
+ if (typeof O.constructor == 'function' && O instanceof O.constructor) {
1171
+ return O.constructor.prototype;
1172
+ } return O instanceof Object ? ObjectProto : null;
1173
+ };
1174
+
1175
+
1176
+ /***/ }),
1177
+ /* 32 */
1178
+ /***/ (function(module, exports) {
1179
+
1180
+ /*
1181
+ MIT License http://www.opensource.org/licenses/mit-license.php
1182
+ Author Tobias Koppers @sokra
1183
+ */
1184
+ // css base code, injected by the css-loader
1185
+ module.exports = function(useSourceMap) {
1186
+ var list = [];
1187
+
1188
+ // return the list of modules as css string
1189
+ list.toString = function toString() {
1190
+ return this.map(function (item) {
1191
+ var content = cssWithMappingToString(item, useSourceMap);
1192
+ if(item[2]) {
1193
+ return "@media " + item[2] + "{" + content + "}";
1194
+ } else {
1195
+ return content;
1196
+ }
1197
+ }).join("");
1198
+ };
1199
+
1200
+ // import a list of modules into the list
1201
+ list.i = function(modules, mediaQuery) {
1202
+ if(typeof modules === "string")
1203
+ modules = [[null, modules, ""]];
1204
+ var alreadyImportedModules = {};
1205
+ for(var i = 0; i < this.length; i++) {
1206
+ var id = this[i][0];
1207
+ if(typeof id === "number")
1208
+ alreadyImportedModules[id] = true;
1209
+ }
1210
+ for(i = 0; i < modules.length; i++) {
1211
+ var item = modules[i];
1212
+ // skip already imported module
1213
+ // this implementation is not 100% perfect for weird media query combinations
1214
+ // when a module is imported multiple times with different media queries.
1215
+ // I hope this will never occur (Hey this way we have smaller bundles)
1216
+ if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
1217
+ if(mediaQuery && !item[2]) {
1218
+ item[2] = mediaQuery;
1219
+ } else if(mediaQuery) {
1220
+ item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
1221
+ }
1222
+ list.push(item);
1223
+ }
1224
+ }
1225
+ };
1226
+ return list;
1227
+ };
1228
+
1229
+ function cssWithMappingToString(item, useSourceMap) {
1230
+ var content = item[1] || '';
1231
+ var cssMapping = item[3];
1232
+ if (!cssMapping) {
1233
+ return content;
1234
+ }
1235
+
1236
+ if (useSourceMap && typeof btoa === 'function') {
1237
+ var sourceMapping = toComment(cssMapping);
1238
+ var sourceURLs = cssMapping.sources.map(function (source) {
1239
+ return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'
1240
+ });
1241
+
1242
+ return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
1243
+ }
1244
+
1245
+ return [content].join('\n');
1246
+ }
1247
+
1248
+ // Adapted from convert-source-map (MIT)
1249
+ function toComment(sourceMap) {
1250
+ // eslint-disable-next-line no-undef
1251
+ var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
1252
+ var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;
1253
+
1254
+ return '/*# ' + data + ' */';
1255
+ }
1256
+
1257
+
1258
+ /***/ }),
1259
+ /* 33 */
1260
+ /***/ (function(module, exports, __webpack_require__) {
1261
+
1262
+ /*
1263
+ MIT License http://www.opensource.org/licenses/mit-license.php
1264
+ Author Tobias Koppers @sokra
1265
+ */
1266
+
1267
+ var stylesInDom = {};
1268
+
1269
+ var memoize = function (fn) {
1270
+ var memo;
1271
+
1272
+ return function () {
1273
+ if (typeof memo === "undefined") memo = fn.apply(this, arguments);
1274
+ return memo;
1275
+ };
1276
+ };
1277
+
1278
+ var isOldIE = memoize(function () {
1279
+ // Test for IE <= 9 as proposed by Browserhacks
1280
+ // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
1281
+ // Tests for existence of standard globals is to allow style-loader
1282
+ // to operate correctly into non-standard environments
1283
+ // @see https://github.com/webpack-contrib/style-loader/issues/177
1284
+ return window && document && document.all && !window.atob;
1285
+ });
1286
+
1287
+ var getElement = (function (fn) {
1288
+ var memo = {};
1289
+
1290
+ return function(selector) {
1291
+ if (typeof memo[selector] === "undefined") {
1292
+ var styleTarget = fn.call(this, selector);
1293
+ // Special case to return head of iframe instead of iframe itself
1294
+ if (styleTarget instanceof window.HTMLIFrameElement) {
1295
+ try {
1296
+ // This will throw an exception if access to iframe is blocked
1297
+ // due to cross-origin restrictions
1298
+ styleTarget = styleTarget.contentDocument.head;
1299
+ } catch(e) {
1300
+ styleTarget = null;
1301
+ }
1302
+ }
1303
+ memo[selector] = styleTarget;
1304
+ }
1305
+ return memo[selector]
1306
+ };
1307
+ })(function (target) {
1308
+ return document.querySelector(target)
1309
+ });
1310
+
1311
+ var singleton = null;
1312
+ var singletonCounter = 0;
1313
+ var stylesInsertedAtTop = [];
1314
+
1315
+ var fixUrls = __webpack_require__(740);
1316
+
1317
+ module.exports = function(list, options) {
1318
+ if (typeof DEBUG !== "undefined" && DEBUG) {
1319
+ if (typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
1320
+ }
1321
+
1322
+ options = options || {};
1323
+
1324
+ options.attrs = typeof options.attrs === "object" ? options.attrs : {};
1325
+
1326
+ // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
1327
+ // tags it will allow on a page
1328
+ if (!options.singleton) options.singleton = isOldIE();
1329
+
1330
+ // By default, add <style> tags to the <head> element
1331
+ if (!options.insertInto) options.insertInto = "head";
1332
+
1333
+ // By default, add <style> tags to the bottom of the target
1334
+ if (!options.insertAt) options.insertAt = "bottom";
1335
+
1336
+ var styles = listToStyles(list, options);
1337
+
1338
+ addStylesToDom(styles, options);
1339
+
1340
+ return function update (newList) {
1341
+ var mayRemove = [];
1342
+
1343
+ for (var i = 0; i < styles.length; i++) {
1344
+ var item = styles[i];
1345
+ var domStyle = stylesInDom[item.id];
1346
+
1347
+ domStyle.refs--;
1348
+ mayRemove.push(domStyle);
1349
+ }
1350
+
1351
+ if(newList) {
1352
+ var newStyles = listToStyles(newList, options);
1353
+ addStylesToDom(newStyles, options);
1354
+ }
1355
+
1356
+ for (var i = 0; i < mayRemove.length; i++) {
1357
+ var domStyle = mayRemove[i];
1358
+
1359
+ if(domStyle.refs === 0) {
1360
+ for (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();
1361
+
1362
+ delete stylesInDom[domStyle.id];
1363
+ }
1364
+ }
1365
+ };
1366
+ };
1367
+
1368
+ function addStylesToDom (styles, options) {
1369
+ for (var i = 0; i < styles.length; i++) {
1370
+ var item = styles[i];
1371
+ var domStyle = stylesInDom[item.id];
1372
+
1373
+ if(domStyle) {
1374
+ domStyle.refs++;
1375
+
1376
+ for(var j = 0; j < domStyle.parts.length; j++) {
1377
+ domStyle.parts[j](item.parts[j]);
1378
+ }
1379
+
1380
+ for(; j < item.parts.length; j++) {
1381
+ domStyle.parts.push(addStyle(item.parts[j], options));
1382
+ }
1383
+ } else {
1384
+ var parts = [];
1385
+
1386
+ for(var j = 0; j < item.parts.length; j++) {
1387
+ parts.push(addStyle(item.parts[j], options));
1388
+ }
1389
+
1390
+ stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
1391
+ }
1392
+ }
1393
+ }
1394
+
1395
+ function listToStyles (list, options) {
1396
+ var styles = [];
1397
+ var newStyles = {};
1398
+
1399
+ for (var i = 0; i < list.length; i++) {
1400
+ var item = list[i];
1401
+ var id = options.base ? item[0] + options.base : item[0];
1402
+ var css = item[1];
1403
+ var media = item[2];
1404
+ var sourceMap = item[3];
1405
+ var part = {css: css, media: media, sourceMap: sourceMap};
1406
+
1407
+ if(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});
1408
+ else newStyles[id].parts.push(part);
1409
+ }
1410
+
1411
+ return styles;
1412
+ }
1413
+
1414
+ function insertStyleElement (options, style) {
1415
+ var target = getElement(options.insertInto)
1416
+
1417
+ if (!target) {
1418
+ throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");
1419
+ }
1420
+
1421
+ var lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];
1422
+
1423
+ if (options.insertAt === "top") {
1424
+ if (!lastStyleElementInsertedAtTop) {
1425
+ target.insertBefore(style, target.firstChild);
1426
+ } else if (lastStyleElementInsertedAtTop.nextSibling) {
1427
+ target.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);
1428
+ } else {
1429
+ target.appendChild(style);
1430
+ }
1431
+ stylesInsertedAtTop.push(style);
1432
+ } else if (options.insertAt === "bottom") {
1433
+ target.appendChild(style);
1434
+ } else if (typeof options.insertAt === "object" && options.insertAt.before) {
1435
+ var nextSibling = getElement(options.insertInto + " " + options.insertAt.before);
1436
+ target.insertBefore(style, nextSibling);
1437
+ } else {
1438
+ throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");
1439
+ }
1440
+ }
1441
+
1442
+ function removeStyleElement (style) {
1443
+ if (style.parentNode === null) return false;
1444
+ style.parentNode.removeChild(style);
1445
+
1446
+ var idx = stylesInsertedAtTop.indexOf(style);
1447
+ if(idx >= 0) {
1448
+ stylesInsertedAtTop.splice(idx, 1);
1449
+ }
1450
+ }
1451
+
1452
+ function createStyleElement (options) {
1453
+ var style = document.createElement("style");
1454
+
1455
+ options.attrs.type = "text/css";
1456
+
1457
+ addAttrs(style, options.attrs);
1458
+ insertStyleElement(options, style);
1459
+
1460
+ return style;
1461
+ }
1462
+
1463
+ function createLinkElement (options) {
1464
+ var link = document.createElement("link");
1465
+
1466
+ options.attrs.type = "text/css";
1467
+ options.attrs.rel = "stylesheet";
1468
+
1469
+ addAttrs(link, options.attrs);
1470
+ insertStyleElement(options, link);
1471
+
1472
+ return link;
1473
+ }
1474
+
1475
+ function addAttrs (el, attrs) {
1476
+ Object.keys(attrs).forEach(function (key) {
1477
+ el.setAttribute(key, attrs[key]);
1478
+ });
1479
+ }
1480
+
1481
+ function addStyle (obj, options) {
1482
+ var style, update, remove, result;
1483
+
1484
+ // If a transform function was defined, run it on the css
1485
+ if (options.transform && obj.css) {
1486
+ result = options.transform(obj.css);
1487
+
1488
+ if (result) {
1489
+ // If transform returns a value, use that instead of the original css.
1490
+ // This allows running runtime transformations on the css.
1491
+ obj.css = result;
1492
+ } else {
1493
+ // If the transform function returns a falsy value, don't add this css.
1494
+ // This allows conditional loading of css
1495
+ return function() {
1496
+ // noop
1497
+ };
1498
+ }
1499
+ }
1500
+
1501
+ if (options.singleton) {
1502
+ var styleIndex = singletonCounter++;
1503
+
1504
+ style = singleton || (singleton = createStyleElement(options));
1505
+
1506
+ update = applyToSingletonTag.bind(null, style, styleIndex, false);
1507
+ remove = applyToSingletonTag.bind(null, style, styleIndex, true);
1508
+
1509
+ } else if (
1510
+ obj.sourceMap &&
1511
+ typeof URL === "function" &&
1512
+ typeof URL.createObjectURL === "function" &&
1513
+ typeof URL.revokeObjectURL === "function" &&
1514
+ typeof Blob === "function" &&
1515
+ typeof btoa === "function"
1516
+ ) {
1517
+ style = createLinkElement(options);
1518
+ update = updateLink.bind(null, style, options);
1519
+ remove = function () {
1520
+ removeStyleElement(style);
1521
+
1522
+ if(style.href) URL.revokeObjectURL(style.href);
1523
+ };
1524
+ } else {
1525
+ style = createStyleElement(options);
1526
+ update = applyToTag.bind(null, style);
1527
+ remove = function () {
1528
+ removeStyleElement(style);
1529
+ };
1530
+ }
1531
+
1532
+ update(obj);
1533
+
1534
+ return function updateStyle (newObj) {
1535
+ if (newObj) {
1536
+ if (
1537
+ newObj.css === obj.css &&
1538
+ newObj.media === obj.media &&
1539
+ newObj.sourceMap === obj.sourceMap
1540
+ ) {
1541
+ return;
1542
+ }
1543
+
1544
+ update(obj = newObj);
1545
+ } else {
1546
+ remove();
1547
+ }
1548
+ };
1549
+ }
1550
+
1551
+ var replaceText = (function () {
1552
+ var textStore = [];
1553
+
1554
+ return function (index, replacement) {
1555
+ textStore[index] = replacement;
1556
+
1557
+ return textStore.filter(Boolean).join('\n');
1558
+ };
1559
+ })();
1560
+
1561
+ function applyToSingletonTag (style, index, remove, obj) {
1562
+ var css = remove ? "" : obj.css;
1563
+
1564
+ if (style.styleSheet) {
1565
+ style.styleSheet.cssText = replaceText(index, css);
1566
+ } else {
1567
+ var cssNode = document.createTextNode(css);
1568
+ var childNodes = style.childNodes;
1569
+
1570
+ if (childNodes[index]) style.removeChild(childNodes[index]);
1571
+
1572
+ if (childNodes.length) {
1573
+ style.insertBefore(cssNode, childNodes[index]);
1574
+ } else {
1575
+ style.appendChild(cssNode);
1576
+ }
1577
+ }
1578
+ }
1579
+
1580
+ function applyToTag (style, obj) {
1581
+ var css = obj.css;
1582
+ var media = obj.media;
1583
+
1584
+ if(media) {
1585
+ style.setAttribute("media", media)
1586
+ }
1587
+
1588
+ if(style.styleSheet) {
1589
+ style.styleSheet.cssText = css;
1590
+ } else {
1591
+ while(style.firstChild) {
1592
+ style.removeChild(style.firstChild);
1593
+ }
1594
+
1595
+ style.appendChild(document.createTextNode(css));
1596
+ }
1597
+ }
1598
+
1599
+ function updateLink (link, options, obj) {
1600
+ var css = obj.css;
1601
+ var sourceMap = obj.sourceMap;
1602
+
1603
+ /*
1604
+ If convertToAbsoluteUrls isn't defined, but sourcemaps are enabled
1605
+ and there is no publicPath defined then lets turn convertToAbsoluteUrls
1606
+ on by default. Otherwise default to the convertToAbsoluteUrls option
1607
+ directly
1608
+ */
1609
+ var autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;
1610
+
1611
+ if (options.convertToAbsoluteUrls || autoFixUrls) {
1612
+ css = fixUrls(css);
1613
+ }
1614
+
1615
+ if (sourceMap) {
1616
+ // http://stackoverflow.com/a/26603875
1617
+ css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
1618
+ }
1619
+
1620
+ var blob = new Blob([css], { type: "text/css" });
1621
+
1622
+ var oldSrc = link.href;
1623
+
1624
+ link.href = URL.createObjectURL(blob);
1625
+
1626
+ if(oldSrc) URL.revokeObjectURL(oldSrc);
1627
+ }
1628
+
1629
+
1630
+ /***/ }),
1631
+ /* 34 */
1632
+ /***/ (function(module, exports) {
1633
+
1634
+ var g;
1635
+
1636
+ // This works in non-strict mode
1637
+ g = (function() {
1638
+ return this;
1639
+ })();
1640
+
1641
+ try {
1642
+ // This works if eval is allowed (see CSP)
1643
+ g = g || Function("return this")() || (1,eval)("this");
1644
+ } catch(e) {
1645
+ // This works if the window reference is available
1646
+ if(typeof window === "object")
1647
+ g = window;
1648
+ }
1649
+
1650
+ // g can still be undefined, but nothing to do about it...
1651
+ // We return undefined, instead of nothing here, so it's
1652
+ // easier to handle this case. if(!global) { ...}
1653
+
1654
+ module.exports = g;
1655
+
1656
+
1657
+ /***/ }),
1658
+ /* 35 */
1659
+ /***/ (function(module, exports, __webpack_require__) {
1660
+
1661
+ // optional / simple context binding
1662
+ var aFunction = __webpack_require__(20);
1663
+ module.exports = function (fn, that, length) {
1664
+ aFunction(fn);
1665
+ if (that === undefined) return fn;
1666
+ switch (length) {
1667
+ case 1: return function (a) {
1668
+ return fn.call(that, a);
1669
+ };
1670
+ case 2: return function (a, b) {
1671
+ return fn.call(that, a, b);
1672
+ };
1673
+ case 3: return function (a, b, c) {
1674
+ return fn.call(that, a, b, c);
1675
+ };
1676
+ }
1677
+ return function (/* ...args */) {
1678
+ return fn.apply(that, arguments);
1679
+ };
1680
+ };
1681
+
1682
+
1683
+ /***/ }),
1684
+ /* 36 */
1685
+ /***/ (function(module, exports) {
1686
+
1687
+ var toString = {}.toString;
1688
+
1689
+ module.exports = function (it) {
1690
+ return toString.call(it).slice(8, -1);
1691
+ };
1692
+
1693
+
1694
+ /***/ }),
1695
+ /* 37 */
1696
+ /***/ (function(module, exports, __webpack_require__) {
1697
+
1698
+ "use strict";
1699
+
1700
+ var fails = __webpack_require__(5);
1701
+
1702
+ module.exports = function (method, arg) {
1703
+ return !!method && fails(function () {
1704
+ // eslint-disable-next-line no-useless-call
1705
+ arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);
1706
+ });
1707
+ };
1708
+
1709
+
1710
+ /***/ }),
1711
+ /* 38 */
1712
+ /***/ (function(module, exports) {
1713
+
1714
+ var core = module.exports = { version: '2.5.3' };
1715
+ if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
1716
+
1717
+
1718
+ /***/ }),
1719
+ /* 39 */
1720
+ /***/ (function(module, exports, __webpack_require__) {
1721
+
1722
+ // 7.1.1 ToPrimitive(input [, PreferredType])
1723
+ var isObject = __webpack_require__(6);
1724
+ // instead of the ES6 spec version, we didn't implement @@toPrimitive case
1725
+ // and the second argument - flag - preferred type is a string
1726
+ module.exports = function (it, S) {
1727
+ if (!isObject(it)) return it;
1728
+ var fn, val;
1729
+ if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
1730
+ if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
1731
+ if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
1732
+ throw TypeError("Can't convert object to primitive value");
1733
+ };
1734
+
1735
+
1736
+ /***/ }),
1737
+ /* 40 */
1738
+ /***/ (function(module, exports) {
1739
+
1740
+ // 7.2.1 RequireObjectCoercible(argument)
1741
+ module.exports = function (it) {
1742
+ if (it == undefined) throw TypeError("Can't call method on " + it);
1743
+ return it;
1744
+ };
1745
+
1746
+
1747
+ /***/ }),
1748
+ /* 41 */
1749
+ /***/ (function(module, exports) {
1750
+
1751
+ // 7.1.4 ToInteger
1752
+ var ceil = Math.ceil;
1753
+ var floor = Math.floor;
1754
+ module.exports = function (it) {
1755
+ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
1756
+ };
1757
+
1758
+
1759
+ /***/ }),
1760
+ /* 42 */
1761
+ /***/ (function(module, exports, __webpack_require__) {
1762
+
1763
+ // most Object methods by ES6 should accept primitives
1764
+ var $export = __webpack_require__(1);
1765
+ var core = __webpack_require__(38);
1766
+ var fails = __webpack_require__(5);
1767
+ module.exports = function (KEY, exec) {
1768
+ var fn = (core.Object || {})[KEY] || Object[KEY];
1769
+ var exp = {};
1770
+ exp[KEY] = exec(fn);
1771
+ $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
1772
+ };
1773
+
1774
+
1775
+ /***/ }),
1776
+ /* 43 */
1777
+ /***/ (function(module, exports, __webpack_require__) {
1778
+
1779
+ // 0 -> Array#forEach
1780
+ // 1 -> Array#map
1781
+ // 2 -> Array#filter
1782
+ // 3 -> Array#some
1783
+ // 4 -> Array#every
1784
+ // 5 -> Array#find
1785
+ // 6 -> Array#findIndex
1786
+ var ctx = __webpack_require__(35);
1787
+ var IObject = __webpack_require__(84);
1788
+ var toObject = __webpack_require__(18);
1789
+ var toLength = __webpack_require__(16);
1790
+ var asc = __webpack_require__(148);
1791
+ module.exports = function (TYPE, $create) {
1792
+ var IS_MAP = TYPE == 1;
1793
+ var IS_FILTER = TYPE == 2;
1794
+ var IS_SOME = TYPE == 3;
1795
+ var IS_EVERY = TYPE == 4;
1796
+ var IS_FIND_INDEX = TYPE == 6;
1797
+ var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
1798
+ var create = $create || asc;
1799
+ return function ($this, callbackfn, that) {
1800
+ var O = toObject($this);
1801
+ var self = IObject(O);
1802
+ var f = ctx(callbackfn, that, 3);
1803
+ var length = toLength(self.length);
1804
+ var index = 0;
1805
+ var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
1806
+ var val, res;
1807
+ for (;length > index; index++) if (NO_HOLES || index in self) {
1808
+ val = self[index];
1809
+ res = f(val, index, O);
1810
+ if (TYPE) {
1811
+ if (IS_MAP) result[index] = res; // map
1812
+ else if (res) switch (TYPE) {
1813
+ case 3: return true; // some
1814
+ case 5: return val; // find
1815
+ case 6: return index; // findIndex
1816
+ case 2: result.push(val); // filter
1817
+ } else if (IS_EVERY) return false; // every
1818
+ }
1819
+ }
1820
+ return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
1821
+ };
1822
+ };
1823
+
1824
+
1825
+ /***/ }),
1826
+ /* 44 */
1827
+ /***/ (function(module, exports, __webpack_require__) {
1828
+
1829
+ "use strict";
1830
+
1831
+ if (__webpack_require__(14)) {
1832
+ var LIBRARY = __webpack_require__(55);
1833
+ var global = __webpack_require__(4);
1834
+ var fails = __webpack_require__(5);
1835
+ var $export = __webpack_require__(1);
1836
+ var $typed = __webpack_require__(107);
1837
+ var $buffer = __webpack_require__(154);
1838
+ var ctx = __webpack_require__(35);
1839
+ var anInstance = __webpack_require__(61);
1840
+ var propertyDesc = __webpack_require__(53);
1841
+ var hide = __webpack_require__(25);
1842
+ var redefineAll = __webpack_require__(63);
1843
+ var toInteger = __webpack_require__(41);
1844
+ var toLength = __webpack_require__(16);
1845
+ var toIndex = __webpack_require__(221);
1846
+ var toAbsoluteIndex = __webpack_require__(57);
1847
+ var toPrimitive = __webpack_require__(39);
1848
+ var has = __webpack_require__(24);
1849
+ var classof = __webpack_require__(86);
1850
+ var isObject = __webpack_require__(6);
1851
+ var toObject = __webpack_require__(18);
1852
+ var isArrayIter = __webpack_require__(145);
1853
+ var create = __webpack_require__(58);
1854
+ var getPrototypeOf = __webpack_require__(31);
1855
+ var gOPN = __webpack_require__(59).f;
1856
+ var getIterFn = __webpack_require__(147);
1857
+ var uid = __webpack_require__(54);
1858
+ var wks = __webpack_require__(9);
1859
+ var createArrayMethod = __webpack_require__(43);
1860
+ var createArrayIncludes = __webpack_require__(98);
1861
+ var speciesConstructor = __webpack_require__(105);
1862
+ var ArrayIterators = __webpack_require__(150);
1863
+ var Iterators = __webpack_require__(74);
1864
+ var $iterDetect = __webpack_require__(102);
1865
+ var setSpecies = __webpack_require__(60);
1866
+ var arrayFill = __webpack_require__(149);
1867
+ var arrayCopyWithin = __webpack_require__(211);
1868
+ var $DP = __webpack_require__(15);
1869
+ var $GOPD = __webpack_require__(30);
1870
+ var dP = $DP.f;
1871
+ var gOPD = $GOPD.f;
1872
+ var RangeError = global.RangeError;
1873
+ var TypeError = global.TypeError;
1874
+ var Uint8Array = global.Uint8Array;
1875
+ var ARRAY_BUFFER = 'ArrayBuffer';
1876
+ var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;
1877
+ var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';
1878
+ var PROTOTYPE = 'prototype';
1879
+ var ArrayProto = Array[PROTOTYPE];
1880
+ var $ArrayBuffer = $buffer.ArrayBuffer;
1881
+ var $DataView = $buffer.DataView;
1882
+ var arrayForEach = createArrayMethod(0);
1883
+ var arrayFilter = createArrayMethod(2);
1884
+ var arraySome = createArrayMethod(3);
1885
+ var arrayEvery = createArrayMethod(4);
1886
+ var arrayFind = createArrayMethod(5);
1887
+ var arrayFindIndex = createArrayMethod(6);
1888
+ var arrayIncludes = createArrayIncludes(true);
1889
+ var arrayIndexOf = createArrayIncludes(false);
1890
+ var arrayValues = ArrayIterators.values;
1891
+ var arrayKeys = ArrayIterators.keys;
1892
+ var arrayEntries = ArrayIterators.entries;
1893
+ var arrayLastIndexOf = ArrayProto.lastIndexOf;
1894
+ var arrayReduce = ArrayProto.reduce;
1895
+ var arrayReduceRight = ArrayProto.reduceRight;
1896
+ var arrayJoin = ArrayProto.join;
1897
+ var arraySort = ArrayProto.sort;
1898
+ var arraySlice = ArrayProto.slice;
1899
+ var arrayToString = ArrayProto.toString;
1900
+ var arrayToLocaleString = ArrayProto.toLocaleString;
1901
+ var ITERATOR = wks('iterator');
1902
+ var TAG = wks('toStringTag');
1903
+ var TYPED_CONSTRUCTOR = uid('typed_constructor');
1904
+ var DEF_CONSTRUCTOR = uid('def_constructor');
1905
+ var ALL_CONSTRUCTORS = $typed.CONSTR;
1906
+ var TYPED_ARRAY = $typed.TYPED;
1907
+ var VIEW = $typed.VIEW;
1908
+ var WRONG_LENGTH = 'Wrong length!';
1909
+
1910
+ var $map = createArrayMethod(1, function (O, length) {
1911
+ return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
1912
+ });
1913
+
1914
+ var LITTLE_ENDIAN = fails(function () {
1915
+ // eslint-disable-next-line no-undef
1916
+ return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
1917
+ });
1918
+
1919
+ var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {
1920
+ new Uint8Array(1).set({});
1921
+ });
1922
+
1923
+ var toOffset = function (it, BYTES) {
1924
+ var offset = toInteger(it);
1925
+ if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');
1926
+ return offset;
1927
+ };
1928
+
1929
+ var validate = function (it) {
1930
+ if (isObject(it) && TYPED_ARRAY in it) return it;
1931
+ throw TypeError(it + ' is not a typed array!');
1932
+ };
1933
+
1934
+ var allocate = function (C, length) {
1935
+ if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {
1936
+ throw TypeError('It is not a typed array constructor!');
1937
+ } return new C(length);
1938
+ };
1939
+
1940
+ var speciesFromList = function (O, list) {
1941
+ return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);
1942
+ };
1943
+
1944
+ var fromList = function (C, list) {
1945
+ var index = 0;
1946
+ var length = list.length;
1947
+ var result = allocate(C, length);
1948
+ while (length > index) result[index] = list[index++];
1949
+ return result;
1950
+ };
1951
+
1952
+ var addGetter = function (it, key, internal) {
1953
+ dP(it, key, { get: function () { return this._d[internal]; } });
1954
+ };
1955
+
1956
+ var $from = function from(source /* , mapfn, thisArg */) {
1957
+ var O = toObject(source);
1958
+ var aLen = arguments.length;
1959
+ var mapfn = aLen > 1 ? arguments[1] : undefined;
1960
+ var mapping = mapfn !== undefined;
1961
+ var iterFn = getIterFn(O);
1962
+ var i, length, values, result, step, iterator;
1963
+ if (iterFn != undefined && !isArrayIter(iterFn)) {
1964
+ for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {
1965
+ values.push(step.value);
1966
+ } O = values;
1967
+ }
1968
+ if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);
1969
+ for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {
1970
+ result[i] = mapping ? mapfn(O[i], i) : O[i];
1971
+ }
1972
+ return result;
1973
+ };
1974
+
1975
+ var $of = function of(/* ...items */) {
1976
+ var index = 0;
1977
+ var length = arguments.length;
1978
+ var result = allocate(this, length);
1979
+ while (length > index) result[index] = arguments[index++];
1980
+ return result;
1981
+ };
1982
+
1983
+ // iOS Safari 6.x fails here
1984
+ var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });
1985
+
1986
+ var $toLocaleString = function toLocaleString() {
1987
+ return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);
1988
+ };
1989
+
1990
+ var proto = {
1991
+ copyWithin: function copyWithin(target, start /* , end */) {
1992
+ return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
1993
+ },
1994
+ every: function every(callbackfn /* , thisArg */) {
1995
+ return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
1996
+ },
1997
+ fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars
1998
+ return arrayFill.apply(validate(this), arguments);
1999
+ },
2000
+ filter: function filter(callbackfn /* , thisArg */) {
2001
+ return speciesFromList(this, arrayFilter(validate(this), callbackfn,
2002
+ arguments.length > 1 ? arguments[1] : undefined));
2003
+ },
2004
+ find: function find(predicate /* , thisArg */) {
2005
+ return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
2006
+ },
2007
+ findIndex: function findIndex(predicate /* , thisArg */) {
2008
+ return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
2009
+ },
2010
+ forEach: function forEach(callbackfn /* , thisArg */) {
2011
+ arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
2012
+ },
2013
+ indexOf: function indexOf(searchElement /* , fromIndex */) {
2014
+ return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
2015
+ },
2016
+ includes: function includes(searchElement /* , fromIndex */) {
2017
+ return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
2018
+ },
2019
+ join: function join(separator) { // eslint-disable-line no-unused-vars
2020
+ return arrayJoin.apply(validate(this), arguments);
2021
+ },
2022
+ lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars
2023
+ return arrayLastIndexOf.apply(validate(this), arguments);
2024
+ },
2025
+ map: function map(mapfn /* , thisArg */) {
2026
+ return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);
2027
+ },
2028
+ reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars
2029
+ return arrayReduce.apply(validate(this), arguments);
2030
+ },
2031
+ reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars
2032
+ return arrayReduceRight.apply(validate(this), arguments);
2033
+ },
2034
+ reverse: function reverse() {
2035
+ var that = this;
2036
+ var length = validate(that).length;
2037
+ var middle = Math.floor(length / 2);
2038
+ var index = 0;
2039
+ var value;
2040
+ while (index < middle) {
2041
+ value = that[index];
2042
+ that[index++] = that[--length];
2043
+ that[length] = value;
2044
+ } return that;
2045
+ },
2046
+ some: function some(callbackfn /* , thisArg */) {
2047
+ return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
2048
+ },
2049
+ sort: function sort(comparefn) {
2050
+ return arraySort.call(validate(this), comparefn);
2051
+ },
2052
+ subarray: function subarray(begin, end) {
2053
+ var O = validate(this);
2054
+ var length = O.length;
2055
+ var $begin = toAbsoluteIndex(begin, length);
2056
+ return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(
2057
+ O.buffer,
2058
+ O.byteOffset + $begin * O.BYTES_PER_ELEMENT,
2059
+ toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)
2060
+ );
2061
+ }
2062
+ };
2063
+
2064
+ var $slice = function slice(start, end) {
2065
+ return speciesFromList(this, arraySlice.call(validate(this), start, end));
2066
+ };
2067
+
2068
+ var $set = function set(arrayLike /* , offset */) {
2069
+ validate(this);
2070
+ var offset = toOffset(arguments[1], 1);
2071
+ var length = this.length;
2072
+ var src = toObject(arrayLike);
2073
+ var len = toLength(src.length);
2074
+ var index = 0;
2075
+ if (len + offset > length) throw RangeError(WRONG_LENGTH);
2076
+ while (index < len) this[offset + index] = src[index++];
2077
+ };
2078
+
2079
+ var $iterators = {
2080
+ entries: function entries() {
2081
+ return arrayEntries.call(validate(this));
2082
+ },
2083
+ keys: function keys() {
2084
+ return arrayKeys.call(validate(this));
2085
+ },
2086
+ values: function values() {
2087
+ return arrayValues.call(validate(this));
2088
+ }
2089
+ };
2090
+
2091
+ var isTAIndex = function (target, key) {
2092
+ return isObject(target)
2093
+ && target[TYPED_ARRAY]
2094
+ && typeof key != 'symbol'
2095
+ && key in target
2096
+ && String(+key) == String(key);
2097
+ };
2098
+ var $getDesc = function getOwnPropertyDescriptor(target, key) {
2099
+ return isTAIndex(target, key = toPrimitive(key, true))
2100
+ ? propertyDesc(2, target[key])
2101
+ : gOPD(target, key);
2102
+ };
2103
+ var $setDesc = function defineProperty(target, key, desc) {
2104
+ if (isTAIndex(target, key = toPrimitive(key, true))
2105
+ && isObject(desc)
2106
+ && has(desc, 'value')
2107
+ && !has(desc, 'get')
2108
+ && !has(desc, 'set')
2109
+ // TODO: add validation descriptor w/o calling accessors
2110
+ && !desc.configurable
2111
+ && (!has(desc, 'writable') || desc.writable)
2112
+ && (!has(desc, 'enumerable') || desc.enumerable)
2113
+ ) {
2114
+ target[key] = desc.value;
2115
+ return target;
2116
+ } return dP(target, key, desc);
2117
+ };
2118
+
2119
+ if (!ALL_CONSTRUCTORS) {
2120
+ $GOPD.f = $getDesc;
2121
+ $DP.f = $setDesc;
2122
+ }
2123
+
2124
+ $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {
2125
+ getOwnPropertyDescriptor: $getDesc,
2126
+ defineProperty: $setDesc
2127
+ });
2128
+
2129
+ if (fails(function () { arrayToString.call({}); })) {
2130
+ arrayToString = arrayToLocaleString = function toString() {
2131
+ return arrayJoin.call(this);
2132
+ };
2133
+ }
2134
+
2135
+ var $TypedArrayPrototype$ = redefineAll({}, proto);
2136
+ redefineAll($TypedArrayPrototype$, $iterators);
2137
+ hide($TypedArrayPrototype$, ITERATOR, $iterators.values);
2138
+ redefineAll($TypedArrayPrototype$, {
2139
+ slice: $slice,
2140
+ set: $set,
2141
+ constructor: function () { /* noop */ },
2142
+ toString: arrayToString,
2143
+ toLocaleString: $toLocaleString
2144
+ });
2145
+ addGetter($TypedArrayPrototype$, 'buffer', 'b');
2146
+ addGetter($TypedArrayPrototype$, 'byteOffset', 'o');
2147
+ addGetter($TypedArrayPrototype$, 'byteLength', 'l');
2148
+ addGetter($TypedArrayPrototype$, 'length', 'e');
2149
+ dP($TypedArrayPrototype$, TAG, {
2150
+ get: function () { return this[TYPED_ARRAY]; }
2151
+ });
2152
+
2153
+ // eslint-disable-next-line max-statements
2154
+ module.exports = function (KEY, BYTES, wrapper, CLAMPED) {
2155
+ CLAMPED = !!CLAMPED;
2156
+ var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';
2157
+ var GETTER = 'get' + KEY;
2158
+ var SETTER = 'set' + KEY;
2159
+ var TypedArray = global[NAME];
2160
+ var Base = TypedArray || {};
2161
+ var TAC = TypedArray && getPrototypeOf(TypedArray);
2162
+ var FORCED = !TypedArray || !$typed.ABV;
2163
+ var O = {};
2164
+ var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];
2165
+ var getter = function (that, index) {
2166
+ var data = that._d;
2167
+ return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);
2168
+ };
2169
+ var setter = function (that, index, value) {
2170
+ var data = that._d;
2171
+ if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;
2172
+ data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);
2173
+ };
2174
+ var addElement = function (that, index) {
2175
+ dP(that, index, {
2176
+ get: function () {
2177
+ return getter(this, index);
2178
+ },
2179
+ set: function (value) {
2180
+ return setter(this, index, value);
2181
+ },
2182
+ enumerable: true
2183
+ });
2184
+ };
2185
+ if (FORCED) {
2186
+ TypedArray = wrapper(function (that, data, $offset, $length) {
2187
+ anInstance(that, TypedArray, NAME, '_d');
2188
+ var index = 0;
2189
+ var offset = 0;
2190
+ var buffer, byteLength, length, klass;
2191
+ if (!isObject(data)) {
2192
+ length = toIndex(data);
2193
+ byteLength = length * BYTES;
2194
+ buffer = new $ArrayBuffer(byteLength);
2195
+ } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {
2196
+ buffer = data;
2197
+ offset = toOffset($offset, BYTES);
2198
+ var $len = data.byteLength;
2199
+ if ($length === undefined) {
2200
+ if ($len % BYTES) throw RangeError(WRONG_LENGTH);
2201
+ byteLength = $len - offset;
2202
+ if (byteLength < 0) throw RangeError(WRONG_LENGTH);
2203
+ } else {
2204
+ byteLength = toLength($length) * BYTES;
2205
+ if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);
2206
+ }
2207
+ length = byteLength / BYTES;
2208
+ } else if (TYPED_ARRAY in data) {
2209
+ return fromList(TypedArray, data);
2210
+ } else {
2211
+ return $from.call(TypedArray, data);
2212
+ }
2213
+ hide(that, '_d', {
2214
+ b: buffer,
2215
+ o: offset,
2216
+ l: byteLength,
2217
+ e: length,
2218
+ v: new $DataView(buffer)
2219
+ });
2220
+ while (index < length) addElement(that, index++);
2221
+ });
2222
+ TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);
2223
+ hide(TypedArrayPrototype, 'constructor', TypedArray);
2224
+ } else if (!fails(function () {
2225
+ TypedArray(1);
2226
+ }) || !fails(function () {
2227
+ new TypedArray(-1); // eslint-disable-line no-new
2228
+ }) || !$iterDetect(function (iter) {
2229
+ new TypedArray(); // eslint-disable-line no-new
2230
+ new TypedArray(null); // eslint-disable-line no-new
2231
+ new TypedArray(1.5); // eslint-disable-line no-new
2232
+ new TypedArray(iter); // eslint-disable-line no-new
2233
+ }, true)) {
2234
+ TypedArray = wrapper(function (that, data, $offset, $length) {
2235
+ anInstance(that, TypedArray, NAME);
2236
+ var klass;
2237
+ // `ws` module bug, temporarily remove validation length for Uint8Array
2238
+ // https://github.com/websockets/ws/pull/645
2239
+ if (!isObject(data)) return new Base(toIndex(data));
2240
+ if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {
2241
+ return $length !== undefined
2242
+ ? new Base(data, toOffset($offset, BYTES), $length)
2243
+ : $offset !== undefined
2244
+ ? new Base(data, toOffset($offset, BYTES))
2245
+ : new Base(data);
2246
+ }
2247
+ if (TYPED_ARRAY in data) return fromList(TypedArray, data);
2248
+ return $from.call(TypedArray, data);
2249
+ });
2250
+ arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {
2251
+ if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);
2252
+ });
2253
+ TypedArray[PROTOTYPE] = TypedArrayPrototype;
2254
+ if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;
2255
+ }
2256
+ var $nativeIterator = TypedArrayPrototype[ITERATOR];
2257
+ var CORRECT_ITER_NAME = !!$nativeIterator
2258
+ && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);
2259
+ var $iterator = $iterators.values;
2260
+ hide(TypedArray, TYPED_CONSTRUCTOR, true);
2261
+ hide(TypedArrayPrototype, TYPED_ARRAY, NAME);
2262
+ hide(TypedArrayPrototype, VIEW, true);
2263
+ hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);
2264
+
2265
+ if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {
2266
+ dP(TypedArrayPrototype, TAG, {
2267
+ get: function () { return NAME; }
2268
+ });
2269
+ }
2270
+
2271
+ O[NAME] = TypedArray;
2272
+
2273
+ $export($export.G + $export.W + $export.F * (TypedArray != Base), O);
2274
+
2275
+ $export($export.S, NAME, {
2276
+ BYTES_PER_ELEMENT: BYTES
2277
+ });
2278
+
2279
+ $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {
2280
+ from: $from,
2281
+ of: $of
2282
+ });
2283
+
2284
+ if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);
2285
+
2286
+ $export($export.P, NAME, proto);
2287
+
2288
+ setSpecies(NAME);
2289
+
2290
+ $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });
2291
+
2292
+ $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);
2293
+
2294
+ if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;
2295
+
2296
+ $export($export.P + $export.F * fails(function () {
2297
+ new TypedArray(1).slice();
2298
+ }), NAME, { slice: $slice });
2299
+
2300
+ $export($export.P + $export.F * (fails(function () {
2301
+ return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();
2302
+ }) || !fails(function () {
2303
+ TypedArrayPrototype.toLocaleString.call([1, 2]);
2304
+ })), NAME, { toLocaleString: $toLocaleString });
2305
+
2306
+ Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;
2307
+ if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);
2308
+ };
2309
+ } else module.exports = function () { /* empty */ };
2310
+
2311
+
2312
+ /***/ }),
2313
+ /* 45 */
2314
+ /***/ (function(module, exports, __webpack_require__) {
2315
+
2316
+ var Map = __webpack_require__(216);
2317
+ var $export = __webpack_require__(1);
2318
+ var shared = __webpack_require__(97)('metadata');
2319
+ var store = shared.store || (shared.store = new (__webpack_require__(219))());
2320
+
2321
+ var getOrCreateMetadataMap = function (target, targetKey, create) {
2322
+ var targetMetadata = store.get(target);
2323
+ if (!targetMetadata) {
2324
+ if (!create) return undefined;
2325
+ store.set(target, targetMetadata = new Map());
2326
+ }
2327
+ var keyMetadata = targetMetadata.get(targetKey);
2328
+ if (!keyMetadata) {
2329
+ if (!create) return undefined;
2330
+ targetMetadata.set(targetKey, keyMetadata = new Map());
2331
+ } return keyMetadata;
2332
+ };
2333
+ var ordinaryHasOwnMetadata = function (MetadataKey, O, P) {
2334
+ var metadataMap = getOrCreateMetadataMap(O, P, false);
2335
+ return metadataMap === undefined ? false : metadataMap.has(MetadataKey);
2336
+ };
2337
+ var ordinaryGetOwnMetadata = function (MetadataKey, O, P) {
2338
+ var metadataMap = getOrCreateMetadataMap(O, P, false);
2339
+ return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);
2340
+ };
2341
+ var ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {
2342
+ getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);
2343
+ };
2344
+ var ordinaryOwnMetadataKeys = function (target, targetKey) {
2345
+ var metadataMap = getOrCreateMetadataMap(target, targetKey, false);
2346
+ var keys = [];
2347
+ if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });
2348
+ return keys;
2349
+ };
2350
+ var toMetaKey = function (it) {
2351
+ return it === undefined || typeof it == 'symbol' ? it : String(it);
2352
+ };
2353
+ var exp = function (O) {
2354
+ $export($export.S, 'Reflect', O);
2355
+ };
2356
+
2357
+ module.exports = {
2358
+ store: store,
2359
+ map: getOrCreateMetadataMap,
2360
+ has: ordinaryHasOwnMetadata,
2361
+ get: ordinaryGetOwnMetadata,
2362
+ set: ordinaryDefineOwnMetadata,
2363
+ keys: ordinaryOwnMetadataKeys,
2364
+ key: toMetaKey,
2365
+ exp: exp
2366
+ };
2367
+
2368
+
2369
+ /***/ }),
2370
+ /* 46 */
2371
+ /***/ (function(module, exports, __webpack_require__) {
2372
+
2373
+ var store = __webpack_require__(161)('wks');
2374
+ var uid = __webpack_require__(112);
2375
+ var Symbol = __webpack_require__(51).Symbol;
2376
+ var USE_SYMBOL = typeof Symbol == 'function';
2377
+
2378
+ var $exports = module.exports = function (name) {
2379
+ return store[name] || (store[name] =
2380
+ USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
2381
+ };
2382
+
2383
+ $exports.store = store;
2384
+
2385
+
2386
+ /***/ }),
2387
+ /* 47 */
2388
+ /***/ (function(module, exports, __webpack_require__) {
2389
+
2390
+ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
2391
+ Copyright (c) 2016 Jed Watson.
2392
+ Licensed under the MIT License (MIT), see
2393
+ http://jedwatson.github.io/classnames
2394
+ */
2395
+ /* global define */
2396
+
2397
+ (function () {
2398
+ 'use strict';
2399
+
2400
+ var hasOwn = {}.hasOwnProperty;
2401
+
2402
+ function classNames () {
2403
+ var classes = [];
2404
+
2405
+ for (var i = 0; i < arguments.length; i++) {
2406
+ var arg = arguments[i];
2407
+ if (!arg) continue;
2408
+
2409
+ var argType = typeof arg;
2410
+
2411
+ if (argType === 'string' || argType === 'number') {
2412
+ classes.push(arg);
2413
+ } else if (Array.isArray(arg)) {
2414
+ classes.push(classNames.apply(null, arg));
2415
+ } else if (argType === 'object') {
2416
+ for (var key in arg) {
2417
+ if (hasOwn.call(arg, key) && arg[key]) {
2418
+ classes.push(key);
2419
+ }
2420
+ }
2421
+ }
2422
+ }
2423
+
2424
+ return classes.join(' ');
2425
+ }
2426
+
2427
+ if (typeof module !== 'undefined' && module.exports) {
2428
+ module.exports = classNames;
2429
+ } else if (true) {
2430
+ // register as 'classnames', consistent with npm package name
2431
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {
2432
+ return classNames;
2433
+ }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
2434
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
2435
+ } else {
2436
+ window.classNames = classNames;
2437
+ }
2438
+ }());
2439
+
2440
+
2441
+ /***/ }),
2442
+ /* 48 */
2443
+ /***/ (function(module, exports, __webpack_require__) {
2444
+
2445
+ var META = __webpack_require__(54)('meta');
2446
+ var isObject = __webpack_require__(6);
2447
+ var has = __webpack_require__(24);
2448
+ var setDesc = __webpack_require__(15).f;
2449
+ var id = 0;
2450
+ var isExtensible = Object.isExtensible || function () {
2451
+ return true;
2452
+ };
2453
+ var FREEZE = !__webpack_require__(5)(function () {
2454
+ return isExtensible(Object.preventExtensions({}));
2455
+ });
2456
+ var setMeta = function (it) {
2457
+ setDesc(it, META, { value: {
2458
+ i: 'O' + ++id, // object ID
2459
+ w: {} // weak collections IDs
2460
+ } });
2461
+ };
2462
+ var fastKey = function (it, create) {
2463
+ // return primitive with prefix
2464
+ if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
2465
+ if (!has(it, META)) {
2466
+ // can't set metadata to uncaught frozen object
2467
+ if (!isExtensible(it)) return 'F';
2468
+ // not necessary to add metadata
2469
+ if (!create) return 'E';
2470
+ // add missing metadata
2471
+ setMeta(it);
2472
+ // return object ID
2473
+ } return it[META].i;
2474
+ };
2475
+ var getWeak = function (it, create) {
2476
+ if (!has(it, META)) {
2477
+ // can't set metadata to uncaught frozen object
2478
+ if (!isExtensible(it)) return true;
2479
+ // not necessary to add metadata
2480
+ if (!create) return false;
2481
+ // add missing metadata
2482
+ setMeta(it);
2483
+ // return hash weak collections IDs
2484
+ } return it[META].w;
2485
+ };
2486
+ // add metadata on freeze-family methods calling
2487
+ var onFreeze = function (it) {
2488
+ if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
2489
+ return it;
2490
+ };
2491
+ var meta = module.exports = {
2492
+ KEY: META,
2493
+ NEED: false,
2494
+ fastKey: fastKey,
2495
+ getWeak: getWeak,
2496
+ onFreeze: onFreeze
2497
+ };
2498
+
2499
+
2500
+ /***/ }),
2501
+ /* 49 */
2502
+ /***/ (function(module, exports, __webpack_require__) {
2503
+
2504
+ // 22.1.3.31 Array.prototype[@@unscopables]
2505
+ var UNSCOPABLES = __webpack_require__(9)('unscopables');
2506
+ var ArrayProto = Array.prototype;
2507
+ if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(25)(ArrayProto, UNSCOPABLES, {});
2508
+ module.exports = function (key) {
2509
+ ArrayProto[UNSCOPABLES][key] = true;
2510
+ };
2511
+
2512
+
2513
+ /***/ }),
2514
+ /* 50 */
2515
+ /***/ (function(module, exports, __webpack_require__) {
2516
+
2517
+ "use strict";
2518
+
2519
+
2520
+ /**
2521
+ * Copyright (c) 2013-present, Facebook, Inc.
2522
+ *
2523
+ * This source code is licensed under the MIT license found in the
2524
+ * LICENSE file in the root directory of this source tree.
2525
+ *
2526
+ *
2527
+ */
2528
+
2529
+ function makeEmptyFunction(arg) {
2530
+ return function () {
2531
+ return arg;
2532
+ };
2533
+ }
2534
+
2535
+ /**
2536
+ * This function accepts and discards inputs; it has no side effects. This is
2537
+ * primarily useful idiomatically for overridable function endpoints which
2538
+ * always need to be callable, since JS lacks a null-call idiom ala Cocoa.
2539
+ */
2540
+ var emptyFunction = function emptyFunction() {};
2541
+
2542
+ emptyFunction.thatReturns = makeEmptyFunction;
2543
+ emptyFunction.thatReturnsFalse = makeEmptyFunction(false);
2544
+ emptyFunction.thatReturnsTrue = makeEmptyFunction(true);
2545
+ emptyFunction.thatReturnsNull = makeEmptyFunction(null);
2546
+ emptyFunction.thatReturnsThis = function () {
2547
+ return this;
2548
+ };
2549
+ emptyFunction.thatReturnsArgument = function (arg) {
2550
+ return arg;
2551
+ };
2552
+
2553
+ module.exports = emptyFunction;
2554
+
2555
+ /***/ }),
2556
+ /* 51 */
2557
+ /***/ (function(module, exports) {
2558
+
2559
+ // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
2560
+ var global = module.exports = typeof window != 'undefined' && window.Math == Math
2561
+ ? window : typeof self != 'undefined' && self.Math == Math ? self
2562
+ // eslint-disable-next-line no-new-func
2563
+ : Function('return this')();
2564
+ if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
2565
+
2566
+
2567
+ /***/ }),
2568
+ /* 52 */
2569
+ /***/ (function(module, exports, __webpack_require__) {
2570
+
2571
+ "use strict";
2572
+ /**
2573
+ * Copyright (c) 2013-present, Facebook, Inc.
2574
+ *
2575
+ * This source code is licensed under the MIT license found in the
2576
+ * LICENSE file in the root directory of this source tree.
2577
+ *
2578
+ */
2579
+
2580
+
2581
+
2582
+ var React = __webpack_require__(2);
2583
+ var factory = __webpack_require__(748);
2584
+
2585
+ if (typeof React === 'undefined') {
2586
+ throw Error(
2587
+ 'create-react-class could not find the React object. If you are using script tags, ' +
2588
+ 'make sure that React is being loaded before create-react-class.'
2589
+ );
2590
+ }
2591
+
2592
+ // Hack to grab NoopUpdateQueue from isomorphic React
2593
+ var ReactNoopUpdateQueue = new React.Component().updater;
2594
+
2595
+ module.exports = factory(
2596
+ React.Component,
2597
+ React.isValidElement,
2598
+ ReactNoopUpdateQueue
2599
+ );
2600
+
2601
+
2602
+ /***/ }),
2603
+ /* 53 */
2604
+ /***/ (function(module, exports) {
2605
+
2606
+ module.exports = function (bitmap, value) {
2607
+ return {
2608
+ enumerable: !(bitmap & 1),
2609
+ configurable: !(bitmap & 2),
2610
+ writable: !(bitmap & 4),
2611
+ value: value
2612
+ };
2613
+ };
2614
+
2615
+
2616
+ /***/ }),
2617
+ /* 54 */
2618
+ /***/ (function(module, exports) {
2619
+
2620
+ var id = 0;
2621
+ var px = Math.random();
2622
+ module.exports = function (key) {
2623
+ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
2624
+ };
2625
+
2626
+
2627
+ /***/ }),
2628
+ /* 55 */
2629
+ /***/ (function(module, exports) {
2630
+
2631
+ module.exports = false;
2632
+
2633
+
2634
+ /***/ }),
2635
+ /* 56 */
2636
+ /***/ (function(module, exports, __webpack_require__) {
2637
+
2638
+ // 19.1.2.14 / 15.2.3.14 Object.keys(O)
2639
+ var $keys = __webpack_require__(197);
2640
+ var enumBugKeys = __webpack_require__(132);
2641
+
2642
+ module.exports = Object.keys || function keys(O) {
2643
+ return $keys(O, enumBugKeys);
2644
+ };
2645
+
2646
+
2647
+ /***/ }),
2648
+ /* 57 */
2649
+ /***/ (function(module, exports, __webpack_require__) {
2650
+
2651
+ var toInteger = __webpack_require__(41);
2652
+ var max = Math.max;
2653
+ var min = Math.min;
2654
+ module.exports = function (index, length) {
2655
+ index = toInteger(index);
2656
+ return index < 0 ? max(index + length, 0) : min(index, length);
2657
+ };
2658
+
2659
+
2660
+ /***/ }),
2661
+ /* 58 */
2662
+ /***/ (function(module, exports, __webpack_require__) {
2663
+
2664
+ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
2665
+ var anObject = __webpack_require__(3);
2666
+ var dPs = __webpack_require__(198);
2667
+ var enumBugKeys = __webpack_require__(132);
2668
+ var IE_PROTO = __webpack_require__(131)('IE_PROTO');
2669
+ var Empty = function () { /* empty */ };
2670
+ var PROTOTYPE = 'prototype';
2671
+
2672
+ // Create object with fake `null` prototype: use iframe Object with cleared prototype
2673
+ var createDict = function () {
2674
+ // Thrash, waste and sodomy: IE GC bug
2675
+ var iframe = __webpack_require__(129)('iframe');
2676
+ var i = enumBugKeys.length;
2677
+ var lt = '<';
2678
+ var gt = '>';
2679
+ var iframeDocument;
2680
+ iframe.style.display = 'none';
2681
+ __webpack_require__(133).appendChild(iframe);
2682
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
2683
+ // createDict = iframe.contentWindow.Object;
2684
+ // html.removeChild(iframe);
2685
+ iframeDocument = iframe.contentWindow.document;
2686
+ iframeDocument.open();
2687
+ iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
2688
+ iframeDocument.close();
2689
+ createDict = iframeDocument.F;
2690
+ while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
2691
+ return createDict();
2692
+ };
2693
+
2694
+ module.exports = Object.create || function create(O, Properties) {
2695
+ var result;
2696
+ if (O !== null) {
2697
+ Empty[PROTOTYPE] = anObject(O);
2698
+ result = new Empty();
2699
+ Empty[PROTOTYPE] = null;
2700
+ // add "__proto__" for Object.getPrototypeOf polyfill
2701
+ result[IE_PROTO] = O;
2702
+ } else result = createDict();
2703
+ return Properties === undefined ? result : dPs(result, Properties);
2704
+ };
2705
+
2706
+
2707
+ /***/ }),
2708
+ /* 59 */
2709
+ /***/ (function(module, exports, __webpack_require__) {
2710
+
2711
+ // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
2712
+ var $keys = __webpack_require__(197);
2713
+ var hiddenKeys = __webpack_require__(132).concat('length', 'prototype');
2714
+
2715
+ exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
2716
+ return $keys(O, hiddenKeys);
2717
+ };
2718
+
2719
+
2720
+ /***/ }),
2721
+ /* 60 */
2722
+ /***/ (function(module, exports, __webpack_require__) {
2723
+
2724
+ "use strict";
2725
+
2726
+ var global = __webpack_require__(4);
2727
+ var dP = __webpack_require__(15);
2728
+ var DESCRIPTORS = __webpack_require__(14);
2729
+ var SPECIES = __webpack_require__(9)('species');
2730
+
2731
+ module.exports = function (KEY) {
2732
+ var C = global[KEY];
2733
+ if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
2734
+ configurable: true,
2735
+ get: function () { return this; }
2736
+ });
2737
+ };
2738
+
2739
+
2740
+ /***/ }),
2741
+ /* 61 */
2742
+ /***/ (function(module, exports) {
2743
+
2744
+ module.exports = function (it, Constructor, name, forbiddenField) {
2745
+ if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
2746
+ throw TypeError(name + ': incorrect invocation!');
2747
+ } return it;
2748
+ };
2749
+
2750
+
2751
+ /***/ }),
2752
+ /* 62 */
2753
+ /***/ (function(module, exports, __webpack_require__) {
2754
+
2755
+ var ctx = __webpack_require__(35);
2756
+ var call = __webpack_require__(209);
2757
+ var isArrayIter = __webpack_require__(145);
2758
+ var anObject = __webpack_require__(3);
2759
+ var toLength = __webpack_require__(16);
2760
+ var getIterFn = __webpack_require__(147);
2761
+ var BREAK = {};
2762
+ var RETURN = {};
2763
+ var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
2764
+ var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
2765
+ var f = ctx(fn, that, entries ? 2 : 1);
2766
+ var index = 0;
2767
+ var length, step, iterator, result;
2768
+ if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
2769
+ // fast case for arrays with default iterator
2770
+ if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
2771
+ result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
2772
+ if (result === BREAK || result === RETURN) return result;
2773
+ } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
2774
+ result = call(iterator, f, step.value, entries);
2775
+ if (result === BREAK || result === RETURN) return result;
2776
+ }
2777
+ };
2778
+ exports.BREAK = BREAK;
2779
+ exports.RETURN = RETURN;
2780
+
2781
+
2782
+ /***/ }),
2783
+ /* 63 */
2784
+ /***/ (function(module, exports, __webpack_require__) {
2785
+
2786
+ var redefine = __webpack_require__(26);
2787
+ module.exports = function (target, src, safe) {
2788
+ for (var key in src) redefine(target, key, src[key], safe);
2789
+ return target;
2790
+ };
2791
+
2792
+
2793
+ /***/ }),
2794
+ /* 64 */
2795
+ /***/ (function(module, exports, __webpack_require__) {
2796
+
2797
+ "use strict";
2798
+ /*
2799
+ object-assign
2800
+ (c) Sindre Sorhus
2801
+ @license MIT
2802
+ */
2803
+
2804
+
2805
+ /* eslint-disable no-unused-vars */
2806
+ var getOwnPropertySymbols = Object.getOwnPropertySymbols;
2807
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
2808
+ var propIsEnumerable = Object.prototype.propertyIsEnumerable;
2809
+
2810
+ function toObject(val) {
2811
+ if (val === null || val === undefined) {
2812
+ throw new TypeError('Object.assign cannot be called with null or undefined');
2813
+ }
2814
+
2815
+ return Object(val);
2816
+ }
2817
+
2818
+ function shouldUseNative() {
2819
+ try {
2820
+ if (!Object.assign) {
2821
+ return false;
2822
+ }
2823
+
2824
+ // Detect buggy property enumeration order in older V8 versions.
2825
+
2826
+ // https://bugs.chromium.org/p/v8/issues/detail?id=4118
2827
+ var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
2828
+ test1[5] = 'de';
2829
+ if (Object.getOwnPropertyNames(test1)[0] === '5') {
2830
+ return false;
2831
+ }
2832
+
2833
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3056
2834
+ var test2 = {};
2835
+ for (var i = 0; i < 10; i++) {
2836
+ test2['_' + String.fromCharCode(i)] = i;
2837
+ }
2838
+ var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
2839
+ return test2[n];
2840
+ });
2841
+ if (order2.join('') !== '0123456789') {
2842
+ return false;
2843
+ }
2844
+
2845
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3056
2846
+ var test3 = {};
2847
+ 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
2848
+ test3[letter] = letter;
2849
+ });
2850
+ if (Object.keys(Object.assign({}, test3)).join('') !==
2851
+ 'abcdefghijklmnopqrst') {
2852
+ return false;
2853
+ }
2854
+
2855
+ return true;
2856
+ } catch (err) {
2857
+ // We don't expect any of the above to throw, but better to be safe.
2858
+ return false;
2859
+ }
2860
+ }
2861
+
2862
+ module.exports = shouldUseNative() ? Object.assign : function (target, source) {
2863
+ var from;
2864
+ var to = toObject(target);
2865
+ var symbols;
2866
+
2867
+ for (var s = 1; s < arguments.length; s++) {
2868
+ from = Object(arguments[s]);
2869
+
2870
+ for (var key in from) {
2871
+ if (hasOwnProperty.call(from, key)) {
2872
+ to[key] = from[key];
2873
+ }
2874
+ }
2875
+
2876
+ if (getOwnPropertySymbols) {
2877
+ symbols = getOwnPropertySymbols(from);
2878
+ for (var i = 0; i < symbols.length; i++) {
2879
+ if (propIsEnumerable.call(from, symbols[i])) {
2880
+ to[symbols[i]] = from[symbols[i]];
2881
+ }
2882
+ }
2883
+ }
2884
+ }
2885
+
2886
+ return to;
2887
+ };
2888
+
2889
+
2890
+ /***/ }),
2891
+ /* 65 */
2892
+ /***/ (function(module, exports) {
2893
+
2894
+ var hasOwnProperty = {}.hasOwnProperty;
2895
+ module.exports = function (it, key) {
2896
+ return hasOwnProperty.call(it, key);
2897
+ };
2898
+
2899
+
2900
+ /***/ }),
2901
+ /* 66 */
2902
+ /***/ (function(module, exports, __webpack_require__) {
2903
+
2904
+ var global = __webpack_require__(51);
2905
+ var core = __webpack_require__(22);
2906
+ var ctx = __webpack_require__(237);
2907
+ var hide = __webpack_require__(77);
2908
+ var PROTOTYPE = 'prototype';
2909
+
2910
+ var $export = function (type, name, source) {
2911
+ var IS_FORCED = type & $export.F;
2912
+ var IS_GLOBAL = type & $export.G;
2913
+ var IS_STATIC = type & $export.S;
2914
+ var IS_PROTO = type & $export.P;
2915
+ var IS_BIND = type & $export.B;
2916
+ var IS_WRAP = type & $export.W;
2917
+ var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
2918
+ var expProto = exports[PROTOTYPE];
2919
+ var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
2920
+ var key, own, out;
2921
+ if (IS_GLOBAL) source = name;
2922
+ for (key in source) {
2923
+ // contains in native
2924
+ own = !IS_FORCED && target && target[key] !== undefined;
2925
+ if (own && key in exports) continue;
2926
+ // export native or passed
2927
+ out = own ? target[key] : source[key];
2928
+ // prevent global pollution for namespaces
2929
+ exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
2930
+ // bind timers to global for call from export context
2931
+ : IS_BIND && own ? ctx(out, global)
2932
+ // wrap global constructors for prevent change them in library
2933
+ : IS_WRAP && target[key] == out ? (function (C) {
2934
+ var F = function (a, b, c) {
2935
+ if (this instanceof C) {
2936
+ switch (arguments.length) {
2937
+ case 0: return new C();
2938
+ case 1: return new C(a);
2939
+ case 2: return new C(a, b);
2940
+ } return new C(a, b, c);
2941
+ } return C.apply(this, arguments);
2942
+ };
2943
+ F[PROTOTYPE] = C[PROTOTYPE];
2944
+ return F;
2945
+ // make static versions for prototype methods
2946
+ })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
2947
+ // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
2948
+ if (IS_PROTO) {
2949
+ (exports.virtual || (exports.virtual = {}))[key] = out;
2950
+ // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
2951
+ if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
2952
+ }
2953
+ }
2954
+ };
2955
+ // type bitmap
2956
+ $export.F = 1; // forced
2957
+ $export.G = 2; // global
2958
+ $export.S = 4; // static
2959
+ $export.P = 8; // proto
2960
+ $export.B = 16; // bind
2961
+ $export.W = 32; // wrap
2962
+ $export.U = 64; // safe
2963
+ $export.R = 128; // real proto method for `library`
2964
+ module.exports = $export;
2965
+
2966
+
2967
+ /***/ }),
2968
+ /* 67 */
2969
+ /***/ (function(module, exports, __webpack_require__) {
2970
+
2971
+ var anObject = __webpack_require__(78);
2972
+ var IE8_DOM_DEFINE = __webpack_require__(238);
2973
+ var toPrimitive = __webpack_require__(163);
2974
+ var dP = Object.defineProperty;
2975
+
2976
+ exports.f = __webpack_require__(68) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
2977
+ anObject(O);
2978
+ P = toPrimitive(P, true);
2979
+ anObject(Attributes);
2980
+ if (IE8_DOM_DEFINE) try {
2981
+ return dP(O, P, Attributes);
2982
+ } catch (e) { /* empty */ }
2983
+ if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
2984
+ if ('value' in Attributes) O[P] = Attributes.value;
2985
+ return O;
2986
+ };
2987
+
2988
+
2989
+ /***/ }),
2990
+ /* 68 */
2991
+ /***/ (function(module, exports, __webpack_require__) {
2992
+
2993
+ // Thank's IE8 for his funny defineProperty
2994
+ module.exports = !__webpack_require__(80)(function () {
2995
+ return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
2996
+ });
2997
+
2998
+
2999
+ /***/ }),
3000
+ /* 69 */
3001
+ /***/ (function(module, exports, __webpack_require__) {
3002
+
3003
+ // to indexed object, toObject with fallback for non-array-like ES3 strings
3004
+ var IObject = __webpack_require__(244);
3005
+ var defined = __webpack_require__(159);
3006
+ module.exports = function (it) {
3007
+ return IObject(defined(it));
3008
+ };
3009
+
3010
+
3011
+ /***/ }),
3012
+ /* 70 */
3013
+ /***/ (function(module, exports, __webpack_require__) {
3014
+
3015
+ var baseGetTag = __webpack_require__(118),
3016
+ getPrototype = __webpack_require__(624),
3017
+ isObjectLike = __webpack_require__(95);
3018
+
3019
+ /** `Object#toString` result references. */
3020
+ var objectTag = '[object Object]';
3021
+
3022
+ /** Used for built-in method references. */
3023
+ var funcProto = Function.prototype,
3024
+ objectProto = Object.prototype;
3025
+
3026
+ /** Used to resolve the decompiled source of functions. */
3027
+ var funcToString = funcProto.toString;
3028
+
3029
+ /** Used to check objects for own properties. */
3030
+ var hasOwnProperty = objectProto.hasOwnProperty;
3031
+
3032
+ /** Used to infer the `Object` constructor. */
3033
+ var objectCtorString = funcToString.call(Object);
3034
+
3035
+ /**
3036
+ * Checks if `value` is a plain object, that is, an object created by the
3037
+ * `Object` constructor or one with a `[[Prototype]]` of `null`.
3038
+ *
3039
+ * @static
3040
+ * @memberOf _
3041
+ * @since 0.8.0
3042
+ * @category Lang
3043
+ * @param {*} value The value to check.
3044
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
3045
+ * @example
3046
+ *
3047
+ * function Foo() {
3048
+ * this.a = 1;
3049
+ * }
3050
+ *
3051
+ * _.isPlainObject(new Foo);
3052
+ * // => false
3053
+ *
3054
+ * _.isPlainObject([1, 2, 3]);
3055
+ * // => false
3056
+ *
3057
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
3058
+ * // => true
3059
+ *
3060
+ * _.isPlainObject(Object.create(null));
3061
+ * // => true
3062
+ */
3063
+ function isPlainObject(value) {
3064
+ if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
3065
+ return false;
3066
+ }
3067
+ var proto = getPrototype(value);
3068
+ if (proto === null) {
3069
+ return true;
3070
+ }
3071
+ var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
3072
+ return typeof Ctor == 'function' && Ctor instanceof Ctor &&
3073
+ funcToString.call(Ctor) == objectCtorString;
3074
+ }
3075
+
3076
+ module.exports = isPlainObject;
3077
+
3078
+
3079
+ /***/ }),
3080
+ /* 71 */
3081
+ /***/ (function(module, exports) {
3082
+
3083
+ /**
3084
+ * Checks if `value` is classified as an `Array` object.
3085
+ *
3086
+ * @static
3087
+ * @memberOf _
3088
+ * @since 0.1.0
3089
+ * @category Lang
3090
+ * @param {*} value The value to check.
3091
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
3092
+ * @example
3093
+ *
3094
+ * _.isArray([1, 2, 3]);
3095
+ * // => true
3096
+ *
3097
+ * _.isArray(document.body.children);
3098
+ * // => false
3099
+ *
3100
+ * _.isArray('abc');
3101
+ * // => false
3102
+ *
3103
+ * _.isArray(_.noop);
3104
+ * // => false
3105
+ */
3106
+ var isArray = Array.isArray;
3107
+
3108
+ module.exports = isArray;
3109
+
3110
+
3111
+ /***/ }),
3112
+ /* 72 */
3113
+ /***/ (function(module, exports, __webpack_require__) {
3114
+
3115
+ var def = __webpack_require__(15).f;
3116
+ var has = __webpack_require__(24);
3117
+ var TAG = __webpack_require__(9)('toStringTag');
3118
+
3119
+ module.exports = function (it, tag, stat) {
3120
+ if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
3121
+ };
3122
+
3123
+
3124
+ /***/ }),
3125
+ /* 73 */
3126
+ /***/ (function(module, exports, __webpack_require__) {
3127
+
3128
+ var $export = __webpack_require__(1);
3129
+ var defined = __webpack_require__(40);
3130
+ var fails = __webpack_require__(5);
3131
+ var spaces = __webpack_require__(135);
3132
+ var space = '[' + spaces + ']';
3133
+ var non = '\u200b\u0085';
3134
+ var ltrim = RegExp('^' + space + space + '*');
3135
+ var rtrim = RegExp(space + space + '*$');
3136
+
3137
+ var exporter = function (KEY, exec, ALIAS) {
3138
+ var exp = {};
3139
+ var FORCE = fails(function () {
3140
+ return !!spaces[KEY]() || non[KEY]() != non;
3141
+ });
3142
+ var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
3143
+ if (ALIAS) exp[ALIAS] = fn;
3144
+ $export($export.P + $export.F * FORCE, 'String', exp);
3145
+ };
3146
+
3147
+ // 1 -> String#trimLeft
3148
+ // 2 -> String#trimRight
3149
+ // 3 -> String#trim
3150
+ var trim = exporter.trim = function (string, TYPE) {
3151
+ string = String(defined(string));
3152
+ if (TYPE & 1) string = string.replace(ltrim, '');
3153
+ if (TYPE & 2) string = string.replace(rtrim, '');
3154
+ return string;
3155
+ };
3156
+
3157
+ module.exports = exporter;
3158
+
3159
+
3160
+ /***/ }),
3161
+ /* 74 */
3162
+ /***/ (function(module, exports) {
3163
+
3164
+ module.exports = {};
3165
+
3166
+
3167
+ /***/ }),
3168
+ /* 75 */
3169
+ /***/ (function(module, exports, __webpack_require__) {
3170
+
3171
+ var isObject = __webpack_require__(6);
3172
+ module.exports = function (it, TYPE) {
3173
+ if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
3174
+ return it;
3175
+ };
3176
+
3177
+
3178
+ /***/ }),
3179
+ /* 76 */
3180
+ /***/ (function(module, exports, __webpack_require__) {
3181
+
3182
+ "use strict";
3183
+ /* WEBPACK VAR INJECTION */(function(process) {/**
3184
+ * Copyright (c) 2013-present, Facebook, Inc.
3185
+ *
3186
+ * This source code is licensed under the MIT license found in the
3187
+ * LICENSE file in the root directory of this source tree.
3188
+ *
3189
+ */
3190
+
3191
+
3192
+
3193
+ /**
3194
+ * Use invariant() to assert state which your program assumes to be true.
3195
+ *
3196
+ * Provide sprintf-style format (only %s is supported) and arguments
3197
+ * to provide information about what broke and what you were
3198
+ * expecting.
3199
+ *
3200
+ * The invariant message will be stripped in production, but the invariant
3201
+ * will remain to ensure logic does not differ in production.
3202
+ */
3203
+
3204
+ var validateFormat = function validateFormat(format) {};
3205
+
3206
+ if (process.env.NODE_ENV !== 'production') {
3207
+ validateFormat = function validateFormat(format) {
3208
+ if (format === undefined) {
3209
+ throw new Error('invariant requires an error message argument');
3210
+ }
3211
+ };
3212
+ }
3213
+
3214
+ function invariant(condition, format, a, b, c, d, e, f) {
3215
+ validateFormat(format);
3216
+
3217
+ if (!condition) {
3218
+ var error;
3219
+ if (format === undefined) {
3220
+ error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
3221
+ } else {
3222
+ var args = [a, b, c, d, e, f];
3223
+ var argIndex = 0;
3224
+ error = new Error(format.replace(/%s/g, function () {
3225
+ return args[argIndex++];
3226
+ }));
3227
+ error.name = 'Invariant Violation';
3228
+ }
3229
+
3230
+ error.framesToPop = 1; // we don't care about invariant's own frame
3231
+ throw error;
3232
+ }
3233
+ }
3234
+
3235
+ module.exports = invariant;
3236
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
3237
+
3238
+ /***/ }),
3239
+ /* 77 */
3240
+ /***/ (function(module, exports, __webpack_require__) {
3241
+
3242
+ var dP = __webpack_require__(67);
3243
+ var createDesc = __webpack_require__(113);
3244
+ module.exports = __webpack_require__(68) ? function (object, key, value) {
3245
+ return dP.f(object, key, createDesc(1, value));
3246
+ } : function (object, key, value) {
3247
+ object[key] = value;
3248
+ return object;
3249
+ };
3250
+
3251
+
3252
+ /***/ }),
3253
+ /* 78 */
3254
+ /***/ (function(module, exports, __webpack_require__) {
3255
+
3256
+ var isObject = __webpack_require__(79);
3257
+ module.exports = function (it) {
3258
+ if (!isObject(it)) throw TypeError(it + ' is not an object!');
3259
+ return it;
3260
+ };
3261
+
3262
+
3263
+ /***/ }),
3264
+ /* 79 */
3265
+ /***/ (function(module, exports) {
3266
+
3267
+ module.exports = function (it) {
3268
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
3269
+ };
3270
+
3271
+
3272
+ /***/ }),
3273
+ /* 80 */
3274
+ /***/ (function(module, exports) {
3275
+
3276
+ module.exports = function (exec) {
3277
+ try {
3278
+ return !!exec();
3279
+ } catch (e) {
3280
+ return true;
3281
+ }
3282
+ };
3283
+
3284
+
3285
+ /***/ }),
3286
+ /* 81 */
3287
+ /***/ (function(module, exports, __webpack_require__) {
3288
+
3289
+ var babelPluginFlowReactPropTypes_proptype_Index = {
3290
+ index: __webpack_require__(0).number.isRequired
3291
+ };
3292
+ if (true) Object.defineProperty(exports, "babelPluginFlowReactPropTypes_proptype_Index", {
3293
+ value: babelPluginFlowReactPropTypes_proptype_Index,
3294
+ configurable: true
3295
+ });
3296
+ var babelPluginFlowReactPropTypes_proptype_PositionInfo = {
3297
+ x: __webpack_require__(0).number.isRequired,
3298
+ y: __webpack_require__(0).number.isRequired
3299
+ };
3300
+ if (true) Object.defineProperty(exports, "babelPluginFlowReactPropTypes_proptype_PositionInfo", {
3301
+ value: babelPluginFlowReactPropTypes_proptype_PositionInfo,
3302
+ configurable: true
3303
+ });
3304
+ var babelPluginFlowReactPropTypes_proptype_ScrollPosition = {
3305
+ scrollLeft: __webpack_require__(0).number.isRequired,
3306
+ scrollTop: __webpack_require__(0).number.isRequired
3307
+ };
3308
+ if (true) Object.defineProperty(exports, "babelPluginFlowReactPropTypes_proptype_ScrollPosition", {
3309
+ value: babelPluginFlowReactPropTypes_proptype_ScrollPosition,
3310
+ configurable: true
3311
+ });
3312
+ var babelPluginFlowReactPropTypes_proptype_SizeAndPositionInfo = {
3313
+ height: __webpack_require__(0).number.isRequired,
3314
+ width: __webpack_require__(0).number.isRequired,
3315
+ x: __webpack_require__(0).number.isRequired,
3316
+ y: __webpack_require__(0).number.isRequired
3317
+ };
3318
+ if (true) Object.defineProperty(exports, "babelPluginFlowReactPropTypes_proptype_SizeAndPositionInfo", {
3319
+ value: babelPluginFlowReactPropTypes_proptype_SizeAndPositionInfo,
3320
+ configurable: true
3321
+ });
3322
+ var babelPluginFlowReactPropTypes_proptype_SizeInfo = {
3323
+ height: __webpack_require__(0).number.isRequired,
3324
+ width: __webpack_require__(0).number.isRequired
3325
+ };
3326
+ if (true) Object.defineProperty(exports, "babelPluginFlowReactPropTypes_proptype_SizeInfo", {
3327
+ value: babelPluginFlowReactPropTypes_proptype_SizeInfo,
3328
+ configurable: true
3329
+ });
3330
+
3331
+ /***/ }),
3332
+ /* 82 */
3333
+ /***/ (function(module, exports, __webpack_require__) {
3334
+
3335
+ var identity = __webpack_require__(273),
3336
+ overRest = __webpack_require__(661),
3337
+ setToString = __webpack_require__(662);
3338
+
3339
+ /**
3340
+ * The base implementation of `_.rest` which doesn't validate or coerce arguments.
3341
+ *
3342
+ * @private
3343
+ * @param {Function} func The function to apply a rest parameter to.
3344
+ * @param {number} [start=func.length-1] The start position of the rest parameter.
3345
+ * @returns {Function} Returns the new function.
3346
+ */
3347
+ function baseRest(func, start) {
3348
+ return setToString(overRest(func, start, identity), func + '');
3349
+ }
3350
+
3351
+ module.exports = baseRest;
3352
+
3353
+
3354
+ /***/ }),
3355
+ /* 83 */
3356
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
3357
+
3358
+ "use strict";
3359
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__propertyUtils__ = __webpack_require__(764);
3360
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
3361
+
3362
+
3363
+
3364
+ var RE_NUM = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source;
3365
+
3366
+ var getComputedStyleX = void 0;
3367
+
3368
+ // https://stackoverflow.com/a/3485654/3040605
3369
+ function forceRelayout(elem) {
3370
+ var originalStyle = elem.style.display;
3371
+ elem.style.display = 'none';
3372
+ elem.offsetHeight; // eslint-disable-line
3373
+ elem.style.display = originalStyle;
3374
+ }
3375
+
3376
+ function css(el, name, v) {
3377
+ var value = v;
3378
+ if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {
3379
+ for (var i in name) {
3380
+ if (name.hasOwnProperty(i)) {
3381
+ css(el, i, name[i]);
3382
+ }
3383
+ }
3384
+ return undefined;
3385
+ }
3386
+ if (typeof value !== 'undefined') {
3387
+ if (typeof value === 'number') {
3388
+ value = value + 'px';
3389
+ }
3390
+ el.style[name] = value;
3391
+ return undefined;
3392
+ }
3393
+ return getComputedStyleX(el, name);
3394
+ }
3395
+
3396
+ function getClientPosition(elem) {
3397
+ var box = void 0;
3398
+ var x = void 0;
3399
+ var y = void 0;
3400
+ var doc = elem.ownerDocument;
3401
+ var body = doc.body;
3402
+ var docElem = doc && doc.documentElement;
3403
+ // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式
3404
+ box = elem.getBoundingClientRect();
3405
+
3406
+ // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop
3407
+ // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确
3408
+ // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin
3409
+
3410
+ x = box.left;
3411
+ y = box.top;
3412
+
3413
+ // In IE, most of the time, 2 extra pixels are added to the top and left
3414
+ // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and
3415
+ // IE6 standards mode, this border can be overridden by setting the
3416
+ // document element's border to zero -- thus, we cannot rely on the
3417
+ // offset always being 2 pixels.
3418
+
3419
+ // In quirks mode, the offset can be determined by querying the body's
3420
+ // clientLeft/clientTop, but in standards mode, it is found by querying
3421
+ // the document element's clientLeft/clientTop. Since we already called
3422
+ // getClientBoundingRect we have already forced a reflow, so it is not
3423
+ // too expensive just to query them all.
3424
+
3425
+ // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的
3426
+ // 窗口边框标准是设 documentElement ,quirks 时设置 body
3427
+ // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去
3428
+ // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置
3429
+ // 标准 ie 下 docElem.clientTop 就是 border-top
3430
+ // ie7 html 即窗口边框改变不了。永远为 2
3431
+ // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0
3432
+
3433
+ x -= docElem.clientLeft || body.clientLeft || 0;
3434
+ y -= docElem.clientTop || body.clientTop || 0;
3435
+
3436
+ return {
3437
+ left: x,
3438
+ top: y
3439
+ };
3440
+ }
3441
+
3442
+ function getScroll(w, top) {
3443
+ var ret = w['page' + (top ? 'Y' : 'X') + 'Offset'];
3444
+ var method = 'scroll' + (top ? 'Top' : 'Left');
3445
+ if (typeof ret !== 'number') {
3446
+ var d = w.document;
3447
+ // ie6,7,8 standard mode
3448
+ ret = d.documentElement[method];
3449
+ if (typeof ret !== 'number') {
3450
+ // quirks mode
3451
+ ret = d.body[method];
3452
+ }
3453
+ }
3454
+ return ret;
3455
+ }
3456
+
3457
+ function getScrollLeft(w) {
3458
+ return getScroll(w);
3459
+ }
3460
+
3461
+ function getScrollTop(w) {
3462
+ return getScroll(w, true);
3463
+ }
3464
+
3465
+ function getOffset(el) {
3466
+ var pos = getClientPosition(el);
3467
+ var doc = el.ownerDocument;
3468
+ var w = doc.defaultView || doc.parentWindow;
3469
+ pos.left += getScrollLeft(w);
3470
+ pos.top += getScrollTop(w);
3471
+ return pos;
3472
+ }
3473
+
3474
+ /**
3475
+ * A crude way of determining if an object is a window
3476
+ * @member util
3477
+ */
3478
+ function isWindow(obj) {
3479
+ // must use == for ie8
3480
+ /* eslint eqeqeq:0 */
3481
+ return obj !== null && obj !== undefined && obj == obj.window;
3482
+ }
3483
+
3484
+ function getDocument(node) {
3485
+ if (isWindow(node)) {
3486
+ return node.document;
3487
+ }
3488
+ if (node.nodeType === 9) {
3489
+ return node;
3490
+ }
3491
+ return node.ownerDocument;
3492
+ }
3493
+
3494
+ function _getComputedStyle(elem, name, cs) {
3495
+ var computedStyle = cs;
3496
+ var val = '';
3497
+ var d = getDocument(elem);
3498
+ computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null);
3499
+
3500
+ // https://github.com/kissyteam/kissy/issues/61
3501
+ if (computedStyle) {
3502
+ val = computedStyle.getPropertyValue(name) || computedStyle[name];
3503
+ }
3504
+
3505
+ return val;
3506
+ }
3507
+
3508
+ var _RE_NUM_NO_PX = new RegExp('^(' + RE_NUM + ')(?!px)[a-z%]+$', 'i');
3509
+ var RE_POS = /^(top|right|bottom|left)$/;
3510
+ var CURRENT_STYLE = 'currentStyle';
3511
+ var RUNTIME_STYLE = 'runtimeStyle';
3512
+ var LEFT = 'left';
3513
+ var PX = 'px';
3514
+
3515
+ function _getComputedStyleIE(elem, name) {
3516
+ // currentStyle maybe null
3517
+ // http://msdn.microsoft.com/en-us/library/ms535231.aspx
3518
+ var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];
3519
+
3520
+ // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值
3521
+ // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19
3522
+ // 在 ie 下不对,需要直接用 offset 方式
3523
+ // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了
3524
+
3525
+ // From the awesome hack by Dean Edwards
3526
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
3527
+ // If we're not dealing with a regular pixel number
3528
+ // but a number that has a weird ending, we need to convert it to pixels
3529
+ // exclude left right for relativity
3530
+ if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {
3531
+ // Remember the original values
3532
+ var style = elem.style;
3533
+ var left = style[LEFT];
3534
+ var rsLeft = elem[RUNTIME_STYLE][LEFT];
3535
+
3536
+ // prevent flashing of content
3537
+ elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];
3538
+
3539
+ // Put in the new values to get a computed value out
3540
+ style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;
3541
+ ret = style.pixelLeft + PX;
3542
+
3543
+ // Revert the changed values
3544
+ style[LEFT] = left;
3545
+
3546
+ elem[RUNTIME_STYLE][LEFT] = rsLeft;
3547
+ }
3548
+ return ret === '' ? 'auto' : ret;
3549
+ }
3550
+
3551
+ if (typeof window !== 'undefined') {
3552
+ getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;
3553
+ }
3554
+
3555
+ function getOffsetDirection(dir, option) {
3556
+ if (dir === 'left') {
3557
+ return option.useCssRight ? 'right' : dir;
3558
+ }
3559
+ return option.useCssBottom ? 'bottom' : dir;
3560
+ }
3561
+
3562
+ function oppositeOffsetDirection(dir) {
3563
+ if (dir === 'left') {
3564
+ return 'right';
3565
+ } else if (dir === 'right') {
3566
+ return 'left';
3567
+ } else if (dir === 'top') {
3568
+ return 'bottom';
3569
+ } else if (dir === 'bottom') {
3570
+ return 'top';
3571
+ }
3572
+ }
3573
+
3574
+ // 设置 elem 相对 elem.ownerDocument 的坐标
3575
+ function setLeftTop(elem, offset, option) {
3576
+ // set position first, in-case top/left are set even on static elem
3577
+ if (css(elem, 'position') === 'static') {
3578
+ elem.style.position = 'relative';
3579
+ }
3580
+ var presetH = -999;
3581
+ var presetV = -999;
3582
+ var horizontalProperty = getOffsetDirection('left', option);
3583
+ var verticalProperty = getOffsetDirection('top', option);
3584
+ var oppositeHorizontalProperty = oppositeOffsetDirection(horizontalProperty);
3585
+ var oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);
3586
+
3587
+ if (horizontalProperty !== 'left') {
3588
+ presetH = 999;
3589
+ }
3590
+
3591
+ if (verticalProperty !== 'top') {
3592
+ presetV = 999;
3593
+ }
3594
+ var originalTransition = '';
3595
+ var originalOffset = getOffset(elem);
3596
+ if ('left' in offset || 'top' in offset) {
3597
+ originalTransition = Object(__WEBPACK_IMPORTED_MODULE_0__propertyUtils__["c" /* getTransitionProperty */])(elem) || '';
3598
+ Object(__WEBPACK_IMPORTED_MODULE_0__propertyUtils__["e" /* setTransitionProperty */])(elem, 'none');
3599
+ }
3600
+ if ('left' in offset) {
3601
+ elem.style[oppositeHorizontalProperty] = '';
3602
+ elem.style[horizontalProperty] = presetH + 'px';
3603
+ }
3604
+ if ('top' in offset) {
3605
+ elem.style[oppositeVerticalProperty] = '';
3606
+ elem.style[verticalProperty] = presetV + 'px';
3607
+ }
3608
+ // force relayout
3609
+ forceRelayout(elem);
3610
+ var old = getOffset(elem);
3611
+ var originalStyle = {};
3612
+ for (var key in offset) {
3613
+ if (offset.hasOwnProperty(key)) {
3614
+ var dir = getOffsetDirection(key, option);
3615
+ var preset = key === 'left' ? presetH : presetV;
3616
+ var off = originalOffset[key] - old[key];
3617
+ if (dir === key) {
3618
+ originalStyle[dir] = preset + off;
3619
+ } else {
3620
+ originalStyle[dir] = preset - off;
3621
+ }
3622
+ }
3623
+ }
3624
+ css(elem, originalStyle);
3625
+ // force relayout
3626
+ forceRelayout(elem);
3627
+ if ('left' in offset || 'top' in offset) {
3628
+ Object(__WEBPACK_IMPORTED_MODULE_0__propertyUtils__["e" /* setTransitionProperty */])(elem, originalTransition);
3629
+ }
3630
+ var ret = {};
3631
+ for (var _key in offset) {
3632
+ if (offset.hasOwnProperty(_key)) {
3633
+ var _dir = getOffsetDirection(_key, option);
3634
+ var _off = offset[_key] - originalOffset[_key];
3635
+ if (_key === _dir) {
3636
+ ret[_dir] = originalStyle[_dir] + _off;
3637
+ } else {
3638
+ ret[_dir] = originalStyle[_dir] - _off;
3639
+ }
3640
+ }
3641
+ }
3642
+ css(elem, ret);
3643
+ }
3644
+
3645
+ function setTransform(elem, offset) {
3646
+ var originalOffset = getOffset(elem);
3647
+ var originalXY = Object(__WEBPACK_IMPORTED_MODULE_0__propertyUtils__["b" /* getTransformXY */])(elem);
3648
+ var resultXY = { x: originalXY.x, y: originalXY.y };
3649
+ if ('left' in offset) {
3650
+ resultXY.x = originalXY.x + offset.left - originalOffset.left;
3651
+ }
3652
+ if ('top' in offset) {
3653
+ resultXY.y = originalXY.y + offset.top - originalOffset.top;
3654
+ }
3655
+ Object(__WEBPACK_IMPORTED_MODULE_0__propertyUtils__["d" /* setTransformXY */])(elem, resultXY);
3656
+ }
3657
+
3658
+ function setOffset(elem, offset, option) {
3659
+ if (option.useCssRight || option.useCssBottom) {
3660
+ setLeftTop(elem, offset, option);
3661
+ } else if (option.useCssTransform && Object(__WEBPACK_IMPORTED_MODULE_0__propertyUtils__["a" /* getTransformName */])() in document.body.style) {
3662
+ setTransform(elem, offset, option);
3663
+ } else {
3664
+ setLeftTop(elem, offset, option);
3665
+ }
3666
+ }
3667
+
3668
+ function each(arr, fn) {
3669
+ for (var i = 0; i < arr.length; i++) {
3670
+ fn(arr[i]);
3671
+ }
3672
+ }
3673
+
3674
+ function isBorderBoxFn(elem) {
3675
+ return getComputedStyleX(elem, 'boxSizing') === 'border-box';
3676
+ }
3677
+
3678
+ var BOX_MODELS = ['margin', 'border', 'padding'];
3679
+ var CONTENT_INDEX = -1;
3680
+ var PADDING_INDEX = 2;
3681
+ var BORDER_INDEX = 1;
3682
+ var MARGIN_INDEX = 0;
3683
+
3684
+ function swap(elem, options, callback) {
3685
+ var old = {};
3686
+ var style = elem.style;
3687
+ var name = void 0;
3688
+
3689
+ // Remember the old values, and insert the new ones
3690
+ for (name in options) {
3691
+ if (options.hasOwnProperty(name)) {
3692
+ old[name] = style[name];
3693
+ style[name] = options[name];
3694
+ }
3695
+ }
3696
+
3697
+ callback.call(elem);
3698
+
3699
+ // Revert the old values
3700
+ for (name in options) {
3701
+ if (options.hasOwnProperty(name)) {
3702
+ style[name] = old[name];
3703
+ }
3704
+ }
3705
+ }
3706
+
3707
+ function getPBMWidth(elem, props, which) {
3708
+ var value = 0;
3709
+ var prop = void 0;
3710
+ var j = void 0;
3711
+ var i = void 0;
3712
+ for (j = 0; j < props.length; j++) {
3713
+ prop = props[j];
3714
+ if (prop) {
3715
+ for (i = 0; i < which.length; i++) {
3716
+ var cssProp = void 0;
3717
+ if (prop === 'border') {
3718
+ cssProp = '' + prop + which[i] + 'Width';
3719
+ } else {
3720
+ cssProp = prop + which[i];
3721
+ }
3722
+ value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;
3723
+ }
3724
+ }
3725
+ }
3726
+ return value;
3727
+ }
3728
+
3729
+ var domUtils = {};
3730
+
3731
+ each(['Width', 'Height'], function (name) {
3732
+ domUtils['doc' + name] = function (refWin) {
3733
+ var d = refWin.document;
3734
+ return Math.max(
3735
+ // firefox chrome documentElement.scrollHeight< body.scrollHeight
3736
+ // ie standard mode : documentElement.scrollHeight> body.scrollHeight
3737
+ d.documentElement['scroll' + name],
3738
+ // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?
3739
+ d.body['scroll' + name], domUtils['viewport' + name](d));
3740
+ };
3741
+
3742
+ domUtils['viewport' + name] = function (win) {
3743
+ // pc browser includes scrollbar in window.innerWidth
3744
+ var prop = 'client' + name;
3745
+ var doc = win.document;
3746
+ var body = doc.body;
3747
+ var documentElement = doc.documentElement;
3748
+ var documentElementProp = documentElement[prop];
3749
+ // 标准模式取 documentElement
3750
+ // backcompat 取 body
3751
+ return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;
3752
+ };
3753
+ });
3754
+
3755
+ /*
3756
+ 得到元素的大小信息
3757
+ @param elem
3758
+ @param name
3759
+ @param {String} [extra] 'padding' : (css width) + padding
3760
+ 'border' : (css width) + padding + border
3761
+ 'margin' : (css width) + padding + border + margin
3762
+ */
3763
+ function getWH(elem, name, ex) {
3764
+ var extra = ex;
3765
+ if (isWindow(elem)) {
3766
+ return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);
3767
+ } else if (elem.nodeType === 9) {
3768
+ return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);
3769
+ }
3770
+ var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];
3771
+ var borderBoxValue = name === 'width' ? elem.getBoundingClientRect().width : elem.getBoundingClientRect().height;
3772
+ var computedStyle = getComputedStyleX(elem);
3773
+ var isBorderBox = isBorderBoxFn(elem, computedStyle);
3774
+ var cssBoxValue = 0;
3775
+ if (borderBoxValue === null || borderBoxValue === undefined || borderBoxValue <= 0) {
3776
+ borderBoxValue = undefined;
3777
+ // Fall back to computed then un computed css if necessary
3778
+ cssBoxValue = getComputedStyleX(elem, name);
3779
+ if (cssBoxValue === null || cssBoxValue === undefined || Number(cssBoxValue) < 0) {
3780
+ cssBoxValue = elem.style[name] || 0;
3781
+ }
3782
+ // Normalize '', auto, and prepare for extra
3783
+ cssBoxValue = parseFloat(cssBoxValue) || 0;
3784
+ }
3785
+ if (extra === undefined) {
3786
+ extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;
3787
+ }
3788
+ var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;
3789
+ var val = borderBoxValue || cssBoxValue;
3790
+ if (extra === CONTENT_INDEX) {
3791
+ if (borderBoxValueOrIsBorderBox) {
3792
+ return val - getPBMWidth(elem, ['border', 'padding'], which, computedStyle);
3793
+ }
3794
+ return cssBoxValue;
3795
+ } else if (borderBoxValueOrIsBorderBox) {
3796
+ if (extra === BORDER_INDEX) {
3797
+ return val;
3798
+ }
3799
+ return val + (extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which, computedStyle) : getPBMWidth(elem, ['margin'], which, computedStyle));
3800
+ }
3801
+ return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which, computedStyle);
3802
+ }
3803
+
3804
+ var cssShow = {
3805
+ position: 'absolute',
3806
+ visibility: 'hidden',
3807
+ display: 'block'
3808
+ };
3809
+
3810
+ // fix #119 : https://github.com/kissyteam/kissy/issues/119
3811
+ function getWHIgnoreDisplay() {
3812
+ for (var _len = arguments.length, args = Array(_len), _key2 = 0; _key2 < _len; _key2++) {
3813
+ args[_key2] = arguments[_key2];
3814
+ }
3815
+
3816
+ var val = void 0;
3817
+ var elem = args[0];
3818
+ // in case elem is window
3819
+ // elem.offsetWidth === undefined
3820
+ if (elem.offsetWidth !== 0) {
3821
+ val = getWH.apply(undefined, args);
3822
+ } else {
3823
+ swap(elem, cssShow, function () {
3824
+ val = getWH.apply(undefined, args);
3825
+ });
3826
+ }
3827
+ return val;
3828
+ }
3829
+
3830
+ each(['width', 'height'], function (name) {
3831
+ var first = name.charAt(0).toUpperCase() + name.slice(1);
3832
+ domUtils['outer' + first] = function (el, includeMargin) {
3833
+ return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);
3834
+ };
3835
+ var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];
3836
+
3837
+ domUtils[name] = function (elem, v) {
3838
+ var val = v;
3839
+ if (val !== undefined) {
3840
+ if (elem) {
3841
+ var computedStyle = getComputedStyleX(elem);
3842
+ var isBorderBox = isBorderBoxFn(elem);
3843
+ if (isBorderBox) {
3844
+ val += getPBMWidth(elem, ['padding', 'border'], which, computedStyle);
3845
+ }
3846
+ return css(elem, name, val);
3847
+ }
3848
+ return undefined;
3849
+ }
3850
+ return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);
3851
+ };
3852
+ });
3853
+
3854
+ function mix(to, from) {
3855
+ for (var i in from) {
3856
+ if (from.hasOwnProperty(i)) {
3857
+ to[i] = from[i];
3858
+ }
3859
+ }
3860
+ return to;
3861
+ }
3862
+
3863
+ var utils = {
3864
+ getWindow: function getWindow(node) {
3865
+ if (node && node.document && node.setTimeout) {
3866
+ return node;
3867
+ }
3868
+ var doc = node.ownerDocument || node;
3869
+ return doc.defaultView || doc.parentWindow;
3870
+ },
3871
+
3872
+ getDocument: getDocument,
3873
+ offset: function offset(el, value, option) {
3874
+ if (typeof value !== 'undefined') {
3875
+ setOffset(el, value, option || {});
3876
+ } else {
3877
+ return getOffset(el);
3878
+ }
3879
+ },
3880
+
3881
+ isWindow: isWindow,
3882
+ each: each,
3883
+ css: css,
3884
+ clone: function clone(obj) {
3885
+ var i = void 0;
3886
+ var ret = {};
3887
+ for (i in obj) {
3888
+ if (obj.hasOwnProperty(i)) {
3889
+ ret[i] = obj[i];
3890
+ }
3891
+ }
3892
+ var overflow = obj.overflow;
3893
+ if (overflow) {
3894
+ for (i in obj) {
3895
+ if (obj.hasOwnProperty(i)) {
3896
+ ret.overflow[i] = obj.overflow[i];
3897
+ }
3898
+ }
3899
+ }
3900
+ return ret;
3901
+ },
3902
+
3903
+ mix: mix,
3904
+ getWindowScrollLeft: function getWindowScrollLeft(w) {
3905
+ return getScrollLeft(w);
3906
+ },
3907
+ getWindowScrollTop: function getWindowScrollTop(w) {
3908
+ return getScrollTop(w);
3909
+ },
3910
+ merge: function merge() {
3911
+ var ret = {};
3912
+
3913
+ for (var _len2 = arguments.length, args = Array(_len2), _key3 = 0; _key3 < _len2; _key3++) {
3914
+ args[_key3] = arguments[_key3];
3915
+ }
3916
+
3917
+ for (var i = 0; i < args.length; i++) {
3918
+ utils.mix(ret, args[i]);
3919
+ }
3920
+ return ret;
3921
+ },
3922
+
3923
+ viewportWidth: 0,
3924
+ viewportHeight: 0
3925
+ };
3926
+
3927
+ mix(utils, domUtils);
3928
+
3929
+ /* harmony default export */ __webpack_exports__["a"] = (utils);
3930
+
3931
+ /***/ }),
3932
+ /* 84 */
3933
+ /***/ (function(module, exports, __webpack_require__) {
3934
+
3935
+ // fallback for non-array-like ES3 and non-enumerable old V8 strings
3936
+ var cof = __webpack_require__(36);
3937
+ // eslint-disable-next-line no-prototype-builtins
3938
+ module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
3939
+ return cof(it) == 'String' ? it.split('') : Object(it);
3940
+ };
3941
+
3942
+
3943
+ /***/ }),
3944
+ /* 85 */
3945
+ /***/ (function(module, exports) {
3946
+
3947
+ exports.f = {}.propertyIsEnumerable;
3948
+
3949
+
3950
+ /***/ }),
3951
+ /* 86 */
3952
+ /***/ (function(module, exports, __webpack_require__) {
3953
+
3954
+ // getting tag from 19.1.3.6 Object.prototype.toString()
3955
+ var cof = __webpack_require__(36);
3956
+ var TAG = __webpack_require__(9)('toStringTag');
3957
+ // ES3 wrong here
3958
+ var ARG = cof(function () { return arguments; }()) == 'Arguments';
3959
+
3960
+ // fallback for IE11 Script Access Denied error
3961
+ var tryGet = function (it, key) {
3962
+ try {
3963
+ return it[key];
3964
+ } catch (e) { /* empty */ }
3965
+ };
3966
+
3967
+ module.exports = function (it) {
3968
+ var O, T, B;
3969
+ return it === undefined ? 'Undefined' : it === null ? 'Null'
3970
+ // @@toStringTag case
3971
+ : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
3972
+ // builtinTag case
3973
+ : ARG ? cof(O)
3974
+ // ES3 arguments fallback
3975
+ : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
3976
+ };
3977
+
3978
+
3979
+ /***/ }),
3980
+ /* 87 */
3981
+ /***/ (function(module, exports, __webpack_require__) {
3982
+
3983
+ "use strict";
3984
+ /* WEBPACK VAR INJECTION */(function(process) {/**
3985
+ * Copyright (c) 2013-present, Facebook, Inc.
3986
+ *
3987
+ * This source code is licensed under the MIT license found in the
3988
+ * LICENSE file in the root directory of this source tree.
3989
+ *
3990
+ */
3991
+
3992
+
3993
+
3994
+ var emptyObject = {};
3995
+
3996
+ if (process.env.NODE_ENV !== 'production') {
3997
+ Object.freeze(emptyObject);
3998
+ }
3999
+
4000
+ module.exports = emptyObject;
4001
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
4002
+
4003
+ /***/ }),
4004
+ /* 88 */
4005
+ /***/ (function(module, exports, __webpack_require__) {
4006
+
4007
+ "use strict";
4008
+ /* WEBPACK VAR INJECTION */(function(process) {/**
4009
+ * Copyright (c) 2014-present, Facebook, Inc.
4010
+ *
4011
+ * This source code is licensed under the MIT license found in the
4012
+ * LICENSE file in the root directory of this source tree.
4013
+ *
4014
+ */
4015
+
4016
+
4017
+
4018
+ var emptyFunction = __webpack_require__(50);
4019
+
4020
+ /**
4021
+ * Similar to invariant but only logs a warning if the condition is not met.
4022
+ * This can be used to log issues in development environments in critical
4023
+ * paths. Removing the logging code for production environments will keep the
4024
+ * same logic and follow the same code paths.
4025
+ */
4026
+
4027
+ var warning = emptyFunction;
4028
+
4029
+ if (process.env.NODE_ENV !== 'production') {
4030
+ var printWarning = function printWarning(format) {
4031
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
4032
+ args[_key - 1] = arguments[_key];
4033
+ }
4034
+
4035
+ var argIndex = 0;
4036
+ var message = 'Warning: ' + format.replace(/%s/g, function () {
4037
+ return args[argIndex++];
4038
+ });
4039
+ if (typeof console !== 'undefined') {
4040
+ console.error(message);
4041
+ }
4042
+ try {
4043
+ // --- Welcome to debugging React ---
4044
+ // This error was thrown as a convenience so that you can use this stack
4045
+ // to find the callsite that caused this warning to fire.
4046
+ throw new Error(message);
4047
+ } catch (x) {}
4048
+ };
4049
+
4050
+ warning = function warning(condition, format) {
4051
+ if (format === undefined) {
4052
+ throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');
4053
+ }
4054
+
4055
+ if (format.indexOf('Failed Composite propType: ') === 0) {
4056
+ return; // Ignore CompositeComponent proptype check.
4057
+ }
4058
+
4059
+ if (!condition) {
4060
+ for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
4061
+ args[_key2 - 2] = arguments[_key2];
4062
+ }
4063
+
4064
+ printWarning.apply(undefined, [format].concat(args));
4065
+ }
4066
+ };
4067
+ }
4068
+
4069
+ module.exports = warning;
4070
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
4071
+
4072
+ /***/ }),
4073
+ /* 89 */
4074
+ /***/ (function(module, exports) {
4075
+
4076
+ module.exports = {};
4077
+
4078
+
4079
+ /***/ }),
4080
+ /* 90 */
4081
+ /***/ (function(module, exports, __webpack_require__) {
4082
+
4083
+ // 19.1.2.14 / 15.2.3.14 Object.keys(O)
4084
+ var $keys = __webpack_require__(243);
4085
+ var enumBugKeys = __webpack_require__(169);
4086
+
4087
+ module.exports = Object.keys || function keys(O) {
4088
+ return $keys(O, enumBugKeys);
4089
+ };
4090
+
4091
+
4092
+ /***/ }),
4093
+ /* 91 */
4094
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
4095
+
4096
+ "use strict";
4097
+ Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
4098
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cancelAnimationTimeout", function() { return cancelAnimationTimeout; });
4099
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "requestAnimationTimeout", function() { return requestAnimationTimeout; });
4100
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__animationFrame__ = __webpack_require__(562);
4101
+
4102
+
4103
+ var babelPluginFlowReactPropTypes_proptype_AnimationTimeoutId = {
4104
+ id: __webpack_require__(0).number.isRequired
4105
+ };
4106
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_AnimationTimeoutId', {
4107
+ value: babelPluginFlowReactPropTypes_proptype_AnimationTimeoutId,
4108
+ configurable: true
4109
+ });
4110
+
4111
+
4112
+ var cancelAnimationTimeout = function cancelAnimationTimeout(frame) {
4113
+ return Object(__WEBPACK_IMPORTED_MODULE_0__animationFrame__["a" /* caf */])(frame.id);
4114
+ };
4115
+
4116
+ /**
4117
+ * Recursively calls requestAnimationFrame until a specified delay has been met or exceeded.
4118
+ * When the delay time has been reached the function you're timing out will be called.
4119
+ *
4120
+ * Credit: Joe Lambert (https://gist.github.com/joelambert/1002116#file-requesttimeout-js)
4121
+ */
4122
+ var requestAnimationTimeout = function requestAnimationTimeout(callback, delay) {
4123
+ var start = Date.now();
4124
+
4125
+ var timeout = function timeout() {
4126
+ if (Date.now() - start >= delay) {
4127
+ callback.call();
4128
+ } else {
4129
+ frame.id = Object(__WEBPACK_IMPORTED_MODULE_0__animationFrame__["b" /* raf */])(timeout);
4130
+ }
4131
+ };
4132
+
4133
+ var frame = {
4134
+ id: Object(__WEBPACK_IMPORTED_MODULE_0__animationFrame__["b" /* raf */])(timeout)
4135
+ };
4136
+
4137
+ return frame;
4138
+ };
4139
+
4140
+ /***/ }),
4141
+ /* 92 */
4142
+ /***/ (function(module, exports, __webpack_require__) {
4143
+
4144
+ var babelPluginFlowReactPropTypes_proptype_CellDataGetterParams = {
4145
+ columnData: __webpack_require__(0).any,
4146
+ dataKey: __webpack_require__(0).string.isRequired,
4147
+ rowData: function rowData(props, propName, componentName) {
4148
+ if (!Object.prototype.hasOwnProperty.call(props, propName)) {
4149
+ throw new Error("Prop `" + propName + "` has type 'any' or 'mixed', but was not provided to `" + componentName + "`. Pass undefined or any other value.");
4150
+ }
4151
+ }
4152
+ };
4153
+ if (true) Object.defineProperty(exports, "babelPluginFlowReactPropTypes_proptype_CellDataGetterParams", {
4154
+ value: babelPluginFlowReactPropTypes_proptype_CellDataGetterParams,
4155
+ configurable: true
4156
+ });
4157
+ var babelPluginFlowReactPropTypes_proptype_CellRendererParams = {
4158
+ cellData: __webpack_require__(0).any,
4159
+ columnData: __webpack_require__(0).any,
4160
+ dataKey: __webpack_require__(0).string.isRequired,
4161
+ rowData: function rowData(props, propName, componentName) {
4162
+ if (!Object.prototype.hasOwnProperty.call(props, propName)) {
4163
+ throw new Error("Prop `" + propName + "` has type 'any' or 'mixed', but was not provided to `" + componentName + "`. Pass undefined or any other value.");
4164
+ }
4165
+ },
4166
+ rowIndex: __webpack_require__(0).number.isRequired
4167
+ };
4168
+ if (true) Object.defineProperty(exports, "babelPluginFlowReactPropTypes_proptype_CellRendererParams", {
4169
+ value: babelPluginFlowReactPropTypes_proptype_CellRendererParams,
4170
+ configurable: true
4171
+ });
4172
+ var babelPluginFlowReactPropTypes_proptype_HeaderRowRendererParams = {
4173
+ className: __webpack_require__(0).string.isRequired,
4174
+ columns: __webpack_require__(0).arrayOf(__webpack_require__(0).any).isRequired,
4175
+ style: function style(props, propName, componentName) {
4176
+ if (!Object.prototype.hasOwnProperty.call(props, propName)) {
4177
+ throw new Error("Prop `" + propName + "` has type 'any' or 'mixed', but was not provided to `" + componentName + "`. Pass undefined or any other value.");
4178
+ }
4179
+ }
4180
+ };
4181
+ if (true) Object.defineProperty(exports, "babelPluginFlowReactPropTypes_proptype_HeaderRowRendererParams", {
4182
+ value: babelPluginFlowReactPropTypes_proptype_HeaderRowRendererParams,
4183
+ configurable: true
4184
+ });
4185
+ var babelPluginFlowReactPropTypes_proptype_HeaderRendererParams = {
4186
+ columnData: __webpack_require__(0).any,
4187
+ dataKey: __webpack_require__(0).string.isRequired,
4188
+ disableSort: __webpack_require__(0).bool,
4189
+ label: __webpack_require__(0).any,
4190
+ sortBy: __webpack_require__(0).string,
4191
+ sortDirection: __webpack_require__(0).string
4192
+ };
4193
+ if (true) Object.defineProperty(exports, "babelPluginFlowReactPropTypes_proptype_HeaderRendererParams", {
4194
+ value: babelPluginFlowReactPropTypes_proptype_HeaderRendererParams,
4195
+ configurable: true
4196
+ });
4197
+ var babelPluginFlowReactPropTypes_proptype_RowRendererParams = {
4198
+ className: __webpack_require__(0).string.isRequired,
4199
+ columns: __webpack_require__(0).arrayOf(__webpack_require__(0).any).isRequired,
4200
+ index: __webpack_require__(0).number.isRequired,
4201
+ isScrolling: __webpack_require__(0).bool.isRequired,
4202
+ onRowClick: __webpack_require__(0).func,
4203
+ onRowDoubleClick: __webpack_require__(0).func,
4204
+ onRowMouseOver: __webpack_require__(0).func,
4205
+ onRowMouseOut: __webpack_require__(0).func,
4206
+ rowData: function rowData(props, propName, componentName) {
4207
+ if (!Object.prototype.hasOwnProperty.call(props, propName)) {
4208
+ throw new Error("Prop `" + propName + "` has type 'any' or 'mixed', but was not provided to `" + componentName + "`. Pass undefined or any other value.");
4209
+ }
4210
+ },
4211
+ style: function style(props, propName, componentName) {
4212
+ if (!Object.prototype.hasOwnProperty.call(props, propName)) {
4213
+ throw new Error("Prop `" + propName + "` has type 'any' or 'mixed', but was not provided to `" + componentName + "`. Pass undefined or any other value.");
4214
+ }
4215
+ }
4216
+ };
4217
+ if (true) Object.defineProperty(exports, "babelPluginFlowReactPropTypes_proptype_RowRendererParams", {
4218
+ value: babelPluginFlowReactPropTypes_proptype_RowRendererParams,
4219
+ configurable: true
4220
+ });
4221
+
4222
+ /***/ }),
4223
+ /* 93 */
4224
+ /***/ (function(module, exports) {
4225
+
4226
+ module.exports = function(module) {
4227
+ if(!module.webpackPolyfill) {
4228
+ module.deprecate = function() {};
4229
+ module.paths = [];
4230
+ // module.parent = undefined by default
4231
+ if(!module.children) module.children = [];
4232
+ Object.defineProperty(module, "loaded", {
4233
+ enumerable: true,
4234
+ get: function() {
4235
+ return module.l;
4236
+ }
4237
+ });
4238
+ Object.defineProperty(module, "id", {
4239
+ enumerable: true,
4240
+ get: function() {
4241
+ return module.i;
4242
+ }
4243
+ });
4244
+ module.webpackPolyfill = 1;
4245
+ }
4246
+ return module;
4247
+ };
4248
+
4249
+
4250
+ /***/ }),
4251
+ /* 94 */
4252
+ /***/ (function(module, exports, __webpack_require__) {
4253
+
4254
+ var freeGlobal = __webpack_require__(266);
4255
+
4256
+ /** Detect free variable `self`. */
4257
+ var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
4258
+
4259
+ /** Used as a reference to the global object. */
4260
+ var root = freeGlobal || freeSelf || Function('return this')();
4261
+
4262
+ module.exports = root;
4263
+
4264
+
4265
+ /***/ }),
4266
+ /* 95 */
4267
+ /***/ (function(module, exports) {
4268
+
4269
+ /**
4270
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
4271
+ * and has a `typeof` result of "object".
4272
+ *
4273
+ * @static
4274
+ * @memberOf _
4275
+ * @since 4.0.0
4276
+ * @category Lang
4277
+ * @param {*} value The value to check.
4278
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
4279
+ * @example
4280
+ *
4281
+ * _.isObjectLike({});
4282
+ * // => true
4283
+ *
4284
+ * _.isObjectLike([1, 2, 3]);
4285
+ * // => true
4286
+ *
4287
+ * _.isObjectLike(_.noop);
4288
+ * // => false
4289
+ *
4290
+ * _.isObjectLike(null);
4291
+ * // => false
4292
+ */
4293
+ function isObjectLike(value) {
4294
+ return value != null && typeof value == 'object';
4295
+ }
4296
+
4297
+ module.exports = isObjectLike;
4298
+
4299
+
4300
+ /***/ }),
4301
+ /* 96 */
4302
+ /***/ (function(module, exports) {
4303
+
4304
+ /**
4305
+ * Checks if `value` is the
4306
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
4307
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
4308
+ *
4309
+ * @static
4310
+ * @memberOf _
4311
+ * @since 0.1.0
4312
+ * @category Lang
4313
+ * @param {*} value The value to check.
4314
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
4315
+ * @example
4316
+ *
4317
+ * _.isObject({});
4318
+ * // => true
4319
+ *
4320
+ * _.isObject([1, 2, 3]);
4321
+ * // => true
4322
+ *
4323
+ * _.isObject(_.noop);
4324
+ * // => true
4325
+ *
4326
+ * _.isObject(null);
4327
+ * // => false
4328
+ */
4329
+ function isObject(value) {
4330
+ var type = typeof value;
4331
+ return value != null && (type == 'object' || type == 'function');
4332
+ }
4333
+
4334
+ module.exports = isObject;
4335
+
4336
+
4337
+ /***/ }),
4338
+ /* 97 */
4339
+ /***/ (function(module, exports, __webpack_require__) {
4340
+
4341
+ var global = __webpack_require__(4);
4342
+ var SHARED = '__core-js_shared__';
4343
+ var store = global[SHARED] || (global[SHARED] = {});
4344
+ module.exports = function (key) {
4345
+ return store[key] || (store[key] = {});
4346
+ };
4347
+
4348
+
4349
+ /***/ }),
4350
+ /* 98 */
4351
+ /***/ (function(module, exports, __webpack_require__) {
4352
+
4353
+ // false -> Array#indexOf
4354
+ // true -> Array#includes
4355
+ var toIObject = __webpack_require__(29);
4356
+ var toLength = __webpack_require__(16);
4357
+ var toAbsoluteIndex = __webpack_require__(57);
4358
+ module.exports = function (IS_INCLUDES) {
4359
+ return function ($this, el, fromIndex) {
4360
+ var O = toIObject($this);
4361
+ var length = toLength(O.length);
4362
+ var index = toAbsoluteIndex(fromIndex, length);
4363
+ var value;
4364
+ // Array#includes uses SameValueZero equality algorithm
4365
+ // eslint-disable-next-line no-self-compare
4366
+ if (IS_INCLUDES && el != el) while (length > index) {
4367
+ value = O[index++];
4368
+ // eslint-disable-next-line no-self-compare
4369
+ if (value != value) return true;
4370
+ // Array#indexOf ignores holes, Array#includes - not
4371
+ } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
4372
+ if (O[index] === el) return IS_INCLUDES || index || 0;
4373
+ } return !IS_INCLUDES && -1;
4374
+ };
4375
+ };
4376
+
4377
+
4378
+ /***/ }),
4379
+ /* 99 */
4380
+ /***/ (function(module, exports) {
4381
+
4382
+ exports.f = Object.getOwnPropertySymbols;
4383
+
4384
+
4385
+ /***/ }),
4386
+ /* 100 */
4387
+ /***/ (function(module, exports, __webpack_require__) {
4388
+
4389
+ // 7.2.2 IsArray(argument)
4390
+ var cof = __webpack_require__(36);
4391
+ module.exports = Array.isArray || function isArray(arg) {
4392
+ return cof(arg) == 'Array';
4393
+ };
4394
+
4395
+
4396
+ /***/ }),
4397
+ /* 101 */
4398
+ /***/ (function(module, exports, __webpack_require__) {
4399
+
4400
+ // 7.2.8 IsRegExp(argument)
4401
+ var isObject = __webpack_require__(6);
4402
+ var cof = __webpack_require__(36);
4403
+ var MATCH = __webpack_require__(9)('match');
4404
+ module.exports = function (it) {
4405
+ var isRegExp;
4406
+ return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
4407
+ };
4408
+
4409
+
4410
+ /***/ }),
4411
+ /* 102 */
4412
+ /***/ (function(module, exports, __webpack_require__) {
4413
+
4414
+ var ITERATOR = __webpack_require__(9)('iterator');
4415
+ var SAFE_CLOSING = false;
4416
+
4417
+ try {
4418
+ var riter = [7][ITERATOR]();
4419
+ riter['return'] = function () { SAFE_CLOSING = true; };
4420
+ // eslint-disable-next-line no-throw-literal
4421
+ Array.from(riter, function () { throw 2; });
4422
+ } catch (e) { /* empty */ }
4423
+
4424
+ module.exports = function (exec, skipClosing) {
4425
+ if (!skipClosing && !SAFE_CLOSING) return false;
4426
+ var safe = false;
4427
+ try {
4428
+ var arr = [7];
4429
+ var iter = arr[ITERATOR]();
4430
+ iter.next = function () { return { done: safe = true }; };
4431
+ arr[ITERATOR] = function () { return iter; };
4432
+ exec(arr);
4433
+ } catch (e) { /* empty */ }
4434
+ return safe;
4435
+ };
4436
+
4437
+
4438
+ /***/ }),
4439
+ /* 103 */
4440
+ /***/ (function(module, exports, __webpack_require__) {
4441
+
4442
+ "use strict";
4443
+
4444
+ // 21.2.5.3 get RegExp.prototype.flags
4445
+ var anObject = __webpack_require__(3);
4446
+ module.exports = function () {
4447
+ var that = anObject(this);
4448
+ var result = '';
4449
+ if (that.global) result += 'g';
4450
+ if (that.ignoreCase) result += 'i';
4451
+ if (that.multiline) result += 'm';
4452
+ if (that.unicode) result += 'u';
4453
+ if (that.sticky) result += 'y';
4454
+ return result;
4455
+ };
4456
+
4457
+
4458
+ /***/ }),
4459
+ /* 104 */
4460
+ /***/ (function(module, exports, __webpack_require__) {
4461
+
4462
+ "use strict";
4463
+
4464
+ var hide = __webpack_require__(25);
4465
+ var redefine = __webpack_require__(26);
4466
+ var fails = __webpack_require__(5);
4467
+ var defined = __webpack_require__(40);
4468
+ var wks = __webpack_require__(9);
4469
+
4470
+ module.exports = function (KEY, length, exec) {
4471
+ var SYMBOL = wks(KEY);
4472
+ var fns = exec(defined, SYMBOL, ''[KEY]);
4473
+ var strfn = fns[0];
4474
+ var rxfn = fns[1];
4475
+ if (fails(function () {
4476
+ var O = {};
4477
+ O[SYMBOL] = function () { return 7; };
4478
+ return ''[KEY](O) != 7;
4479
+ })) {
4480
+ redefine(String.prototype, KEY, strfn);
4481
+ hide(RegExp.prototype, SYMBOL, length == 2
4482
+ // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
4483
+ // 21.2.5.11 RegExp.prototype[@@split](string, limit)
4484
+ ? function (string, arg) { return rxfn.call(string, this, arg); }
4485
+ // 21.2.5.6 RegExp.prototype[@@match](string)
4486
+ // 21.2.5.9 RegExp.prototype[@@search](string)
4487
+ : function (string) { return rxfn.call(string, this); }
4488
+ );
4489
+ }
4490
+ };
4491
+
4492
+
4493
+ /***/ }),
4494
+ /* 105 */
4495
+ /***/ (function(module, exports, __webpack_require__) {
4496
+
4497
+ // 7.3.20 SpeciesConstructor(O, defaultConstructor)
4498
+ var anObject = __webpack_require__(3);
4499
+ var aFunction = __webpack_require__(20);
4500
+ var SPECIES = __webpack_require__(9)('species');
4501
+ module.exports = function (O, D) {
4502
+ var C = anObject(O).constructor;
4503
+ var S;
4504
+ return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
4505
+ };
4506
+
4507
+
4508
+ /***/ }),
4509
+ /* 106 */
4510
+ /***/ (function(module, exports, __webpack_require__) {
4511
+
4512
+ "use strict";
4513
+
4514
+ var global = __webpack_require__(4);
4515
+ var $export = __webpack_require__(1);
4516
+ var redefine = __webpack_require__(26);
4517
+ var redefineAll = __webpack_require__(63);
4518
+ var meta = __webpack_require__(48);
4519
+ var forOf = __webpack_require__(62);
4520
+ var anInstance = __webpack_require__(61);
4521
+ var isObject = __webpack_require__(6);
4522
+ var fails = __webpack_require__(5);
4523
+ var $iterDetect = __webpack_require__(102);
4524
+ var setToStringTag = __webpack_require__(72);
4525
+ var inheritIfRequired = __webpack_require__(136);
4526
+
4527
+ module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
4528
+ var Base = global[NAME];
4529
+ var C = Base;
4530
+ var ADDER = IS_MAP ? 'set' : 'add';
4531
+ var proto = C && C.prototype;
4532
+ var O = {};
4533
+ var fixMethod = function (KEY) {
4534
+ var fn = proto[KEY];
4535
+ redefine(proto, KEY,
4536
+ KEY == 'delete' ? function (a) {
4537
+ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
4538
+ } : KEY == 'has' ? function has(a) {
4539
+ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
4540
+ } : KEY == 'get' ? function get(a) {
4541
+ return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
4542
+ } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }
4543
+ : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }
4544
+ );
4545
+ };
4546
+ if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
4547
+ new C().entries().next();
4548
+ }))) {
4549
+ // create collection constructor
4550
+ C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
4551
+ redefineAll(C.prototype, methods);
4552
+ meta.NEED = true;
4553
+ } else {
4554
+ var instance = new C();
4555
+ // early implementations not supports chaining
4556
+ var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
4557
+ // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false
4558
+ var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });
4559
+ // most early implementations doesn't supports iterables, most modern - not close it correctly
4560
+ var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new
4561
+ // for early implementations -0 and +0 not the same
4562
+ var BUGGY_ZERO = !IS_WEAK && fails(function () {
4563
+ // V8 ~ Chromium 42- fails only with 5+ elements
4564
+ var $instance = new C();
4565
+ var index = 5;
4566
+ while (index--) $instance[ADDER](index, index);
4567
+ return !$instance.has(-0);
4568
+ });
4569
+ if (!ACCEPT_ITERABLES) {
4570
+ C = wrapper(function (target, iterable) {
4571
+ anInstance(target, C, NAME);
4572
+ var that = inheritIfRequired(new Base(), target, C);
4573
+ if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
4574
+ return that;
4575
+ });
4576
+ C.prototype = proto;
4577
+ proto.constructor = C;
4578
+ }
4579
+ if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
4580
+ fixMethod('delete');
4581
+ fixMethod('has');
4582
+ IS_MAP && fixMethod('get');
4583
+ }
4584
+ if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
4585
+ // weak collections should not contains .clear method
4586
+ if (IS_WEAK && proto.clear) delete proto.clear;
4587
+ }
4588
+
4589
+ setToStringTag(C, NAME);
4590
+
4591
+ O[NAME] = C;
4592
+ $export($export.G + $export.W + $export.F * (C != Base), O);
4593
+
4594
+ if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);
4595
+
4596
+ return C;
4597
+ };
4598
+
4599
+
4600
+ /***/ }),
4601
+ /* 107 */
4602
+ /***/ (function(module, exports, __webpack_require__) {
4603
+
4604
+ var global = __webpack_require__(4);
4605
+ var hide = __webpack_require__(25);
4606
+ var uid = __webpack_require__(54);
4607
+ var TYPED = uid('typed_array');
4608
+ var VIEW = uid('view');
4609
+ var ABV = !!(global.ArrayBuffer && global.DataView);
4610
+ var CONSTR = ABV;
4611
+ var i = 0;
4612
+ var l = 9;
4613
+ var Typed;
4614
+
4615
+ var TypedArrayConstructors = (
4616
+ 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'
4617
+ ).split(',');
4618
+
4619
+ while (i < l) {
4620
+ if (Typed = global[TypedArrayConstructors[i++]]) {
4621
+ hide(Typed.prototype, TYPED, true);
4622
+ hide(Typed.prototype, VIEW, true);
4623
+ } else CONSTR = false;
4624
+ }
4625
+
4626
+ module.exports = {
4627
+ ABV: ABV,
4628
+ CONSTR: CONSTR,
4629
+ TYPED: TYPED,
4630
+ VIEW: VIEW
4631
+ };
4632
+
4633
+
4634
+ /***/ }),
4635
+ /* 108 */
4636
+ /***/ (function(module, exports, __webpack_require__) {
4637
+
4638
+ "use strict";
4639
+
4640
+ // Forced replacement prototype accessors methods
4641
+ module.exports = __webpack_require__(55) || !__webpack_require__(5)(function () {
4642
+ var K = Math.random();
4643
+ // In FF throws only define methods
4644
+ // eslint-disable-next-line no-undef, no-useless-call
4645
+ __defineSetter__.call(null, K, function () { /* empty */ });
4646
+ delete __webpack_require__(4)[K];
4647
+ });
4648
+
4649
+
4650
+ /***/ }),
4651
+ /* 109 */
4652
+ /***/ (function(module, exports, __webpack_require__) {
4653
+
4654
+ "use strict";
4655
+
4656
+ // https://tc39.github.io/proposal-setmap-offrom/
4657
+ var $export = __webpack_require__(1);
4658
+
4659
+ module.exports = function (COLLECTION) {
4660
+ $export($export.S, COLLECTION, { of: function of() {
4661
+ var length = arguments.length;
4662
+ var A = new Array(length);
4663
+ while (length--) A[length] = arguments[length];
4664
+ return new this(A);
4665
+ } });
4666
+ };
4667
+
4668
+
4669
+ /***/ }),
4670
+ /* 110 */
4671
+ /***/ (function(module, exports, __webpack_require__) {
4672
+
4673
+ "use strict";
4674
+
4675
+ // https://tc39.github.io/proposal-setmap-offrom/
4676
+ var $export = __webpack_require__(1);
4677
+ var aFunction = __webpack_require__(20);
4678
+ var ctx = __webpack_require__(35);
4679
+ var forOf = __webpack_require__(62);
4680
+
4681
+ module.exports = function (COLLECTION) {
4682
+ $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {
4683
+ var mapFn = arguments[1];
4684
+ var mapping, A, n, cb;
4685
+ aFunction(this);
4686
+ mapping = mapFn !== undefined;
4687
+ if (mapping) aFunction(mapFn);
4688
+ if (source == undefined) return new this();
4689
+ A = [];
4690
+ if (mapping) {
4691
+ n = 0;
4692
+ cb = ctx(mapFn, arguments[2], 2);
4693
+ forOf(source, false, function (nextItem) {
4694
+ A.push(cb(nextItem, n++));
4695
+ });
4696
+ } else {
4697
+ forOf(source, false, A.push, A);
4698
+ }
4699
+ return new this(A);
4700
+ } });
4701
+ };
4702
+
4703
+
4704
+ /***/ }),
4705
+ /* 111 */
4706
+ /***/ (function(module, exports, __webpack_require__) {
4707
+
4708
+ // 7.1.13 ToObject(argument)
4709
+ var defined = __webpack_require__(159);
4710
+ module.exports = function (it) {
4711
+ return Object(defined(it));
4712
+ };
4713
+
4714
+
4715
+ /***/ }),
4716
+ /* 112 */
4717
+ /***/ (function(module, exports) {
4718
+
4719
+ var id = 0;
4720
+ var px = Math.random();
4721
+ module.exports = function (key) {
4722
+ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
4723
+ };
4724
+
4725
+
4726
+ /***/ }),
4727
+ /* 113 */
4728
+ /***/ (function(module, exports) {
4729
+
4730
+ module.exports = function (bitmap, value) {
4731
+ return {
4732
+ enumerable: !(bitmap & 1),
4733
+ configurable: !(bitmap & 2),
4734
+ writable: !(bitmap & 4),
4735
+ value: value
4736
+ };
4737
+ };
4738
+
4739
+
4740
+ /***/ }),
4741
+ /* 114 */
4742
+ /***/ (function(module, exports, __webpack_require__) {
4743
+
4744
+ "use strict";
4745
+
4746
+
4747
+ exports.__esModule = true;
4748
+
4749
+ var _iterator = __webpack_require__(527);
4750
+
4751
+ var _iterator2 = _interopRequireDefault(_iterator);
4752
+
4753
+ var _symbol = __webpack_require__(539);
4754
+
4755
+ var _symbol2 = _interopRequireDefault(_symbol);
4756
+
4757
+ var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };
4758
+
4759
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4760
+
4761
+ exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {
4762
+ return typeof obj === "undefined" ? "undefined" : _typeof(obj);
4763
+ } : function (obj) {
4764
+ return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);
4765
+ };
4766
+
4767
+ /***/ }),
4768
+ /* 115 */
4769
+ /***/ (function(module, exports) {
4770
+
4771
+ exports.f = {}.propertyIsEnumerable;
4772
+
4773
+
4774
+ /***/ }),
4775
+ /* 116 */
4776
+ /***/ (function(module, exports, __webpack_require__) {
4777
+
4778
+ "use strict";
4779
+
4780
+
4781
+ exports.__esModule = true;
4782
+
4783
+ exports.default = function (obj, keys) {
4784
+ var target = {};
4785
+
4786
+ for (var i in obj) {
4787
+ if (keys.indexOf(i) >= 0) continue;
4788
+ if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;
4789
+ target[i] = obj[i];
4790
+ }
4791
+
4792
+ return target;
4793
+ };
4794
+
4795
+ /***/ }),
4796
+ /* 117 */
4797
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
4798
+
4799
+ "use strict";
4800
+ var SortDirection = {
4801
+ /**
4802
+ * Sort items in ascending order.
4803
+ * This means arranging from the lowest value to the highest (e.g. a-z, 0-9).
4804
+ */
4805
+ ASC: 'ASC',
4806
+
4807
+ /**
4808
+ * Sort items in descending order.
4809
+ * This means arranging from the highest value to the lowest (e.g. z-a, 9-0).
4810
+ */
4811
+ DESC: 'DESC'
4812
+ };
4813
+
4814
+ /* harmony default export */ __webpack_exports__["a"] = (SortDirection);
4815
+
4816
+ /***/ }),
4817
+ /* 118 */
4818
+ /***/ (function(module, exports, __webpack_require__) {
4819
+
4820
+ var Symbol = __webpack_require__(181),
4821
+ getRawTag = __webpack_require__(622),
4822
+ objectToString = __webpack_require__(623);
4823
+
4824
+ /** `Object#toString` result references. */
4825
+ var nullTag = '[object Null]',
4826
+ undefinedTag = '[object Undefined]';
4827
+
4828
+ /** Built-in value references. */
4829
+ var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
4830
+
4831
+ /**
4832
+ * The base implementation of `getTag` without fallbacks for buggy environments.
4833
+ *
4834
+ * @private
4835
+ * @param {*} value The value to query.
4836
+ * @returns {string} Returns the `toStringTag`.
4837
+ */
4838
+ function baseGetTag(value) {
4839
+ if (value == null) {
4840
+ return value === undefined ? undefinedTag : nullTag;
4841
+ }
4842
+ return (symToStringTag && symToStringTag in Object(value))
4843
+ ? getRawTag(value)
4844
+ : objectToString(value);
4845
+ }
4846
+
4847
+ module.exports = baseGetTag;
4848
+
4849
+
4850
+ /***/ }),
4851
+ /* 119 */
4852
+ /***/ (function(module, exports, __webpack_require__) {
4853
+
4854
+ "use strict";
4855
+
4856
+
4857
+ Object.defineProperty(exports, "__esModule", {
4858
+ value: true
4859
+ });
4860
+ exports.END_DRAG = exports.DROP = exports.HOVER = exports.PUBLISH_DRAG_SOURCE = exports.BEGIN_DRAG = undefined;
4861
+
4862
+ 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; };
4863
+
4864
+ exports.beginDrag = beginDrag;
4865
+ exports.publishDragSource = publishDragSource;
4866
+ exports.hover = hover;
4867
+ exports.drop = drop;
4868
+ exports.endDrag = endDrag;
4869
+
4870
+ var _invariant = __webpack_require__(28);
4871
+
4872
+ var _invariant2 = _interopRequireDefault(_invariant);
4873
+
4874
+ var _isArray = __webpack_require__(71);
4875
+
4876
+ var _isArray2 = _interopRequireDefault(_isArray);
4877
+
4878
+ var _isObject = __webpack_require__(96);
4879
+
4880
+ var _isObject2 = _interopRequireDefault(_isObject);
4881
+
4882
+ var _matchesType = __webpack_require__(268);
4883
+
4884
+ var _matchesType2 = _interopRequireDefault(_matchesType);
4885
+
4886
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4887
+
4888
+ var BEGIN_DRAG = exports.BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';
4889
+ var PUBLISH_DRAG_SOURCE = exports.PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';
4890
+ var HOVER = exports.HOVER = 'dnd-core/HOVER';
4891
+ var DROP = exports.DROP = 'dnd-core/DROP';
4892
+ var END_DRAG = exports.END_DRAG = 'dnd-core/END_DRAG';
4893
+
4894
+ function beginDrag(sourceIds) {
4895
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { publishSource: true, clientOffset: null };
4896
+ var publishSource = options.publishSource,
4897
+ clientOffset = options.clientOffset,
4898
+ getSourceClientOffset = options.getSourceClientOffset;
4899
+
4900
+ (0, _invariant2.default)((0, _isArray2.default)(sourceIds), 'Expected sourceIds to be an array.');
4901
+
4902
+ var monitor = this.getMonitor();
4903
+ var registry = this.getRegistry();
4904
+ (0, _invariant2.default)(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');
4905
+
4906
+ for (var i = 0; i < sourceIds.length; i++) {
4907
+ (0, _invariant2.default)(registry.getSource(sourceIds[i]), 'Expected sourceIds to be registered.');
4908
+ }
4909
+
4910
+ var sourceId = null;
4911
+ for (var _i = sourceIds.length - 1; _i >= 0; _i--) {
4912
+ if (monitor.canDragSource(sourceIds[_i])) {
4913
+ sourceId = sourceIds[_i];
4914
+ break;
4915
+ }
4916
+ }
4917
+ if (sourceId === null) {
4918
+ return;
4919
+ }
4920
+
4921
+ var sourceClientOffset = null;
4922
+ if (clientOffset) {
4923
+ (0, _invariant2.default)(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');
4924
+ sourceClientOffset = getSourceClientOffset(sourceId);
4925
+ }
4926
+
4927
+ var source = registry.getSource(sourceId);
4928
+ var item = source.beginDrag(monitor, sourceId);
4929
+ (0, _invariant2.default)((0, _isObject2.default)(item), 'Item must be an object.');
4930
+
4931
+ registry.pinSource(sourceId);
4932
+
4933
+ var itemType = registry.getSourceType(sourceId);
4934
+ return {
4935
+ type: BEGIN_DRAG,
4936
+ itemType: itemType,
4937
+ item: item,
4938
+ sourceId: sourceId,
4939
+ clientOffset: clientOffset,
4940
+ sourceClientOffset: sourceClientOffset,
4941
+ isSourcePublic: publishSource
4942
+ };
4943
+ }
4944
+
4945
+ function publishDragSource() {
4946
+ var monitor = this.getMonitor();
4947
+ if (!monitor.isDragging()) {
4948
+ return;
4949
+ }
4950
+
4951
+ return { type: PUBLISH_DRAG_SOURCE };
4952
+ }
4953
+
4954
+ function hover(targetIdsArg) {
4955
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
4956
+ _ref$clientOffset = _ref.clientOffset,
4957
+ clientOffset = _ref$clientOffset === undefined ? null : _ref$clientOffset;
4958
+
4959
+ (0, _invariant2.default)((0, _isArray2.default)(targetIdsArg), 'Expected targetIds to be an array.');
4960
+ var targetIds = targetIdsArg.slice(0);
4961
+
4962
+ var monitor = this.getMonitor();
4963
+ var registry = this.getRegistry();
4964
+ (0, _invariant2.default)(monitor.isDragging(), 'Cannot call hover while not dragging.');
4965
+ (0, _invariant2.default)(!monitor.didDrop(), 'Cannot call hover after drop.');
4966
+
4967
+ // First check invariants.
4968
+ for (var i = 0; i < targetIds.length; i++) {
4969
+ var targetId = targetIds[i];
4970
+ (0, _invariant2.default)(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');
4971
+
4972
+ var target = registry.getTarget(targetId);
4973
+ (0, _invariant2.default)(target, 'Expected targetIds to be registered.');
4974
+ }
4975
+
4976
+ var draggedItemType = monitor.getItemType();
4977
+
4978
+ // Remove those targetIds that don't match the targetType. This
4979
+ // fixes shallow isOver which would only be non-shallow because of
4980
+ // non-matching targets.
4981
+ for (var _i2 = targetIds.length - 1; _i2 >= 0; _i2--) {
4982
+ var _targetId = targetIds[_i2];
4983
+ var targetType = registry.getTargetType(_targetId);
4984
+ if (!(0, _matchesType2.default)(targetType, draggedItemType)) {
4985
+ targetIds.splice(_i2, 1);
4986
+ }
4987
+ }
4988
+
4989
+ // Finally call hover on all matching targets.
4990
+ for (var _i3 = 0; _i3 < targetIds.length; _i3++) {
4991
+ var _targetId2 = targetIds[_i3];
4992
+ var _target = registry.getTarget(_targetId2);
4993
+ _target.hover(monitor, _targetId2);
4994
+ }
4995
+
4996
+ return {
4997
+ type: HOVER,
4998
+ targetIds: targetIds,
4999
+ clientOffset: clientOffset
5000
+ };
5001
+ }
5002
+
5003
+ function drop() {
5004
+ var _this = this;
5005
+
5006
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5007
+
5008
+ var monitor = this.getMonitor();
5009
+ var registry = this.getRegistry();
5010
+ (0, _invariant2.default)(monitor.isDragging(), 'Cannot call drop while not dragging.');
5011
+ (0, _invariant2.default)(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');
5012
+
5013
+ var targetIds = monitor.getTargetIds().filter(monitor.canDropOnTarget, monitor);
5014
+
5015
+ targetIds.reverse();
5016
+ targetIds.forEach(function (targetId, index) {
5017
+ var target = registry.getTarget(targetId);
5018
+
5019
+ var dropResult = target.drop(monitor, targetId);
5020
+ (0, _invariant2.default)(typeof dropResult === 'undefined' || (0, _isObject2.default)(dropResult), 'Drop result must either be an object or undefined.');
5021
+ if (typeof dropResult === 'undefined') {
5022
+ dropResult = index === 0 ? {} : monitor.getDropResult();
5023
+ }
5024
+
5025
+ _this.store.dispatch({
5026
+ type: DROP,
5027
+ dropResult: _extends({}, options, dropResult)
5028
+ });
5029
+ });
5030
+ }
5031
+
5032
+ function endDrag() {
5033
+ var monitor = this.getMonitor();
5034
+ var registry = this.getRegistry();
5035
+ (0, _invariant2.default)(monitor.isDragging(), 'Cannot call endDrag while not dragging.');
5036
+
5037
+ var sourceId = monitor.getSourceId();
5038
+ var source = registry.getSource(sourceId, true);
5039
+ source.endDrag(monitor, sourceId);
5040
+
5041
+ registry.unpinSource();
5042
+
5043
+ return { type: END_DRAG };
5044
+ }
5045
+
5046
+ /***/ }),
5047
+ /* 120 */
5048
+ /***/ (function(module, exports, __webpack_require__) {
5049
+
5050
+ var getNative = __webpack_require__(121);
5051
+
5052
+ /* Built-in method references that are verified to be native. */
5053
+ var nativeCreate = getNative(Object, 'create');
5054
+
5055
+ module.exports = nativeCreate;
5056
+
5057
+
5058
+ /***/ }),
5059
+ /* 121 */
5060
+ /***/ (function(module, exports, __webpack_require__) {
5061
+
5062
+ var baseIsNative = __webpack_require__(634),
5063
+ getValue = __webpack_require__(638);
5064
+
5065
+ /**
5066
+ * Gets the native function at `key` of `object`.
5067
+ *
5068
+ * @private
5069
+ * @param {Object} object The object to query.
5070
+ * @param {string} key The key of the method to get.
5071
+ * @returns {*} Returns the function if it's native, else `undefined`.
5072
+ */
5073
+ function getNative(object, key) {
5074
+ var value = getValue(object, key);
5075
+ return baseIsNative(value) ? value : undefined;
5076
+ }
5077
+
5078
+ module.exports = getNative;
5079
+
5080
+
5081
+ /***/ }),
5082
+ /* 122 */
5083
+ /***/ (function(module, exports, __webpack_require__) {
5084
+
5085
+ var eq = __webpack_require__(123);
5086
+
5087
+ /**
5088
+ * Gets the index at which the `key` is found in `array` of key-value pairs.
5089
+ *
5090
+ * @private
5091
+ * @param {Array} array The array to inspect.
5092
+ * @param {*} key The key to search for.
5093
+ * @returns {number} Returns the index of the matched value, else `-1`.
5094
+ */
5095
+ function assocIndexOf(array, key) {
5096
+ var length = array.length;
5097
+ while (length--) {
5098
+ if (eq(array[length][0], key)) {
5099
+ return length;
5100
+ }
5101
+ }
5102
+ return -1;
5103
+ }
5104
+
5105
+ module.exports = assocIndexOf;
5106
+
5107
+
5108
+ /***/ }),
5109
+ /* 123 */
5110
+ /***/ (function(module, exports) {
5111
+
5112
+ /**
5113
+ * Performs a
5114
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
5115
+ * comparison between two values to determine if they are equivalent.
5116
+ *
5117
+ * @static
5118
+ * @memberOf _
5119
+ * @since 4.0.0
5120
+ * @category Lang
5121
+ * @param {*} value The value to compare.
5122
+ * @param {*} other The other value to compare.
5123
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
5124
+ * @example
5125
+ *
5126
+ * var object = { 'a': 1 };
5127
+ * var other = { 'a': 1 };
5128
+ *
5129
+ * _.eq(object, object);
5130
+ * // => true
5131
+ *
5132
+ * _.eq(object, other);
5133
+ * // => false
5134
+ *
5135
+ * _.eq('a', 'a');
5136
+ * // => true
5137
+ *
5138
+ * _.eq('a', Object('a'));
5139
+ * // => false
5140
+ *
5141
+ * _.eq(NaN, NaN);
5142
+ * // => true
5143
+ */
5144
+ function eq(value, other) {
5145
+ return value === other || (value !== value && other !== other);
5146
+ }
5147
+
5148
+ module.exports = eq;
5149
+
5150
+
5151
+ /***/ }),
5152
+ /* 124 */
5153
+ /***/ (function(module, exports, __webpack_require__) {
5154
+
5155
+ var isKeyable = __webpack_require__(651);
5156
+
5157
+ /**
5158
+ * Gets the data for `map`.
5159
+ *
5160
+ * @private
5161
+ * @param {Object} map The map to query.
5162
+ * @param {string} key The reference key.
5163
+ * @returns {*} Returns the map data.
5164
+ */
5165
+ function getMapData(map, key) {
5166
+ var data = map.__data__;
5167
+ return isKeyable(key)
5168
+ ? data[typeof key == 'string' ? 'string' : 'hash']
5169
+ : data.map;
5170
+ }
5171
+
5172
+ module.exports = getMapData;
5173
+
5174
+
5175
+ /***/ }),
5176
+ /* 125 */
5177
+ /***/ (function(module, exports, __webpack_require__) {
5178
+
5179
+ var isArrayLike = __webpack_require__(188),
5180
+ isObjectLike = __webpack_require__(95);
5181
+
5182
+ /**
5183
+ * This method is like `_.isArrayLike` except that it also checks if `value`
5184
+ * is an object.
5185
+ *
5186
+ * @static
5187
+ * @memberOf _
5188
+ * @since 4.0.0
5189
+ * @category Lang
5190
+ * @param {*} value The value to check.
5191
+ * @returns {boolean} Returns `true` if `value` is an array-like object,
5192
+ * else `false`.
5193
+ * @example
5194
+ *
5195
+ * _.isArrayLikeObject([1, 2, 3]);
5196
+ * // => true
5197
+ *
5198
+ * _.isArrayLikeObject(document.body.children);
5199
+ * // => true
5200
+ *
5201
+ * _.isArrayLikeObject('abc');
5202
+ * // => false
5203
+ *
5204
+ * _.isArrayLikeObject(_.noop);
5205
+ * // => false
5206
+ */
5207
+ function isArrayLikeObject(value) {
5208
+ return isObjectLike(value) && isArrayLike(value);
5209
+ }
5210
+
5211
+ module.exports = isArrayLikeObject;
5212
+
5213
+
5214
+ /***/ }),
5215
+ /* 126 */
5216
+ /***/ (function(module, exports, __webpack_require__) {
5217
+
5218
+ "use strict";
5219
+
5220
+
5221
+ Object.defineProperty(exports, "__esModule", {
5222
+ value: true
5223
+ });
5224
+ exports.addSource = addSource;
5225
+ exports.addTarget = addTarget;
5226
+ exports.removeSource = removeSource;
5227
+ exports.removeTarget = removeTarget;
5228
+ var ADD_SOURCE = exports.ADD_SOURCE = 'dnd-core/ADD_SOURCE';
5229
+ var ADD_TARGET = exports.ADD_TARGET = 'dnd-core/ADD_TARGET';
5230
+ var REMOVE_SOURCE = exports.REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';
5231
+ var REMOVE_TARGET = exports.REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';
5232
+
5233
+ function addSource(sourceId) {
5234
+ return {
5235
+ type: ADD_SOURCE,
5236
+ sourceId: sourceId
5237
+ };
5238
+ }
5239
+
5240
+ function addTarget(targetId) {
5241
+ return {
5242
+ type: ADD_TARGET,
5243
+ targetId: targetId
5244
+ };
5245
+ }
5246
+
5247
+ function removeSource(sourceId) {
5248
+ return {
5249
+ type: REMOVE_SOURCE,
5250
+ sourceId: sourceId
5251
+ };
5252
+ }
5253
+
5254
+ function removeTarget(targetId) {
5255
+ return {
5256
+ type: REMOVE_TARGET,
5257
+ targetId: targetId
5258
+ };
5259
+ }
5260
+
5261
+ /***/ }),
5262
+ /* 127 */
5263
+ /***/ (function(module, exports, __webpack_require__) {
5264
+
5265
+ "use strict";
5266
+ /* WEBPACK VAR INJECTION */(function(process) {
5267
+
5268
+ Object.defineProperty(exports, "__esModule", {
5269
+ value: true
5270
+ });
5271
+ exports.default = checkDecoratorArguments;
5272
+ function checkDecoratorArguments(functionName, signature) {
5273
+ if (process.env.NODE_ENV !== 'production') {
5274
+ for (var i = 0; i < (arguments.length <= 2 ? 0 : arguments.length - 2); i += 1) {
5275
+ var arg = arguments.length <= i + 2 ? undefined : arguments[i + 2];
5276
+ if (arg && arg.prototype && arg.prototype.render) {
5277
+ // eslint-disable-next-line no-console
5278
+ console.error('You seem to be applying the arguments in the wrong order. ' + ('It should be ' + functionName + '(' + signature + ')(Component), not the other way around. ') + 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#you-seem-to-be-applying-the-arguments-in-the-wrong-order');
5279
+ return;
5280
+ }
5281
+ }
5282
+ }
5283
+ }
5284
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
5285
+
5286
+ /***/ }),
5287
+ /* 128 */
5288
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
5289
+
5290
+ "use strict";
5291
+ /* harmony export (immutable) */ __webpack_exports__["d"] = noop;
5292
+ /* harmony export (immutable) */ __webpack_exports__["a"] = getKeyFromChildrenIndex;
5293
+ /* harmony export (immutable) */ __webpack_exports__["b"] = loopMenuItem;
5294
+ /* harmony export (immutable) */ __webpack_exports__["c"] = loopMenuItemRecusively;
5295
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(2);
5296
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);
5297
+
5298
+
5299
+ function noop() {}
5300
+
5301
+ function getKeyFromChildrenIndex(child, menuEventKey, index) {
5302
+ var prefix = menuEventKey || '';
5303
+ return child.key || prefix + 'item_' + index;
5304
+ }
5305
+
5306
+ function loopMenuItem(children, cb) {
5307
+ var index = -1;
5308
+ __WEBPACK_IMPORTED_MODULE_0_react___default.a.Children.forEach(children, function (c) {
5309
+ index++;
5310
+ if (c && c.type && c.type.isMenuItemGroup) {
5311
+ __WEBPACK_IMPORTED_MODULE_0_react___default.a.Children.forEach(c.props.children, function (c2) {
5312
+ index++;
5313
+ cb(c2, index);
5314
+ });
5315
+ } else {
5316
+ cb(c, index);
5317
+ }
5318
+ });
5319
+ }
5320
+
5321
+ function loopMenuItemRecusively(children, keys, ret) {
5322
+ if (!children || ret.find) {
5323
+ return;
5324
+ }
5325
+ __WEBPACK_IMPORTED_MODULE_0_react___default.a.Children.forEach(children, function (c) {
5326
+ if (ret.find) {
5327
+ return;
5328
+ }
5329
+ if (c) {
5330
+ var construt = c.type;
5331
+ if (!construt || !(construt.isSubMenu || construt.isMenuItem || construt.isMenuItemGroup)) {
5332
+ return;
5333
+ }
5334
+ if (keys.indexOf(c.key) !== -1) {
5335
+ ret.find = true;
5336
+ } else if (c.props.children) {
5337
+ loopMenuItemRecusively(c.props.children, keys, ret);
5338
+ }
5339
+ }
5340
+ });
5341
+ }
5342
+
5343
+ /***/ }),
5344
+ /* 129 */
5345
+ /***/ (function(module, exports, __webpack_require__) {
5346
+
5347
+ var isObject = __webpack_require__(6);
5348
+ var document = __webpack_require__(4).document;
5349
+ // typeof document.createElement is 'object' in old IE
5350
+ var is = isObject(document) && isObject(document.createElement);
5351
+ module.exports = function (it) {
5352
+ return is ? document.createElement(it) : {};
5353
+ };
5354
+
5355
+
5356
+ /***/ }),
5357
+ /* 130 */
5358
+ /***/ (function(module, exports, __webpack_require__) {
5359
+
5360
+ var global = __webpack_require__(4);
5361
+ var core = __webpack_require__(38);
5362
+ var LIBRARY = __webpack_require__(55);
5363
+ var wksExt = __webpack_require__(196);
5364
+ var defineProperty = __webpack_require__(15).f;
5365
+ module.exports = function (name) {
5366
+ var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
5367
+ if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
5368
+ };
5369
+
5370
+
5371
+ /***/ }),
5372
+ /* 131 */
5373
+ /***/ (function(module, exports, __webpack_require__) {
5374
+
5375
+ var shared = __webpack_require__(97)('keys');
5376
+ var uid = __webpack_require__(54);
5377
+ module.exports = function (key) {
5378
+ return shared[key] || (shared[key] = uid(key));
5379
+ };
5380
+
5381
+
5382
+ /***/ }),
5383
+ /* 132 */
5384
+ /***/ (function(module, exports) {
5385
+
5386
+ // IE 8- don't enum bug keys
5387
+ module.exports = (
5388
+ 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
5389
+ ).split(',');
5390
+
5391
+
5392
+ /***/ }),
5393
+ /* 133 */
5394
+ /***/ (function(module, exports, __webpack_require__) {
5395
+
5396
+ var document = __webpack_require__(4).document;
5397
+ module.exports = document && document.documentElement;
5398
+
5399
+
5400
+ /***/ }),
5401
+ /* 134 */
5402
+ /***/ (function(module, exports, __webpack_require__) {
5403
+
5404
+ // Works with __proto__ only. Old v8 can't work with null proto objects.
5405
+ /* eslint-disable no-proto */
5406
+ var isObject = __webpack_require__(6);
5407
+ var anObject = __webpack_require__(3);
5408
+ var check = function (O, proto) {
5409
+ anObject(O);
5410
+ if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
5411
+ };
5412
+ module.exports = {
5413
+ set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
5414
+ function (test, buggy, set) {
5415
+ try {
5416
+ set = __webpack_require__(35)(Function.call, __webpack_require__(30).f(Object.prototype, '__proto__').set, 2);
5417
+ set(test, []);
5418
+ buggy = !(test instanceof Array);
5419
+ } catch (e) { buggy = true; }
5420
+ return function setPrototypeOf(O, proto) {
5421
+ check(O, proto);
5422
+ if (buggy) O.__proto__ = proto;
5423
+ else set(O, proto);
5424
+ return O;
5425
+ };
5426
+ }({}, false) : undefined),
5427
+ check: check
5428
+ };
5429
+
5430
+
5431
+ /***/ }),
5432
+ /* 135 */
5433
+ /***/ (function(module, exports) {
5434
+
5435
+ module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
5436
+ '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
5437
+
5438
+
5439
+ /***/ }),
5440
+ /* 136 */
5441
+ /***/ (function(module, exports, __webpack_require__) {
5442
+
5443
+ var isObject = __webpack_require__(6);
5444
+ var setPrototypeOf = __webpack_require__(134).set;
5445
+ module.exports = function (that, target, C) {
5446
+ var S = target.constructor;
5447
+ var P;
5448
+ if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
5449
+ setPrototypeOf(that, P);
5450
+ } return that;
5451
+ };
5452
+
5453
+
5454
+ /***/ }),
5455
+ /* 137 */
5456
+ /***/ (function(module, exports, __webpack_require__) {
5457
+
5458
+ "use strict";
5459
+
5460
+ var toInteger = __webpack_require__(41);
5461
+ var defined = __webpack_require__(40);
5462
+
5463
+ module.exports = function repeat(count) {
5464
+ var str = String(defined(this));
5465
+ var res = '';
5466
+ var n = toInteger(count);
5467
+ if (n < 0 || n == Infinity) throw RangeError("Count can't be negative");
5468
+ for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;
5469
+ return res;
5470
+ };
5471
+
5472
+
5473
+ /***/ }),
5474
+ /* 138 */
5475
+ /***/ (function(module, exports) {
5476
+
5477
+ // 20.2.2.28 Math.sign(x)
5478
+ module.exports = Math.sign || function sign(x) {
5479
+ // eslint-disable-next-line no-self-compare
5480
+ return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
5481
+ };
5482
+
5483
+
5484
+ /***/ }),
5485
+ /* 139 */
5486
+ /***/ (function(module, exports) {
5487
+
5488
+ // 20.2.2.14 Math.expm1(x)
5489
+ var $expm1 = Math.expm1;
5490
+ module.exports = (!$expm1
5491
+ // Old FF bug
5492
+ || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168
5493
+ // Tor Browser bug
5494
+ || $expm1(-2e-17) != -2e-17
5495
+ ) ? function expm1(x) {
5496
+ return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;
5497
+ } : $expm1;
5498
+
5499
+
5500
+ /***/ }),
5501
+ /* 140 */
5502
+ /***/ (function(module, exports, __webpack_require__) {
5503
+
5504
+ var toInteger = __webpack_require__(41);
5505
+ var defined = __webpack_require__(40);
5506
+ // true -> String#at
5507
+ // false -> String#codePointAt
5508
+ module.exports = function (TO_STRING) {
5509
+ return function (that, pos) {
5510
+ var s = String(defined(that));
5511
+ var i = toInteger(pos);
5512
+ var l = s.length;
5513
+ var a, b;
5514
+ if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
5515
+ a = s.charCodeAt(i);
5516
+ return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
5517
+ ? TO_STRING ? s.charAt(i) : a
5518
+ : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
5519
+ };
5520
+ };
5521
+
5522
+
5523
+ /***/ }),
5524
+ /* 141 */
5525
+ /***/ (function(module, exports, __webpack_require__) {
5526
+
5527
+ "use strict";
5528
+
5529
+ var LIBRARY = __webpack_require__(55);
5530
+ var $export = __webpack_require__(1);
5531
+ var redefine = __webpack_require__(26);
5532
+ var hide = __webpack_require__(25);
5533
+ var has = __webpack_require__(24);
5534
+ var Iterators = __webpack_require__(74);
5535
+ var $iterCreate = __webpack_require__(142);
5536
+ var setToStringTag = __webpack_require__(72);
5537
+ var getPrototypeOf = __webpack_require__(31);
5538
+ var ITERATOR = __webpack_require__(9)('iterator');
5539
+ var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
5540
+ var FF_ITERATOR = '@@iterator';
5541
+ var KEYS = 'keys';
5542
+ var VALUES = 'values';
5543
+
5544
+ var returnThis = function () { return this; };
5545
+
5546
+ module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
5547
+ $iterCreate(Constructor, NAME, next);
5548
+ var getMethod = function (kind) {
5549
+ if (!BUGGY && kind in proto) return proto[kind];
5550
+ switch (kind) {
5551
+ case KEYS: return function keys() { return new Constructor(this, kind); };
5552
+ case VALUES: return function values() { return new Constructor(this, kind); };
5553
+ } return function entries() { return new Constructor(this, kind); };
5554
+ };
5555
+ var TAG = NAME + ' Iterator';
5556
+ var DEF_VALUES = DEFAULT == VALUES;
5557
+ var VALUES_BUG = false;
5558
+ var proto = Base.prototype;
5559
+ var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
5560
+ var $default = (!BUGGY && $native) || getMethod(DEFAULT);
5561
+ var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
5562
+ var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
5563
+ var methods, key, IteratorPrototype;
5564
+ // Fix native
5565
+ if ($anyNative) {
5566
+ IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
5567
+ if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
5568
+ // Set @@toStringTag to native iterators
5569
+ setToStringTag(IteratorPrototype, TAG, true);
5570
+ // fix for some old engines
5571
+ if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);
5572
+ }
5573
+ }
5574
+ // fix Array#{values, @@iterator}.name in V8 / FF
5575
+ if (DEF_VALUES && $native && $native.name !== VALUES) {
5576
+ VALUES_BUG = true;
5577
+ $default = function values() { return $native.call(this); };
5578
+ }
5579
+ // Define iterator
5580
+ if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
5581
+ hide(proto, ITERATOR, $default);
5582
+ }
5583
+ // Plug for library
5584
+ Iterators[NAME] = $default;
5585
+ Iterators[TAG] = returnThis;
5586
+ if (DEFAULT) {
5587
+ methods = {
5588
+ values: DEF_VALUES ? $default : getMethod(VALUES),
5589
+ keys: IS_SET ? $default : getMethod(KEYS),
5590
+ entries: $entries
5591
+ };
5592
+ if (FORCED) for (key in methods) {
5593
+ if (!(key in proto)) redefine(proto, key, methods[key]);
5594
+ } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
5595
+ }
5596
+ return methods;
5597
+ };
5598
+
5599
+
5600
+ /***/ }),
5601
+ /* 142 */
5602
+ /***/ (function(module, exports, __webpack_require__) {
5603
+
5604
+ "use strict";
5605
+
5606
+ var create = __webpack_require__(58);
5607
+ var descriptor = __webpack_require__(53);
5608
+ var setToStringTag = __webpack_require__(72);
5609
+ var IteratorPrototype = {};
5610
+
5611
+ // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
5612
+ __webpack_require__(25)(IteratorPrototype, __webpack_require__(9)('iterator'), function () { return this; });
5613
+
5614
+ module.exports = function (Constructor, NAME, next) {
5615
+ Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
5616
+ setToStringTag(Constructor, NAME + ' Iterator');
5617
+ };
5618
+
5619
+
5620
+ /***/ }),
5621
+ /* 143 */
5622
+ /***/ (function(module, exports, __webpack_require__) {
5623
+
5624
+ // helper for String#{startsWith, endsWith, includes}
5625
+ var isRegExp = __webpack_require__(101);
5626
+ var defined = __webpack_require__(40);
5627
+
5628
+ module.exports = function (that, searchString, NAME) {
5629
+ if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
5630
+ return String(defined(that));
5631
+ };
5632
+
5633
+
5634
+ /***/ }),
5635
+ /* 144 */
5636
+ /***/ (function(module, exports, __webpack_require__) {
5637
+
5638
+ var MATCH = __webpack_require__(9)('match');
5639
+ module.exports = function (KEY) {
5640
+ var re = /./;
5641
+ try {
5642
+ '/./'[KEY](re);
5643
+ } catch (e) {
5644
+ try {
5645
+ re[MATCH] = false;
5646
+ return !'/./'[KEY](re);
5647
+ } catch (f) { /* empty */ }
5648
+ } return true;
5649
+ };
5650
+
5651
+
5652
+ /***/ }),
5653
+ /* 145 */
5654
+ /***/ (function(module, exports, __webpack_require__) {
5655
+
5656
+ // check on default Array iterator
5657
+ var Iterators = __webpack_require__(74);
5658
+ var ITERATOR = __webpack_require__(9)('iterator');
5659
+ var ArrayProto = Array.prototype;
5660
+
5661
+ module.exports = function (it) {
5662
+ return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
5663
+ };
5664
+
5665
+
5666
+ /***/ }),
5667
+ /* 146 */
5668
+ /***/ (function(module, exports, __webpack_require__) {
5669
+
5670
+ "use strict";
5671
+
5672
+ var $defineProperty = __webpack_require__(15);
5673
+ var createDesc = __webpack_require__(53);
5674
+
5675
+ module.exports = function (object, index, value) {
5676
+ if (index in object) $defineProperty.f(object, index, createDesc(0, value));
5677
+ else object[index] = value;
5678
+ };
5679
+
5680
+
5681
+ /***/ }),
5682
+ /* 147 */
5683
+ /***/ (function(module, exports, __webpack_require__) {
5684
+
5685
+ var classof = __webpack_require__(86);
5686
+ var ITERATOR = __webpack_require__(9)('iterator');
5687
+ var Iterators = __webpack_require__(74);
5688
+ module.exports = __webpack_require__(38).getIteratorMethod = function (it) {
5689
+ if (it != undefined) return it[ITERATOR]
5690
+ || it['@@iterator']
5691
+ || Iterators[classof(it)];
5692
+ };
5693
+
5694
+
5695
+ /***/ }),
5696
+ /* 148 */
5697
+ /***/ (function(module, exports, __webpack_require__) {
5698
+
5699
+ // 9.4.2.3 ArraySpeciesCreate(originalArray, length)
5700
+ var speciesConstructor = __webpack_require__(396);
5701
+
5702
+ module.exports = function (original, length) {
5703
+ return new (speciesConstructor(original))(length);
5704
+ };
5705
+
5706
+
5707
+ /***/ }),
5708
+ /* 149 */
5709
+ /***/ (function(module, exports, __webpack_require__) {
5710
+
5711
+ "use strict";
5712
+ // 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
5713
+
5714
+ var toObject = __webpack_require__(18);
5715
+ var toAbsoluteIndex = __webpack_require__(57);
5716
+ var toLength = __webpack_require__(16);
5717
+ module.exports = function fill(value /* , start = 0, end = @length */) {
5718
+ var O = toObject(this);
5719
+ var length = toLength(O.length);
5720
+ var aLen = arguments.length;
5721
+ var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);
5722
+ var end = aLen > 2 ? arguments[2] : undefined;
5723
+ var endPos = end === undefined ? length : toAbsoluteIndex(end, length);
5724
+ while (endPos > index) O[index++] = value;
5725
+ return O;
5726
+ };
5727
+
5728
+
5729
+ /***/ }),
5730
+ /* 150 */
5731
+ /***/ (function(module, exports, __webpack_require__) {
5732
+
5733
+ "use strict";
5734
+
5735
+ var addToUnscopables = __webpack_require__(49);
5736
+ var step = __webpack_require__(212);
5737
+ var Iterators = __webpack_require__(74);
5738
+ var toIObject = __webpack_require__(29);
5739
+
5740
+ // 22.1.3.4 Array.prototype.entries()
5741
+ // 22.1.3.13 Array.prototype.keys()
5742
+ // 22.1.3.29 Array.prototype.values()
5743
+ // 22.1.3.30 Array.prototype[@@iterator]()
5744
+ module.exports = __webpack_require__(141)(Array, 'Array', function (iterated, kind) {
5745
+ this._t = toIObject(iterated); // target
5746
+ this._i = 0; // next index
5747
+ this._k = kind; // kind
5748
+ // 22.1.5.2.1 %ArrayIteratorPrototype%.next()
5749
+ }, function () {
5750
+ var O = this._t;
5751
+ var kind = this._k;
5752
+ var index = this._i++;
5753
+ if (!O || index >= O.length) {
5754
+ this._t = undefined;
5755
+ return step(1);
5756
+ }
5757
+ if (kind == 'keys') return step(0, index);
5758
+ if (kind == 'values') return step(0, O[index]);
5759
+ return step(0, [index, O[index]]);
5760
+ }, 'values');
5761
+
5762
+ // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
5763
+ Iterators.Arguments = Iterators.Array;
5764
+
5765
+ addToUnscopables('keys');
5766
+ addToUnscopables('values');
5767
+ addToUnscopables('entries');
5768
+
5769
+
5770
+ /***/ }),
5771
+ /* 151 */
5772
+ /***/ (function(module, exports, __webpack_require__) {
5773
+
5774
+ var ctx = __webpack_require__(35);
5775
+ var invoke = __webpack_require__(202);
5776
+ var html = __webpack_require__(133);
5777
+ var cel = __webpack_require__(129);
5778
+ var global = __webpack_require__(4);
5779
+ var process = global.process;
5780
+ var setTask = global.setImmediate;
5781
+ var clearTask = global.clearImmediate;
5782
+ var MessageChannel = global.MessageChannel;
5783
+ var Dispatch = global.Dispatch;
5784
+ var counter = 0;
5785
+ var queue = {};
5786
+ var ONREADYSTATECHANGE = 'onreadystatechange';
5787
+ var defer, channel, port;
5788
+ var run = function () {
5789
+ var id = +this;
5790
+ // eslint-disable-next-line no-prototype-builtins
5791
+ if (queue.hasOwnProperty(id)) {
5792
+ var fn = queue[id];
5793
+ delete queue[id];
5794
+ fn();
5795
+ }
5796
+ };
5797
+ var listener = function (event) {
5798
+ run.call(event.data);
5799
+ };
5800
+ // Node.js 0.9+ & IE10+ has setImmediate, otherwise:
5801
+ if (!setTask || !clearTask) {
5802
+ setTask = function setImmediate(fn) {
5803
+ var args = [];
5804
+ var i = 1;
5805
+ while (arguments.length > i) args.push(arguments[i++]);
5806
+ queue[++counter] = function () {
5807
+ // eslint-disable-next-line no-new-func
5808
+ invoke(typeof fn == 'function' ? fn : Function(fn), args);
5809
+ };
5810
+ defer(counter);
5811
+ return counter;
5812
+ };
5813
+ clearTask = function clearImmediate(id) {
5814
+ delete queue[id];
5815
+ };
5816
+ // Node.js 0.8-
5817
+ if (__webpack_require__(36)(process) == 'process') {
5818
+ defer = function (id) {
5819
+ process.nextTick(ctx(run, id, 1));
5820
+ };
5821
+ // Sphere (JS game engine) Dispatch API
5822
+ } else if (Dispatch && Dispatch.now) {
5823
+ defer = function (id) {
5824
+ Dispatch.now(ctx(run, id, 1));
5825
+ };
5826
+ // Browsers with MessageChannel, includes WebWorkers
5827
+ } else if (MessageChannel) {
5828
+ channel = new MessageChannel();
5829
+ port = channel.port2;
5830
+ channel.port1.onmessage = listener;
5831
+ defer = ctx(port.postMessage, port, 1);
5832
+ // Browsers with postMessage, skip WebWorkers
5833
+ // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
5834
+ } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
5835
+ defer = function (id) {
5836
+ global.postMessage(id + '', '*');
5837
+ };
5838
+ global.addEventListener('message', listener, false);
5839
+ // IE8-
5840
+ } else if (ONREADYSTATECHANGE in cel('script')) {
5841
+ defer = function (id) {
5842
+ html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
5843
+ html.removeChild(this);
5844
+ run.call(id);
5845
+ };
5846
+ };
5847
+ // Rest old browsers
5848
+ } else {
5849
+ defer = function (id) {
5850
+ setTimeout(ctx(run, id, 1), 0);
5851
+ };
5852
+ }
5853
+ }
5854
+ module.exports = {
5855
+ set: setTask,
5856
+ clear: clearTask
5857
+ };
5858
+
5859
+
5860
+ /***/ }),
5861
+ /* 152 */
5862
+ /***/ (function(module, exports, __webpack_require__) {
5863
+
5864
+ var global = __webpack_require__(4);
5865
+ var macrotask = __webpack_require__(151).set;
5866
+ var Observer = global.MutationObserver || global.WebKitMutationObserver;
5867
+ var process = global.process;
5868
+ var Promise = global.Promise;
5869
+ var isNode = __webpack_require__(36)(process) == 'process';
5870
+
5871
+ module.exports = function () {
5872
+ var head, last, notify;
5873
+
5874
+ var flush = function () {
5875
+ var parent, fn;
5876
+ if (isNode && (parent = process.domain)) parent.exit();
5877
+ while (head) {
5878
+ fn = head.fn;
5879
+ head = head.next;
5880
+ try {
5881
+ fn();
5882
+ } catch (e) {
5883
+ if (head) notify();
5884
+ else last = undefined;
5885
+ throw e;
5886
+ }
5887
+ } last = undefined;
5888
+ if (parent) parent.enter();
5889
+ };
5890
+
5891
+ // Node.js
5892
+ if (isNode) {
5893
+ notify = function () {
5894
+ process.nextTick(flush);
5895
+ };
5896
+ // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
5897
+ } else if (Observer && !(global.navigator && global.navigator.standalone)) {
5898
+ var toggle = true;
5899
+ var node = document.createTextNode('');
5900
+ new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
5901
+ notify = function () {
5902
+ node.data = toggle = !toggle;
5903
+ };
5904
+ // environments with maybe non-completely correct, but existent Promise
5905
+ } else if (Promise && Promise.resolve) {
5906
+ var promise = Promise.resolve();
5907
+ notify = function () {
5908
+ promise.then(flush);
5909
+ };
5910
+ // for other environments - macrotask based on:
5911
+ // - setImmediate
5912
+ // - MessageChannel
5913
+ // - window.postMessag
5914
+ // - onreadystatechange
5915
+ // - setTimeout
5916
+ } else {
5917
+ notify = function () {
5918
+ // strange IE + webpack dev server bug - use .call(global)
5919
+ macrotask.call(global, flush);
5920
+ };
5921
+ }
5922
+
5923
+ return function (fn) {
5924
+ var task = { fn: fn, next: undefined };
5925
+ if (last) last.next = task;
5926
+ if (!head) {
5927
+ head = task;
5928
+ notify();
5929
+ } last = task;
5930
+ };
5931
+ };
5932
+
5933
+
5934
+ /***/ }),
5935
+ /* 153 */
5936
+ /***/ (function(module, exports, __webpack_require__) {
5937
+
5938
+ "use strict";
5939
+
5940
+ // 25.4.1.5 NewPromiseCapability(C)
5941
+ var aFunction = __webpack_require__(20);
5942
+
5943
+ function PromiseCapability(C) {
5944
+ var resolve, reject;
5945
+ this.promise = new C(function ($$resolve, $$reject) {
5946
+ if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
5947
+ resolve = $$resolve;
5948
+ reject = $$reject;
5949
+ });
5950
+ this.resolve = aFunction(resolve);
5951
+ this.reject = aFunction(reject);
5952
+ }
5953
+
5954
+ module.exports.f = function (C) {
5955
+ return new PromiseCapability(C);
5956
+ };
5957
+
5958
+
5959
+ /***/ }),
5960
+ /* 154 */
5961
+ /***/ (function(module, exports, __webpack_require__) {
5962
+
5963
+ "use strict";
5964
+
5965
+ var global = __webpack_require__(4);
5966
+ var DESCRIPTORS = __webpack_require__(14);
5967
+ var LIBRARY = __webpack_require__(55);
5968
+ var $typed = __webpack_require__(107);
5969
+ var hide = __webpack_require__(25);
5970
+ var redefineAll = __webpack_require__(63);
5971
+ var fails = __webpack_require__(5);
5972
+ var anInstance = __webpack_require__(61);
5973
+ var toInteger = __webpack_require__(41);
5974
+ var toLength = __webpack_require__(16);
5975
+ var toIndex = __webpack_require__(221);
5976
+ var gOPN = __webpack_require__(59).f;
5977
+ var dP = __webpack_require__(15).f;
5978
+ var arrayFill = __webpack_require__(149);
5979
+ var setToStringTag = __webpack_require__(72);
5980
+ var ARRAY_BUFFER = 'ArrayBuffer';
5981
+ var DATA_VIEW = 'DataView';
5982
+ var PROTOTYPE = 'prototype';
5983
+ var WRONG_LENGTH = 'Wrong length!';
5984
+ var WRONG_INDEX = 'Wrong index!';
5985
+ var $ArrayBuffer = global[ARRAY_BUFFER];
5986
+ var $DataView = global[DATA_VIEW];
5987
+ var Math = global.Math;
5988
+ var RangeError = global.RangeError;
5989
+ // eslint-disable-next-line no-shadow-restricted-names
5990
+ var Infinity = global.Infinity;
5991
+ var BaseBuffer = $ArrayBuffer;
5992
+ var abs = Math.abs;
5993
+ var pow = Math.pow;
5994
+ var floor = Math.floor;
5995
+ var log = Math.log;
5996
+ var LN2 = Math.LN2;
5997
+ var BUFFER = 'buffer';
5998
+ var BYTE_LENGTH = 'byteLength';
5999
+ var BYTE_OFFSET = 'byteOffset';
6000
+ var $BUFFER = DESCRIPTORS ? '_b' : BUFFER;
6001
+ var $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;
6002
+ var $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;
6003
+
6004
+ // IEEE754 conversions based on https://github.com/feross/ieee754
6005
+ function packIEEE754(value, mLen, nBytes) {
6006
+ var buffer = new Array(nBytes);
6007
+ var eLen = nBytes * 8 - mLen - 1;
6008
+ var eMax = (1 << eLen) - 1;
6009
+ var eBias = eMax >> 1;
6010
+ var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;
6011
+ var i = 0;
6012
+ var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
6013
+ var e, m, c;
6014
+ value = abs(value);
6015
+ // eslint-disable-next-line no-self-compare
6016
+ if (value != value || value === Infinity) {
6017
+ // eslint-disable-next-line no-self-compare
6018
+ m = value != value ? 1 : 0;
6019
+ e = eMax;
6020
+ } else {
6021
+ e = floor(log(value) / LN2);
6022
+ if (value * (c = pow(2, -e)) < 1) {
6023
+ e--;
6024
+ c *= 2;
6025
+ }
6026
+ if (e + eBias >= 1) {
6027
+ value += rt / c;
6028
+ } else {
6029
+ value += rt * pow(2, 1 - eBias);
6030
+ }
6031
+ if (value * c >= 2) {
6032
+ e++;
6033
+ c /= 2;
6034
+ }
6035
+ if (e + eBias >= eMax) {
6036
+ m = 0;
6037
+ e = eMax;
6038
+ } else if (e + eBias >= 1) {
6039
+ m = (value * c - 1) * pow(2, mLen);
6040
+ e = e + eBias;
6041
+ } else {
6042
+ m = value * pow(2, eBias - 1) * pow(2, mLen);
6043
+ e = 0;
6044
+ }
6045
+ }
6046
+ for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);
6047
+ e = e << mLen | m;
6048
+ eLen += mLen;
6049
+ for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);
6050
+ buffer[--i] |= s * 128;
6051
+ return buffer;
6052
+ }
6053
+ function unpackIEEE754(buffer, mLen, nBytes) {
6054
+ var eLen = nBytes * 8 - mLen - 1;
6055
+ var eMax = (1 << eLen) - 1;
6056
+ var eBias = eMax >> 1;
6057
+ var nBits = eLen - 7;
6058
+ var i = nBytes - 1;
6059
+ var s = buffer[i--];
6060
+ var e = s & 127;
6061
+ var m;
6062
+ s >>= 7;
6063
+ for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);
6064
+ m = e & (1 << -nBits) - 1;
6065
+ e >>= -nBits;
6066
+ nBits += mLen;
6067
+ for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);
6068
+ if (e === 0) {
6069
+ e = 1 - eBias;
6070
+ } else if (e === eMax) {
6071
+ return m ? NaN : s ? -Infinity : Infinity;
6072
+ } else {
6073
+ m = m + pow(2, mLen);
6074
+ e = e - eBias;
6075
+ } return (s ? -1 : 1) * m * pow(2, e - mLen);
6076
+ }
6077
+
6078
+ function unpackI32(bytes) {
6079
+ return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
6080
+ }
6081
+ function packI8(it) {
6082
+ return [it & 0xff];
6083
+ }
6084
+ function packI16(it) {
6085
+ return [it & 0xff, it >> 8 & 0xff];
6086
+ }
6087
+ function packI32(it) {
6088
+ return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];
6089
+ }
6090
+ function packF64(it) {
6091
+ return packIEEE754(it, 52, 8);
6092
+ }
6093
+ function packF32(it) {
6094
+ return packIEEE754(it, 23, 4);
6095
+ }
6096
+
6097
+ function addGetter(C, key, internal) {
6098
+ dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });
6099
+ }
6100
+
6101
+ function get(view, bytes, index, isLittleEndian) {
6102
+ var numIndex = +index;
6103
+ var intIndex = toIndex(numIndex);
6104
+ if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);
6105
+ var store = view[$BUFFER]._b;
6106
+ var start = intIndex + view[$OFFSET];
6107
+ var pack = store.slice(start, start + bytes);
6108
+ return isLittleEndian ? pack : pack.reverse();
6109
+ }
6110
+ function set(view, bytes, index, conversion, value, isLittleEndian) {
6111
+ var numIndex = +index;
6112
+ var intIndex = toIndex(numIndex);
6113
+ if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);
6114
+ var store = view[$BUFFER]._b;
6115
+ var start = intIndex + view[$OFFSET];
6116
+ var pack = conversion(+value);
6117
+ for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];
6118
+ }
6119
+
6120
+ if (!$typed.ABV) {
6121
+ $ArrayBuffer = function ArrayBuffer(length) {
6122
+ anInstance(this, $ArrayBuffer, ARRAY_BUFFER);
6123
+ var byteLength = toIndex(length);
6124
+ this._b = arrayFill.call(new Array(byteLength), 0);
6125
+ this[$LENGTH] = byteLength;
6126
+ };
6127
+
6128
+ $DataView = function DataView(buffer, byteOffset, byteLength) {
6129
+ anInstance(this, $DataView, DATA_VIEW);
6130
+ anInstance(buffer, $ArrayBuffer, DATA_VIEW);
6131
+ var bufferLength = buffer[$LENGTH];
6132
+ var offset = toInteger(byteOffset);
6133
+ if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');
6134
+ byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
6135
+ if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);
6136
+ this[$BUFFER] = buffer;
6137
+ this[$OFFSET] = offset;
6138
+ this[$LENGTH] = byteLength;
6139
+ };
6140
+
6141
+ if (DESCRIPTORS) {
6142
+ addGetter($ArrayBuffer, BYTE_LENGTH, '_l');
6143
+ addGetter($DataView, BUFFER, '_b');
6144
+ addGetter($DataView, BYTE_LENGTH, '_l');
6145
+ addGetter($DataView, BYTE_OFFSET, '_o');
6146
+ }
6147
+
6148
+ redefineAll($DataView[PROTOTYPE], {
6149
+ getInt8: function getInt8(byteOffset) {
6150
+ return get(this, 1, byteOffset)[0] << 24 >> 24;
6151
+ },
6152
+ getUint8: function getUint8(byteOffset) {
6153
+ return get(this, 1, byteOffset)[0];
6154
+ },
6155
+ getInt16: function getInt16(byteOffset /* , littleEndian */) {
6156
+ var bytes = get(this, 2, byteOffset, arguments[1]);
6157
+ return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
6158
+ },
6159
+ getUint16: function getUint16(byteOffset /* , littleEndian */) {
6160
+ var bytes = get(this, 2, byteOffset, arguments[1]);
6161
+ return bytes[1] << 8 | bytes[0];
6162
+ },
6163
+ getInt32: function getInt32(byteOffset /* , littleEndian */) {
6164
+ return unpackI32(get(this, 4, byteOffset, arguments[1]));
6165
+ },
6166
+ getUint32: function getUint32(byteOffset /* , littleEndian */) {
6167
+ return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;
6168
+ },
6169
+ getFloat32: function getFloat32(byteOffset /* , littleEndian */) {
6170
+ return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);
6171
+ },
6172
+ getFloat64: function getFloat64(byteOffset /* , littleEndian */) {
6173
+ return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);
6174
+ },
6175
+ setInt8: function setInt8(byteOffset, value) {
6176
+ set(this, 1, byteOffset, packI8, value);
6177
+ },
6178
+ setUint8: function setUint8(byteOffset, value) {
6179
+ set(this, 1, byteOffset, packI8, value);
6180
+ },
6181
+ setInt16: function setInt16(byteOffset, value /* , littleEndian */) {
6182
+ set(this, 2, byteOffset, packI16, value, arguments[2]);
6183
+ },
6184
+ setUint16: function setUint16(byteOffset, value /* , littleEndian */) {
6185
+ set(this, 2, byteOffset, packI16, value, arguments[2]);
6186
+ },
6187
+ setInt32: function setInt32(byteOffset, value /* , littleEndian */) {
6188
+ set(this, 4, byteOffset, packI32, value, arguments[2]);
6189
+ },
6190
+ setUint32: function setUint32(byteOffset, value /* , littleEndian */) {
6191
+ set(this, 4, byteOffset, packI32, value, arguments[2]);
6192
+ },
6193
+ setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {
6194
+ set(this, 4, byteOffset, packF32, value, arguments[2]);
6195
+ },
6196
+ setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {
6197
+ set(this, 8, byteOffset, packF64, value, arguments[2]);
6198
+ }
6199
+ });
6200
+ } else {
6201
+ if (!fails(function () {
6202
+ $ArrayBuffer(1);
6203
+ }) || !fails(function () {
6204
+ new $ArrayBuffer(-1); // eslint-disable-line no-new
6205
+ }) || fails(function () {
6206
+ new $ArrayBuffer(); // eslint-disable-line no-new
6207
+ new $ArrayBuffer(1.5); // eslint-disable-line no-new
6208
+ new $ArrayBuffer(NaN); // eslint-disable-line no-new
6209
+ return $ArrayBuffer.name != ARRAY_BUFFER;
6210
+ })) {
6211
+ $ArrayBuffer = function ArrayBuffer(length) {
6212
+ anInstance(this, $ArrayBuffer);
6213
+ return new BaseBuffer(toIndex(length));
6214
+ };
6215
+ var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];
6216
+ for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {
6217
+ if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);
6218
+ }
6219
+ if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;
6220
+ }
6221
+ // iOS Safari 7.x bug
6222
+ var view = new $DataView(new $ArrayBuffer(2));
6223
+ var $setInt8 = $DataView[PROTOTYPE].setInt8;
6224
+ view.setInt8(0, 2147483648);
6225
+ view.setInt8(1, 2147483649);
6226
+ if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {
6227
+ setInt8: function setInt8(byteOffset, value) {
6228
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
6229
+ },
6230
+ setUint8: function setUint8(byteOffset, value) {
6231
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
6232
+ }
6233
+ }, true);
6234
+ }
6235
+ setToStringTag($ArrayBuffer, ARRAY_BUFFER);
6236
+ setToStringTag($DataView, DATA_VIEW);
6237
+ hide($DataView[PROTOTYPE], $typed.VIEW, true);
6238
+ exports[ARRAY_BUFFER] = $ArrayBuffer;
6239
+ exports[DATA_VIEW] = $DataView;
6240
+
6241
+
6242
+ /***/ }),
6243
+ /* 155 */
6244
+ /***/ (function(module, exports, __webpack_require__) {
6245
+
6246
+ var global = __webpack_require__(4);
6247
+ var navigator = global.navigator;
6248
+
6249
+ module.exports = navigator && navigator.userAgent || '';
6250
+
6251
+
6252
+ /***/ }),
6253
+ /* 156 */
6254
+ /***/ (function(module, exports, __webpack_require__) {
6255
+
6256
+ "use strict";
6257
+ /* WEBPACK VAR INJECTION */(function(process) {/**
6258
+ * Copyright (c) 2013-present, Facebook, Inc.
6259
+ *
6260
+ * This source code is licensed under the MIT license found in the
6261
+ * LICENSE file in the root directory of this source tree.
6262
+ */
6263
+
6264
+
6265
+
6266
+ if (process.env.NODE_ENV !== 'production') {
6267
+ var invariant = __webpack_require__(76);
6268
+ var warning = __webpack_require__(88);
6269
+ var ReactPropTypesSecret = __webpack_require__(157);
6270
+ var loggedTypeFailures = {};
6271
+ }
6272
+
6273
+ /**
6274
+ * Assert that the values match with the type specs.
6275
+ * Error messages are memorized and will only be shown once.
6276
+ *
6277
+ * @param {object} typeSpecs Map of name to a ReactPropType
6278
+ * @param {object} values Runtime values that need to be type-checked
6279
+ * @param {string} location e.g. "prop", "context", "child context"
6280
+ * @param {string} componentName Name of the component for error messages.
6281
+ * @param {?Function} getStack Returns the component stack.
6282
+ * @private
6283
+ */
6284
+ function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
6285
+ if (process.env.NODE_ENV !== 'production') {
6286
+ for (var typeSpecName in typeSpecs) {
6287
+ if (typeSpecs.hasOwnProperty(typeSpecName)) {
6288
+ var error;
6289
+ // Prop type validation may throw. In case they do, we don't want to
6290
+ // fail the render phase where it didn't fail before. So we log it.
6291
+ // After these have been cleaned up, we'll let them throw.
6292
+ try {
6293
+ // This is intentionally an invariant that gets caught. It's the same
6294
+ // behavior as without this statement except with a better message.
6295
+ invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);
6296
+ error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
6297
+ } catch (ex) {
6298
+ error = ex;
6299
+ }
6300
+ warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);
6301
+ if (error instanceof Error && !(error.message in loggedTypeFailures)) {
6302
+ // Only monitor this failure once because there tends to be a lot of the
6303
+ // same error.
6304
+ loggedTypeFailures[error.message] = true;
6305
+
6306
+ var stack = getStack ? getStack() : '';
6307
+
6308
+ warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');
6309
+ }
6310
+ }
6311
+ }
6312
+ }
6313
+ }
6314
+
6315
+ module.exports = checkPropTypes;
6316
+
6317
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
6318
+
6319
+ /***/ }),
6320
+ /* 157 */
6321
+ /***/ (function(module, exports, __webpack_require__) {
6322
+
6323
+ "use strict";
6324
+ /**
6325
+ * Copyright (c) 2013-present, Facebook, Inc.
6326
+ *
6327
+ * This source code is licensed under the MIT license found in the
6328
+ * LICENSE file in the root directory of this source tree.
6329
+ */
6330
+
6331
+
6332
+
6333
+ var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
6334
+
6335
+ module.exports = ReactPropTypesSecret;
6336
+
6337
+
6338
+ /***/ }),
6339
+ /* 158 */
6340
+ /***/ (function(module, exports, __webpack_require__) {
6341
+
6342
+ !function(root, factory) {
6343
+ true ? module.exports = factory() : "function" == typeof define && define.amd ? define([], factory) : "object" == typeof exports ? exports.ReactSortableTree = factory() : root.ReactSortableTree = factory();
6344
+ }("undefined" != typeof self ? self : this, function() {
6345
+ /******/
6346
+ return function(modules) {
6347
+ /******/
6348
+ /******/
6349
+ // The require function
6350
+ /******/
6351
+ function __webpack_require__(moduleId) {
6352
+ /******/
6353
+ /******/
6354
+ // Check if module is in cache
6355
+ /******/
6356
+ if (installedModules[moduleId]) /******/
6357
+ return installedModules[moduleId].exports;
6358
+ /******/
6359
+ // Create a new module (and put it into the cache)
6360
+ /******/
6361
+ var module = installedModules[moduleId] = {
6362
+ /******/
6363
+ i: moduleId,
6364
+ /******/
6365
+ l: !1,
6366
+ /******/
6367
+ exports: {}
6368
+ };
6369
+ /******/
6370
+ /******/
6371
+ // Return the exports of the module
6372
+ /******/
6373
+ /******/
6374
+ /******/
6375
+ // Execute the module function
6376
+ /******/
6377
+ /******/
6378
+ /******/
6379
+ // Flag the module as loaded
6380
+ /******/
6381
+ return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__),
6382
+ module.l = !0, module.exports;
6383
+ }
6384
+ // webpackBootstrap
6385
+ /******/
6386
+ // The module cache
6387
+ /******/
6388
+ var installedModules = {};
6389
+ /******/
6390
+ /******/
6391
+ // Load entry module and return exports
6392
+ /******/
6393
+ /******/
6394
+ /******/
6395
+ /******/
6396
+ // expose the modules object (__webpack_modules__)
6397
+ /******/
6398
+ /******/
6399
+ /******/
6400
+ // expose the module cache
6401
+ /******/
6402
+ /******/
6403
+ /******/
6404
+ // define getter function for harmony exports
6405
+ /******/
6406
+ /******/
6407
+ /******/
6408
+ // getDefaultExport function for compatibility with non-harmony modules
6409
+ /******/
6410
+ /******/
6411
+ /******/
6412
+ // Object.prototype.hasOwnProperty.call
6413
+ /******/
6414
+ /******/
6415
+ /******/
6416
+ // __webpack_public_path__
6417
+ /******/
6418
+ return __webpack_require__.m = modules, __webpack_require__.c = installedModules,
6419
+ __webpack_require__.d = function(exports, name, getter) {
6420
+ /******/
6421
+ __webpack_require__.o(exports, name) || /******/
6422
+ Object.defineProperty(exports, name, {
6423
+ /******/
6424
+ configurable: !1,
6425
+ /******/
6426
+ enumerable: !0,
6427
+ /******/
6428
+ get: getter
6429
+ });
6430
+ }, __webpack_require__.n = function(module) {
6431
+ /******/
6432
+ var getter = module && module.__esModule ? /******/
6433
+ function() {
6434
+ return module.default;
6435
+ } : /******/
6436
+ function() {
6437
+ return module;
6438
+ };
6439
+ /******/
6440
+ /******/
6441
+ return __webpack_require__.d(getter, "a", getter), getter;
6442
+ }, __webpack_require__.o = function(object, property) {
6443
+ return Object.prototype.hasOwnProperty.call(object, property);
6444
+ }, __webpack_require__.p = "", __webpack_require__(__webpack_require__.s = 7);
6445
+ }([ /* 0 */
6446
+ /***/
6447
+ function(module, exports, __webpack_require__) {
6448
+ "use strict";
6449
+ function _toConsumableArray(arr) {
6450
+ if (Array.isArray(arr)) {
6451
+ for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
6452
+ return arr2;
6453
+ }
6454
+ return Array.from(arr);
6455
+ }
6456
+ /**
6457
+ * Performs a depth-first traversal over all of the node descendants,
6458
+ * incrementing currentIndex by 1 for each
6459
+ */
6460
+ function getNodeDataAtTreeIndexOrNextIndex(_ref) {
6461
+ var targetIndex = _ref.targetIndex, node = _ref.node, currentIndex = _ref.currentIndex, getNodeKey = _ref.getNodeKey, _ref$path = _ref.path, path = void 0 === _ref$path ? [] : _ref$path, _ref$lowerSiblingCoun = _ref.lowerSiblingCounts, lowerSiblingCounts = void 0 === _ref$lowerSiblingCoun ? [] : _ref$lowerSiblingCoun, _ref$ignoreCollapsed = _ref.ignoreCollapsed, ignoreCollapsed = void 0 === _ref$ignoreCollapsed || _ref$ignoreCollapsed, _ref$isPseudoRoot = _ref.isPseudoRoot, isPseudoRoot = void 0 !== _ref$isPseudoRoot && _ref$isPseudoRoot, selfPath = isPseudoRoot ? [] : [].concat(_toConsumableArray(path), [ getNodeKey({
6462
+ node: node,
6463
+ treeIndex: currentIndex
6464
+ }) ]);
6465
+ // Return target node when found
6466
+ if (currentIndex === targetIndex) return {
6467
+ node: node,
6468
+ lowerSiblingCounts: lowerSiblingCounts,
6469
+ path: selfPath
6470
+ };
6471
+ // Add one and continue for nodes with no children or hidden children
6472
+ if (!node.children || ignoreCollapsed && !0 !== node.expanded) return {
6473
+ nextIndex: currentIndex + 1
6474
+ };
6475
+ for (var childIndex = currentIndex + 1, childCount = node.children.length, i = 0; i < childCount; i += 1) {
6476
+ var result = getNodeDataAtTreeIndexOrNextIndex({
6477
+ ignoreCollapsed: ignoreCollapsed,
6478
+ getNodeKey: getNodeKey,
6479
+ targetIndex: targetIndex,
6480
+ node: node.children[i],
6481
+ currentIndex: childIndex,
6482
+ lowerSiblingCounts: [].concat(_toConsumableArray(lowerSiblingCounts), [ childCount - i - 1 ]),
6483
+ path: selfPath
6484
+ });
6485
+ if (result.node) return result;
6486
+ childIndex = result.nextIndex;
6487
+ }
6488
+ // If the target node is not found, return the farthest traversed index
6489
+ return {
6490
+ nextIndex: childIndex
6491
+ };
6492
+ }
6493
+ function getDescendantCount(_ref2) {
6494
+ var node = _ref2.node, _ref2$ignoreCollapsed = _ref2.ignoreCollapsed, ignoreCollapsed = void 0 === _ref2$ignoreCollapsed || _ref2$ignoreCollapsed;
6495
+ return getNodeDataAtTreeIndexOrNextIndex({
6496
+ getNodeKey: function() {},
6497
+ ignoreCollapsed: ignoreCollapsed,
6498
+ node: node,
6499
+ currentIndex: 0,
6500
+ targetIndex: -1
6501
+ }).nextIndex - 1;
6502
+ }
6503
+ /**
6504
+ * Walk all descendants of the given node, depth-first
6505
+ *
6506
+ * @param {Object} args - Function parameters
6507
+ * @param {function} args.callback - Function to call on each node
6508
+ * @param {function} args.getNodeKey - Function to get the key from the nodeData and tree index
6509
+ * @param {boolean} args.ignoreCollapsed - Ignore children of nodes without `expanded` set to `true`
6510
+ * @param {boolean=} args.isPseudoRoot - If true, this node has no real data, and only serves
6511
+ * as the parent of all the nodes in the tree
6512
+ * @param {Object} args.node - A tree node
6513
+ * @param {Object=} args.parentNode - The parent node of `node`
6514
+ * @param {number} args.currentIndex - The treeIndex of `node`
6515
+ * @param {number[]|string[]} args.path - Array of keys leading up to node to be changed
6516
+ * @param {number[]} args.lowerSiblingCounts - An array containing the count of siblings beneath the
6517
+ * previous nodes in this path
6518
+ *
6519
+ * @return {number|false} nextIndex - Index of the next sibling of `node`,
6520
+ * or false if the walk should be terminated
6521
+ */
6522
+ function walkDescendants(_ref3) {
6523
+ var callback = _ref3.callback, getNodeKey = _ref3.getNodeKey, ignoreCollapsed = _ref3.ignoreCollapsed, _ref3$isPseudoRoot = _ref3.isPseudoRoot, isPseudoRoot = void 0 !== _ref3$isPseudoRoot && _ref3$isPseudoRoot, node = _ref3.node, _ref3$parentNode = _ref3.parentNode, parentNode = void 0 === _ref3$parentNode ? null : _ref3$parentNode, currentIndex = _ref3.currentIndex, _ref3$path = _ref3.path, path = void 0 === _ref3$path ? [] : _ref3$path, _ref3$lowerSiblingCou = _ref3.lowerSiblingCounts, lowerSiblingCounts = void 0 === _ref3$lowerSiblingCou ? [] : _ref3$lowerSiblingCou, selfPath = isPseudoRoot ? [] : [].concat(_toConsumableArray(path), [ getNodeKey({
6524
+ node: node,
6525
+ treeIndex: currentIndex
6526
+ }) ]), selfInfo = isPseudoRoot ? null : {
6527
+ node: node,
6528
+ parentNode: parentNode,
6529
+ path: selfPath,
6530
+ lowerSiblingCounts: lowerSiblingCounts,
6531
+ treeIndex: currentIndex
6532
+ };
6533
+ if (!isPseudoRoot) {
6534
+ // Cut walk short if the callback returned false
6535
+ if (!1 === callback(selfInfo)) return !1;
6536
+ }
6537
+ // Return self on nodes with no children or hidden children
6538
+ if (!node.children || !0 !== node.expanded && ignoreCollapsed && !isPseudoRoot) return currentIndex;
6539
+ // Get all descendants
6540
+ var childIndex = currentIndex, childCount = node.children.length;
6541
+ if ("function" != typeof node.children) for (var i = 0; i < childCount; i += 1) // Cut walk short if the callback returned false
6542
+ if (!1 === (childIndex = walkDescendants({
6543
+ callback: callback,
6544
+ getNodeKey: getNodeKey,
6545
+ ignoreCollapsed: ignoreCollapsed,
6546
+ node: node.children[i],
6547
+ parentNode: isPseudoRoot ? null : node,
6548
+ currentIndex: childIndex + 1,
6549
+ lowerSiblingCounts: [].concat(_toConsumableArray(lowerSiblingCounts), [ childCount - i - 1 ]),
6550
+ path: selfPath
6551
+ }))) return !1;
6552
+ return childIndex;
6553
+ }
6554
+ /**
6555
+ * Perform a change on the given node and all its descendants, traversing the tree depth-first
6556
+ *
6557
+ * @param {Object} args - Function parameters
6558
+ * @param {function} args.callback - Function to call on each node
6559
+ * @param {function} args.getNodeKey - Function to get the key from the nodeData and tree index
6560
+ * @param {boolean} args.ignoreCollapsed - Ignore children of nodes without `expanded` set to `true`
6561
+ * @param {boolean=} args.isPseudoRoot - If true, this node has no real data, and only serves
6562
+ * as the parent of all the nodes in the tree
6563
+ * @param {Object} args.node - A tree node
6564
+ * @param {Object=} args.parentNode - The parent node of `node`
6565
+ * @param {number} args.currentIndex - The treeIndex of `node`
6566
+ * @param {number[]|string[]} args.path - Array of keys leading up to node to be changed
6567
+ * @param {number[]} args.lowerSiblingCounts - An array containing the count of siblings beneath the
6568
+ * previous nodes in this path
6569
+ *
6570
+ * @return {number|false} nextIndex - Index of the next sibling of `node`,
6571
+ * or false if the walk should be terminated
6572
+ */
6573
+ function mapDescendants(_ref4) {
6574
+ var callback = _ref4.callback, getNodeKey = _ref4.getNodeKey, ignoreCollapsed = _ref4.ignoreCollapsed, _ref4$isPseudoRoot = _ref4.isPseudoRoot, isPseudoRoot = void 0 !== _ref4$isPseudoRoot && _ref4$isPseudoRoot, node = _ref4.node, _ref4$parentNode = _ref4.parentNode, parentNode = void 0 === _ref4$parentNode ? null : _ref4$parentNode, currentIndex = _ref4.currentIndex, _ref4$path = _ref4.path, path = void 0 === _ref4$path ? [] : _ref4$path, _ref4$lowerSiblingCou = _ref4.lowerSiblingCounts, lowerSiblingCounts = void 0 === _ref4$lowerSiblingCou ? [] : _ref4$lowerSiblingCou, nextNode = _extends({}, node), selfPath = isPseudoRoot ? [] : [].concat(_toConsumableArray(path), [ getNodeKey({
6575
+ node: nextNode,
6576
+ treeIndex: currentIndex
6577
+ }) ]), selfInfo = {
6578
+ node: nextNode,
6579
+ parentNode: parentNode,
6580
+ path: selfPath,
6581
+ lowerSiblingCounts: lowerSiblingCounts,
6582
+ treeIndex: currentIndex
6583
+ };
6584
+ // Return self on nodes with no children or hidden children
6585
+ if (!nextNode.children || !0 !== nextNode.expanded && ignoreCollapsed && !isPseudoRoot) return {
6586
+ treeIndex: currentIndex,
6587
+ node: callback(selfInfo)
6588
+ };
6589
+ // Get all descendants
6590
+ var childIndex = currentIndex, childCount = nextNode.children.length;
6591
+ return "function" != typeof nextNode.children && (nextNode.children = nextNode.children.map(function(child, i) {
6592
+ var mapResult = mapDescendants({
6593
+ callback: callback,
6594
+ getNodeKey: getNodeKey,
6595
+ ignoreCollapsed: ignoreCollapsed,
6596
+ node: child,
6597
+ parentNode: isPseudoRoot ? null : nextNode,
6598
+ currentIndex: childIndex + 1,
6599
+ lowerSiblingCounts: [].concat(_toConsumableArray(lowerSiblingCounts), [ childCount - i - 1 ]),
6600
+ path: selfPath
6601
+ });
6602
+ return childIndex = mapResult.treeIndex, mapResult.node;
6603
+ })), {
6604
+ node: callback(selfInfo),
6605
+ treeIndex: childIndex
6606
+ };
6607
+ }
6608
+ /**
6609
+ * Count all the visible (expanded) descendants in the tree data.
6610
+ *
6611
+ * @param {!Object[]} treeData - Tree data
6612
+ *
6613
+ * @return {number} count
6614
+ */
6615
+ function getVisibleNodeCount(_ref5) {
6616
+ var traverse = function traverse(node) {
6617
+ return node.children && !0 === node.expanded && "function" != typeof node.children ? 1 + node.children.reduce(function(total, currentNode) {
6618
+ return total + traverse(currentNode);
6619
+ }, 0) : 1;
6620
+ };
6621
+ return _ref5.treeData.reduce(function(total, currentNode) {
6622
+ return total + traverse(currentNode);
6623
+ }, 0);
6624
+ }
6625
+ /**
6626
+ * Get the <targetIndex>th visible node in the tree data.
6627
+ *
6628
+ * @param {!Object[]} treeData - Tree data
6629
+ * @param {!number} targetIndex - The index of the node to search for
6630
+ * @param {!function} getNodeKey - Function to get the key from the nodeData and tree index
6631
+ *
6632
+ * @return {{
6633
+ * node: Object,
6634
+ * path: []string|[]number,
6635
+ * lowerSiblingCounts: []number
6636
+ * }|null} node - The node at targetIndex, or null if not found
6637
+ */
6638
+ function getVisibleNodeInfoAtIndex(_ref6) {
6639
+ var treeData = _ref6.treeData, targetIndex = _ref6.index, getNodeKey = _ref6.getNodeKey;
6640
+ if (!treeData || treeData.length < 1) return null;
6641
+ // Call the tree traversal with a pseudo-root node
6642
+ var result = getNodeDataAtTreeIndexOrNextIndex({
6643
+ targetIndex: targetIndex,
6644
+ getNodeKey: getNodeKey,
6645
+ node: {
6646
+ children: treeData,
6647
+ expanded: !0
6648
+ },
6649
+ currentIndex: -1,
6650
+ path: [],
6651
+ lowerSiblingCounts: [],
6652
+ isPseudoRoot: !0
6653
+ });
6654
+ return result.node ? result : null;
6655
+ }
6656
+ /**
6657
+ * Walk descendants depth-first and call a callback on each
6658
+ *
6659
+ * @param {!Object[]} treeData - Tree data
6660
+ * @param {!function} getNodeKey - Function to get the key from the nodeData and tree index
6661
+ * @param {function} callback - Function to call on each node
6662
+ * @param {boolean=} ignoreCollapsed - Ignore children of nodes without `expanded` set to `true`
6663
+ *
6664
+ * @return void
6665
+ */
6666
+ function walk(_ref7) {
6667
+ var treeData = _ref7.treeData, getNodeKey = _ref7.getNodeKey, callback = _ref7.callback, _ref7$ignoreCollapsed = _ref7.ignoreCollapsed, ignoreCollapsed = void 0 === _ref7$ignoreCollapsed || _ref7$ignoreCollapsed;
6668
+ !treeData || treeData.length < 1 || walkDescendants({
6669
+ callback: callback,
6670
+ getNodeKey: getNodeKey,
6671
+ ignoreCollapsed: ignoreCollapsed,
6672
+ isPseudoRoot: !0,
6673
+ node: {
6674
+ children: treeData
6675
+ },
6676
+ currentIndex: -1,
6677
+ path: [],
6678
+ lowerSiblingCounts: []
6679
+ });
6680
+ }
6681
+ /**
6682
+ * Perform a depth-first transversal of the descendants and
6683
+ * make a change to every node in the tree
6684
+ *
6685
+ * @param {!Object[]} treeData - Tree data
6686
+ * @param {!function} getNodeKey - Function to get the key from the nodeData and tree index
6687
+ * @param {function} callback - Function to call on each node
6688
+ * @param {boolean=} ignoreCollapsed - Ignore children of nodes without `expanded` set to `true`
6689
+ *
6690
+ * @return {Object[]} changedTreeData - The changed tree data
6691
+ */
6692
+ function map(_ref8) {
6693
+ var treeData = _ref8.treeData, getNodeKey = _ref8.getNodeKey, callback = _ref8.callback, _ref8$ignoreCollapsed = _ref8.ignoreCollapsed, ignoreCollapsed = void 0 === _ref8$ignoreCollapsed || _ref8$ignoreCollapsed;
6694
+ return !treeData || treeData.length < 1 ? [] : mapDescendants({
6695
+ callback: callback,
6696
+ getNodeKey: getNodeKey,
6697
+ ignoreCollapsed: ignoreCollapsed,
6698
+ isPseudoRoot: !0,
6699
+ node: {
6700
+ children: treeData
6701
+ },
6702
+ currentIndex: -1,
6703
+ path: [],
6704
+ lowerSiblingCounts: []
6705
+ }).node.children;
6706
+ }
6707
+ /**
6708
+ * Expand or close every node in the tree
6709
+ *
6710
+ * @param {!Object[]} treeData - Tree data
6711
+ * @param {?boolean} expanded - Whether the node is expanded or not
6712
+ *
6713
+ * @return {Object[]} changedTreeData - The changed tree data
6714
+ */
6715
+ function toggleExpandedForAll(_ref9) {
6716
+ var treeData = _ref9.treeData, _ref9$expanded = _ref9.expanded, expanded = void 0 === _ref9$expanded || _ref9$expanded;
6717
+ return map({
6718
+ treeData: treeData,
6719
+ callback: function(_ref10) {
6720
+ var node = _ref10.node;
6721
+ return _extends({}, node, {
6722
+ expanded: expanded
6723
+ });
6724
+ },
6725
+ getNodeKey: function(_ref11) {
6726
+ return _ref11.treeIndex;
6727
+ },
6728
+ ignoreCollapsed: !1
6729
+ });
6730
+ }
6731
+ /**
6732
+ * Replaces node at path with object, or callback-defined object
6733
+ *
6734
+ * @param {!Object[]} treeData
6735
+ * @param {number[]|string[]} path - Array of keys leading up to node to be changed
6736
+ * @param {function|any} newNode - Node to replace the node at the path with, or a function producing the new node
6737
+ * @param {!function} getNodeKey - Function to get the key from the nodeData and tree index
6738
+ * @param {boolean=} ignoreCollapsed - Ignore children of nodes without `expanded` set to `true`
6739
+ *
6740
+ * @return {Object[]} changedTreeData - The changed tree data
6741
+ */
6742
+ function changeNodeAtPath(_ref12) {
6743
+ var treeData = _ref12.treeData, path = _ref12.path, newNode = _ref12.newNode, getNodeKey = _ref12.getNodeKey, _ref12$ignoreCollapse = _ref12.ignoreCollapsed, ignoreCollapsed = void 0 === _ref12$ignoreCollapse || _ref12$ignoreCollapse, result = function traverse(_ref13) {
6744
+ var _ref13$isPseudoRoot = _ref13.isPseudoRoot, isPseudoRoot = void 0 !== _ref13$isPseudoRoot && _ref13$isPseudoRoot, node = _ref13.node, currentTreeIndex = _ref13.currentTreeIndex, pathIndex = _ref13.pathIndex;
6745
+ if (!isPseudoRoot && getNodeKey({
6746
+ node: node,
6747
+ treeIndex: currentTreeIndex
6748
+ }) !== path[pathIndex]) return "RESULT_MISS";
6749
+ if (pathIndex >= path.length - 1) // If this is the final location in the path, return its changed form
6750
+ return "function" == typeof newNode ? newNode({
6751
+ node: node,
6752
+ treeIndex: currentTreeIndex
6753
+ }) : newNode;
6754
+ if (!node.children) // If this node is part of the path, but has no children, return the unchanged node
6755
+ throw new Error("Path referenced children of node with no children.");
6756
+ for (var nextTreeIndex = currentTreeIndex + 1, i = 0; i < node.children.length; i += 1) {
6757
+ var _result = traverse({
6758
+ node: node.children[i],
6759
+ currentTreeIndex: nextTreeIndex,
6760
+ pathIndex: pathIndex + 1
6761
+ });
6762
+ // If the result went down the correct path
6763
+ if ("RESULT_MISS" !== _result) return _result ? _extends({}, node, {
6764
+ children: [].concat(_toConsumableArray(node.children.slice(0, i)), [ _result ], _toConsumableArray(node.children.slice(i + 1)))
6765
+ }) : _extends({}, node, {
6766
+ children: [].concat(_toConsumableArray(node.children.slice(0, i)), _toConsumableArray(node.children.slice(i + 1)))
6767
+ });
6768
+ nextTreeIndex += 1 + getDescendantCount({
6769
+ node: node.children[i],
6770
+ ignoreCollapsed: ignoreCollapsed
6771
+ });
6772
+ }
6773
+ return "RESULT_MISS";
6774
+ }({
6775
+ node: {
6776
+ children: treeData
6777
+ },
6778
+ currentTreeIndex: -1,
6779
+ pathIndex: -1,
6780
+ isPseudoRoot: !0
6781
+ });
6782
+ if ("RESULT_MISS" === result) throw new Error("No node found at the given path.");
6783
+ return result.children;
6784
+ }
6785
+ /**
6786
+ * Removes the node at the specified path and returns the resulting treeData.
6787
+ *
6788
+ * @param {!Object[]} treeData
6789
+ * @param {number[]|string[]} path - Array of keys leading up to node to be deleted
6790
+ * @param {!function} getNodeKey - Function to get the key from the nodeData and tree index
6791
+ * @param {boolean=} ignoreCollapsed - Ignore children of nodes without `expanded` set to `true`
6792
+ *
6793
+ * @return {Object[]} changedTreeData - The tree data with the node removed
6794
+ */
6795
+ function removeNodeAtPath(_ref14) {
6796
+ var treeData = _ref14.treeData, path = _ref14.path, getNodeKey = _ref14.getNodeKey, _ref14$ignoreCollapse = _ref14.ignoreCollapsed;
6797
+ return changeNodeAtPath({
6798
+ treeData: treeData,
6799
+ path: path,
6800
+ getNodeKey: getNodeKey,
6801
+ ignoreCollapsed: void 0 === _ref14$ignoreCollapse || _ref14$ignoreCollapse,
6802
+ newNode: null
6803
+ });
6804
+ }
6805
+ /**
6806
+ * Removes the node at the specified path and returns the resulting treeData.
6807
+ *
6808
+ * @param {!Object[]} treeData
6809
+ * @param {number[]|string[]} path - Array of keys leading up to node to be deleted
6810
+ * @param {!function} getNodeKey - Function to get the key from the nodeData and tree index
6811
+ * @param {boolean=} ignoreCollapsed - Ignore children of nodes without `expanded` set to `true`
6812
+ *
6813
+ * @return {Object} result
6814
+ * @return {Object[]} result.treeData - The tree data with the node removed
6815
+ * @return {Object} result.node - The node that was removed
6816
+ * @return {number} result.treeIndex - The previous treeIndex of the removed node
6817
+ */
6818
+ function removeNode(_ref15) {
6819
+ var treeData = _ref15.treeData, path = _ref15.path, getNodeKey = _ref15.getNodeKey, _ref15$ignoreCollapse = _ref15.ignoreCollapsed, ignoreCollapsed = void 0 === _ref15$ignoreCollapse || _ref15$ignoreCollapse, removedNode = null, removedTreeIndex = null;
6820
+ return {
6821
+ treeData: changeNodeAtPath({
6822
+ treeData: treeData,
6823
+ path: path,
6824
+ getNodeKey: getNodeKey,
6825
+ ignoreCollapsed: ignoreCollapsed,
6826
+ newNode: function(_ref16) {
6827
+ var node = _ref16.node, treeIndex = _ref16.treeIndex;
6828
+ // Store the target node and delete it from the tree
6829
+ return removedNode = node, removedTreeIndex = treeIndex, null;
6830
+ }
6831
+ }),
6832
+ node: removedNode,
6833
+ treeIndex: removedTreeIndex
6834
+ };
6835
+ }
6836
+ /**
6837
+ * Gets the node at the specified path
6838
+ *
6839
+ * @param {!Object[]} treeData
6840
+ * @param {number[]|string[]} path - Array of keys leading up to node to be deleted
6841
+ * @param {!function} getNodeKey - Function to get the key from the nodeData and tree index
6842
+ * @param {boolean=} ignoreCollapsed - Ignore children of nodes without `expanded` set to `true`
6843
+ *
6844
+ * @return {Object|null} nodeInfo - The node info at the given path, or null if not found
6845
+ */
6846
+ function getNodeAtPath(_ref17) {
6847
+ var treeData = _ref17.treeData, path = _ref17.path, getNodeKey = _ref17.getNodeKey, _ref17$ignoreCollapse = _ref17.ignoreCollapsed, ignoreCollapsed = void 0 === _ref17$ignoreCollapse || _ref17$ignoreCollapse, foundNodeInfo = null;
6848
+ try {
6849
+ changeNodeAtPath({
6850
+ treeData: treeData,
6851
+ path: path,
6852
+ getNodeKey: getNodeKey,
6853
+ ignoreCollapsed: ignoreCollapsed,
6854
+ newNode: function(_ref18) {
6855
+ var node = _ref18.node, treeIndex = _ref18.treeIndex;
6856
+ return foundNodeInfo = {
6857
+ node: node,
6858
+ treeIndex: treeIndex
6859
+ }, node;
6860
+ }
6861
+ });
6862
+ } catch (err) {}
6863
+ return foundNodeInfo;
6864
+ }
6865
+ /**
6866
+ * Adds the node to the specified parent and returns the resulting treeData.
6867
+ *
6868
+ * @param {!Object[]} treeData
6869
+ * @param {!Object} newNode - The node to insert
6870
+ * @param {number|string} parentKey - The key of the to-be parentNode of the node
6871
+ * @param {!function} getNodeKey - Function to get the key from the nodeData and tree index
6872
+ * @param {boolean=} ignoreCollapsed - Ignore children of nodes without `expanded` set to `true`
6873
+ * @param {boolean=} expandParent - If true, expands the parentNode specified by parentPath
6874
+ *
6875
+ * @return {Object} result
6876
+ * @return {Object[]} result.treeData - The updated tree data
6877
+ * @return {number} result.treeIndex - The tree index at which the node was inserted
6878
+ */
6879
+ function addNodeUnderParent(_ref19) {
6880
+ var treeData = _ref19.treeData, newNode = _ref19.newNode, _ref19$parentKey = _ref19.parentKey, parentKey = void 0 === _ref19$parentKey ? null : _ref19$parentKey, getNodeKey = _ref19.getNodeKey, _ref19$ignoreCollapse = _ref19.ignoreCollapsed, ignoreCollapsed = void 0 === _ref19$ignoreCollapse || _ref19$ignoreCollapse, _ref19$expandParent = _ref19.expandParent, expandParent = void 0 !== _ref19$expandParent && _ref19$expandParent;
6881
+ if (null === parentKey) return {
6882
+ treeData: [].concat(_toConsumableArray(treeData || []), [ newNode ]),
6883
+ treeIndex: (treeData || []).length
6884
+ };
6885
+ var insertedTreeIndex = null, hasBeenAdded = !1, changedTreeData = map({
6886
+ treeData: treeData,
6887
+ getNodeKey: getNodeKey,
6888
+ ignoreCollapsed: ignoreCollapsed,
6889
+ callback: function(_ref20) {
6890
+ var node = _ref20.node, treeIndex = _ref20.treeIndex, path = _ref20.path, key = path ? path[path.length - 1] : null;
6891
+ // Return nodes that are not the parent as-is
6892
+ if (hasBeenAdded || key !== parentKey) return node;
6893
+ hasBeenAdded = !0;
6894
+ var parentNode = _extends({}, node);
6895
+ // If no children exist yet, just add the single newNode
6896
+ if (expandParent && (parentNode.expanded = !0), !parentNode.children) return insertedTreeIndex = treeIndex + 1,
6897
+ _extends({}, parentNode, {
6898
+ children: [ newNode ]
6899
+ });
6900
+ if ("function" == typeof parentNode.children) throw new Error("Cannot add to children defined by a function");
6901
+ for (var nextTreeIndex = treeIndex + 1, i = 0; i < parentNode.children.length; i += 1) nextTreeIndex += 1 + getDescendantCount({
6902
+ node: parentNode.children[i],
6903
+ ignoreCollapsed: ignoreCollapsed
6904
+ });
6905
+ return insertedTreeIndex = nextTreeIndex, _extends({}, parentNode, {
6906
+ children: [].concat(_toConsumableArray(parentNode.children), [ newNode ])
6907
+ });
6908
+ }
6909
+ });
6910
+ if (!hasBeenAdded) throw new Error("No node found with the given key.");
6911
+ return {
6912
+ treeData: changedTreeData,
6913
+ treeIndex: insertedTreeIndex
6914
+ };
6915
+ }
6916
+ function addNodeAtDepthAndIndex(_ref21) {
6917
+ var targetDepth = _ref21.targetDepth, minimumTreeIndex = _ref21.minimumTreeIndex, newNode = _ref21.newNode, ignoreCollapsed = _ref21.ignoreCollapsed, expandParent = _ref21.expandParent, _ref21$isPseudoRoot = _ref21.isPseudoRoot, isPseudoRoot = void 0 !== _ref21$isPseudoRoot && _ref21$isPseudoRoot, isLastChild = _ref21.isLastChild, node = _ref21.node, currentIndex = _ref21.currentIndex, currentDepth = _ref21.currentDepth, getNodeKey = _ref21.getNodeKey, _ref21$path = _ref21.path, path = void 0 === _ref21$path ? [] : _ref21$path, selfPath = function(n) {
6918
+ return isPseudoRoot ? [] : [].concat(_toConsumableArray(path), [ getNodeKey({
6919
+ node: n,
6920
+ treeIndex: currentIndex
6921
+ }) ]);
6922
+ };
6923
+ // If the current position is the only possible place to add, add it
6924
+ if (currentIndex >= minimumTreeIndex - 1 || isLastChild && (!node.children || !node.children.length)) {
6925
+ if ("function" == typeof node.children) throw new Error("Cannot add to children defined by a function");
6926
+ var extraNodeProps = expandParent ? {
6927
+ expanded: !0
6928
+ } : {}, _nextNode = _extends({}, node, extraNodeProps, {
6929
+ children: node.children ? [ newNode ].concat(_toConsumableArray(node.children)) : [ newNode ]
6930
+ });
6931
+ return {
6932
+ node: _nextNode,
6933
+ nextIndex: currentIndex + 2,
6934
+ insertedTreeIndex: currentIndex + 1,
6935
+ parentPath: selfPath(_nextNode),
6936
+ parentNode: isPseudoRoot ? null : _nextNode
6937
+ };
6938
+ }
6939
+ // If this is the target depth for the insertion,
6940
+ // i.e., where the newNode can be added to the current node's children
6941
+ if (currentDepth >= targetDepth - 1) {
6942
+ // Skip over nodes with no children or hidden children
6943
+ if (!node.children || "function" == typeof node.children || !0 !== node.expanded && ignoreCollapsed && !isPseudoRoot) return {
6944
+ node: node,
6945
+ nextIndex: currentIndex + 1
6946
+ };
6947
+ for (var _childIndex = currentIndex + 1, _insertedTreeIndex = null, insertIndex = null, i = 0; i < node.children.length; i += 1) {
6948
+ // If a valid location is found, mark it as the insertion location and
6949
+ // break out of the loop
6950
+ if (_childIndex >= minimumTreeIndex) {
6951
+ _insertedTreeIndex = _childIndex, insertIndex = i;
6952
+ break;
6953
+ }
6954
+ // Increment the index by the child itself plus the number of descendants it has
6955
+ _childIndex += 1 + getDescendantCount({
6956
+ node: node.children[i],
6957
+ ignoreCollapsed: ignoreCollapsed
6958
+ });
6959
+ }
6960
+ // If no valid indices to add the node were found
6961
+ if (null === insertIndex) {
6962
+ // If the last position in this node's children is less than the minimum index
6963
+ // and there are more children on the level of this node, return without insertion
6964
+ if (_childIndex < minimumTreeIndex && !isLastChild) return {
6965
+ node: node,
6966
+ nextIndex: _childIndex
6967
+ };
6968
+ // Use the last position in the children array to insert the newNode
6969
+ _insertedTreeIndex = _childIndex, insertIndex = node.children.length;
6970
+ }
6971
+ // Insert the newNode at the insertIndex
6972
+ var _nextNode2 = _extends({}, node, {
6973
+ children: [].concat(_toConsumableArray(node.children.slice(0, insertIndex)), [ newNode ], _toConsumableArray(node.children.slice(insertIndex)))
6974
+ });
6975
+ // Return node with successful insert result
6976
+ return {
6977
+ node: _nextNode2,
6978
+ nextIndex: _childIndex,
6979
+ insertedTreeIndex: _insertedTreeIndex,
6980
+ parentPath: selfPath(_nextNode2),
6981
+ parentNode: isPseudoRoot ? null : _nextNode2
6982
+ };
6983
+ }
6984
+ // Skip over nodes with no children or hidden children
6985
+ if (!node.children || "function" == typeof node.children || !0 !== node.expanded && ignoreCollapsed && !isPseudoRoot) return {
6986
+ node: node,
6987
+ nextIndex: currentIndex + 1
6988
+ };
6989
+ // Get all descendants
6990
+ var insertedTreeIndex = null, pathFragment = null, parentNode = null, childIndex = currentIndex + 1, newChildren = node.children;
6991
+ "function" != typeof newChildren && (newChildren = newChildren.map(function(child, i) {
6992
+ if (null !== insertedTreeIndex) return child;
6993
+ var mapResult = addNodeAtDepthAndIndex({
6994
+ targetDepth: targetDepth,
6995
+ minimumTreeIndex: minimumTreeIndex,
6996
+ newNode: newNode,
6997
+ ignoreCollapsed: ignoreCollapsed,
6998
+ expandParent: expandParent,
6999
+ isLastChild: isLastChild && i === newChildren.length - 1,
7000
+ node: child,
7001
+ currentIndex: childIndex,
7002
+ currentDepth: currentDepth + 1,
7003
+ getNodeKey: getNodeKey,
7004
+ path: []
7005
+ });
7006
+ return "insertedTreeIndex" in mapResult && (insertedTreeIndex = mapResult.insertedTreeIndex,
7007
+ parentNode = mapResult.parentNode, pathFragment = mapResult.parentPath), childIndex = mapResult.nextIndex,
7008
+ mapResult.node;
7009
+ }));
7010
+ var nextNode = _extends({}, node, {
7011
+ children: newChildren
7012
+ }), result = {
7013
+ node: nextNode,
7014
+ nextIndex: childIndex
7015
+ };
7016
+ return null !== insertedTreeIndex && (result.insertedTreeIndex = insertedTreeIndex,
7017
+ result.parentPath = [].concat(_toConsumableArray(selfPath(nextNode)), _toConsumableArray(pathFragment)),
7018
+ result.parentNode = parentNode), result;
7019
+ }
7020
+ /**
7021
+ * Insert a node into the tree at the given depth, after the minimum index
7022
+ *
7023
+ * @param {!Object[]} treeData - Tree data
7024
+ * @param {!number} depth - The depth to insert the node at (the first level of the array being depth 0)
7025
+ * @param {!number} minimumTreeIndex - The lowest possible treeIndex to insert the node at
7026
+ * @param {!Object} newNode - The node to insert into the tree
7027
+ * @param {boolean=} ignoreCollapsed - Ignore children of nodes without `expanded` set to `true`
7028
+ * @param {boolean=} expandParent - If true, expands the parent of the inserted node
7029
+ * @param {!function} getNodeKey - Function to get the key from the nodeData and tree index
7030
+ *
7031
+ * @return {Object} result
7032
+ * @return {Object[]} result.treeData - The tree data with the node added
7033
+ * @return {number} result.treeIndex - The tree index at which the node was inserted
7034
+ * @return {number[]|string[]} result.path - Array of keys leading to the node location after insertion
7035
+ * @return {Object} result.parentNode - The parent node of the inserted node
7036
+ */
7037
+ function insertNode(_ref22) {
7038
+ var treeData = _ref22.treeData, targetDepth = _ref22.depth, minimumTreeIndex = _ref22.minimumTreeIndex, newNode = _ref22.newNode, _ref22$getNodeKey = _ref22.getNodeKey, getNodeKey = void 0 === _ref22$getNodeKey ? function() {} : _ref22$getNodeKey, _ref22$ignoreCollapse = _ref22.ignoreCollapsed, ignoreCollapsed = void 0 === _ref22$ignoreCollapse || _ref22$ignoreCollapse, _ref22$expandParent = _ref22.expandParent, expandParent = void 0 !== _ref22$expandParent && _ref22$expandParent;
7039
+ if (!treeData && 0 === targetDepth) return {
7040
+ treeData: [ newNode ],
7041
+ treeIndex: 0,
7042
+ path: [ getNodeKey({
7043
+ node: newNode,
7044
+ treeIndex: 0
7045
+ }) ],
7046
+ parentNode: null
7047
+ };
7048
+ var insertResult = addNodeAtDepthAndIndex({
7049
+ targetDepth: targetDepth,
7050
+ minimumTreeIndex: minimumTreeIndex,
7051
+ newNode: newNode,
7052
+ ignoreCollapsed: ignoreCollapsed,
7053
+ expandParent: expandParent,
7054
+ getNodeKey: getNodeKey,
7055
+ isPseudoRoot: !0,
7056
+ isLastChild: !0,
7057
+ node: {
7058
+ children: treeData
7059
+ },
7060
+ currentIndex: -1,
7061
+ currentDepth: -1
7062
+ });
7063
+ if (!("insertedTreeIndex" in insertResult)) throw new Error("No suitable position found to insert.");
7064
+ var treeIndex = insertResult.insertedTreeIndex;
7065
+ return {
7066
+ treeData: insertResult.node.children,
7067
+ treeIndex: treeIndex,
7068
+ path: [].concat(_toConsumableArray(insertResult.parentPath), [ getNodeKey({
7069
+ node: newNode,
7070
+ treeIndex: treeIndex
7071
+ }) ]),
7072
+ parentNode: insertResult.parentNode
7073
+ };
7074
+ }
7075
+ /**
7076
+ * Get tree data flattened.
7077
+ *
7078
+ * @param {!Object[]} treeData - Tree data
7079
+ * @param {!function} getNodeKey - Function to get the key from the nodeData and tree index
7080
+ * @param {boolean=} ignoreCollapsed - Ignore children of nodes without `expanded` set to `true`
7081
+ *
7082
+ * @return {{
7083
+ * node: Object,
7084
+ * path: []string|[]number,
7085
+ * lowerSiblingCounts: []number
7086
+ * }}[] nodes - The node array
7087
+ */
7088
+ function getFlatDataFromTree(_ref23) {
7089
+ var treeData = _ref23.treeData, getNodeKey = _ref23.getNodeKey, _ref23$ignoreCollapse = _ref23.ignoreCollapsed, ignoreCollapsed = void 0 === _ref23$ignoreCollapse || _ref23$ignoreCollapse;
7090
+ if (!treeData || treeData.length < 1) return [];
7091
+ var flattened = [];
7092
+ return walk({
7093
+ treeData: treeData,
7094
+ getNodeKey: getNodeKey,
7095
+ ignoreCollapsed: ignoreCollapsed,
7096
+ callback: function(nodeInfo) {
7097
+ flattened.push(nodeInfo);
7098
+ }
7099
+ }), flattened;
7100
+ }
7101
+ /**
7102
+ * Generate a tree structure from flat data.
7103
+ *
7104
+ * @param {!Object[]} flatData
7105
+ * @param {!function=} getKey - Function to get the key from the nodeData
7106
+ * @param {!function=} getParentKey - Function to get the parent key from the nodeData
7107
+ * @param {string|number=} rootKey - The value returned by `getParentKey` that corresponds to the root node.
7108
+ * For example, if your nodes have id 1-99, you might use rootKey = 0
7109
+ *
7110
+ * @return {Object[]} treeData - The flat data represented as a tree
7111
+ */
7112
+ function getTreeFromFlatData(_ref24) {
7113
+ var flatData = _ref24.flatData, _ref24$getKey = _ref24.getKey, getKey = void 0 === _ref24$getKey ? function(node) {
7114
+ return node.id;
7115
+ } : _ref24$getKey, _ref24$getParentKey = _ref24.getParentKey, getParentKey = void 0 === _ref24$getParentKey ? function(node) {
7116
+ return node.parentId;
7117
+ } : _ref24$getParentKey, _ref24$rootKey = _ref24.rootKey, rootKey = void 0 === _ref24$rootKey ? "0" : _ref24$rootKey;
7118
+ if (!flatData) return [];
7119
+ var childrenToParents = {};
7120
+ if (flatData.forEach(function(child) {
7121
+ var parentKey = getParentKey(child);
7122
+ parentKey in childrenToParents ? childrenToParents[parentKey].push(child) : childrenToParents[parentKey] = [ child ];
7123
+ }), !(rootKey in childrenToParents)) return [];
7124
+ var trav = function trav(parent) {
7125
+ var parentKey = getKey(parent);
7126
+ return parentKey in childrenToParents ? _extends({}, parent, {
7127
+ children: childrenToParents[parentKey].map(function(child) {
7128
+ return trav(child);
7129
+ })
7130
+ }) : _extends({}, parent);
7131
+ };
7132
+ return childrenToParents[rootKey].map(function(child) {
7133
+ return trav(child);
7134
+ });
7135
+ }
7136
+ /**
7137
+ * Check if a node is a descendant of another node.
7138
+ *
7139
+ * @param {!Object} older - Potential ancestor of younger node
7140
+ * @param {!Object} younger - Potential descendant of older node
7141
+ *
7142
+ * @return {boolean}
7143
+ */
7144
+ function isDescendant(older, younger) {
7145
+ return !!older.children && "function" != typeof older.children && older.children.some(function(child) {
7146
+ return child === younger || isDescendant(child, younger);
7147
+ });
7148
+ }
7149
+ /**
7150
+ * Get the maximum depth of the children (the depth of the root node is 0).
7151
+ *
7152
+ * @param {!Object} node - Node in the tree
7153
+ * @param {?number} depth - The current depth
7154
+ *
7155
+ * @return {number} maxDepth - The deepest depth in the tree
7156
+ */
7157
+ function getDepth(node) {
7158
+ var depth = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
7159
+ return node.children ? "function" == typeof node.children ? depth + 1 : node.children.reduce(function(deepest, child) {
7160
+ return Math.max(deepest, getDepth(child, depth + 1));
7161
+ }, depth) : depth;
7162
+ }
7163
+ /**
7164
+ * Find nodes matching a search query in the tree,
7165
+ *
7166
+ * @param {!function} getNodeKey - Function to get the key from the nodeData and tree index
7167
+ * @param {!Object[]} treeData - Tree data
7168
+ * @param {?string|number} searchQuery - Function returning a boolean to indicate whether the node is a match or not
7169
+ * @param {!function} searchMethod - Function returning a boolean to indicate whether the node is a match or not
7170
+ * @param {?number} searchFocusOffset - The offset of the match to focus on
7171
+ * (e.g., 0 focuses on the first match, 1 on the second)
7172
+ * @param {boolean=} expandAllMatchPaths - If true, expands the paths to any matched node
7173
+ * @param {boolean=} expandFocusMatchPaths - If true, expands the path to the focused node
7174
+ *
7175
+ * @return {Object[]} matches - An array of objects containing the matching `node`s, their `path`s and `treeIndex`s
7176
+ * @return {Object[]} treeData - The original tree data with all relevant nodes expanded.
7177
+ * If expandAllMatchPaths and expandFocusMatchPaths are both false,
7178
+ * it will be the same as the original tree data.
7179
+ */
7180
+ function find(_ref25) {
7181
+ var getNodeKey = _ref25.getNodeKey, treeData = _ref25.treeData, searchQuery = _ref25.searchQuery, searchMethod = _ref25.searchMethod, searchFocusOffset = _ref25.searchFocusOffset, _ref25$expandAllMatch = _ref25.expandAllMatchPaths, expandAllMatchPaths = void 0 !== _ref25$expandAllMatch && _ref25$expandAllMatch, _ref25$expandFocusMat = _ref25.expandFocusMatchPaths, expandFocusMatchPaths = void 0 === _ref25$expandFocusMat || _ref25$expandFocusMat, matchCount = 0, result = function trav(_ref26) {
7182
+ var _ref26$isPseudoRoot = _ref26.isPseudoRoot, isPseudoRoot = void 0 !== _ref26$isPseudoRoot && _ref26$isPseudoRoot, node = _ref26.node, currentIndex = _ref26.currentIndex, _ref26$path = _ref26.path, path = void 0 === _ref26$path ? [] : _ref26$path, matches = [], isSelfMatch = !1, hasFocusMatch = !1, selfPath = isPseudoRoot ? [] : [].concat(_toConsumableArray(path), [ getNodeKey({
7183
+ node: node,
7184
+ treeIndex: currentIndex
7185
+ }) ]), extraInfo = isPseudoRoot ? null : {
7186
+ path: selfPath,
7187
+ treeIndex: currentIndex
7188
+ }, hasChildren = node.children && "function" != typeof node.children && node.children.length > 0;
7189
+ // Examine the current node to see if it is a match
7190
+ !isPseudoRoot && searchMethod(_extends({}, extraInfo, {
7191
+ node: node,
7192
+ searchQuery: searchQuery
7193
+ })) && (matchCount === searchFocusOffset && (hasFocusMatch = !0), // Keep track of the number of matching nodes, so we know when the searchFocusOffset
7194
+ // is reached
7195
+ matchCount += 1, // We cannot add this node to the matches right away, as it may be changed
7196
+ // during the search of the descendants. The entire node is used in
7197
+ // comparisons between nodes inside the `matches` and `treeData` results
7198
+ // of this method (`find`)
7199
+ isSelfMatch = !0);
7200
+ var childIndex = currentIndex, newNode = _extends({}, node);
7201
+ // Get all descendants
7202
+ // Cannot assign a treeIndex to hidden nodes
7203
+ // Add this node to the matches if it fits the search criteria.
7204
+ // This is performed at the last minute so newNode can be sent in its final form.
7205
+ return hasChildren && (newNode.children = newNode.children.map(function(child) {
7206
+ var mapResult = trav({
7207
+ node: child,
7208
+ currentIndex: childIndex + 1,
7209
+ path: selfPath
7210
+ });
7211
+ // Ignore hidden nodes by only advancing the index counter to the returned treeIndex
7212
+ // if the child is expanded.
7213
+ //
7214
+ // The child could have been expanded from the start,
7215
+ // or expanded due to a matching node being found in its descendants
7216
+ // Expand the current node if it has descendants matching the search
7217
+ // and the settings are set to do so.
7218
+ return mapResult.node.expanded ? childIndex = mapResult.treeIndex : childIndex += 1,
7219
+ (mapResult.matches.length > 0 || mapResult.hasFocusMatch) && (matches = [].concat(_toConsumableArray(matches), _toConsumableArray(mapResult.matches)),
7220
+ mapResult.hasFocusMatch && (hasFocusMatch = !0), (expandAllMatchPaths && mapResult.matches.length > 0 || (expandAllMatchPaths || expandFocusMatchPaths) && mapResult.hasFocusMatch) && (newNode.expanded = !0)),
7221
+ mapResult.node;
7222
+ })), isPseudoRoot || newNode.expanded || (matches = matches.map(function(match) {
7223
+ return _extends({}, match, {
7224
+ treeIndex: null
7225
+ });
7226
+ })), isSelfMatch && (matches = [ _extends({}, extraInfo, {
7227
+ node: newNode
7228
+ }) ].concat(_toConsumableArray(matches))), {
7229
+ node: matches.length > 0 ? newNode : node,
7230
+ matches: matches,
7231
+ hasFocusMatch: hasFocusMatch,
7232
+ treeIndex: childIndex
7233
+ };
7234
+ }({
7235
+ node: {
7236
+ children: treeData
7237
+ },
7238
+ isPseudoRoot: !0,
7239
+ currentIndex: -1
7240
+ });
7241
+ return {
7242
+ matches: result.matches,
7243
+ treeData: result.node.children
7244
+ };
7245
+ }
7246
+ Object.defineProperty(exports, "__esModule", {
7247
+ value: !0
7248
+ });
7249
+ var _extends = Object.assign || function(target) {
7250
+ for (var i = 1; i < arguments.length; i++) {
7251
+ var source = arguments[i];
7252
+ for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);
7253
+ }
7254
+ return target;
7255
+ };
7256
+ exports.getDescendantCount = getDescendantCount, exports.getVisibleNodeCount = getVisibleNodeCount,
7257
+ exports.getVisibleNodeInfoAtIndex = getVisibleNodeInfoAtIndex, exports.walk = walk,
7258
+ exports.map = map, exports.toggleExpandedForAll = toggleExpandedForAll, exports.changeNodeAtPath = changeNodeAtPath,
7259
+ exports.removeNodeAtPath = removeNodeAtPath, exports.removeNode = removeNode, exports.getNodeAtPath = getNodeAtPath,
7260
+ exports.addNodeUnderParent = addNodeUnderParent, exports.insertNode = insertNode,
7261
+ exports.getFlatDataFromTree = getFlatDataFromTree, exports.getTreeFromFlatData = getTreeFromFlatData,
7262
+ exports.isDescendant = isDescendant, exports.getDepth = getDepth, exports.find = find;
7263
+ }, /* 1 */
7264
+ /***/
7265
+ function(module, exports) {
7266
+ module.exports = __webpack_require__(2);
7267
+ }, /* 2 */
7268
+ /***/
7269
+ function(module, exports) {
7270
+ module.exports = __webpack_require__(0);
7271
+ }, /* 3 */
7272
+ /***/
7273
+ function(module, exports) {
7274
+ function cssWithMappingToString(item, useSourceMap) {
7275
+ var content = item[1] || "", cssMapping = item[3];
7276
+ if (!cssMapping) return content;
7277
+ if (useSourceMap && "function" == typeof btoa) {
7278
+ var sourceMapping = toComment(cssMapping);
7279
+ return [ content ].concat(cssMapping.sources.map(function(source) {
7280
+ return "/*# sourceURL=" + cssMapping.sourceRoot + source + " */";
7281
+ })).concat([ sourceMapping ]).join("\n");
7282
+ }
7283
+ return [ content ].join("\n");
7284
+ }
7285
+ // Adapted from convert-source-map (MIT)
7286
+ function toComment(sourceMap) {
7287
+ return "/*# sourceMappingURL=data:application/json;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
7288
+ }
7289
+ /*
7290
+ MIT License http://www.opensource.org/licenses/mit-license.php
7291
+ Author Tobias Koppers @sokra
7292
+ */
7293
+ // css base code, injected by the css-loader
7294
+ module.exports = function(useSourceMap) {
7295
+ var list = [];
7296
+ // return the list of modules as css string
7297
+ // import a list of modules into the list
7298
+ return list.toString = function() {
7299
+ return this.map(function(item) {
7300
+ var content = cssWithMappingToString(item, useSourceMap);
7301
+ return item[2] ? "@media " + item[2] + "{" + content + "}" : content;
7302
+ }).join("");
7303
+ }, list.i = function(modules, mediaQuery) {
7304
+ "string" == typeof modules && (modules = [ [ null, modules, "" ] ]);
7305
+ for (var alreadyImportedModules = {}, i = 0; i < this.length; i++) {
7306
+ var id = this[i][0];
7307
+ "number" == typeof id && (alreadyImportedModules[id] = !0);
7308
+ }
7309
+ for (i = 0; i < modules.length; i++) {
7310
+ var item = modules[i];
7311
+ // skip already imported module
7312
+ // this implementation is not 100% perfect for weird media query combinations
7313
+ // when a module is imported multiple times with different media queries.
7314
+ // I hope this will never occur (Hey this way we have smaller bundles)
7315
+ "number" == typeof item[0] && alreadyImportedModules[item[0]] || (mediaQuery && !item[2] ? item[2] = mediaQuery : mediaQuery && (item[2] = "(" + item[2] + ") and (" + mediaQuery + ")"),
7316
+ list.push(item));
7317
+ }
7318
+ }, list;
7319
+ };
7320
+ }, /* 4 */
7321
+ /***/
7322
+ function(module, exports, __webpack_require__) {
7323
+ function addStylesToDom(styles, options) {
7324
+ for (var i = 0; i < styles.length; i++) {
7325
+ var item = styles[i], domStyle = stylesInDom[item.id];
7326
+ if (domStyle) {
7327
+ domStyle.refs++;
7328
+ for (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j](item.parts[j]);
7329
+ for (;j < item.parts.length; j++) domStyle.parts.push(addStyle(item.parts[j], options));
7330
+ } else {
7331
+ for (var parts = [], j = 0; j < item.parts.length; j++) parts.push(addStyle(item.parts[j], options));
7332
+ stylesInDom[item.id] = {
7333
+ id: item.id,
7334
+ refs: 1,
7335
+ parts: parts
7336
+ };
7337
+ }
7338
+ }
7339
+ }
7340
+ function listToStyles(list, options) {
7341
+ for (var styles = [], newStyles = {}, i = 0; i < list.length; i++) {
7342
+ var item = list[i], id = options.base ? item[0] + options.base : item[0], css = item[1], media = item[2], sourceMap = item[3], part = {
7343
+ css: css,
7344
+ media: media,
7345
+ sourceMap: sourceMap
7346
+ };
7347
+ newStyles[id] ? newStyles[id].parts.push(part) : styles.push(newStyles[id] = {
7348
+ id: id,
7349
+ parts: [ part ]
7350
+ });
7351
+ }
7352
+ return styles;
7353
+ }
7354
+ function insertStyleElement(options, style) {
7355
+ var target = getElement(options.insertInto);
7356
+ if (!target) throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");
7357
+ var lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];
7358
+ if ("top" === options.insertAt) lastStyleElementInsertedAtTop ? lastStyleElementInsertedAtTop.nextSibling ? target.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling) : target.appendChild(style) : target.insertBefore(style, target.firstChild),
7359
+ stylesInsertedAtTop.push(style); else if ("bottom" === options.insertAt) target.appendChild(style); else {
7360
+ if ("object" != typeof options.insertAt || !options.insertAt.before) throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");
7361
+ var nextSibling = getElement(options.insertInto + " " + options.insertAt.before);
7362
+ target.insertBefore(style, nextSibling);
7363
+ }
7364
+ }
7365
+ function removeStyleElement(style) {
7366
+ if (null === style.parentNode) return !1;
7367
+ style.parentNode.removeChild(style);
7368
+ var idx = stylesInsertedAtTop.indexOf(style);
7369
+ idx >= 0 && stylesInsertedAtTop.splice(idx, 1);
7370
+ }
7371
+ function createStyleElement(options) {
7372
+ var style = document.createElement("style");
7373
+ return options.attrs.type = "text/css", addAttrs(style, options.attrs), insertStyleElement(options, style),
7374
+ style;
7375
+ }
7376
+ function createLinkElement(options) {
7377
+ var link = document.createElement("link");
7378
+ return options.attrs.type = "text/css", options.attrs.rel = "stylesheet", addAttrs(link, options.attrs),
7379
+ insertStyleElement(options, link), link;
7380
+ }
7381
+ function addAttrs(el, attrs) {
7382
+ Object.keys(attrs).forEach(function(key) {
7383
+ el.setAttribute(key, attrs[key]);
7384
+ });
7385
+ }
7386
+ function addStyle(obj, options) {
7387
+ var style, update, remove, result;
7388
+ // If a transform function was defined, run it on the css
7389
+ if (options.transform && obj.css) {
7390
+ if (!(result = options.transform(obj.css))) // If the transform function returns a falsy value, don't add this css.
7391
+ // This allows conditional loading of css
7392
+ return function() {};
7393
+ // If transform returns a value, use that instead of the original css.
7394
+ // This allows running runtime transformations on the css.
7395
+ obj.css = result;
7396
+ }
7397
+ if (options.singleton) {
7398
+ var styleIndex = singletonCounter++;
7399
+ style = singleton || (singleton = createStyleElement(options)), update = applyToSingletonTag.bind(null, style, styleIndex, !1),
7400
+ remove = applyToSingletonTag.bind(null, style, styleIndex, !0);
7401
+ } else obj.sourceMap && "function" == typeof URL && "function" == typeof URL.createObjectURL && "function" == typeof URL.revokeObjectURL && "function" == typeof Blob && "function" == typeof btoa ? (style = createLinkElement(options),
7402
+ update = updateLink.bind(null, style, options), remove = function() {
7403
+ removeStyleElement(style), style.href && URL.revokeObjectURL(style.href);
7404
+ }) : (style = createStyleElement(options), update = applyToTag.bind(null, style),
7405
+ remove = function() {
7406
+ removeStyleElement(style);
7407
+ });
7408
+ return update(obj), function(newObj) {
7409
+ if (newObj) {
7410
+ if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) return;
7411
+ update(obj = newObj);
7412
+ } else remove();
7413
+ };
7414
+ }
7415
+ function applyToSingletonTag(style, index, remove, obj) {
7416
+ var css = remove ? "" : obj.css;
7417
+ if (style.styleSheet) style.styleSheet.cssText = replaceText(index, css); else {
7418
+ var cssNode = document.createTextNode(css), childNodes = style.childNodes;
7419
+ childNodes[index] && style.removeChild(childNodes[index]), childNodes.length ? style.insertBefore(cssNode, childNodes[index]) : style.appendChild(cssNode);
7420
+ }
7421
+ }
7422
+ function applyToTag(style, obj) {
7423
+ var css = obj.css, media = obj.media;
7424
+ if (media && style.setAttribute("media", media), style.styleSheet) style.styleSheet.cssText = css; else {
7425
+ for (;style.firstChild; ) style.removeChild(style.firstChild);
7426
+ style.appendChild(document.createTextNode(css));
7427
+ }
7428
+ }
7429
+ function updateLink(link, options, obj) {
7430
+ var css = obj.css, sourceMap = obj.sourceMap, autoFixUrls = void 0 === options.convertToAbsoluteUrls && sourceMap;
7431
+ (options.convertToAbsoluteUrls || autoFixUrls) && (css = fixUrls(css)), sourceMap && (// http://stackoverflow.com/a/26603875
7432
+ css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */");
7433
+ var blob = new Blob([ css ], {
7434
+ type: "text/css"
7435
+ }), oldSrc = link.href;
7436
+ link.href = URL.createObjectURL(blob), oldSrc && URL.revokeObjectURL(oldSrc);
7437
+ }
7438
+ /*
7439
+ MIT License http://www.opensource.org/licenses/mit-license.php
7440
+ Author Tobias Koppers @sokra
7441
+ */
7442
+ var stylesInDom = {}, isOldIE = function(fn) {
7443
+ var memo;
7444
+ return function() {
7445
+ return void 0 === memo && (memo = fn.apply(this, arguments)), memo;
7446
+ };
7447
+ }(function() {
7448
+ // Test for IE <= 9 as proposed by Browserhacks
7449
+ // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
7450
+ // Tests for existence of standard globals is to allow style-loader
7451
+ // to operate correctly into non-standard environments
7452
+ // @see https://github.com/webpack-contrib/style-loader/issues/177
7453
+ return window && document && document.all && !window.atob;
7454
+ }), getElement = function(fn) {
7455
+ var memo = {};
7456
+ return function(selector) {
7457
+ if (void 0 === memo[selector]) {
7458
+ var styleTarget = fn.call(this, selector);
7459
+ // Special case to return head of iframe instead of iframe itself
7460
+ if (styleTarget instanceof window.HTMLIFrameElement) try {
7461
+ // This will throw an exception if access to iframe is blocked
7462
+ // due to cross-origin restrictions
7463
+ styleTarget = styleTarget.contentDocument.head;
7464
+ } catch (e) {
7465
+ styleTarget = null;
7466
+ }
7467
+ memo[selector] = styleTarget;
7468
+ }
7469
+ return memo[selector];
7470
+ };
7471
+ }(function(target) {
7472
+ return document.querySelector(target);
7473
+ }), singleton = null, singletonCounter = 0, stylesInsertedAtTop = [], fixUrls = __webpack_require__(14);
7474
+ module.exports = function(list, options) {
7475
+ if ("undefined" != typeof DEBUG && DEBUG && "object" != typeof document) throw new Error("The style-loader cannot be used in a non-browser environment");
7476
+ options = options || {}, options.attrs = "object" == typeof options.attrs ? options.attrs : {},
7477
+ // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
7478
+ // tags it will allow on a page
7479
+ options.singleton || "boolean" == typeof options.singleton || (options.singleton = isOldIE()),
7480
+ // By default, add <style> tags to the <head> element
7481
+ options.insertInto || (options.insertInto = "head"), // By default, add <style> tags to the bottom of the target
7482
+ options.insertAt || (options.insertAt = "bottom");
7483
+ var styles = listToStyles(list, options);
7484
+ return addStylesToDom(styles, options), function(newList) {
7485
+ for (var mayRemove = [], i = 0; i < styles.length; i++) {
7486
+ var item = styles[i], domStyle = stylesInDom[item.id];
7487
+ domStyle.refs--, mayRemove.push(domStyle);
7488
+ }
7489
+ if (newList) {
7490
+ addStylesToDom(listToStyles(newList, options), options);
7491
+ }
7492
+ for (var i = 0; i < mayRemove.length; i++) {
7493
+ var domStyle = mayRemove[i];
7494
+ if (0 === domStyle.refs) {
7495
+ for (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();
7496
+ delete stylesInDom[domStyle.id];
7497
+ }
7498
+ }
7499
+ };
7500
+ };
7501
+ var replaceText = function() {
7502
+ var textStore = [];
7503
+ return function(index, replacement) {
7504
+ return textStore[index] = replacement, textStore.filter(Boolean).join("\n");
7505
+ };
7506
+ }();
7507
+ }, /* 5 */
7508
+ /***/
7509
+ function(module, exports, __webpack_require__) {
7510
+ "use strict";
7511
+ function defaultGetNodeKey(_ref) {
7512
+ return _ref.treeIndex;
7513
+ }
7514
+ // Cheap hack to get the text of a react object
7515
+ function getReactElementText(parent) {
7516
+ return "string" == typeof parent ? parent : "object" !== (void 0 === parent ? "undefined" : _typeof(parent)) || !parent.props || !parent.props.children || "string" != typeof parent.props.children && "object" !== _typeof(parent.props.children) ? "" : "string" == typeof parent.props.children ? parent.props.children : parent.props.children.map(function(child) {
7517
+ return getReactElementText(child);
7518
+ }).join("");
7519
+ }
7520
+ // Search for a query string inside a node property
7521
+ function stringSearch(key, searchQuery, node, path, treeIndex) {
7522
+ return "function" == typeof node[key] ? String(node[key]({
7523
+ node: node,
7524
+ path: path,
7525
+ treeIndex: treeIndex
7526
+ })).indexOf(searchQuery) > -1 : "object" === _typeof(node[key]) ? getReactElementText(node[key]).indexOf(searchQuery) > -1 : node[key] && String(node[key]).indexOf(searchQuery) > -1;
7527
+ }
7528
+ function defaultSearchMethod(_ref2) {
7529
+ var node = _ref2.node, path = _ref2.path, treeIndex = _ref2.treeIndex, searchQuery = _ref2.searchQuery;
7530
+ return stringSearch("title", searchQuery, node, path, treeIndex) || stringSearch("subtitle", searchQuery, node, path, treeIndex);
7531
+ }
7532
+ Object.defineProperty(exports, "__esModule", {
7533
+ value: !0
7534
+ });
7535
+ var _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
7536
+ return typeof obj;
7537
+ } : function(obj) {
7538
+ return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
7539
+ };
7540
+ exports.defaultGetNodeKey = defaultGetNodeKey, exports.defaultSearchMethod = defaultSearchMethod;
7541
+ }, /* 6 */
7542
+ /***/
7543
+ function(module, exports, __webpack_require__) {
7544
+ "use strict";
7545
+ Object.defineProperty(exports, "__esModule", {
7546
+ value: !0
7547
+ }), exports.memoizedGetDescendantCount = exports.memoizedGetFlatDataFromTree = exports.memoizedInsertNode = void 0;
7548
+ var _treeDataUtils = __webpack_require__(0), memoize = function(f) {
7549
+ var savedArgsArray = [], savedKeysArray = [], savedResult = null;
7550
+ return function(args) {
7551
+ var keysArray = Object.keys(args).sort(), argsArray = keysArray.map(function(key) {
7552
+ return args[key];
7553
+ });
7554
+ // If the arguments for the last insert operation are different than this time,
7555
+ // recalculate the result
7556
+ return (argsArray.length !== savedArgsArray.length || argsArray.some(function(arg, index) {
7557
+ return arg !== savedArgsArray[index];
7558
+ }) || keysArray.some(function(key, index) {
7559
+ return key !== savedKeysArray[index];
7560
+ })) && (savedArgsArray = argsArray, savedKeysArray = keysArray, savedResult = f(args)),
7561
+ savedResult;
7562
+ };
7563
+ };
7564
+ exports.memoizedInsertNode = memoize(_treeDataUtils.insertNode), exports.memoizedGetFlatDataFromTree = memoize(_treeDataUtils.getFlatDataFromTree),
7565
+ exports.memoizedGetDescendantCount = memoize(_treeDataUtils.getDescendantCount);
7566
+ }, /* 7 */
7567
+ /***/
7568
+ function(module, exports, __webpack_require__) {
7569
+ "use strict";
7570
+ Object.defineProperty(exports, "__esModule", {
7571
+ value: !0
7572
+ }), exports.SortableTreeWithoutDndContext = void 0;
7573
+ var _defaultHandlers = __webpack_require__(5);
7574
+ Object.keys(_defaultHandlers).forEach(function(key) {
7575
+ "default" !== key && "__esModule" !== key && Object.defineProperty(exports, key, {
7576
+ enumerable: !0,
7577
+ get: function() {
7578
+ return _defaultHandlers[key];
7579
+ }
7580
+ });
7581
+ });
7582
+ var _treeDataUtils = __webpack_require__(0);
7583
+ Object.keys(_treeDataUtils).forEach(function(key) {
7584
+ "default" !== key && "__esModule" !== key && Object.defineProperty(exports, key, {
7585
+ enumerable: !0,
7586
+ get: function() {
7587
+ return _treeDataUtils[key];
7588
+ }
7589
+ });
7590
+ });
7591
+ var _reactSortableTree = __webpack_require__(8), _reactSortableTree2 = function(obj) {
7592
+ return obj && obj.__esModule ? obj : {
7593
+ default: obj
7594
+ };
7595
+ }(_reactSortableTree);
7596
+ exports.default = _reactSortableTree2.default, // Export the tree component without the react-dnd DragDropContext,
7597
+ // for when component is used with other components using react-dnd.
7598
+ // see: https://github.com/gaearon/react-dnd/issues/186
7599
+ exports.SortableTreeWithoutDndContext = _reactSortableTree.SortableTreeWithoutDndContext;
7600
+ }, /* 8 */
7601
+ /***/
7602
+ function(module, exports, __webpack_require__) {
7603
+ "use strict";
7604
+ function _interopRequireDefault(obj) {
7605
+ return obj && obj.__esModule ? obj : {
7606
+ default: obj
7607
+ };
7608
+ }
7609
+ function _classCallCheck(instance, Constructor) {
7610
+ if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
7611
+ }
7612
+ function _possibleConstructorReturn(self, call) {
7613
+ if (!self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
7614
+ return !call || "object" != typeof call && "function" != typeof call ? self : call;
7615
+ }
7616
+ function _inherits(subClass, superClass) {
7617
+ if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
7618
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
7619
+ constructor: {
7620
+ value: subClass,
7621
+ enumerable: !1,
7622
+ writable: !0,
7623
+ configurable: !0
7624
+ }
7625
+ }), superClass && (Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass);
7626
+ }
7627
+ Object.defineProperty(exports, "__esModule", {
7628
+ value: !0
7629
+ }), exports.SortableTreeWithoutDndContext = void 0;
7630
+ var _createClass = function() {
7631
+ function defineProperties(target, props) {
7632
+ for (var i = 0; i < props.length; i++) {
7633
+ var descriptor = props[i];
7634
+ descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0,
7635
+ "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor);
7636
+ }
7637
+ }
7638
+ return function(Constructor, protoProps, staticProps) {
7639
+ return protoProps && defineProperties(Constructor.prototype, protoProps), staticProps && defineProperties(Constructor, staticProps),
7640
+ Constructor;
7641
+ };
7642
+ }(), _extends = Object.assign || function(target) {
7643
+ for (var i = 1; i < arguments.length; i++) {
7644
+ var source = arguments[i];
7645
+ for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);
7646
+ }
7647
+ return target;
7648
+ }, _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _propTypes = __webpack_require__(2), _propTypes2 = _interopRequireDefault(_propTypes), _reactVirtualized = __webpack_require__(9), _lodash = __webpack_require__(10), _lodash2 = _interopRequireDefault(_lodash), _reactDndScrollzone = __webpack_require__(11), _reactDndScrollzone2 = _interopRequireDefault(_reactDndScrollzone);
7649
+ __webpack_require__(12);
7650
+ var _treeNode = __webpack_require__(15), _treeNode2 = _interopRequireDefault(_treeNode), _nodeRendererDefault = __webpack_require__(18), _nodeRendererDefault2 = _interopRequireDefault(_nodeRendererDefault), _treePlaceholder = __webpack_require__(22), _treePlaceholder2 = _interopRequireDefault(_treePlaceholder), _placeholderRendererDefault = __webpack_require__(23), _placeholderRendererDefault2 = _interopRequireDefault(_placeholderRendererDefault), _treeDataUtils = __webpack_require__(0), _memoizedTreeDataUtils = __webpack_require__(6), _genericUtils = __webpack_require__(26), _defaultHandlers = __webpack_require__(5), _dndManager = __webpack_require__(27), _dndManager2 = _interopRequireDefault(_dndManager), _reactSortableTree = __webpack_require__(31), _reactSortableTree2 = _interopRequireDefault(_reactSortableTree), treeIdCounter = 1, mergeTheme = function(props) {
7651
+ var merged = _extends({}, props, {
7652
+ style: _extends({}, props.theme.style, props.style),
7653
+ innerStyle: _extends({}, props.theme.innerStyle, props.innerStyle),
7654
+ reactVirtualizedListProps: _extends({}, props.theme.reactVirtualizedListProps, props.reactVirtualizedListProps)
7655
+ }), overridableDefaults = {
7656
+ nodeContentRenderer: _nodeRendererDefault2.default,
7657
+ placeholderRenderer: _placeholderRendererDefault2.default,
7658
+ rowHeight: 62,
7659
+ scaffoldBlockPxWidth: 44,
7660
+ slideRegionSize: 100,
7661
+ treeNodeRenderer: _treeNode2.default
7662
+ };
7663
+ return Object.keys(overridableDefaults).forEach(function(propKey) {
7664
+ // If prop has been specified, do not change it
7665
+ // If prop is specified in theme, use the theme setting
7666
+ // If all else fails, fall back to the default
7667
+ null === props[propKey] && (merged[propKey] = void 0 !== props.theme[propKey] ? props.theme[propKey] : overridableDefaults[propKey]);
7668
+ }), merged;
7669
+ }, ReactSortableTree = function(_Component) {
7670
+ function ReactSortableTree(props) {
7671
+ _classCallCheck(this, ReactSortableTree);
7672
+ var _this = _possibleConstructorReturn(this, (ReactSortableTree.__proto__ || Object.getPrototypeOf(ReactSortableTree)).call(this, props)), _mergeTheme = mergeTheme(props), dndType = _mergeTheme.dndType, nodeContentRenderer = _mergeTheme.nodeContentRenderer, treeNodeRenderer = _mergeTheme.treeNodeRenderer, isVirtualized = _mergeTheme.isVirtualized, slideRegionSize = _mergeTheme.slideRegionSize;
7673
+ // Wrapping classes for use with react-dnd
7674
+ // Prepare scroll-on-drag options for this list
7675
+ return _this.dndManager = new _dndManager2.default(_this), _this.treeId = "rst__" + treeIdCounter,
7676
+ treeIdCounter += 1, _this.dndType = dndType || _this.treeId, _this.nodeContentRenderer = _this.dndManager.wrapSource(nodeContentRenderer),
7677
+ _this.treePlaceholderRenderer = _this.dndManager.wrapPlaceholder(_treePlaceholder2.default),
7678
+ _this.treeNodeRenderer = _this.dndManager.wrapTarget(treeNodeRenderer), isVirtualized && (_this.scrollZoneVirtualList = (0,
7679
+ _reactDndScrollzone2.default)(_reactVirtualized.List), _this.vStrength = (0, _reactDndScrollzone.createVerticalStrength)(slideRegionSize),
7680
+ _this.hStrength = (0, _reactDndScrollzone.createHorizontalStrength)(slideRegionSize)),
7681
+ _this.state = {
7682
+ draggingTreeData: null,
7683
+ draggedNode: null,
7684
+ draggedMinimumTreeIndex: null,
7685
+ draggedDepth: null,
7686
+ searchMatches: [],
7687
+ searchFocusTreeIndex: null,
7688
+ dragging: !1
7689
+ }, _this.toggleChildrenVisibility = _this.toggleChildrenVisibility.bind(_this),
7690
+ _this.moveNode = _this.moveNode.bind(_this), _this.startDrag = _this.startDrag.bind(_this),
7691
+ _this.dragHover = _this.dragHover.bind(_this), _this.endDrag = _this.endDrag.bind(_this),
7692
+ _this.drop = _this.drop.bind(_this), _this.handleDndMonitorChange = _this.handleDndMonitorChange.bind(_this),
7693
+ _this;
7694
+ }
7695
+ return _inherits(ReactSortableTree, _Component), _createClass(ReactSortableTree, [ {
7696
+ key: "componentDidMount",
7697
+ value: function() {
7698
+ this.loadLazyChildren(), this.search(this.props), // Hook into react-dnd state changes to detect when the drag ends
7699
+ // TODO: This is very brittle, so it needs to be replaced if react-dnd
7700
+ // offers a more official way to detect when a drag ends
7701
+ this.clearMonitorSubscription = this.context.dragDropManager.getMonitor().subscribeToStateChange(this.handleDndMonitorChange);
7702
+ }
7703
+ }, {
7704
+ key: "componentWillReceiveProps",
7705
+ value: function(nextProps) {
7706
+ this.props.treeData !== nextProps.treeData ? (// Ignore updates caused by search, in order to avoid infinite looping
7707
+ this.ignoreOneTreeUpdate ? this.ignoreOneTreeUpdate = !1 : (// Reset the focused index if the tree has changed
7708
+ this.setState({
7709
+ searchFocusTreeIndex: null
7710
+ }), // Load any children defined by a function
7711
+ this.loadLazyChildren(nextProps), this.search(nextProps, !1, !1)), // Reset the drag state
7712
+ this.setState({
7713
+ draggingTreeData: null,
7714
+ draggedNode: null,
7715
+ draggedMinimumTreeIndex: null,
7716
+ draggedDepth: null,
7717
+ dragging: !1
7718
+ })) : (0, _lodash2.default)(this.props.searchQuery, nextProps.searchQuery) ? this.props.searchFocusOffset !== nextProps.searchFocusOffset && this.search(nextProps, !0, !0, !0) : this.search(nextProps);
7719
+ }
7720
+ }, {
7721
+ key: "componentDidUpdate",
7722
+ value: function(prevProps, prevState) {
7723
+ // if it is not the same then call the onDragStateChanged
7724
+ this.state.dragging !== prevState.dragging && this.props.onDragStateChanged && this.props.onDragStateChanged({
7725
+ isDragging: this.state.dragging,
7726
+ draggedNode: this.state.draggedNode
7727
+ });
7728
+ }
7729
+ }, {
7730
+ key: "componentWillUnmount",
7731
+ value: function() {
7732
+ this.clearMonitorSubscription();
7733
+ }
7734
+ }, {
7735
+ key: "getRows",
7736
+ value: function(treeData) {
7737
+ return (0, _memoizedTreeDataUtils.memoizedGetFlatDataFromTree)({
7738
+ ignoreCollapsed: !0,
7739
+ getNodeKey: this.props.getNodeKey,
7740
+ treeData: treeData
7741
+ });
7742
+ }
7743
+ }, {
7744
+ key: "handleDndMonitorChange",
7745
+ value: function() {
7746
+ // If the drag ends and the tree is still in a mid-drag state,
7747
+ // it means that the drag was canceled or the dragSource dropped
7748
+ // elsewhere, and we should reset the state of this tree
7749
+ !this.context.dragDropManager.getMonitor().isDragging() && this.state.draggingTreeData && this.endDrag();
7750
+ }
7751
+ }, {
7752
+ key: "toggleChildrenVisibility",
7753
+ value: function(_ref) {
7754
+ var targetNode = _ref.node, path = _ref.path, treeData = (0, _treeDataUtils.changeNodeAtPath)({
7755
+ treeData: this.props.treeData,
7756
+ path: path,
7757
+ newNode: function(_ref2) {
7758
+ var node = _ref2.node;
7759
+ return _extends({}, node, {
7760
+ expanded: !node.expanded
7761
+ });
7762
+ },
7763
+ getNodeKey: this.props.getNodeKey
7764
+ });
7765
+ this.props.onChange(treeData), this.props.onVisibilityToggle({
7766
+ treeData: treeData,
7767
+ node: targetNode,
7768
+ expanded: !targetNode.expanded,
7769
+ path: path
7770
+ });
7771
+ }
7772
+ }, {
7773
+ key: "moveNode",
7774
+ value: function(_ref3) {
7775
+ var node = _ref3.node, prevPath = _ref3.path, prevTreeIndex = _ref3.treeIndex, depth = _ref3.depth, minimumTreeIndex = _ref3.minimumTreeIndex, _insertNode = (0,
7776
+ _treeDataUtils.insertNode)({
7777
+ treeData: this.state.draggingTreeData,
7778
+ newNode: node,
7779
+ depth: depth,
7780
+ minimumTreeIndex: minimumTreeIndex,
7781
+ expandParent: !0,
7782
+ getNodeKey: this.props.getNodeKey
7783
+ }), treeData = _insertNode.treeData, treeIndex = _insertNode.treeIndex, path = _insertNode.path, nextParentNode = _insertNode.parentNode;
7784
+ this.props.onChange(treeData), this.props.onMoveNode({
7785
+ treeData: treeData,
7786
+ node: node,
7787
+ treeIndex: treeIndex,
7788
+ path: path,
7789
+ nextPath: path,
7790
+ nextTreeIndex: treeIndex,
7791
+ prevPath: prevPath,
7792
+ prevTreeIndex: prevTreeIndex,
7793
+ nextParentNode: nextParentNode
7794
+ });
7795
+ }
7796
+ }, {
7797
+ key: "search",
7798
+ value: function() {
7799
+ var props = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.props, seekIndex = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], expand = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], singleSearch = arguments.length > 3 && void 0 !== arguments[3] && arguments[3], treeData = props.treeData, onChange = props.onChange, searchFinishCallback = props.searchFinishCallback, searchQuery = props.searchQuery, searchMethod = props.searchMethod, searchFocusOffset = props.searchFocusOffset;
7800
+ // Skip search if no conditions are specified
7801
+ if ((null === searchQuery || void 0 === searchQuery || "" === String(searchQuery)) && !searchMethod) return this.setState({
7802
+ searchMatches: []
7803
+ }), void (searchFinishCallback && searchFinishCallback([]));
7804
+ var _find = (0, _treeDataUtils.find)({
7805
+ getNodeKey: this.props.getNodeKey,
7806
+ treeData: treeData,
7807
+ searchQuery: searchQuery,
7808
+ searchMethod: searchMethod || _defaultHandlers.defaultSearchMethod,
7809
+ searchFocusOffset: searchFocusOffset,
7810
+ expandAllMatchPaths: expand && !singleSearch,
7811
+ expandFocusMatchPaths: !!expand
7812
+ }), expandedTreeData = _find.treeData, searchMatches = _find.matches;
7813
+ // Update the tree with data leaving all paths leading to matching nodes open
7814
+ expand && (this.ignoreOneTreeUpdate = !0, // Prevents infinite loop
7815
+ onChange(expandedTreeData)), searchFinishCallback && searchFinishCallback(searchMatches);
7816
+ var searchFocusTreeIndex = null;
7817
+ seekIndex && null !== searchFocusOffset && searchFocusOffset < searchMatches.length && (searchFocusTreeIndex = searchMatches[searchFocusOffset].treeIndex),
7818
+ this.setState({
7819
+ searchMatches: searchMatches,
7820
+ searchFocusTreeIndex: searchFocusTreeIndex
7821
+ });
7822
+ }
7823
+ }, {
7824
+ key: "startDrag",
7825
+ value: function(_ref4) {
7826
+ var _this2 = this, path = _ref4.path;
7827
+ this.setState(function() {
7828
+ var _removeNode = (0, _treeDataUtils.removeNode)({
7829
+ treeData: _this2.props.treeData,
7830
+ path: path,
7831
+ getNodeKey: _this2.props.getNodeKey
7832
+ }), draggingTreeData = _removeNode.treeData, draggedNode = _removeNode.node, draggedMinimumTreeIndex = _removeNode.treeIndex;
7833
+ return {
7834
+ draggingTreeData: draggingTreeData,
7835
+ draggedNode: draggedNode,
7836
+ draggedDepth: path.length - 1,
7837
+ draggedMinimumTreeIndex: draggedMinimumTreeIndex,
7838
+ dragging: !0
7839
+ };
7840
+ });
7841
+ }
7842
+ }, {
7843
+ key: "dragHover",
7844
+ value: function(_ref5) {
7845
+ var draggedNode = _ref5.node, draggedDepth = _ref5.depth, draggedMinimumTreeIndex = _ref5.minimumTreeIndex;
7846
+ // Ignore this hover if it is at the same position as the last hover
7847
+ if (this.state.draggedDepth !== draggedDepth || this.state.draggedMinimumTreeIndex !== draggedMinimumTreeIndex) {
7848
+ // Fall back to the tree data if something is being dragged in from
7849
+ // an external element
7850
+ var draggingTreeData = this.state.draggingTreeData || this.props.treeData, addedResult = (0,
7851
+ _memoizedTreeDataUtils.memoizedInsertNode)({
7852
+ treeData: draggingTreeData,
7853
+ newNode: draggedNode,
7854
+ depth: draggedDepth,
7855
+ minimumTreeIndex: draggedMinimumTreeIndex,
7856
+ expandParent: !0,
7857
+ getNodeKey: this.props.getNodeKey
7858
+ }), rows = this.getRows(addedResult.treeData), expandedParentPath = rows[addedResult.treeIndex].path;
7859
+ this.setState({
7860
+ draggedNode: draggedNode,
7861
+ draggedDepth: draggedDepth,
7862
+ draggedMinimumTreeIndex: draggedMinimumTreeIndex,
7863
+ draggingTreeData: (0, _treeDataUtils.changeNodeAtPath)({
7864
+ treeData: draggingTreeData,
7865
+ path: expandedParentPath.slice(0, -1),
7866
+ newNode: function(_ref6) {
7867
+ var node = _ref6.node;
7868
+ return _extends({}, node, {
7869
+ expanded: !0
7870
+ });
7871
+ },
7872
+ getNodeKey: this.props.getNodeKey
7873
+ }),
7874
+ // reset the scroll focus so it doesn't jump back
7875
+ // to a search result while dragging
7876
+ searchFocusTreeIndex: null,
7877
+ dragging: !0
7878
+ });
7879
+ }
7880
+ }
7881
+ }, {
7882
+ key: "endDrag",
7883
+ value: function(dropResult) {
7884
+ var _this3 = this;
7885
+ // Drop was cancelled
7886
+ if (dropResult) {
7887
+ if (dropResult.treeId !== this.treeId) {
7888
+ // The node was dropped in an external drop target or tree
7889
+ var node = dropResult.node, path = dropResult.path, treeIndex = dropResult.treeIndex, shouldCopy = this.props.shouldCopyOnOutsideDrop;
7890
+ "function" == typeof shouldCopy && (shouldCopy = shouldCopy({
7891
+ node: node,
7892
+ prevTreeIndex: treeIndex,
7893
+ prevPath: path
7894
+ }));
7895
+ var treeData = this.state.draggingTreeData || this.props.treeData;
7896
+ // If copying is enabled, a drop outside leaves behind a copy in the
7897
+ // source tree
7898
+ shouldCopy && (treeData = (0, _treeDataUtils.changeNodeAtPath)({
7899
+ treeData: this.props.treeData,
7900
+ // use treeData unaltered by the drag operation
7901
+ path: path,
7902
+ newNode: function(_ref7) {
7903
+ var copyNode = _ref7.node;
7904
+ return _extends({}, copyNode);
7905
+ },
7906
+ // create a shallow copy of the node
7907
+ getNodeKey: this.props.getNodeKey
7908
+ })), this.props.onChange(treeData), this.props.onMoveNode({
7909
+ treeData: treeData,
7910
+ node: node,
7911
+ treeIndex: null,
7912
+ path: null,
7913
+ nextPath: null,
7914
+ nextTreeIndex: null,
7915
+ prevPath: path,
7916
+ prevTreeIndex: treeIndex
7917
+ });
7918
+ }
7919
+ } else !function() {
7920
+ _this3.setState({
7921
+ draggingTreeData: null,
7922
+ draggedNode: null,
7923
+ draggedMinimumTreeIndex: null,
7924
+ draggedDepth: null,
7925
+ dragging: !1
7926
+ });
7927
+ }();
7928
+ }
7929
+ }, {
7930
+ key: "drop",
7931
+ value: function(dropResult) {
7932
+ this.moveNode(dropResult);
7933
+ }
7934
+ }, {
7935
+ key: "loadLazyChildren",
7936
+ value: function() {
7937
+ var _this4 = this, props = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.props;
7938
+ (0, _treeDataUtils.walk)({
7939
+ treeData: props.treeData,
7940
+ getNodeKey: this.props.getNodeKey,
7941
+ callback: function(_ref8) {
7942
+ var node = _ref8.node, path = _ref8.path, lowerSiblingCounts = _ref8.lowerSiblingCounts, treeIndex = _ref8.treeIndex;
7943
+ // If the node has children defined by a function, and is either expanded
7944
+ // or set to load even before expansion, run the function.
7945
+ node.children && "function" == typeof node.children && (node.expanded || props.loadCollapsedLazyChildren) && // Call the children fetching function
7946
+ node.children({
7947
+ node: node,
7948
+ path: path,
7949
+ lowerSiblingCounts: lowerSiblingCounts,
7950
+ treeIndex: treeIndex,
7951
+ // Provide a helper to append the new data when it is received
7952
+ done: function(childrenArray) {
7953
+ return _this4.props.onChange((0, _treeDataUtils.changeNodeAtPath)({
7954
+ treeData: _this4.props.treeData,
7955
+ path: path,
7956
+ newNode: function(_ref9) {
7957
+ var oldNode = _ref9.node;
7958
+ // Only replace the old node if it's the one we set off to find children
7959
+ // for in the first place
7960
+ return oldNode === node ? _extends({}, oldNode, {
7961
+ children: childrenArray
7962
+ }) : oldNode;
7963
+ },
7964
+ getNodeKey: _this4.props.getNodeKey
7965
+ }));
7966
+ }
7967
+ });
7968
+ }
7969
+ });
7970
+ }
7971
+ }, {
7972
+ key: "renderRow",
7973
+ value: function(_ref10, _ref11) {
7974
+ var node = _ref10.node, parentNode = _ref10.parentNode, path = _ref10.path, lowerSiblingCounts = _ref10.lowerSiblingCounts, treeIndex = _ref10.treeIndex, listIndex = _ref11.listIndex, style = _ref11.style, getPrevRow = _ref11.getPrevRow, matchKeys = _ref11.matchKeys, swapFrom = _ref11.swapFrom, swapDepth = _ref11.swapDepth, swapLength = _ref11.swapLength, _mergeTheme2 = mergeTheme(this.props), canDrag = _mergeTheme2.canDrag, generateNodeProps = _mergeTheme2.generateNodeProps, scaffoldBlockPxWidth = _mergeTheme2.scaffoldBlockPxWidth, searchFocusOffset = _mergeTheme2.searchFocusOffset, TreeNodeRenderer = this.treeNodeRenderer, NodeContentRenderer = this.nodeContentRenderer, nodeKey = path[path.length - 1], isSearchMatch = nodeKey in matchKeys, isSearchFocus = isSearchMatch && matchKeys[nodeKey] === searchFocusOffset, callbackParams = {
7975
+ node: node,
7976
+ parentNode: parentNode,
7977
+ path: path,
7978
+ lowerSiblingCounts: lowerSiblingCounts,
7979
+ treeIndex: treeIndex,
7980
+ isSearchMatch: isSearchMatch,
7981
+ isSearchFocus: isSearchFocus
7982
+ }, nodeProps = generateNodeProps ? generateNodeProps(callbackParams) : {}, rowCanDrag = "function" != typeof canDrag ? canDrag : canDrag(callbackParams), sharedProps = {
7983
+ treeIndex: treeIndex,
7984
+ scaffoldBlockPxWidth: scaffoldBlockPxWidth,
7985
+ node: node,
7986
+ path: path,
7987
+ treeId: this.treeId
7988
+ };
7989
+ return _react2.default.createElement(TreeNodeRenderer, _extends({
7990
+ style: style,
7991
+ key: nodeKey,
7992
+ listIndex: listIndex,
7993
+ getPrevRow: getPrevRow,
7994
+ lowerSiblingCounts: lowerSiblingCounts,
7995
+ swapFrom: swapFrom,
7996
+ swapLength: swapLength,
7997
+ swapDepth: swapDepth
7998
+ }, sharedProps), _react2.default.createElement(NodeContentRenderer, _extends({
7999
+ parentNode: parentNode,
8000
+ isSearchMatch: isSearchMatch,
8001
+ isSearchFocus: isSearchFocus,
8002
+ canDrag: rowCanDrag,
8003
+ toggleChildrenVisibility: this.toggleChildrenVisibility
8004
+ }, sharedProps, nodeProps)));
8005
+ }
8006
+ }, {
8007
+ key: "render",
8008
+ value: function() {
8009
+ var _this5 = this, _mergeTheme3 = mergeTheme(this.props), style = _mergeTheme3.style, className = _mergeTheme3.className, innerStyle = _mergeTheme3.innerStyle, rowHeight = _mergeTheme3.rowHeight, isVirtualized = _mergeTheme3.isVirtualized, placeholderRenderer = _mergeTheme3.placeholderRenderer, reactVirtualizedListProps = _mergeTheme3.reactVirtualizedListProps, getNodeKey = _mergeTheme3.getNodeKey, _state = this.state, searchMatches = _state.searchMatches, searchFocusTreeIndex = _state.searchFocusTreeIndex, draggedNode = _state.draggedNode, draggedDepth = _state.draggedDepth, draggedMinimumTreeIndex = _state.draggedMinimumTreeIndex, treeData = this.state.draggingTreeData || this.props.treeData, rows = void 0, swapFrom = null, swapLength = null;
8010
+ if (draggedNode && null !== draggedMinimumTreeIndex) {
8011
+ var addedResult = (0, _memoizedTreeDataUtils.memoizedInsertNode)({
8012
+ treeData: treeData,
8013
+ newNode: draggedNode,
8014
+ depth: draggedDepth,
8015
+ minimumTreeIndex: draggedMinimumTreeIndex,
8016
+ expandParent: !0,
8017
+ getNodeKey: getNodeKey
8018
+ }), swapTo = draggedMinimumTreeIndex;
8019
+ swapFrom = addedResult.treeIndex, swapLength = 1 + (0, _memoizedTreeDataUtils.memoizedGetDescendantCount)({
8020
+ node: draggedNode
8021
+ }), rows = (0, _genericUtils.slideRows)(this.getRows(addedResult.treeData), swapFrom, swapTo, swapLength);
8022
+ } else rows = this.getRows(treeData);
8023
+ // Get indices for rows that match the search conditions
8024
+ var matchKeys = {};
8025
+ searchMatches.forEach(function(_ref12, i) {
8026
+ var path = _ref12.path;
8027
+ matchKeys[path[path.length - 1]] = i;
8028
+ });
8029
+ // Seek to the focused search result if there is one specified
8030
+ var scrollToInfo = null !== searchFocusTreeIndex ? {
8031
+ scrollToIndex: searchFocusTreeIndex
8032
+ } : {}, containerStyle = style, list = void 0;
8033
+ if (rows.length < 1) {
8034
+ var Placeholder = this.treePlaceholderRenderer, PlaceholderContent = placeholderRenderer;
8035
+ list = _react2.default.createElement(Placeholder, {
8036
+ treeId: this.treeId,
8037
+ drop: this.drop
8038
+ }, _react2.default.createElement(PlaceholderContent, null));
8039
+ } else if (isVirtualized) {
8040
+ containerStyle = _extends({
8041
+ height: "100%"
8042
+ }, containerStyle);
8043
+ var ScrollZoneVirtualList = this.scrollZoneVirtualList;
8044
+ // Render list with react-virtualized
8045
+ list = _react2.default.createElement(_reactVirtualized.AutoSizer, null, function(_ref13) {
8046
+ var height = _ref13.height, width = _ref13.width;
8047
+ return _react2.default.createElement(ScrollZoneVirtualList, _extends({}, scrollToInfo, {
8048
+ verticalStrength: _this5.vStrength,
8049
+ horizontalStrength: _this5.hStrength,
8050
+ speed: 30,
8051
+ scrollToAlignment: "start",
8052
+ className: _reactSortableTree2.default.virtualScrollOverride,
8053
+ width: width,
8054
+ onScroll: function(_ref14) {
8055
+ var scrollTop = _ref14.scrollTop;
8056
+ _this5.scrollTop = scrollTop;
8057
+ },
8058
+ height: height,
8059
+ style: innerStyle,
8060
+ rowCount: rows.length,
8061
+ estimatedRowSize: "function" != typeof rowHeight ? rowHeight : void 0,
8062
+ rowHeight: "function" != typeof rowHeight ? rowHeight : function(_ref15) {
8063
+ var index = _ref15.index;
8064
+ return rowHeight({
8065
+ index: index,
8066
+ treeIndex: index,
8067
+ node: rows[index].node,
8068
+ path: rows[index].path
8069
+ });
8070
+ },
8071
+ rowRenderer: function(_ref16) {
8072
+ var index = _ref16.index, rowStyle = _ref16.style;
8073
+ return _this5.renderRow(rows[index], {
8074
+ listIndex: index,
8075
+ style: rowStyle,
8076
+ getPrevRow: function() {
8077
+ return rows[index - 1] || null;
8078
+ },
8079
+ matchKeys: matchKeys,
8080
+ swapFrom: swapFrom,
8081
+ swapDepth: draggedDepth,
8082
+ swapLength: swapLength
8083
+ });
8084
+ }
8085
+ }, reactVirtualizedListProps));
8086
+ });
8087
+ } else // Render list without react-virtualized
8088
+ list = rows.map(function(row, index) {
8089
+ return _this5.renderRow(row, {
8090
+ listIndex: index,
8091
+ style: {
8092
+ height: "function" != typeof rowHeight ? rowHeight : rowHeight({
8093
+ index: index,
8094
+ treeIndex: index,
8095
+ node: row.node,
8096
+ path: row.path
8097
+ })
8098
+ },
8099
+ getPrevRow: function() {
8100
+ return rows[index - 1] || null;
8101
+ },
8102
+ matchKeys: matchKeys,
8103
+ swapFrom: swapFrom,
8104
+ swapDepth: draggedDepth,
8105
+ swapLength: swapLength
8106
+ });
8107
+ });
8108
+ return _react2.default.createElement("div", {
8109
+ className: _reactSortableTree2.default.tree + (className ? " " + className : ""),
8110
+ style: containerStyle
8111
+ }, list);
8112
+ }
8113
+ } ]), ReactSortableTree;
8114
+ }(_react.Component);
8115
+ ReactSortableTree.propTypes = {
8116
+ // Tree data in the following format:
8117
+ // [{title: 'main', subtitle: 'sub'}, { title: 'value2', expanded: true, children: [{ title: 'value3') }] }]
8118
+ // `title` is the primary label for the node
8119
+ // `subtitle` is a secondary label for the node
8120
+ // `expanded` shows children of the node if true, or hides them if false. Defaults to false.
8121
+ // `children` is an array of child nodes belonging to the node.
8122
+ treeData: _propTypes2.default.arrayOf(_propTypes2.default.object).isRequired,
8123
+ // Style applied to the container wrapping the tree (style defaults to {height: '100%'})
8124
+ style: _propTypes2.default.shape({}),
8125
+ // Class name for the container wrapping the tree
8126
+ className: _propTypes2.default.string,
8127
+ // Style applied to the inner, scrollable container (for padding, etc.)
8128
+ innerStyle: _propTypes2.default.shape({}),
8129
+ // Used by react-virtualized
8130
+ // Either a fixed row height (number) or a function that returns the
8131
+ // height of a row given its index: `({ index: number }): number`
8132
+ rowHeight: _propTypes2.default.oneOfType([ _propTypes2.default.number, _propTypes2.default.func ]),
8133
+ // Size in px of the region near the edges that initiates scrolling on dragover
8134
+ slideRegionSize: _propTypes2.default.number,
8135
+ // Custom properties to hand to the react-virtualized list
8136
+ // https://github.com/bvaughn/react-virtualized/blob/master/docs/List.md#prop-types
8137
+ reactVirtualizedListProps: _propTypes2.default.shape({}),
8138
+ // The width of the blocks containing the lines representing the structure of the tree.
8139
+ scaffoldBlockPxWidth: _propTypes2.default.number,
8140
+ // Maximum depth nodes can be inserted at. Defaults to infinite.
8141
+ maxDepth: _propTypes2.default.number,
8142
+ // The method used to search nodes.
8143
+ // Defaults to a function that uses the `searchQuery` string to search for nodes with
8144
+ // matching `title` or `subtitle` values.
8145
+ // NOTE: Changing `searchMethod` will not update the search, but changing the `searchQuery` will.
8146
+ searchMethod: _propTypes2.default.func,
8147
+ // Used by the `searchMethod` to highlight and scroll to matched nodes.
8148
+ // Should be a string for the default `searchMethod`, but can be anything when using a custom search.
8149
+ searchQuery: _propTypes2.default.any,
8150
+ // eslint-disable-line react/forbid-prop-types
8151
+ // Outline the <`searchFocusOffset`>th node and scroll to it.
8152
+ searchFocusOffset: _propTypes2.default.number,
8153
+ // Get the nodes that match the search criteria. Used for counting total matches, etc.
8154
+ searchFinishCallback: _propTypes2.default.func,
8155
+ // Generate an object with additional props to be passed to the node renderer.
8156
+ // Use this for adding buttons via the `buttons` key,
8157
+ // or additional `style` / `className` settings.
8158
+ generateNodeProps: _propTypes2.default.func,
8159
+ // Set to false to disable virtualization.
8160
+ // NOTE: Auto-scrolling while dragging, and scrolling to the `searchFocusOffset` will be disabled.
8161
+ isVirtualized: _propTypes2.default.bool,
8162
+ treeNodeRenderer: _propTypes2.default.func,
8163
+ // Override the default component for rendering nodes (but keep the scaffolding generator)
8164
+ // This is an advanced option for complete customization of the appearance.
8165
+ // It is best to copy the component in `node-renderer-default.js` to use as a base, and customize as needed.
8166
+ nodeContentRenderer: _propTypes2.default.func,
8167
+ // Override the default component for rendering an empty tree
8168
+ // This is an advanced option for complete customization of the appearance.
8169
+ // It is best to copy the component in `placeholder-renderer-default.js` to use as a base,
8170
+ // and customize as needed.
8171
+ placeholderRenderer: _propTypes2.default.func,
8172
+ theme: _propTypes2.default.shape({
8173
+ style: _propTypes2.default.shape({}),
8174
+ innerStyle: _propTypes2.default.shape({}),
8175
+ reactVirtualizedListProps: _propTypes2.default.shape({}),
8176
+ scaffoldBlockPxWidth: _propTypes2.default.number,
8177
+ slideRegionSize: _propTypes2.default.number,
8178
+ rowHeight: _propTypes2.default.oneOfType([ _propTypes2.default.number, _propTypes2.default.func ]),
8179
+ treeNodeRenderer: _propTypes2.default.func,
8180
+ nodeContentRenderer: _propTypes2.default.func,
8181
+ placeholderRenderer: _propTypes2.default.func
8182
+ }),
8183
+ // Determine the unique key used to identify each node and
8184
+ // generate the `path` array passed in callbacks.
8185
+ // By default, returns the index in the tree (omitting hidden nodes).
8186
+ getNodeKey: _propTypes2.default.func,
8187
+ // Called whenever tree data changed.
8188
+ // Just like with React input elements, you have to update your
8189
+ // own component's data to see the changes reflected.
8190
+ onChange: _propTypes2.default.func.isRequired,
8191
+ // Called after node move operation.
8192
+ onMoveNode: _propTypes2.default.func,
8193
+ // Determine whether a node can be dragged. Set to false to disable dragging on all nodes.
8194
+ canDrag: _propTypes2.default.oneOfType([ _propTypes2.default.func, _propTypes2.default.bool ]),
8195
+ // Determine whether a node can be dropped based on its path and parents'.
8196
+ canDrop: _propTypes2.default.func,
8197
+ // When true, or a callback returning true, dropping nodes to react-dnd
8198
+ // drop targets outside of this tree will not remove them from this tree
8199
+ shouldCopyOnOutsideDrop: _propTypes2.default.oneOfType([ _propTypes2.default.func, _propTypes2.default.bool ]),
8200
+ // Called after children nodes collapsed or expanded.
8201
+ onVisibilityToggle: _propTypes2.default.func,
8202
+ dndType: _propTypes2.default.string,
8203
+ // Called to track between dropped and dragging
8204
+ onDragStateChanged: _propTypes2.default.func
8205
+ }, ReactSortableTree.defaultProps = {
8206
+ canDrag: !0,
8207
+ canDrop: null,
8208
+ className: "",
8209
+ dndType: null,
8210
+ generateNodeProps: null,
8211
+ getNodeKey: _defaultHandlers.defaultGetNodeKey,
8212
+ innerStyle: {},
8213
+ isVirtualized: !0,
8214
+ maxDepth: null,
8215
+ treeNodeRenderer: null,
8216
+ nodeContentRenderer: null,
8217
+ onMoveNode: function() {},
8218
+ onVisibilityToggle: function() {},
8219
+ placeholderRenderer: null,
8220
+ reactVirtualizedListProps: {},
8221
+ rowHeight: null,
8222
+ scaffoldBlockPxWidth: null,
8223
+ searchFinishCallback: null,
8224
+ searchFocusOffset: null,
8225
+ searchMethod: null,
8226
+ searchQuery: null,
8227
+ shouldCopyOnOutsideDrop: !1,
8228
+ slideRegionSize: null,
8229
+ style: {},
8230
+ theme: {},
8231
+ onDragStateChanged: function() {}
8232
+ }, ReactSortableTree.contextTypes = {
8233
+ dragDropManager: _propTypes2.default.shape({})
8234
+ }, // Export the tree component without the react-dnd DragDropContext,
8235
+ // for when component is used with other components using react-dnd.
8236
+ // see: https://github.com/gaearon/react-dnd/issues/186
8237
+ exports.SortableTreeWithoutDndContext = ReactSortableTree, exports.default = _dndManager2.default.wrapRoot(ReactSortableTree);
8238
+ }, /* 9 */
8239
+ /***/
8240
+ function(module, exports) {
8241
+ module.exports = __webpack_require__(520);
8242
+ }, /* 10 */
8243
+ /***/
8244
+ function(module, exports) {
8245
+ module.exports = __webpack_require__(611);
8246
+ }, /* 11 */
8247
+ /***/
8248
+ function(module, exports) {
8249
+ module.exports = __webpack_require__(612);
8250
+ }, /* 12 */
8251
+ /***/
8252
+ function(module, exports, __webpack_require__) {
8253
+ // style-loader: Adds some css to the DOM by adding a <style> tag
8254
+ // load the styles
8255
+ var content = __webpack_require__(13);
8256
+ "string" == typeof content && (content = [ [ module.i, content, "" ] ]);
8257
+ // Prepare cssTransformation
8258
+ var options = {
8259
+ insertAt: "top",
8260
+ hmr: !0
8261
+ };
8262
+ options.transform = void 0;
8263
+ // add the styles to the DOM
8264
+ __webpack_require__(4)(content, options);
8265
+ content.locals && (module.exports = content.locals);
8266
+ }, /* 13 */
8267
+ /***/
8268
+ function(module, exports, __webpack_require__) {
8269
+ exports = module.exports = __webpack_require__(3)(!1), // imports
8270
+ // module
8271
+ exports.push([ module.i, "/* Collection default theme */\n\n._2Ys25aFCIH7ZWp76lcHbjs {\n}\n\n._1wpSOFYFr7x9PMM0KcYTxm {\n}\n\n/* Grid default theme */\n\n._2SUC15-WVgF4XhvHuU81GS {\n}\n\n._3q1PBGJ8fGciELoHlm7I3C {\n}\n\n/* Table default theme */\n\n._1yPBpbwEbdtD7UxLvhZhM {\n}\n\n._1itUjAnMCYR-25x1rmTdtF {\n}\n\n._33g8s-zht4xwLlXSWWWwa3 {\n font-weight: 700;\n text-transform: uppercase;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n._3ZiV_g6aRjm62hwIWbJU38 {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n -ms-flex-direction: row;\n flex-direction: row;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n\n._3eKreK7WxwxtZyKjYLiygd {\n display: inline-block;\n max-width: 100%;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n._19Z4wAfIa_DTwtOUYjz8t,\n._2TseG-JCD0K5o_VT5VIN_w {\n margin-right: 10px;\n min-width: 0px;\n}\n._2TseG-JCD0K5o_VT5VIN_w {\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._19Z4wAfIa_DTwtOUYjz8t:first-of-type,\n._2TseG-JCD0K5o_VT5VIN_w:first-of-type {\n margin-left: 10px;\n}\n._1RR8EsDxozD7xvl8boaBiB {\n cursor: pointer;\n}\n\n._1u1DZQe3YaUugu3cLrtqng {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n._15mdGqvC02VcdkTaoIuS06 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 24px;\n flex: 0 0 24px;\n height: 1em;\n width: 1em;\n fill: currentColor;\n}\n\n/* List default theme */\n\n._3HeSXQaspPzpYJlLHQlyit {\n}", "" ]),
8272
+ // exports
8273
+ exports.locals = {
8274
+ ReactVirtualized__Collection: "_2Ys25aFCIH7ZWp76lcHbjs",
8275
+ ReactVirtualized__Collection__innerScrollContainer: "_1wpSOFYFr7x9PMM0KcYTxm",
8276
+ ReactVirtualized__Grid: "_2SUC15-WVgF4XhvHuU81GS",
8277
+ ReactVirtualized__Grid__innerScrollContainer: "_3q1PBGJ8fGciELoHlm7I3C",
8278
+ ReactVirtualized__Table: "_1yPBpbwEbdtD7UxLvhZhM",
8279
+ ReactVirtualized__Table__Grid: "_1itUjAnMCYR-25x1rmTdtF",
8280
+ ReactVirtualized__Table__headerRow: "_33g8s-zht4xwLlXSWWWwa3",
8281
+ ReactVirtualized__Table__row: "_3ZiV_g6aRjm62hwIWbJU38",
8282
+ ReactVirtualized__Table__headerTruncatedText: "_3eKreK7WxwxtZyKjYLiygd",
8283
+ ReactVirtualized__Table__headerColumn: "_19Z4wAfIa_DTwtOUYjz8t",
8284
+ ReactVirtualized__Table__rowColumn: "_2TseG-JCD0K5o_VT5VIN_w",
8285
+ ReactVirtualized__Table__sortableHeaderColumn: "_1RR8EsDxozD7xvl8boaBiB",
8286
+ ReactVirtualized__Table__sortableHeaderIconContainer: "_1u1DZQe3YaUugu3cLrtqng",
8287
+ ReactVirtualized__Table__sortableHeaderIcon: "_15mdGqvC02VcdkTaoIuS06",
8288
+ ReactVirtualized__List: "_3HeSXQaspPzpYJlLHQlyit"
8289
+ };
8290
+ }, /* 14 */
8291
+ /***/
8292
+ function(module, exports) {
8293
+ /**
8294
+ * When source maps are enabled, `style-loader` uses a link element with a data-uri to
8295
+ * embed the css on the page. This breaks all relative urls because now they are relative to a
8296
+ * bundle instead of the current page.
8297
+ *
8298
+ * One solution is to only use full urls, but that may be impossible.
8299
+ *
8300
+ * Instead, this function "fixes" the relative urls to be absolute according to the current page location.
8301
+ *
8302
+ * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.
8303
+ *
8304
+ */
8305
+ module.exports = function(css) {
8306
+ // get current location
8307
+ var location = "undefined" != typeof window && window.location;
8308
+ if (!location) throw new Error("fixUrls requires window.location");
8309
+ // blank or null?
8310
+ if (!css || "string" != typeof css) return css;
8311
+ var baseUrl = location.protocol + "//" + location.host, currentDir = baseUrl + location.pathname.replace(/\/[^\/]*$/, "/");
8312
+ // send back the fixed css
8313
+ return css.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi, function(fullMatch, origUrl) {
8314
+ // strip quotes (if they exist)
8315
+ var unquotedOrigUrl = origUrl.trim().replace(/^"(.*)"$/, function(o, $1) {
8316
+ return $1;
8317
+ }).replace(/^'(.*)'$/, function(o, $1) {
8318
+ return $1;
8319
+ });
8320
+ // already a full url? no change
8321
+ if (/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/)/i.test(unquotedOrigUrl)) return fullMatch;
8322
+ // convert the url to a full url
8323
+ var newUrl;
8324
+ // send back the fixed url(...)
8325
+ //TODO: should we add protocol?
8326
+ return newUrl = 0 === unquotedOrigUrl.indexOf("//") ? unquotedOrigUrl : 0 === unquotedOrigUrl.indexOf("/") ? baseUrl + unquotedOrigUrl : currentDir + unquotedOrigUrl.replace(/^\.\//, ""),
8327
+ "url(" + JSON.stringify(newUrl) + ")";
8328
+ });
8329
+ };
8330
+ }, /* 15 */
8331
+ /***/
8332
+ function(module, exports, __webpack_require__) {
8333
+ "use strict";
8334
+ function _interopRequireDefault(obj) {
8335
+ return obj && obj.__esModule ? obj : {
8336
+ default: obj
8337
+ };
8338
+ }
8339
+ function _objectWithoutProperties(obj, keys) {
8340
+ var target = {};
8341
+ for (var i in obj) keys.indexOf(i) >= 0 || Object.prototype.hasOwnProperty.call(obj, i) && (target[i] = obj[i]);
8342
+ return target;
8343
+ }
8344
+ function _classCallCheck(instance, Constructor) {
8345
+ if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
8346
+ }
8347
+ function _possibleConstructorReturn(self, call) {
8348
+ if (!self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
8349
+ return !call || "object" != typeof call && "function" != typeof call ? self : call;
8350
+ }
8351
+ function _inherits(subClass, superClass) {
8352
+ if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
8353
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
8354
+ constructor: {
8355
+ value: subClass,
8356
+ enumerable: !1,
8357
+ writable: !0,
8358
+ configurable: !0
8359
+ }
8360
+ }), superClass && (Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass);
8361
+ }
8362
+ Object.defineProperty(exports, "__esModule", {
8363
+ value: !0
8364
+ });
8365
+ var _extends = Object.assign || function(target) {
8366
+ for (var i = 1; i < arguments.length; i++) {
8367
+ var source = arguments[i];
8368
+ for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);
8369
+ }
8370
+ return target;
8371
+ }, _createClass = function() {
8372
+ function defineProperties(target, props) {
8373
+ for (var i = 0; i < props.length; i++) {
8374
+ var descriptor = props[i];
8375
+ descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0,
8376
+ "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor);
8377
+ }
8378
+ }
8379
+ return function(Constructor, protoProps, staticProps) {
8380
+ return protoProps && defineProperties(Constructor.prototype, protoProps), staticProps && defineProperties(Constructor, staticProps),
8381
+ Constructor;
8382
+ };
8383
+ }(), _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _propTypes = __webpack_require__(2), _propTypes2 = _interopRequireDefault(_propTypes), _treeNode = __webpack_require__(16), _treeNode2 = _interopRequireDefault(_treeNode), TreeNode = function(_Component) {
8384
+ function TreeNode() {
8385
+ return _classCallCheck(this, TreeNode), _possibleConstructorReturn(this, (TreeNode.__proto__ || Object.getPrototypeOf(TreeNode)).apply(this, arguments));
8386
+ }
8387
+ return _inherits(TreeNode, _Component), _createClass(TreeNode, [ {
8388
+ key: "render",
8389
+ value: function() {
8390
+ var _props = this.props, children = _props.children, listIndex = _props.listIndex, swapFrom = _props.swapFrom, swapLength = _props.swapLength, swapDepth = _props.swapDepth, scaffoldBlockPxWidth = _props.scaffoldBlockPxWidth, lowerSiblingCounts = _props.lowerSiblingCounts, connectDropTarget = _props.connectDropTarget, isOver = _props.isOver, draggedNode = _props.draggedNode, canDrop = _props.canDrop, treeIndex = _props.treeIndex, otherProps = (_props.treeId,
8391
+ _props.getPrevRow, _props.node, _props.path, _objectWithoutProperties(_props, [ "children", "listIndex", "swapFrom", "swapLength", "swapDepth", "scaffoldBlockPxWidth", "lowerSiblingCounts", "connectDropTarget", "isOver", "draggedNode", "canDrop", "treeIndex", "treeId", "getPrevRow", "node", "path" ])), scaffoldBlockCount = lowerSiblingCounts.length, scaffold = [];
8392
+ return lowerSiblingCounts.forEach(function(lowerSiblingCount, i) {
8393
+ var lineClass = "";
8394
+ if (lowerSiblingCount > 0 ? // At this level in the tree, the nodes had sibling nodes further down
8395
+ // Top-left corner of the tree
8396
+ // +-----+
8397
+ // | |
8398
+ // | +--+
8399
+ // | | |
8400
+ // +--+--+
8401
+ lineClass = 0 === listIndex ? _treeNode2.default.lineHalfHorizontalRight + " " + _treeNode2.default.lineHalfVerticalBottom : i === scaffoldBlockCount - 1 ? _treeNode2.default.lineHalfHorizontalRight + " " + _treeNode2.default.lineFullVertical : _treeNode2.default.lineFullVertical : 0 === listIndex ? // Top-left corner of the tree, but has no siblings
8402
+ // +-----+
8403
+ // | |
8404
+ // | +--+
8405
+ // | |
8406
+ // +-----+
8407
+ lineClass = _treeNode2.default.lineHalfHorizontalRight : i === scaffoldBlockCount - 1 && (// The last or only node in this level of the tree
8408
+ // +--+--+
8409
+ // | | |
8410
+ // | +--+
8411
+ // | |
8412
+ // +-----+
8413
+ lineClass = _treeNode2.default.lineHalfVerticalTop + " " + _treeNode2.default.lineHalfHorizontalRight),
8414
+ scaffold.push(_react2.default.createElement("div", {
8415
+ key: "pre_" + (1 + i),
8416
+ style: {
8417
+ width: scaffoldBlockPxWidth
8418
+ },
8419
+ className: _treeNode2.default.lineBlock + " " + lineClass
8420
+ })), treeIndex !== listIndex && i === swapDepth) {
8421
+ // This row has been shifted, and is at the depth of
8422
+ // the line pointing to the new destination
8423
+ var highlightLineClass = "";
8424
+ // This block is on the bottom (target) line
8425
+ // This block points at the target block (where the row will go when released)
8426
+ highlightLineClass = listIndex === swapFrom + swapLength - 1 ? _treeNode2.default.highlightBottomLeftCorner : treeIndex === swapFrom ? _treeNode2.default.highlightTopLeftCorner : _treeNode2.default.highlightLineVertical,
8427
+ scaffold.push(_react2.default.createElement("div", {
8428
+ // eslint-disable-next-line react/no-array-index-key
8429
+ key: i,
8430
+ style: {
8431
+ width: scaffoldBlockPxWidth,
8432
+ left: scaffoldBlockPxWidth * i
8433
+ },
8434
+ className: _treeNode2.default.absoluteLineBlock + " " + highlightLineClass
8435
+ }));
8436
+ }
8437
+ }), connectDropTarget(_react2.default.createElement("div", _extends({}, otherProps, {
8438
+ className: _treeNode2.default.node
8439
+ }), scaffold, _react2.default.createElement("div", {
8440
+ className: _treeNode2.default.nodeContent,
8441
+ style: {
8442
+ left: scaffoldBlockPxWidth * scaffoldBlockCount
8443
+ }
8444
+ }, _react.Children.map(children, function(child) {
8445
+ return (0, _react.cloneElement)(child, {
8446
+ isOver: isOver,
8447
+ canDrop: canDrop,
8448
+ draggedNode: draggedNode
8449
+ });
8450
+ }))));
8451
+ }
8452
+ } ]), TreeNode;
8453
+ }(_react.Component);
8454
+ TreeNode.defaultProps = {
8455
+ swapFrom: null,
8456
+ swapDepth: null,
8457
+ swapLength: null,
8458
+ canDrop: !1,
8459
+ draggedNode: null
8460
+ }, TreeNode.propTypes = {
8461
+ treeIndex: _propTypes2.default.number.isRequired,
8462
+ treeId: _propTypes2.default.string.isRequired,
8463
+ swapFrom: _propTypes2.default.number,
8464
+ swapDepth: _propTypes2.default.number,
8465
+ swapLength: _propTypes2.default.number,
8466
+ scaffoldBlockPxWidth: _propTypes2.default.number.isRequired,
8467
+ lowerSiblingCounts: _propTypes2.default.arrayOf(_propTypes2.default.number).isRequired,
8468
+ listIndex: _propTypes2.default.number.isRequired,
8469
+ children: _propTypes2.default.node.isRequired,
8470
+ // Drop target
8471
+ connectDropTarget: _propTypes2.default.func.isRequired,
8472
+ isOver: _propTypes2.default.bool.isRequired,
8473
+ canDrop: _propTypes2.default.bool,
8474
+ draggedNode: _propTypes2.default.shape({}),
8475
+ // used in dndManager
8476
+ getPrevRow: _propTypes2.default.func.isRequired,
8477
+ node: _propTypes2.default.shape({}).isRequired,
8478
+ path: _propTypes2.default.arrayOf(_propTypes2.default.oneOfType([ _propTypes2.default.string, _propTypes2.default.number ])).isRequired
8479
+ }, exports.default = TreeNode;
8480
+ }, /* 16 */
8481
+ /***/
8482
+ function(module, exports, __webpack_require__) {
8483
+ // style-loader: Adds some css to the DOM by adding a <style> tag
8484
+ // load the styles
8485
+ var content = __webpack_require__(17);
8486
+ "string" == typeof content && (content = [ [ module.i, content, "" ] ]);
8487
+ // Prepare cssTransformation
8488
+ var options = {
8489
+ insertAt: "top",
8490
+ hmr: !0
8491
+ };
8492
+ options.transform = void 0;
8493
+ // add the styles to the DOM
8494
+ __webpack_require__(4)(content, options);
8495
+ content.locals && (module.exports = content.locals);
8496
+ }, /* 17 */
8497
+ /***/
8498
+ function(module, exports, __webpack_require__) {
8499
+ exports = module.exports = __webpack_require__(3)(!1), // imports
8500
+ // module
8501
+ exports.push([ module.i, ".rst__node {\n min-width: 100%;\n white-space: nowrap;\n position: relative;\n text-align: left; }\n\n.rst__nodeContent {\n position: absolute;\n top: 0;\n bottom: 0; }\n\n/* ==========================================================================\n Scaffold\n\n Line-overlaid blocks used for showing the tree structure\n ========================================================================== */\n.rst__lineBlock, .rst__absoluteLineBlock {\n height: 100%;\n position: relative;\n display: inline-block; }\n\n.rst__absoluteLineBlock {\n position: absolute;\n top: 0; }\n\n.rst__lineHalfHorizontalRight::before, .rst__lineFullVertical::after, .rst__lineHalfVerticalTop::after, .rst__lineHalfVerticalBottom::after {\n position: absolute;\n content: '';\n background-color: black; }\n\n/**\n * +-----+\n * | |\n * | +--+\n * | |\n * +-----+\n */\n.rst__lineHalfHorizontalRight::before {\n height: 1px;\n top: 50%;\n right: 0;\n width: 50%; }\n\n/**\n * +--+--+\n * | | |\n * | | |\n * | | |\n * +--+--+\n */\n.rst__lineFullVertical::after, .rst__lineHalfVerticalTop::after, .rst__lineHalfVerticalBottom::after {\n width: 1px;\n left: 50%;\n top: 0;\n height: 100%; }\n\n/**\n * +-----+\n * | | |\n * | + |\n * | |\n * +-----+\n */\n.rst__lineHalfVerticalTop::after, .rst__lineHalfVerticalBottom::after {\n top: 0;\n height: 50%; }\n\n/**\n * +-----+\n * | |\n * | + |\n * | | |\n * +-----+\n */\n.rst__lineHalfVerticalBottom::after {\n top: auto;\n bottom: 0; }\n\n/* Highlight line for pointing to dragged row destination\n ========================================================================== */\n/**\n * +--+--+\n * | | |\n * | | |\n * | | |\n * +--+--+\n */\n.rst__highlightLineVertical {\n z-index: 3; }\n .rst__highlightLineVertical::before {\n position: absolute;\n content: '';\n background-color: #36c2f6;\n width: 8px;\n margin-left: -4px;\n left: 50%;\n top: 0;\n height: 100%; }\n\n@-webkit-keyframes rst__arrow-pulse {\n 0% {\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n opacity: 0; }\n 30% {\n -webkit-transform: translate(0, 300%);\n transform: translate(0, 300%);\n opacity: 1; }\n 70% {\n -webkit-transform: translate(0, 700%);\n transform: translate(0, 700%);\n opacity: 1; }\n 100% {\n -webkit-transform: translate(0, 1000%);\n transform: translate(0, 1000%);\n opacity: 0; } }\n\n@keyframes rst__arrow-pulse {\n 0% {\n -webkit-transform: translate(0, 0);\n transform: translate(0, 0);\n opacity: 0; }\n 30% {\n -webkit-transform: translate(0, 300%);\n transform: translate(0, 300%);\n opacity: 1; }\n 70% {\n -webkit-transform: translate(0, 700%);\n transform: translate(0, 700%);\n opacity: 1; }\n 100% {\n -webkit-transform: translate(0, 1000%);\n transform: translate(0, 1000%);\n opacity: 0; } }\n .rst__highlightLineVertical::after {\n content: '';\n position: absolute;\n height: 0;\n margin-left: -4px;\n left: 50%;\n top: 0;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 4px solid white;\n -webkit-animation: rst__arrow-pulse 1s infinite linear both;\n animation: rst__arrow-pulse 1s infinite linear both; }\n\n/**\n * +-----+\n * | |\n * | +--+\n * | | |\n * +--+--+\n */\n.rst__highlightTopLeftCorner::before {\n z-index: 3;\n content: '';\n position: absolute;\n border-top: solid 8px #36c2f6;\n border-left: solid 8px #36c2f6;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n height: calc(50% + 4px);\n top: 50%;\n margin-top: -4px;\n right: 0;\n width: calc(50% + 4px); }\n\n/**\n * +--+--+\n * | | |\n * | | |\n * | +->|\n * +-----+\n */\n.rst__highlightBottomLeftCorner {\n z-index: 3; }\n .rst__highlightBottomLeftCorner::before {\n content: '';\n position: absolute;\n border-bottom: solid 8px #36c2f6;\n border-left: solid 8px #36c2f6;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n height: calc(100% + 4px);\n top: 0;\n right: 12px;\n width: calc(50% - 8px); }\n .rst__highlightBottomLeftCorner::after {\n content: '';\n position: absolute;\n height: 0;\n right: 0;\n top: 100%;\n margin-top: -12px;\n border-top: 12px solid transparent;\n border-bottom: 12px solid transparent;\n border-left: 12px solid #36c2f6; }\n", "" ]),
8502
+ // exports
8503
+ exports.locals = {
8504
+ node: "rst__node",
8505
+ nodeContent: "rst__nodeContent",
8506
+ lineBlock: "rst__lineBlock",
8507
+ absoluteLineBlock: "rst__absoluteLineBlock",
8508
+ lineHalfHorizontalRight: "rst__lineHalfHorizontalRight",
8509
+ lineFullVertical: "rst__lineFullVertical",
8510
+ lineHalfVerticalTop: "rst__lineHalfVerticalTop",
8511
+ lineHalfVerticalBottom: "rst__lineHalfVerticalBottom",
8512
+ highlightLineVertical: "rst__highlightLineVertical",
8513
+ "arrow-pulse": "rst__arrow-pulse",
8514
+ highlightTopLeftCorner: "rst__highlightTopLeftCorner",
8515
+ highlightBottomLeftCorner: "rst__highlightBottomLeftCorner"
8516
+ };
8517
+ }, /* 18 */
8518
+ /***/
8519
+ function(module, exports, __webpack_require__) {
8520
+ "use strict";
8521
+ function _interopRequireDefault(obj) {
8522
+ return obj && obj.__esModule ? obj : {
8523
+ default: obj
8524
+ };
8525
+ }
8526
+ function _objectWithoutProperties(obj, keys) {
8527
+ var target = {};
8528
+ for (var i in obj) keys.indexOf(i) >= 0 || Object.prototype.hasOwnProperty.call(obj, i) && (target[i] = obj[i]);
8529
+ return target;
8530
+ }
8531
+ function _classCallCheck(instance, Constructor) {
8532
+ if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
8533
+ }
8534
+ function _possibleConstructorReturn(self, call) {
8535
+ if (!self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
8536
+ return !call || "object" != typeof call && "function" != typeof call ? self : call;
8537
+ }
8538
+ function _inherits(subClass, superClass) {
8539
+ if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
8540
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
8541
+ constructor: {
8542
+ value: subClass,
8543
+ enumerable: !1,
8544
+ writable: !0,
8545
+ configurable: !0
8546
+ }
8547
+ }), superClass && (Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass);
8548
+ }
8549
+ Object.defineProperty(exports, "__esModule", {
8550
+ value: !0
8551
+ });
8552
+ var _createClass = function() {
8553
+ function defineProperties(target, props) {
8554
+ for (var i = 0; i < props.length; i++) {
8555
+ var descriptor = props[i];
8556
+ descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0,
8557
+ "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor);
8558
+ }
8559
+ }
8560
+ return function(Constructor, protoProps, staticProps) {
8561
+ return protoProps && defineProperties(Constructor.prototype, protoProps), staticProps && defineProperties(Constructor, staticProps),
8562
+ Constructor;
8563
+ };
8564
+ }(), _extends = Object.assign || function(target) {
8565
+ for (var i = 1; i < arguments.length; i++) {
8566
+ var source = arguments[i];
8567
+ for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);
8568
+ }
8569
+ return target;
8570
+ }, _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _propTypes = __webpack_require__(2), _propTypes2 = _interopRequireDefault(_propTypes), _browserUtils = __webpack_require__(19), _nodeRendererDefault = __webpack_require__(20), _nodeRendererDefault2 = _interopRequireDefault(_nodeRendererDefault), _treeDataUtils = __webpack_require__(0), styles = _nodeRendererDefault2.default;
8571
+ // Add extra classes in browsers that don't support flex
8572
+ _browserUtils.getIEVersion < 10 && (styles = _extends({}, _nodeRendererDefault2.default, {
8573
+ row: styles.row + " " + styles.row_NoFlex,
8574
+ rowContents: styles.rowContents + " " + styles.rowContents_NoFlex,
8575
+ rowLabel: styles.rowLabel + " " + styles.rowLabel_NoFlex,
8576
+ rowToolbar: styles.rowToolbar + " " + styles.rowToolbar_NoFlex
8577
+ }));
8578
+ var NodeRendererDefault = function(_Component) {
8579
+ function NodeRendererDefault() {
8580
+ return _classCallCheck(this, NodeRendererDefault), _possibleConstructorReturn(this, (NodeRendererDefault.__proto__ || Object.getPrototypeOf(NodeRendererDefault)).apply(this, arguments));
8581
+ }
8582
+ return _inherits(NodeRendererDefault, _Component), _createClass(NodeRendererDefault, [ {
8583
+ key: "render",
8584
+ value: function() {
8585
+ var _props = this.props, scaffoldBlockPxWidth = _props.scaffoldBlockPxWidth, toggleChildrenVisibility = _props.toggleChildrenVisibility, connectDragPreview = _props.connectDragPreview, connectDragSource = _props.connectDragSource, isDragging = _props.isDragging, canDrop = _props.canDrop, canDrag = _props.canDrag, node = _props.node, title = _props.title, subtitle = _props.subtitle, draggedNode = _props.draggedNode, path = _props.path, treeIndex = _props.treeIndex, isSearchMatch = _props.isSearchMatch, isSearchFocus = _props.isSearchFocus, buttons = _props.buttons, className = _props.className, style = _props.style, didDrop = _props.didDrop, otherProps = (_props.treeId,
8586
+ _props.isOver, _props.parentNode, _objectWithoutProperties(_props, [ "scaffoldBlockPxWidth", "toggleChildrenVisibility", "connectDragPreview", "connectDragSource", "isDragging", "canDrop", "canDrag", "node", "title", "subtitle", "draggedNode", "path", "treeIndex", "isSearchMatch", "isSearchFocus", "buttons", "className", "style", "didDrop", "treeId", "isOver", "parentNode" ])), nodeTitle = title || node.title, nodeSubtitle = subtitle || node.subtitle, handle = void 0;
8587
+ canDrag && (// Show a loading symbol on the handle when the children are expanded
8588
+ // and yet still defined by a function (a callback to fetch the children)
8589
+ handle = "function" == typeof node.children && node.expanded ? _react2.default.createElement("div", {
8590
+ className: styles.loadingHandle
8591
+ }, _react2.default.createElement("div", {
8592
+ className: styles.loadingCircle
8593
+ }, _react2.default.createElement("div", {
8594
+ className: styles.loadingCirclePoint
8595
+ }), _react2.default.createElement("div", {
8596
+ className: styles.loadingCirclePoint
8597
+ }), _react2.default.createElement("div", {
8598
+ className: styles.loadingCirclePoint
8599
+ }), _react2.default.createElement("div", {
8600
+ className: styles.loadingCirclePoint
8601
+ }), _react2.default.createElement("div", {
8602
+ className: styles.loadingCirclePoint
8603
+ }), _react2.default.createElement("div", {
8604
+ className: styles.loadingCirclePoint
8605
+ }), _react2.default.createElement("div", {
8606
+ className: styles.loadingCirclePoint
8607
+ }), _react2.default.createElement("div", {
8608
+ className: styles.loadingCirclePoint
8609
+ }), _react2.default.createElement("div", {
8610
+ className: styles.loadingCirclePoint
8611
+ }), _react2.default.createElement("div", {
8612
+ className: styles.loadingCirclePoint
8613
+ }), _react2.default.createElement("div", {
8614
+ className: styles.loadingCirclePoint
8615
+ }), _react2.default.createElement("div", {
8616
+ className: styles.loadingCirclePoint
8617
+ }))) : connectDragSource(_react2.default.createElement("div", {
8618
+ className: styles.moveHandle
8619
+ }), {
8620
+ dropEffect: "copy"
8621
+ }));
8622
+ var isDraggedDescendant = draggedNode && (0, _treeDataUtils.isDescendant)(draggedNode, node), isLandingPadActive = !didDrop && isDragging;
8623
+ return _react2.default.createElement("div", _extends({
8624
+ style: {
8625
+ height: "100%"
8626
+ }
8627
+ }, otherProps), toggleChildrenVisibility && node.children && (node.children.length > 0 || "function" == typeof node.children) && _react2.default.createElement("div", null, _react2.default.createElement("button", {
8628
+ type: "button",
8629
+ "aria-label": node.expanded ? "Collapse" : "Expand",
8630
+ className: node.expanded ? styles.collapseButton : styles.expandButton,
8631
+ style: {
8632
+ left: -.5 * scaffoldBlockPxWidth
8633
+ },
8634
+ onClick: function() {
8635
+ return toggleChildrenVisibility({
8636
+ node: node,
8637
+ path: path,
8638
+ treeIndex: treeIndex
8639
+ });
8640
+ }
8641
+ }), node.expanded && !isDragging && _react2.default.createElement("div", {
8642
+ style: {
8643
+ width: scaffoldBlockPxWidth
8644
+ },
8645
+ className: styles.lineChildren
8646
+ })), _react2.default.createElement("div", {
8647
+ className: styles.rowWrapper
8648
+ }, connectDragPreview(_react2.default.createElement("div", {
8649
+ className: styles.row + (isLandingPadActive ? " " + styles.rowLandingPad : "") + (isLandingPadActive && !canDrop ? " " + styles.rowCancelPad : "") + (isSearchMatch ? " " + styles.rowSearchMatch : "") + (isSearchFocus ? " " + styles.rowSearchFocus : "") + (className ? " " + className : ""),
8650
+ style: _extends({
8651
+ opacity: isDraggedDescendant ? .5 : 1
8652
+ }, style)
8653
+ }, handle, _react2.default.createElement("div", {
8654
+ className: styles.rowContents + (canDrag ? "" : " " + styles.rowContentsDragDisabled)
8655
+ }, _react2.default.createElement("div", {
8656
+ className: styles.rowLabel
8657
+ }, _react2.default.createElement("span", {
8658
+ className: styles.rowTitle + (node.subtitle ? " " + styles.rowTitleWithSubtitle : "")
8659
+ }, "function" == typeof nodeTitle ? nodeTitle({
8660
+ node: node,
8661
+ path: path,
8662
+ treeIndex: treeIndex
8663
+ }) : nodeTitle), nodeSubtitle && _react2.default.createElement("span", {
8664
+ className: styles.rowSubtitle
8665
+ }, "function" == typeof nodeSubtitle ? nodeSubtitle({
8666
+ node: node,
8667
+ path: path,
8668
+ treeIndex: treeIndex
8669
+ }) : nodeSubtitle)), _react2.default.createElement("div", {
8670
+ className: styles.rowToolbar
8671
+ }, buttons.map(function(btn, index) {
8672
+ return _react2.default.createElement("div", {
8673
+ key: index,
8674
+ className: styles.toolbarButton
8675
+ }, btn);
8676
+ })))))));
8677
+ }
8678
+ } ]), NodeRendererDefault;
8679
+ }(_react.Component);
8680
+ NodeRendererDefault.defaultProps = {
8681
+ isSearchMatch: !1,
8682
+ isSearchFocus: !1,
8683
+ canDrag: !1,
8684
+ toggleChildrenVisibility: null,
8685
+ buttons: [],
8686
+ className: "",
8687
+ style: {},
8688
+ parentNode: null,
8689
+ draggedNode: null,
8690
+ canDrop: !1,
8691
+ title: null,
8692
+ subtitle: null
8693
+ }, NodeRendererDefault.propTypes = {
8694
+ node: _propTypes2.default.shape({}).isRequired,
8695
+ title: _propTypes2.default.oneOfType([ _propTypes2.default.func, _propTypes2.default.node ]),
8696
+ subtitle: _propTypes2.default.oneOfType([ _propTypes2.default.func, _propTypes2.default.node ]),
8697
+ path: _propTypes2.default.arrayOf(_propTypes2.default.oneOfType([ _propTypes2.default.string, _propTypes2.default.number ])).isRequired,
8698
+ treeIndex: _propTypes2.default.number.isRequired,
8699
+ treeId: _propTypes2.default.string.isRequired,
8700
+ isSearchMatch: _propTypes2.default.bool,
8701
+ isSearchFocus: _propTypes2.default.bool,
8702
+ canDrag: _propTypes2.default.bool,
8703
+ scaffoldBlockPxWidth: _propTypes2.default.number.isRequired,
8704
+ toggleChildrenVisibility: _propTypes2.default.func,
8705
+ buttons: _propTypes2.default.arrayOf(_propTypes2.default.node),
8706
+ className: _propTypes2.default.string,
8707
+ style: _propTypes2.default.shape({}),
8708
+ // Drag and drop API functions
8709
+ // Drag source
8710
+ connectDragPreview: _propTypes2.default.func.isRequired,
8711
+ connectDragSource: _propTypes2.default.func.isRequired,
8712
+ parentNode: _propTypes2.default.shape({}),
8713
+ // Needed for dndManager
8714
+ isDragging: _propTypes2.default.bool.isRequired,
8715
+ didDrop: _propTypes2.default.bool.isRequired,
8716
+ draggedNode: _propTypes2.default.shape({}),
8717
+ // Drop target
8718
+ isOver: _propTypes2.default.bool.isRequired,
8719
+ canDrop: _propTypes2.default.bool
8720
+ }, exports.default = NodeRendererDefault;
8721
+ }, /* 19 */
8722
+ /***/
8723
+ function(module, exports, __webpack_require__) {
8724
+ "use strict";
8725
+ /* eslint-disable import/prefer-default-export */
8726
+ /**
8727
+ * Get the version of Internet Explorer in use, or undefined
8728
+ *
8729
+ * @return {?number} ieVersion - IE version as an integer, or undefined if not IE
8730
+ */
8731
+ function getIEVersion() {
8732
+ var match = navigator.userAgent.match(/(?:MSIE |Trident\/.*; rv:)(\d+)/);
8733
+ return match ? parseInt(match[1], 10) : void 0;
8734
+ }
8735
+ Object.defineProperty(exports, "__esModule", {
8736
+ value: !0
8737
+ }), exports.getIEVersion = getIEVersion;
8738
+ }, /* 20 */
8739
+ /***/
8740
+ function(module, exports, __webpack_require__) {
8741
+ // style-loader: Adds some css to the DOM by adding a <style> tag
8742
+ // load the styles
8743
+ var content = __webpack_require__(21);
8744
+ "string" == typeof content && (content = [ [ module.i, content, "" ] ]);
8745
+ // Prepare cssTransformation
8746
+ var options = {
8747
+ insertAt: "top",
8748
+ hmr: !0
8749
+ };
8750
+ options.transform = void 0;
8751
+ // add the styles to the DOM
8752
+ __webpack_require__(4)(content, options);
8753
+ content.locals && (module.exports = content.locals);
8754
+ }, /* 21 */
8755
+ /***/
8756
+ function(module, exports, __webpack_require__) {
8757
+ exports = module.exports = __webpack_require__(3)(!1), // imports
8758
+ // module
8759
+ exports.push([ module.i, ".rst__rowWrapper {\n padding: 10px 10px 10px 0;\n height: 100%;\n -webkit-box-sizing: border-box;\n box-sizing: border-box; }\n\n.rst__row {\n height: 100%;\n white-space: nowrap;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex; }\n .rst__row > * {\n -webkit-box-sizing: border-box;\n box-sizing: border-box; }\n\n/**\n * The outline of where the element will go if dropped, displayed while dragging\n */\n.rst__rowLandingPad, .rst__rowCancelPad {\n border: none !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n outline: none !important; }\n .rst__rowLandingPad > *, .rst__rowCancelPad > * {\n opacity: 0 !important; }\n .rst__rowLandingPad::before, .rst__rowCancelPad::before {\n background-color: lightblue;\n border: 3px dashed white;\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1; }\n\n/**\n * Alternate appearance of the landing pad when the dragged location is invalid\n */\n.rst__rowCancelPad::before {\n background-color: #e6a8ad; }\n\n/**\n * Nodes matching the search conditions are highlighted\n */\n.rst__rowSearchMatch {\n outline: solid 3px #0080ff; }\n\n/**\n * The node that matches the search conditions and is currently focused\n */\n.rst__rowSearchFocus {\n outline: solid 3px #fc6421; }\n\n.rst__rowContents, .rst__rowLabel, .rst__rowToolbar, .rst__moveHandle, .rst__loadingHandle, .rst__toolbarButton, .rst__rowLabel_NoFlex, .rst__rowToolbar_NoFlex {\n display: inline-block;\n vertical-align: middle; }\n\n.rst__rowContents {\n position: relative;\n height: 100%;\n border: solid #bbb 1px;\n border-left: none;\n -webkit-box-shadow: 0 2px 2px -2px;\n box-shadow: 0 2px 2px -2px;\n padding: 0 5px 0 10px;\n border-radius: 2px;\n min-width: 230px;\n -webkit-box-flex: 1;\n -ms-flex: 1 0 auto;\n flex: 1 0 auto;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n background-color: white; }\n\n.rst__rowContentsDragDisabled {\n border-left: solid #bbb 1px; }\n\n.rst__rowLabel {\n -webkit-box-flex: 0;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n padding-right: 20px; }\n\n.rst__rowToolbar {\n -webkit-box-flex: 0;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex; }\n\n.rst__moveHandle, .rst__loadingHandle {\n height: 100%;\n width: 44px;\n background: #d9d9d9 url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MiIgaGVpZ2h0PSI0MiI+PGcgc3Ryb2tlPSIjRkZGIiBzdHJva2Utd2lkdGg9IjIuOSIgPjxwYXRoIGQ9Ik0xNCAxNS43aDE0LjQiLz48cGF0aCBkPSJNMTQgMjEuNGgxNC40Ii8+PHBhdGggZD0iTTE0IDI3LjFoMTQuNCIvPjwvZz4KPC9zdmc+\") no-repeat center;\n border: solid #aaa 1px;\n -webkit-box-shadow: 0 2px 2px -2px;\n box-shadow: 0 2px 2px -2px;\n cursor: move;\n border-radius: 1px;\n z-index: 1; }\n\n.rst__loadingHandle {\n cursor: default;\n background: #d9d9d9; }\n\n@-webkit-keyframes rst__pointFade {\n 0%,\n 19.999%,\n 100% {\n opacity: 0; }\n 20% {\n opacity: 1; } }\n\n@keyframes rst__pointFade {\n 0%,\n 19.999%,\n 100% {\n opacity: 0; }\n 20% {\n opacity: 1; } }\n\n.rst__loadingCircle {\n width: 80%;\n height: 80%;\n margin: 10%;\n position: relative; }\n\n.rst__loadingCirclePoint {\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0; }\n .rst__loadingCirclePoint:before {\n content: '';\n display: block;\n margin: 0 auto;\n width: 11%;\n height: 30%;\n background-color: #fff;\n border-radius: 30%;\n -webkit-animation: rst__pointFade 800ms infinite ease-in-out both;\n animation: rst__pointFade 800ms infinite ease-in-out both; }\n .rst__loadingCirclePoint:nth-of-type(1) {\n -webkit-transform: rotate(0deg);\n -ms-transform: rotate(0deg);\n transform: rotate(0deg); }\n .rst__loadingCirclePoint:nth-of-type(7) {\n -webkit-transform: rotate(180deg);\n -ms-transform: rotate(180deg);\n transform: rotate(180deg); }\n .rst__loadingCirclePoint:nth-of-type(1):before, .rst__loadingCirclePoint:nth-of-type(7):before {\n -webkit-animation-delay: -800ms;\n animation-delay: -800ms; }\n .rst__loadingCirclePoint:nth-of-type(2) {\n -webkit-transform: rotate(30deg);\n -ms-transform: rotate(30deg);\n transform: rotate(30deg); }\n .rst__loadingCirclePoint:nth-of-type(8) {\n -webkit-transform: rotate(210deg);\n -ms-transform: rotate(210deg);\n transform: rotate(210deg); }\n .rst__loadingCirclePoint:nth-of-type(2):before, .rst__loadingCirclePoint:nth-of-type(8):before {\n -webkit-animation-delay: -666.66667ms;\n animation-delay: -666.66667ms; }\n .rst__loadingCirclePoint:nth-of-type(3) {\n -webkit-transform: rotate(60deg);\n -ms-transform: rotate(60deg);\n transform: rotate(60deg); }\n .rst__loadingCirclePoint:nth-of-type(9) {\n -webkit-transform: rotate(240deg);\n -ms-transform: rotate(240deg);\n transform: rotate(240deg); }\n .rst__loadingCirclePoint:nth-of-type(3):before, .rst__loadingCirclePoint:nth-of-type(9):before {\n -webkit-animation-delay: -533.33333ms;\n animation-delay: -533.33333ms; }\n .rst__loadingCirclePoint:nth-of-type(4) {\n -webkit-transform: rotate(90deg);\n -ms-transform: rotate(90deg);\n transform: rotate(90deg); }\n .rst__loadingCirclePoint:nth-of-type(10) {\n -webkit-transform: rotate(270deg);\n -ms-transform: rotate(270deg);\n transform: rotate(270deg); }\n .rst__loadingCirclePoint:nth-of-type(4):before, .rst__loadingCirclePoint:nth-of-type(10):before {\n -webkit-animation-delay: -400ms;\n animation-delay: -400ms; }\n .rst__loadingCirclePoint:nth-of-type(5) {\n -webkit-transform: rotate(120deg);\n -ms-transform: rotate(120deg);\n transform: rotate(120deg); }\n .rst__loadingCirclePoint:nth-of-type(11) {\n -webkit-transform: rotate(300deg);\n -ms-transform: rotate(300deg);\n transform: rotate(300deg); }\n .rst__loadingCirclePoint:nth-of-type(5):before, .rst__loadingCirclePoint:nth-of-type(11):before {\n -webkit-animation-delay: -266.66667ms;\n animation-delay: -266.66667ms; }\n .rst__loadingCirclePoint:nth-of-type(6) {\n -webkit-transform: rotate(150deg);\n -ms-transform: rotate(150deg);\n transform: rotate(150deg); }\n .rst__loadingCirclePoint:nth-of-type(12) {\n -webkit-transform: rotate(330deg);\n -ms-transform: rotate(330deg);\n transform: rotate(330deg); }\n .rst__loadingCirclePoint:nth-of-type(6):before, .rst__loadingCirclePoint:nth-of-type(12):before {\n -webkit-animation-delay: -133.33333ms;\n animation-delay: -133.33333ms; }\n .rst__loadingCirclePoint:nth-of-type(7) {\n -webkit-transform: rotate(180deg);\n -ms-transform: rotate(180deg);\n transform: rotate(180deg); }\n .rst__loadingCirclePoint:nth-of-type(13) {\n -webkit-transform: rotate(360deg);\n -ms-transform: rotate(360deg);\n transform: rotate(360deg); }\n .rst__loadingCirclePoint:nth-of-type(7):before, .rst__loadingCirclePoint:nth-of-type(13):before {\n -webkit-animation-delay: 0ms;\n animation-delay: 0ms; }\n\n.rst__rowTitle {\n font-weight: bold; }\n\n.rst__rowTitleWithSubtitle {\n font-size: 85%;\n display: block;\n height: 0.8rem; }\n\n.rst__rowSubtitle {\n font-size: 70%;\n line-height: 1; }\n\n.rst__collapseButton,\n.rst__expandButton {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border: none;\n position: absolute;\n border-radius: 100%;\n -webkit-box-shadow: 0 0 0 1px #000;\n box-shadow: 0 0 0 1px #000;\n width: 16px;\n height: 16px;\n padding: 0;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n cursor: pointer; }\n .rst__collapseButton:focus,\n .rst__expandButton:focus {\n outline: none;\n -webkit-box-shadow: 0 0 0 1px #000, 0 0 1px 3px #83bef9;\n box-shadow: 0 0 0 1px #000, 0 0 1px 3px #83bef9; }\n .rst__collapseButton:hover:not(:active),\n .rst__expandButton:hover:not(:active) {\n background-size: 24px;\n height: 20px;\n width: 20px; }\n\n.rst__collapseButton {\n background: #fff url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiIGZpbGw9IiNGRkYiLz48ZyBzdHJva2U9IiM5ODk4OTgiIHN0cm9rZS13aWR0aD0iMS45IiA+PHBhdGggZD0iTTQuNSA5aDkiLz48L2c+Cjwvc3ZnPg==\") no-repeat center; }\n\n.rst__expandButton {\n background: #fff url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiIGZpbGw9IiNGRkYiLz48ZyBzdHJva2U9IiM5ODk4OTgiIHN0cm9rZS13aWR0aD0iMS45IiA+PHBhdGggZD0iTTQuNSA5aDkiLz48cGF0aCBkPSJNOSA0LjV2OSIvPjwvZz4KPC9zdmc+\") no-repeat center; }\n\n/**\n * Classes for IE9 and below\n */\n.rst__row_NoFlex::before, .rst__rowContents_NoFlex::before {\n content: '';\n display: inline-block;\n vertical-align: middle;\n height: 100%; }\n\n.rst__rowContents_NoFlex {\n display: inline-block; }\n .rst__rowContents_NoFlex::after {\n content: '';\n display: inline-block;\n width: 100%; }\n\n.rst__rowLabel_NoFlex {\n width: 50%; }\n\n.rst__rowToolbar_NoFlex {\n text-align: right;\n width: 50%; }\n\n/**\n * Line for under a node with children\n */\n.rst__lineChildren {\n height: 100%;\n display: inline-block;\n position: absolute; }\n .rst__lineChildren::after {\n content: '';\n position: absolute;\n background-color: black;\n width: 1px;\n left: 50%;\n bottom: 0;\n height: 10px; }\n", "" ]),
8760
+ // exports
8761
+ exports.locals = {
8762
+ rowWrapper: "rst__rowWrapper",
8763
+ row: "rst__row",
8764
+ rowLandingPad: "rst__rowLandingPad",
8765
+ rowCancelPad: "rst__rowCancelPad",
8766
+ rowSearchMatch: "rst__rowSearchMatch",
8767
+ rowSearchFocus: "rst__rowSearchFocus",
8768
+ rowContents: "rst__rowContents",
8769
+ rowLabel: "rst__rowLabel",
8770
+ rowToolbar: "rst__rowToolbar",
8771
+ moveHandle: "rst__moveHandle",
8772
+ loadingHandle: "rst__loadingHandle",
8773
+ toolbarButton: "rst__toolbarButton",
8774
+ rowLabel_NoFlex: "rst__rowLabel_NoFlex",
8775
+ rowToolbar_NoFlex: "rst__rowToolbar_NoFlex",
8776
+ rowContentsDragDisabled: "rst__rowContentsDragDisabled",
8777
+ loadingCircle: "rst__loadingCircle",
8778
+ loadingCirclePoint: "rst__loadingCirclePoint",
8779
+ pointFade: "rst__pointFade",
8780
+ rowTitle: "rst__rowTitle",
8781
+ rowTitleWithSubtitle: "rst__rowTitleWithSubtitle",
8782
+ rowSubtitle: "rst__rowSubtitle",
8783
+ collapseButton: "rst__collapseButton",
8784
+ expandButton: "rst__expandButton",
8785
+ row_NoFlex: "rst__row_NoFlex",
8786
+ rowContents_NoFlex: "rst__rowContents_NoFlex",
8787
+ lineChildren: "rst__lineChildren"
8788
+ };
8789
+ }, /* 22 */
8790
+ /***/
8791
+ function(module, exports, __webpack_require__) {
8792
+ "use strict";
8793
+ function _interopRequireDefault(obj) {
8794
+ return obj && obj.__esModule ? obj : {
8795
+ default: obj
8796
+ };
8797
+ }
8798
+ function _objectWithoutProperties(obj, keys) {
8799
+ var target = {};
8800
+ for (var i in obj) keys.indexOf(i) >= 0 || Object.prototype.hasOwnProperty.call(obj, i) && (target[i] = obj[i]);
8801
+ return target;
8802
+ }
8803
+ function _classCallCheck(instance, Constructor) {
8804
+ if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
8805
+ }
8806
+ function _possibleConstructorReturn(self, call) {
8807
+ if (!self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
8808
+ return !call || "object" != typeof call && "function" != typeof call ? self : call;
8809
+ }
8810
+ function _inherits(subClass, superClass) {
8811
+ if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
8812
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
8813
+ constructor: {
8814
+ value: subClass,
8815
+ enumerable: !1,
8816
+ writable: !0,
8817
+ configurable: !0
8818
+ }
8819
+ }), superClass && (Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass);
8820
+ }
8821
+ Object.defineProperty(exports, "__esModule", {
8822
+ value: !0
8823
+ });
8824
+ var _extends = Object.assign || function(target) {
8825
+ for (var i = 1; i < arguments.length; i++) {
8826
+ var source = arguments[i];
8827
+ for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);
8828
+ }
8829
+ return target;
8830
+ }, _createClass = function() {
8831
+ function defineProperties(target, props) {
8832
+ for (var i = 0; i < props.length; i++) {
8833
+ var descriptor = props[i];
8834
+ descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0,
8835
+ "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor);
8836
+ }
8837
+ }
8838
+ return function(Constructor, protoProps, staticProps) {
8839
+ return protoProps && defineProperties(Constructor.prototype, protoProps), staticProps && defineProperties(Constructor, staticProps),
8840
+ Constructor;
8841
+ };
8842
+ }(), _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _propTypes = __webpack_require__(2), _propTypes2 = _interopRequireDefault(_propTypes), TreePlaceholder = function(_Component) {
8843
+ function TreePlaceholder() {
8844
+ return _classCallCheck(this, TreePlaceholder), _possibleConstructorReturn(this, (TreePlaceholder.__proto__ || Object.getPrototypeOf(TreePlaceholder)).apply(this, arguments));
8845
+ }
8846
+ return _inherits(TreePlaceholder, _Component), _createClass(TreePlaceholder, [ {
8847
+ key: "render",
8848
+ value: function() {
8849
+ var _props = this.props, children = _props.children, connectDropTarget = _props.connectDropTarget, otherProps = (_props.treeId,
8850
+ _props.drop, _objectWithoutProperties(_props, [ "children", "connectDropTarget", "treeId", "drop" ]));
8851
+ return connectDropTarget(_react2.default.createElement("div", null, _react.Children.map(children, function(child) {
8852
+ return (0, _react.cloneElement)(child, _extends({}, otherProps));
8853
+ })));
8854
+ }
8855
+ } ]), TreePlaceholder;
8856
+ }(_react.Component);
8857
+ TreePlaceholder.defaultProps = {
8858
+ canDrop: !1,
8859
+ draggedNode: null
8860
+ }, TreePlaceholder.propTypes = {
8861
+ children: _propTypes2.default.node.isRequired,
8862
+ // Drop target
8863
+ connectDropTarget: _propTypes2.default.func.isRequired,
8864
+ isOver: _propTypes2.default.bool.isRequired,
8865
+ canDrop: _propTypes2.default.bool,
8866
+ draggedNode: _propTypes2.default.shape({}),
8867
+ treeId: _propTypes2.default.string.isRequired,
8868
+ drop: _propTypes2.default.func.isRequired
8869
+ }, exports.default = TreePlaceholder;
8870
+ }, /* 23 */
8871
+ /***/
8872
+ function(module, exports, __webpack_require__) {
8873
+ "use strict";
8874
+ function _interopRequireDefault(obj) {
8875
+ return obj && obj.__esModule ? obj : {
8876
+ default: obj
8877
+ };
8878
+ }
8879
+ Object.defineProperty(exports, "__esModule", {
8880
+ value: !0
8881
+ });
8882
+ var _react = __webpack_require__(1), _react2 = _interopRequireDefault(_react), _propTypes = __webpack_require__(2), _propTypes2 = _interopRequireDefault(_propTypes), _placeholderRendererDefault = __webpack_require__(24), _placeholderRendererDefault2 = _interopRequireDefault(_placeholderRendererDefault), PlaceholderRendererDefault = function(_ref) {
8883
+ var isOver = _ref.isOver, canDrop = _ref.canDrop;
8884
+ return _react2.default.createElement("div", {
8885
+ className: _placeholderRendererDefault2.default.placeholder + (canDrop ? " " + _placeholderRendererDefault2.default.placeholderLandingPad : "") + (canDrop && !isOver ? " " + _placeholderRendererDefault2.default.placeholderCancelPad : "")
8886
+ });
8887
+ };
8888
+ PlaceholderRendererDefault.defaultProps = {
8889
+ isOver: !1,
8890
+ canDrop: !1
8891
+ }, PlaceholderRendererDefault.propTypes = {
8892
+ isOver: _propTypes2.default.bool,
8893
+ canDrop: _propTypes2.default.bool
8894
+ }, exports.default = PlaceholderRendererDefault;
8895
+ }, /* 24 */
8896
+ /***/
8897
+ function(module, exports, __webpack_require__) {
8898
+ // style-loader: Adds some css to the DOM by adding a <style> tag
8899
+ // load the styles
8900
+ var content = __webpack_require__(25);
8901
+ "string" == typeof content && (content = [ [ module.i, content, "" ] ]);
8902
+ // Prepare cssTransformation
8903
+ var options = {
8904
+ insertAt: "top",
8905
+ hmr: !0
8906
+ };
8907
+ options.transform = void 0;
8908
+ // add the styles to the DOM
8909
+ __webpack_require__(4)(content, options);
8910
+ content.locals && (module.exports = content.locals);
8911
+ }, /* 25 */
8912
+ /***/
8913
+ function(module, exports, __webpack_require__) {
8914
+ exports = module.exports = __webpack_require__(3)(!1), // imports
8915
+ // module
8916
+ exports.push([ module.i, ".rst__placeholder {\n position: relative;\n height: 68px;\n max-width: 300px;\n padding: 10px; }\n .rst__placeholder,\n .rst__placeholder > * {\n -webkit-box-sizing: border-box;\n box-sizing: border-box; }\n .rst__placeholder::before {\n border: 3px dashed #d9d9d9;\n content: '';\n position: absolute;\n top: 5px;\n right: 5px;\n bottom: 5px;\n left: 5px;\n z-index: -1; }\n\n/**\n * The outline of where the element will go if dropped, displayed while dragging\n */\n.rst__placeholderLandingPad, .rst__placeholderCancelPad {\n border: none !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n outline: none !important; }\n .rst__placeholderLandingPad *, .rst__placeholderCancelPad * {\n opacity: 0 !important; }\n .rst__placeholderLandingPad::before, .rst__placeholderCancelPad::before {\n background-color: lightblue;\n border-color: white; }\n\n/**\n * Alternate appearance of the landing pad when the dragged location is invalid\n */\n.rst__placeholderCancelPad::before {\n background-color: #e6a8ad; }\n", "" ]),
8917
+ // exports
8918
+ exports.locals = {
8919
+ placeholder: "rst__placeholder",
8920
+ placeholderLandingPad: "rst__placeholderLandingPad",
8921
+ placeholderCancelPad: "rst__placeholderCancelPad"
8922
+ };
8923
+ }, /* 26 */
8924
+ /***/
8925
+ function(module, exports, __webpack_require__) {
8926
+ "use strict";
8927
+ function _toConsumableArray(arr) {
8928
+ if (Array.isArray(arr)) {
8929
+ for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
8930
+ return arr2;
8931
+ }
8932
+ return Array.from(arr);
8933
+ }
8934
+ /* eslint-disable import/prefer-default-export */
8935
+ function slideRows(rows, fromIndex, toIndex) {
8936
+ var count = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1, rowsWithoutMoved = [].concat(_toConsumableArray(rows.slice(0, fromIndex)), _toConsumableArray(rows.slice(fromIndex + count)));
8937
+ return [].concat(_toConsumableArray(rowsWithoutMoved.slice(0, toIndex)), _toConsumableArray(rows.slice(fromIndex, fromIndex + count)), _toConsumableArray(rowsWithoutMoved.slice(toIndex)));
8938
+ }
8939
+ Object.defineProperty(exports, "__esModule", {
8940
+ value: !0
8941
+ }), exports.slideRows = slideRows;
8942
+ }, /* 27 */
8943
+ /***/
8944
+ function(module, exports, __webpack_require__) {
8945
+ "use strict";
8946
+ function _classCallCheck(instance, Constructor) {
8947
+ if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
8948
+ }
8949
+ Object.defineProperty(exports, "__esModule", {
8950
+ value: !0
8951
+ });
8952
+ var _createClass = function() {
8953
+ function defineProperties(target, props) {
8954
+ for (var i = 0; i < props.length; i++) {
8955
+ var descriptor = props[i];
8956
+ descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0,
8957
+ "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor);
8958
+ }
8959
+ }
8960
+ return function(Constructor, protoProps, staticProps) {
8961
+ return protoProps && defineProperties(Constructor.prototype, protoProps), staticProps && defineProperties(Constructor, staticProps),
8962
+ Constructor;
8963
+ };
8964
+ }(), _reactDnd = __webpack_require__(28), _reactDndHtml5Backend = __webpack_require__(29), _reactDndHtml5Backend2 = function(obj) {
8965
+ return obj && obj.__esModule ? obj : {
8966
+ default: obj
8967
+ };
8968
+ }(_reactDndHtml5Backend), _reactDom = __webpack_require__(30), _treeDataUtils = __webpack_require__(0), _memoizedTreeDataUtils = __webpack_require__(6), DndManager = function() {
8969
+ function DndManager(treeRef) {
8970
+ _classCallCheck(this, DndManager), this.treeRef = treeRef;
8971
+ }
8972
+ return _createClass(DndManager, [ {
8973
+ key: "getTargetDepth",
8974
+ value: function(dropTargetProps, monitor, component) {
8975
+ var dropTargetDepth = 0, rowAbove = dropTargetProps.getPrevRow();
8976
+ rowAbove && (// Limit the length of the path to the deepest possible
8977
+ dropTargetDepth = Math.min(rowAbove.path.length, dropTargetProps.path.length));
8978
+ var blocksOffset = void 0, dragSourceInitialDepth = (monitor.getItem().path || []).length;
8979
+ // When adding node from external source
8980
+ if (monitor.getItem().treeId !== this.treeId) if (// Ignore the tree depth of the source, if it had any to begin with
8981
+ dragSourceInitialDepth = 0, component) {
8982
+ var relativePosition = (0, _reactDom.findDOMNode)(component).getBoundingClientRect(), leftShift = monitor.getSourceClientOffset().x - relativePosition.left;
8983
+ blocksOffset = Math.round(leftShift / dropTargetProps.scaffoldBlockPxWidth);
8984
+ } else blocksOffset = dropTargetProps.path.length; else blocksOffset = Math.round(monitor.getDifferenceFromInitialOffset().x / dropTargetProps.scaffoldBlockPxWidth);
8985
+ var targetDepth = Math.min(dropTargetDepth, Math.max(0, dragSourceInitialDepth + blocksOffset - 1));
8986
+ // If a maxDepth is defined, constrain the target depth
8987
+ if (void 0 !== this.maxDepth && null !== this.maxDepth) {
8988
+ var draggedNode = monitor.getItem().node, draggedChildDepth = (0, _treeDataUtils.getDepth)(draggedNode);
8989
+ targetDepth = Math.max(0, Math.min(targetDepth, this.maxDepth - draggedChildDepth - 1));
8990
+ }
8991
+ return targetDepth;
8992
+ }
8993
+ }, {
8994
+ key: "canDrop",
8995
+ value: function(dropTargetProps, monitor) {
8996
+ if (!monitor.isOver()) return !1;
8997
+ var rowAbove = dropTargetProps.getPrevRow(), abovePath = rowAbove ? rowAbove.path : [], aboveNode = rowAbove ? rowAbove.node : {}, targetDepth = this.getTargetDepth(dropTargetProps, monitor, null);
8998
+ // Cannot drop if we're adding to the children of the row above and
8999
+ // the row above is a function
9000
+ if (targetDepth >= abovePath.length && "function" == typeof aboveNode.children) return !1;
9001
+ if ("function" == typeof this.customCanDrop) {
9002
+ var _monitor$getItem = monitor.getItem(), node = _monitor$getItem.node, addedResult = (0,
9003
+ _memoizedTreeDataUtils.memoizedInsertNode)({
9004
+ treeData: this.treeData,
9005
+ newNode: node,
9006
+ depth: targetDepth,
9007
+ getNodeKey: this.getNodeKey,
9008
+ minimumTreeIndex: dropTargetProps.listIndex,
9009
+ expandParent: !0
9010
+ });
9011
+ return this.customCanDrop({
9012
+ node: node,
9013
+ prevPath: monitor.getItem().path,
9014
+ prevParent: monitor.getItem().parentNode,
9015
+ prevTreeIndex: monitor.getItem().treeIndex,
9016
+ // Equals -1 when dragged from external tree
9017
+ nextPath: addedResult.path,
9018
+ nextParent: addedResult.parentNode,
9019
+ nextTreeIndex: addedResult.treeIndex
9020
+ });
9021
+ }
9022
+ return !0;
9023
+ }
9024
+ }, {
9025
+ key: "wrapSource",
9026
+ value: function(el) {
9027
+ function nodeDragSourcePropInjection(connect, monitor) {
9028
+ return {
9029
+ connectDragSource: connect.dragSource(),
9030
+ connectDragPreview: connect.dragPreview(),
9031
+ isDragging: monitor.isDragging(),
9032
+ didDrop: monitor.didDrop()
9033
+ };
9034
+ }
9035
+ var _this = this, nodeDragSource = {
9036
+ beginDrag: function(props) {
9037
+ return _this.startDrag(props), {
9038
+ node: props.node,
9039
+ parentNode: props.parentNode,
9040
+ path: props.path,
9041
+ treeIndex: props.treeIndex,
9042
+ treeId: props.treeId
9043
+ };
9044
+ },
9045
+ endDrag: function(props, monitor) {
9046
+ _this.endDrag(monitor.getDropResult());
9047
+ },
9048
+ isDragging: function(props, monitor) {
9049
+ var dropTargetNode = monitor.getItem().node;
9050
+ return props.node === dropTargetNode;
9051
+ }
9052
+ };
9053
+ return (0, _reactDnd.DragSource)(this.dndType, nodeDragSource, nodeDragSourcePropInjection)(el);
9054
+ }
9055
+ }, {
9056
+ key: "wrapTarget",
9057
+ value: function(el) {
9058
+ function nodeDropTargetPropInjection(connect, monitor) {
9059
+ var dragged = monitor.getItem();
9060
+ return {
9061
+ connectDropTarget: connect.dropTarget(),
9062
+ isOver: monitor.isOver(),
9063
+ canDrop: monitor.canDrop(),
9064
+ draggedNode: dragged ? dragged.node : null
9065
+ };
9066
+ }
9067
+ var _this2 = this, nodeDropTarget = {
9068
+ drop: function(dropTargetProps, monitor, component) {
9069
+ var result = {
9070
+ node: monitor.getItem().node,
9071
+ path: monitor.getItem().path,
9072
+ treeIndex: monitor.getItem().treeIndex,
9073
+ treeId: _this2.treeId,
9074
+ minimumTreeIndex: dropTargetProps.treeIndex,
9075
+ depth: _this2.getTargetDepth(dropTargetProps, monitor, component)
9076
+ };
9077
+ return _this2.drop(result), result;
9078
+ },
9079
+ hover: function(dropTargetProps, monitor, component) {
9080
+ var targetDepth = _this2.getTargetDepth(dropTargetProps, monitor, component), draggedNode = monitor.getItem().node;
9081
+ (// Redraw if hovered above different nodes
9082
+ dropTargetProps.node !== draggedNode || // Or hovered above the same node but at a different depth
9083
+ targetDepth !== dropTargetProps.path.length - 1) && _this2.dragHover({
9084
+ node: draggedNode,
9085
+ path: monitor.getItem().path,
9086
+ minimumTreeIndex: dropTargetProps.listIndex,
9087
+ depth: targetDepth
9088
+ });
9089
+ },
9090
+ canDrop: this.canDrop.bind(this)
9091
+ };
9092
+ return (0, _reactDnd.DropTarget)(this.dndType, nodeDropTarget, nodeDropTargetPropInjection)(el);
9093
+ }
9094
+ }, {
9095
+ key: "wrapPlaceholder",
9096
+ value: function(el) {
9097
+ function placeholderPropInjection(connect, monitor) {
9098
+ var dragged = monitor.getItem();
9099
+ return {
9100
+ connectDropTarget: connect.dropTarget(),
9101
+ isOver: monitor.isOver(),
9102
+ canDrop: monitor.canDrop(),
9103
+ draggedNode: dragged ? dragged.node : null
9104
+ };
9105
+ }
9106
+ var _this3 = this, placeholderDropTarget = {
9107
+ drop: function(dropTargetProps, monitor) {
9108
+ var _monitor$getItem2 = monitor.getItem(), node = _monitor$getItem2.node, path = _monitor$getItem2.path, treeIndex = _monitor$getItem2.treeIndex, result = {
9109
+ node: node,
9110
+ path: path,
9111
+ treeIndex: treeIndex,
9112
+ treeId: _this3.treeId,
9113
+ minimumTreeIndex: 0,
9114
+ depth: 0
9115
+ };
9116
+ return _this3.drop(result), result;
9117
+ }
9118
+ };
9119
+ return (0, _reactDnd.DropTarget)(this.dndType, placeholderDropTarget, placeholderPropInjection)(el);
9120
+ }
9121
+ }, {
9122
+ key: "startDrag",
9123
+ get: function() {
9124
+ return this.treeRef.startDrag;
9125
+ }
9126
+ }, {
9127
+ key: "dragHover",
9128
+ get: function() {
9129
+ return this.treeRef.dragHover;
9130
+ }
9131
+ }, {
9132
+ key: "endDrag",
9133
+ get: function() {
9134
+ return this.treeRef.endDrag;
9135
+ }
9136
+ }, {
9137
+ key: "drop",
9138
+ get: function() {
9139
+ return this.treeRef.drop;
9140
+ }
9141
+ }, {
9142
+ key: "treeId",
9143
+ get: function() {
9144
+ return this.treeRef.treeId;
9145
+ }
9146
+ }, {
9147
+ key: "dndType",
9148
+ get: function() {
9149
+ return this.treeRef.dndType;
9150
+ }
9151
+ }, {
9152
+ key: "treeData",
9153
+ get: function() {
9154
+ return this.treeRef.state.draggingTreeData || this.treeRef.props.treeData;
9155
+ }
9156
+ }, {
9157
+ key: "getNodeKey",
9158
+ get: function() {
9159
+ return this.treeRef.props.getNodeKey;
9160
+ }
9161
+ }, {
9162
+ key: "customCanDrop",
9163
+ get: function() {
9164
+ return this.treeRef.props.canDrop;
9165
+ }
9166
+ }, {
9167
+ key: "maxDepth",
9168
+ get: function() {
9169
+ return this.treeRef.props.maxDepth;
9170
+ }
9171
+ } ], [ {
9172
+ key: "wrapRoot",
9173
+ value: function(el) {
9174
+ return (0, _reactDnd.DragDropContext)(_reactDndHtml5Backend2.default)(el);
9175
+ }
9176
+ } ]), DndManager;
9177
+ }();
9178
+ exports.default = DndManager;
9179
+ }, /* 28 */
9180
+ /***/
9181
+ function(module, exports) {
9182
+ module.exports = __webpack_require__(180);
9183
+ }, /* 29 */
9184
+ /***/
9185
+ function(module, exports) {
9186
+ module.exports = __webpack_require__(288);
9187
+ }, /* 30 */
9188
+ /***/
9189
+ function(module, exports) {
9190
+ module.exports = __webpack_require__(19);
9191
+ }, /* 31 */
9192
+ /***/
9193
+ function(module, exports, __webpack_require__) {
9194
+ // style-loader: Adds some css to the DOM by adding a <style> tag
9195
+ // load the styles
9196
+ var content = __webpack_require__(32);
9197
+ "string" == typeof content && (content = [ [ module.i, content, "" ] ]);
9198
+ // Prepare cssTransformation
9199
+ var options = {
9200
+ insertAt: "top",
9201
+ hmr: !0
9202
+ };
9203
+ options.transform = void 0;
9204
+ // add the styles to the DOM
9205
+ __webpack_require__(4)(content, options);
9206
+ content.locals && (module.exports = content.locals);
9207
+ }, /* 32 */
9208
+ /***/
9209
+ function(module, exports, __webpack_require__) {
9210
+ exports = module.exports = __webpack_require__(3)(!1), // imports
9211
+ // module
9212
+ exports.push([ module.i, "/**\n * The container holding the VirtualScroll\n */\n.rst__tree {\n /*! This comment keeps Sass from deleting the empty rule */ }\n\n/**\n * Extra class applied to VirtualScroll through className prop\n */\n.rst__virtualScrollOverride {\n overflow: auto !important; }\n .rst__virtualScrollOverride * {\n -webkit-box-sizing: border-box;\n box-sizing: border-box; }\n\n.ReactVirtualized__Grid__innerScrollContainer {\n overflow: visible !important; }\n\n.ReactVirtualized__Grid {\n outline: none; }\n", "" ]),
9213
+ // exports
9214
+ exports.locals = {
9215
+ tree: "rst__tree",
9216
+ virtualScrollOverride: "rst__virtualScrollOverride"
9217
+ };
9218
+ } ]);
9219
+ });
9220
+
9221
+ /***/ }),
9222
+ /* 159 */
9223
+ /***/ (function(module, exports) {
9224
+
9225
+ // 7.2.1 RequireObjectCoercible(argument)
9226
+ module.exports = function (it) {
9227
+ if (it == undefined) throw TypeError("Can't call method on " + it);
9228
+ return it;
9229
+ };
9230
+
9231
+
9232
+ /***/ }),
9233
+ /* 160 */
9234
+ /***/ (function(module, exports, __webpack_require__) {
9235
+
9236
+ var shared = __webpack_require__(161)('keys');
9237
+ var uid = __webpack_require__(112);
9238
+ module.exports = function (key) {
9239
+ return shared[key] || (shared[key] = uid(key));
9240
+ };
9241
+
9242
+
9243
+ /***/ }),
9244
+ /* 161 */
9245
+ /***/ (function(module, exports, __webpack_require__) {
9246
+
9247
+ var global = __webpack_require__(51);
9248
+ var SHARED = '__core-js_shared__';
9249
+ var store = global[SHARED] || (global[SHARED] = {});
9250
+ module.exports = function (key) {
9251
+ return store[key] || (store[key] = {});
9252
+ };
9253
+
9254
+
9255
+ /***/ }),
9256
+ /* 162 */
9257
+ /***/ (function(module, exports, __webpack_require__) {
9258
+
9259
+ // most Object methods by ES6 should accept primitives
9260
+ var $export = __webpack_require__(66);
9261
+ var core = __webpack_require__(22);
9262
+ var fails = __webpack_require__(80);
9263
+ module.exports = function (KEY, exec) {
9264
+ var fn = (core.Object || {})[KEY] || Object[KEY];
9265
+ var exp = {};
9266
+ exp[KEY] = exec(fn);
9267
+ $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
9268
+ };
9269
+
9270
+
9271
+ /***/ }),
9272
+ /* 163 */
9273
+ /***/ (function(module, exports, __webpack_require__) {
9274
+
9275
+ // 7.1.1 ToPrimitive(input [, PreferredType])
9276
+ var isObject = __webpack_require__(79);
9277
+ // instead of the ES6 spec version, we didn't implement @@toPrimitive case
9278
+ // and the second argument - flag - preferred type is a string
9279
+ module.exports = function (it, S) {
9280
+ if (!isObject(it)) return it;
9281
+ var fn, val;
9282
+ if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
9283
+ if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
9284
+ if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
9285
+ throw TypeError("Can't convert object to primitive value");
9286
+ };
9287
+
9288
+
9289
+ /***/ }),
9290
+ /* 164 */
9291
+ /***/ (function(module, exports, __webpack_require__) {
9292
+
9293
+ "use strict";
9294
+
9295
+ var $at = __webpack_require__(529)(true);
9296
+
9297
+ // 21.1.3.27 String.prototype[@@iterator]()
9298
+ __webpack_require__(241)(String, 'String', function (iterated) {
9299
+ this._t = String(iterated); // target
9300
+ this._i = 0; // next index
9301
+ // 21.1.5.2.1 %StringIteratorPrototype%.next()
9302
+ }, function () {
9303
+ var O = this._t;
9304
+ var index = this._i;
9305
+ var point;
9306
+ if (index >= O.length) return { value: undefined, done: true };
9307
+ point = $at(O, index);
9308
+ this._i += point.length;
9309
+ return { value: point, done: false };
9310
+ });
9311
+
9312
+
9313
+ /***/ }),
9314
+ /* 165 */
9315
+ /***/ (function(module, exports) {
9316
+
9317
+ // 7.1.4 ToInteger
9318
+ var ceil = Math.ceil;
9319
+ var floor = Math.floor;
9320
+ module.exports = function (it) {
9321
+ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
9322
+ };
9323
+
9324
+
9325
+ /***/ }),
9326
+ /* 166 */
9327
+ /***/ (function(module, exports) {
9328
+
9329
+ module.exports = true;
9330
+
9331
+
9332
+ /***/ }),
9333
+ /* 167 */
9334
+ /***/ (function(module, exports, __webpack_require__) {
9335
+
9336
+ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
9337
+ var anObject = __webpack_require__(78);
9338
+ var dPs = __webpack_require__(531);
9339
+ var enumBugKeys = __webpack_require__(169);
9340
+ var IE_PROTO = __webpack_require__(160)('IE_PROTO');
9341
+ var Empty = function () { /* empty */ };
9342
+ var PROTOTYPE = 'prototype';
9343
+
9344
+ // Create object with fake `null` prototype: use iframe Object with cleared prototype
9345
+ var createDict = function () {
9346
+ // Thrash, waste and sodomy: IE GC bug
9347
+ var iframe = __webpack_require__(239)('iframe');
9348
+ var i = enumBugKeys.length;
9349
+ var lt = '<';
9350
+ var gt = '>';
9351
+ var iframeDocument;
9352
+ iframe.style.display = 'none';
9353
+ __webpack_require__(535).appendChild(iframe);
9354
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
9355
+ // createDict = iframe.contentWindow.Object;
9356
+ // html.removeChild(iframe);
9357
+ iframeDocument = iframe.contentWindow.document;
9358
+ iframeDocument.open();
9359
+ iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
9360
+ iframeDocument.close();
9361
+ createDict = iframeDocument.F;
9362
+ while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
9363
+ return createDict();
9364
+ };
9365
+
9366
+ module.exports = Object.create || function create(O, Properties) {
9367
+ var result;
9368
+ if (O !== null) {
9369
+ Empty[PROTOTYPE] = anObject(O);
9370
+ result = new Empty();
9371
+ Empty[PROTOTYPE] = null;
9372
+ // add "__proto__" for Object.getPrototypeOf polyfill
9373
+ result[IE_PROTO] = O;
9374
+ } else result = createDict();
9375
+ return Properties === undefined ? result : dPs(result, Properties);
9376
+ };
9377
+
9378
+
9379
+ /***/ }),
9380
+ /* 168 */
9381
+ /***/ (function(module, exports) {
9382
+
9383
+ var toString = {}.toString;
9384
+
9385
+ module.exports = function (it) {
9386
+ return toString.call(it).slice(8, -1);
9387
+ };
9388
+
9389
+
9390
+ /***/ }),
9391
+ /* 169 */
9392
+ /***/ (function(module, exports) {
9393
+
9394
+ // IE 8- don't enum bug keys
9395
+ module.exports = (
9396
+ 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
9397
+ ).split(',');
9398
+
9399
+
9400
+ /***/ }),
9401
+ /* 170 */
9402
+ /***/ (function(module, exports, __webpack_require__) {
9403
+
9404
+ var def = __webpack_require__(67).f;
9405
+ var has = __webpack_require__(65);
9406
+ var TAG = __webpack_require__(46)('toStringTag');
9407
+
9408
+ module.exports = function (it, tag, stat) {
9409
+ if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
9410
+ };
9411
+
9412
+
9413
+ /***/ }),
9414
+ /* 171 */
9415
+ /***/ (function(module, exports, __webpack_require__) {
9416
+
9417
+ __webpack_require__(536);
9418
+ var global = __webpack_require__(51);
9419
+ var hide = __webpack_require__(77);
9420
+ var Iterators = __webpack_require__(89);
9421
+ var TO_STRING_TAG = __webpack_require__(46)('toStringTag');
9422
+
9423
+ var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
9424
+ 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
9425
+ 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
9426
+ 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
9427
+ 'TextTrackList,TouchList').split(',');
9428
+
9429
+ for (var i = 0; i < DOMIterables.length; i++) {
9430
+ var NAME = DOMIterables[i];
9431
+ var Collection = global[NAME];
9432
+ var proto = Collection && Collection.prototype;
9433
+ if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
9434
+ Iterators[NAME] = Iterators.Array;
9435
+ }
9436
+
9437
+
9438
+ /***/ }),
9439
+ /* 172 */
9440
+ /***/ (function(module, exports, __webpack_require__) {
9441
+
9442
+ exports.f = __webpack_require__(46);
9443
+
9444
+
9445
+ /***/ }),
9446
+ /* 173 */
9447
+ /***/ (function(module, exports, __webpack_require__) {
9448
+
9449
+ var global = __webpack_require__(51);
9450
+ var core = __webpack_require__(22);
9451
+ var LIBRARY = __webpack_require__(166);
9452
+ var wksExt = __webpack_require__(172);
9453
+ var defineProperty = __webpack_require__(67).f;
9454
+ module.exports = function (name) {
9455
+ var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
9456
+ if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
9457
+ };
9458
+
9459
+
9460
+ /***/ }),
9461
+ /* 174 */
9462
+ /***/ (function(module, exports) {
9463
+
9464
+ exports.f = Object.getOwnPropertySymbols;
9465
+
9466
+
9467
+ /***/ }),
9468
+ /* 175 */
9469
+ /***/ (function(module, exports, __webpack_require__) {
9470
+
9471
+ var pIE = __webpack_require__(115);
9472
+ var createDesc = __webpack_require__(113);
9473
+ var toIObject = __webpack_require__(69);
9474
+ var toPrimitive = __webpack_require__(163);
9475
+ var has = __webpack_require__(65);
9476
+ var IE8_DOM_DEFINE = __webpack_require__(238);
9477
+ var gOPD = Object.getOwnPropertyDescriptor;
9478
+
9479
+ exports.f = __webpack_require__(68) ? gOPD : function getOwnPropertyDescriptor(O, P) {
9480
+ O = toIObject(O);
9481
+ P = toPrimitive(P, true);
9482
+ if (IE8_DOM_DEFINE) try {
9483
+ return gOPD(O, P);
9484
+ } catch (e) { /* empty */ }
9485
+ if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
9486
+ };
9487
+
9488
+
9489
+ /***/ }),
9490
+ /* 176 */
9491
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
9492
+
9493
+ "use strict";
9494
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_objectWithoutProperties__ = __webpack_require__(116);
9495
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_objectWithoutProperties___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_objectWithoutProperties__);
9496
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(8);
9497
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);
9498
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__ = __webpack_require__(10);
9499
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__);
9500
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__CellSizeAndPositionManager__ = __webpack_require__(560);
9501
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__maxElementSize_js__ = __webpack_require__(561);
9502
+
9503
+
9504
+
9505
+
9506
+ var babelPluginFlowReactPropTypes_proptype_VisibleCellRange = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_VisibleCellRange || __webpack_require__(0).any;
9507
+
9508
+ var babelPluginFlowReactPropTypes_proptype_CellSizeGetter = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_CellSizeGetter || __webpack_require__(0).any;
9509
+
9510
+ var babelPluginFlowReactPropTypes_proptype_Alignment = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_Alignment || __webpack_require__(0).any;
9511
+
9512
+
9513
+
9514
+
9515
+ /**
9516
+ * Browsers have scroll offset limitations (eg Chrome stops scrolling at ~33.5M pixels where as Edge tops out at ~1.5M pixels).
9517
+ * After a certain position, the browser won't allow the user to scroll further (even via JavaScript scroll offset adjustments).
9518
+ * This util picks a lower ceiling for max size and artificially adjusts positions within to make it transparent for users.
9519
+ */
9520
+
9521
+ /**
9522
+ * Extends CellSizeAndPositionManager and adds scaling behavior for lists that are too large to fit within a browser's native limits.
9523
+ */
9524
+ var ScalingCellSizeAndPositionManager = function () {
9525
+ function ScalingCellSizeAndPositionManager(_ref) {
9526
+ var _ref$maxScrollSize = _ref.maxScrollSize,
9527
+ maxScrollSize = _ref$maxScrollSize === undefined ? Object(__WEBPACK_IMPORTED_MODULE_4__maxElementSize_js__["a" /* getMaxElementSize */])() : _ref$maxScrollSize,
9528
+ params = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_objectWithoutProperties___default()(_ref, ['maxScrollSize']);
9529
+
9530
+ __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, ScalingCellSizeAndPositionManager);
9531
+
9532
+ // Favor composition over inheritance to simplify IE10 support
9533
+ this._cellSizeAndPositionManager = new __WEBPACK_IMPORTED_MODULE_3__CellSizeAndPositionManager__["a" /* default */](params);
9534
+ this._maxScrollSize = maxScrollSize;
9535
+ }
9536
+
9537
+ __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default()(ScalingCellSizeAndPositionManager, [{
9538
+ key: 'areOffsetsAdjusted',
9539
+ value: function areOffsetsAdjusted() {
9540
+ return this._cellSizeAndPositionManager.getTotalSize() > this._maxScrollSize;
9541
+ }
9542
+ }, {
9543
+ key: 'configure',
9544
+ value: function configure(params) {
9545
+ this._cellSizeAndPositionManager.configure(params);
9546
+ }
9547
+ }, {
9548
+ key: 'getCellCount',
9549
+ value: function getCellCount() {
9550
+ return this._cellSizeAndPositionManager.getCellCount();
9551
+ }
9552
+ }, {
9553
+ key: 'getEstimatedCellSize',
9554
+ value: function getEstimatedCellSize() {
9555
+ return this._cellSizeAndPositionManager.getEstimatedCellSize();
9556
+ }
9557
+ }, {
9558
+ key: 'getLastMeasuredIndex',
9559
+ value: function getLastMeasuredIndex() {
9560
+ return this._cellSizeAndPositionManager.getLastMeasuredIndex();
9561
+ }
9562
+
9563
+ /**
9564
+ * Number of pixels a cell at the given position (offset) should be shifted in order to fit within the scaled container.
9565
+ * The offset passed to this function is scaled (safe) as well.
9566
+ */
9567
+
9568
+ }, {
9569
+ key: 'getOffsetAdjustment',
9570
+ value: function getOffsetAdjustment(_ref2) {
9571
+ var containerSize = _ref2.containerSize,
9572
+ offset = _ref2.offset;
9573
+
9574
+ var totalSize = this._cellSizeAndPositionManager.getTotalSize();
9575
+ var safeTotalSize = this.getTotalSize();
9576
+ var offsetPercentage = this._getOffsetPercentage({
9577
+ containerSize: containerSize,
9578
+ offset: offset,
9579
+ totalSize: safeTotalSize
9580
+ });
9581
+
9582
+ return Math.round(offsetPercentage * (safeTotalSize - totalSize));
9583
+ }
9584
+ }, {
9585
+ key: 'getSizeAndPositionOfCell',
9586
+ value: function getSizeAndPositionOfCell(index) {
9587
+ return this._cellSizeAndPositionManager.getSizeAndPositionOfCell(index);
9588
+ }
9589
+ }, {
9590
+ key: 'getSizeAndPositionOfLastMeasuredCell',
9591
+ value: function getSizeAndPositionOfLastMeasuredCell() {
9592
+ return this._cellSizeAndPositionManager.getSizeAndPositionOfLastMeasuredCell();
9593
+ }
9594
+
9595
+ /** See CellSizeAndPositionManager#getTotalSize */
9596
+
9597
+ }, {
9598
+ key: 'getTotalSize',
9599
+ value: function getTotalSize() {
9600
+ return Math.min(this._maxScrollSize, this._cellSizeAndPositionManager.getTotalSize());
9601
+ }
9602
+
9603
+ /** See CellSizeAndPositionManager#getUpdatedOffsetForIndex */
9604
+
9605
+ }, {
9606
+ key: 'getUpdatedOffsetForIndex',
9607
+ value: function getUpdatedOffsetForIndex(_ref3) {
9608
+ var _ref3$align = _ref3.align,
9609
+ align = _ref3$align === undefined ? 'auto' : _ref3$align,
9610
+ containerSize = _ref3.containerSize,
9611
+ currentOffset = _ref3.currentOffset,
9612
+ targetIndex = _ref3.targetIndex;
9613
+
9614
+ currentOffset = this._safeOffsetToOffset({
9615
+ containerSize: containerSize,
9616
+ offset: currentOffset
9617
+ });
9618
+
9619
+ var offset = this._cellSizeAndPositionManager.getUpdatedOffsetForIndex({
9620
+ align: align,
9621
+ containerSize: containerSize,
9622
+ currentOffset: currentOffset,
9623
+ targetIndex: targetIndex
9624
+ });
9625
+
9626
+ return this._offsetToSafeOffset({
9627
+ containerSize: containerSize,
9628
+ offset: offset
9629
+ });
9630
+ }
9631
+
9632
+ /** See CellSizeAndPositionManager#getVisibleCellRange */
9633
+
9634
+ }, {
9635
+ key: 'getVisibleCellRange',
9636
+ value: function getVisibleCellRange(_ref4) {
9637
+ var containerSize = _ref4.containerSize,
9638
+ offset = _ref4.offset;
9639
+
9640
+ offset = this._safeOffsetToOffset({
9641
+ containerSize: containerSize,
9642
+ offset: offset
9643
+ });
9644
+
9645
+ return this._cellSizeAndPositionManager.getVisibleCellRange({
9646
+ containerSize: containerSize,
9647
+ offset: offset
9648
+ });
9649
+ }
9650
+ }, {
9651
+ key: 'resetCell',
9652
+ value: function resetCell(index) {
9653
+ this._cellSizeAndPositionManager.resetCell(index);
9654
+ }
9655
+ }, {
9656
+ key: '_getOffsetPercentage',
9657
+ value: function _getOffsetPercentage(_ref5) {
9658
+ var containerSize = _ref5.containerSize,
9659
+ offset = _ref5.offset,
9660
+ totalSize = _ref5.totalSize;
9661
+
9662
+ return totalSize <= containerSize ? 0 : offset / (totalSize - containerSize);
9663
+ }
9664
+ }, {
9665
+ key: '_offsetToSafeOffset',
9666
+ value: function _offsetToSafeOffset(_ref6) {
9667
+ var containerSize = _ref6.containerSize,
9668
+ offset = _ref6.offset;
9669
+
9670
+ var totalSize = this._cellSizeAndPositionManager.getTotalSize();
9671
+ var safeTotalSize = this.getTotalSize();
9672
+
9673
+ if (totalSize === safeTotalSize) {
9674
+ return offset;
9675
+ } else {
9676
+ var offsetPercentage = this._getOffsetPercentage({
9677
+ containerSize: containerSize,
9678
+ offset: offset,
9679
+ totalSize: totalSize
9680
+ });
9681
+
9682
+ return Math.round(offsetPercentage * (safeTotalSize - containerSize));
9683
+ }
9684
+ }
9685
+ }, {
9686
+ key: '_safeOffsetToOffset',
9687
+ value: function _safeOffsetToOffset(_ref7) {
9688
+ var containerSize = _ref7.containerSize,
9689
+ offset = _ref7.offset;
9690
+
9691
+ var totalSize = this._cellSizeAndPositionManager.getTotalSize();
9692
+ var safeTotalSize = this.getTotalSize();
9693
+
9694
+ if (totalSize === safeTotalSize) {
9695
+ return offset;
9696
+ } else {
9697
+ var offsetPercentage = this._getOffsetPercentage({
9698
+ containerSize: containerSize,
9699
+ offset: offset,
9700
+ totalSize: safeTotalSize
9701
+ });
9702
+
9703
+ return Math.round(offsetPercentage * (totalSize - containerSize));
9704
+ }
9705
+ }
9706
+ }]);
9707
+
9708
+ return ScalingCellSizeAndPositionManager;
9709
+ }();
9710
+
9711
+ /* harmony default export */ __webpack_exports__["a"] = (ScalingCellSizeAndPositionManager);
9712
+
9713
+ /***/ }),
9714
+ /* 177 */
9715
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
9716
+
9717
+ "use strict";
9718
+ /* harmony export (immutable) */ __webpack_exports__["a"] = createCallbackMemoizer;
9719
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys__ = __webpack_require__(247);
9720
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys__);
9721
+
9722
+ /**
9723
+ * Helper utility that updates the specified callback whenever any of the specified indices have changed.
9724
+ */
9725
+ function createCallbackMemoizer() {
9726
+ var requireAllKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
9727
+
9728
+ var cachedIndices = {};
9729
+
9730
+ return function (_ref) {
9731
+ var callback = _ref.callback,
9732
+ indices = _ref.indices;
9733
+
9734
+ var keys = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys___default()(indices);
9735
+ var allInitialized = !requireAllKeys || keys.every(function (key) {
9736
+ var value = indices[key];
9737
+ return Array.isArray(value) ? value.length > 0 : value >= 0;
9738
+ });
9739
+ var indexChanged = keys.length !== __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_keys___default()(cachedIndices).length || keys.some(function (key) {
9740
+ var cachedValue = cachedIndices[key];
9741
+ var value = indices[key];
9742
+
9743
+ return Array.isArray(value) ? cachedValue.join(',') !== value.join(',') : cachedValue !== value;
9744
+ });
9745
+
9746
+ cachedIndices = indices;
9747
+
9748
+ if (allInitialized && indexChanged) {
9749
+ callback(indices);
9750
+ }
9751
+ };
9752
+ }
9753
+
9754
+ /***/ }),
9755
+ /* 178 */
9756
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
9757
+
9758
+ "use strict";
9759
+ Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
9760
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(2);
9761
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);
9762
+
9763
+
9764
+ var babelPluginFlowReactPropTypes_proptype_RowRendererParams = {
9765
+ index: __webpack_require__(0).number.isRequired,
9766
+ isScrolling: __webpack_require__(0).bool.isRequired,
9767
+ isVisible: __webpack_require__(0).bool.isRequired,
9768
+ key: __webpack_require__(0).string.isRequired,
9769
+ parent: __webpack_require__(0).object.isRequired,
9770
+ style: __webpack_require__(0).object.isRequired
9771
+ };
9772
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_RowRendererParams', {
9773
+ value: babelPluginFlowReactPropTypes_proptype_RowRendererParams,
9774
+ configurable: true
9775
+ });
9776
+
9777
+ var babelPluginFlowReactPropTypes_proptype_RowRenderer = __webpack_require__(0).func;
9778
+
9779
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_RowRenderer', {
9780
+ value: babelPluginFlowReactPropTypes_proptype_RowRenderer,
9781
+ configurable: true
9782
+ });
9783
+ var babelPluginFlowReactPropTypes_proptype_RenderedRows = {
9784
+ overscanStartIndex: __webpack_require__(0).number.isRequired,
9785
+ overscanStopIndex: __webpack_require__(0).number.isRequired,
9786
+ startIndex: __webpack_require__(0).number.isRequired,
9787
+ stopIndex: __webpack_require__(0).number.isRequired
9788
+ };
9789
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_RenderedRows', {
9790
+ value: babelPluginFlowReactPropTypes_proptype_RenderedRows,
9791
+ configurable: true
9792
+ });
9793
+ var babelPluginFlowReactPropTypes_proptype_Scroll = {
9794
+ clientHeight: __webpack_require__(0).number.isRequired,
9795
+ scrollHeight: __webpack_require__(0).number.isRequired,
9796
+ scrollTop: __webpack_require__(0).number.isRequired
9797
+ };
9798
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_Scroll', {
9799
+ value: babelPluginFlowReactPropTypes_proptype_Scroll,
9800
+ configurable: true
9801
+ });
9802
+
9803
+ /***/ }),
9804
+ /* 179 */
9805
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
9806
+
9807
+ "use strict";
9808
+ Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
9809
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DEFAULT_SCROLLING_RESET_TIME_INTERVAL", function() { return DEFAULT_SCROLLING_RESET_TIME_INTERVAL; });
9810
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(17);
9811
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__);
9812
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of__ = __webpack_require__(21);
9813
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of__);
9814
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck__ = __webpack_require__(8);
9815
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck__);
9816
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass__ = __webpack_require__(10);
9817
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass__);
9818
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(12);
9819
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn__);
9820
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits__ = __webpack_require__(13);
9821
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits__);
9822
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react__ = __webpack_require__(2);
9823
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react__);
9824
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_classnames__ = __webpack_require__(47);
9825
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_classnames__);
9826
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__PositionCache__ = __webpack_require__(589);
9827
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__utils_requestAnimationTimeout__ = __webpack_require__(91);
9828
+
9829
+
9830
+
9831
+
9832
+
9833
+
9834
+
9835
+
9836
+
9837
+
9838
+
9839
+ var babelPluginFlowReactPropTypes_proptype_AnimationTimeoutId = __webpack_require__(91).babelPluginFlowReactPropTypes_proptype_AnimationTimeoutId || __webpack_require__(0).any;
9840
+
9841
+ var emptyObject = {};
9842
+
9843
+ /**
9844
+ * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.
9845
+ * This improves performance and makes scrolling smoother.
9846
+ */
9847
+ var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;
9848
+
9849
+ /**
9850
+ * This component efficiently displays arbitrarily positioned cells using windowing techniques.
9851
+ * Cell position is determined by an injected `cellPositioner` property.
9852
+ * Windowing is vertical; this component does not support horizontal scrolling.
9853
+ *
9854
+ * Rendering occurs in two phases:
9855
+ * 1) First pass uses estimated cell sizes (provided by the cache) to determine how many cells to measure in a batch.
9856
+ * Batch size is chosen using a fast, naive layout algorithm that stacks images in order until the viewport has been filled.
9857
+ * After measurement is complete (componentDidMount or componentDidUpdate) this component evaluates positioned cells
9858
+ * in order to determine if another measurement pass is required (eg if actual cell sizes were less than estimated sizes).
9859
+ * All measurements are permanently cached (keyed by `keyMapper`) for performance purposes.
9860
+ * 2) Second pass uses the external `cellPositioner` to layout cells.
9861
+ * At this time the positioner has access to cached size measurements for all cells.
9862
+ * The positions it returns are cached by Masonry for fast access later.
9863
+ * Phase one is repeated if the user scrolls beyond the current layout's bounds.
9864
+ * If the layout is invalidated due to eg a resize, cached positions can be cleared using `recomputeCellPositions()`.
9865
+ *
9866
+ * Animation constraints:
9867
+ * Simple animations are supported (eg translate/slide into place on initial reveal).
9868
+ * More complex animations are not (eg flying from one position to another on resize).
9869
+ *
9870
+ * Layout constraints:
9871
+ * This component supports multi-column layout.
9872
+ * The height of each item may vary.
9873
+ * The width of each item must not exceed the width of the column it is "in".
9874
+ * The left position of all items within a column must align.
9875
+ * (Items may not span multiple columns.)
9876
+ */
9877
+
9878
+ var Masonry = function (_PureComponent) {
9879
+ __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits___default()(Masonry, _PureComponent);
9880
+
9881
+ function Masonry(props, context) {
9882
+ __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default()(this, Masonry);
9883
+
9884
+ var _this = __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default()(this, (Masonry.__proto__ || __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of___default()(Masonry)).call(this, props, context));
9885
+
9886
+ _this._invalidateOnUpdateStartIndex = null;
9887
+ _this._invalidateOnUpdateStopIndex = null;
9888
+ _this._positionCache = new __WEBPACK_IMPORTED_MODULE_8__PositionCache__["a" /* default */]();
9889
+ _this._startIndex = null;
9890
+ _this._startIndexMemoized = null;
9891
+ _this._stopIndex = null;
9892
+ _this._stopIndexMemoized = null;
9893
+
9894
+
9895
+ _this.state = {
9896
+ isScrolling: false,
9897
+ scrollTop: 0
9898
+ };
9899
+
9900
+ _this._debounceResetIsScrollingCallback = _this._debounceResetIsScrollingCallback.bind(_this);
9901
+ _this._setScrollingContainerRef = _this._setScrollingContainerRef.bind(_this);
9902
+ _this._onScroll = _this._onScroll.bind(_this);
9903
+ return _this;
9904
+ }
9905
+
9906
+ __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default()(Masonry, [{
9907
+ key: 'clearCellPositions',
9908
+ value: function clearCellPositions() {
9909
+ this._positionCache = new __WEBPACK_IMPORTED_MODULE_8__PositionCache__["a" /* default */]();
9910
+ this.forceUpdate();
9911
+ }
9912
+
9913
+ // HACK This method signature was intended for Grid
9914
+
9915
+ }, {
9916
+ key: 'invalidateCellSizeAfterRender',
9917
+ value: function invalidateCellSizeAfterRender(_ref) {
9918
+ var index = _ref.rowIndex;
9919
+
9920
+ if (this._invalidateOnUpdateStartIndex === null) {
9921
+ this._invalidateOnUpdateStartIndex = index;
9922
+ this._invalidateOnUpdateStopIndex = index;
9923
+ } else {
9924
+ this._invalidateOnUpdateStartIndex = Math.min(this._invalidateOnUpdateStartIndex, index);
9925
+ this._invalidateOnUpdateStopIndex = Math.max(this._invalidateOnUpdateStopIndex, index);
9926
+ }
9927
+ }
9928
+ }, {
9929
+ key: 'recomputeCellPositions',
9930
+ value: function recomputeCellPositions() {
9931
+ var stopIndex = this._positionCache.count - 1;
9932
+
9933
+ this._positionCache = new __WEBPACK_IMPORTED_MODULE_8__PositionCache__["a" /* default */]();
9934
+ this._populatePositionCache(0, stopIndex);
9935
+
9936
+ this.forceUpdate();
9937
+ }
9938
+ }, {
9939
+ key: 'componentDidMount',
9940
+ value: function componentDidMount() {
9941
+ this._checkInvalidateOnUpdate();
9942
+ this._invokeOnScrollCallback();
9943
+ this._invokeOnCellsRenderedCallback();
9944
+ }
9945
+ }, {
9946
+ key: 'componentDidUpdate',
9947
+ value: function componentDidUpdate() {
9948
+ this._checkInvalidateOnUpdate();
9949
+ this._invokeOnScrollCallback();
9950
+ this._invokeOnCellsRenderedCallback();
9951
+ }
9952
+ }, {
9953
+ key: 'componentWillUnmount',
9954
+ value: function componentWillUnmount() {
9955
+ if (this._debounceResetIsScrollingId) {
9956
+ Object(__WEBPACK_IMPORTED_MODULE_9__utils_requestAnimationTimeout__["cancelAnimationTimeout"])(this._debounceResetIsScrollingId);
9957
+ }
9958
+ }
9959
+ }, {
9960
+ key: 'componentWillReceiveProps',
9961
+ value: function componentWillReceiveProps(nextProps) {
9962
+ var scrollTop = this.props.scrollTop;
9963
+
9964
+
9965
+ if (scrollTop !== nextProps.scrollTop) {
9966
+ this._debounceResetIsScrolling();
9967
+
9968
+ this.setState({
9969
+ isScrolling: true,
9970
+ scrollTop: nextProps.scrollTop
9971
+ });
9972
+ }
9973
+ }
9974
+ }, {
9975
+ key: 'render',
9976
+ value: function render() {
9977
+ var _this2 = this;
9978
+
9979
+ var _props = this.props,
9980
+ autoHeight = _props.autoHeight,
9981
+ cellCount = _props.cellCount,
9982
+ cellMeasurerCache = _props.cellMeasurerCache,
9983
+ cellRenderer = _props.cellRenderer,
9984
+ className = _props.className,
9985
+ height = _props.height,
9986
+ id = _props.id,
9987
+ keyMapper = _props.keyMapper,
9988
+ overscanByPixels = _props.overscanByPixels,
9989
+ role = _props.role,
9990
+ style = _props.style,
9991
+ tabIndex = _props.tabIndex,
9992
+ width = _props.width;
9993
+ var _state = this.state,
9994
+ isScrolling = _state.isScrolling,
9995
+ scrollTop = _state.scrollTop;
9996
+
9997
+
9998
+ var children = [];
9999
+
10000
+ var estimateTotalHeight = this._getEstimatedTotalHeight();
10001
+
10002
+ var shortestColumnSize = this._positionCache.shortestColumnSize;
10003
+ var measuredCellCount = this._positionCache.count;
10004
+
10005
+ var startIndex = 0;
10006
+ var stopIndex = void 0;
10007
+
10008
+ this._positionCache.range(Math.max(0, scrollTop - overscanByPixels), height + overscanByPixels * 2, function (index, left, top) {
10009
+ if (typeof stopIndex === 'undefined') {
10010
+ startIndex = index;
10011
+ stopIndex = index;
10012
+ } else {
10013
+ startIndex = Math.min(startIndex, index);
10014
+ stopIndex = Math.max(stopIndex, index);
10015
+ }
10016
+
10017
+ children.push(cellRenderer({
10018
+ index: index,
10019
+ isScrolling: isScrolling,
10020
+ key: keyMapper(index),
10021
+ parent: _this2,
10022
+ style: {
10023
+ height: cellMeasurerCache.getHeight(index),
10024
+ left: left,
10025
+ position: 'absolute',
10026
+ top: top,
10027
+ width: cellMeasurerCache.getWidth(index)
10028
+ }
10029
+ }));
10030
+ });
10031
+
10032
+ // We need to measure additional cells for this layout
10033
+ if (shortestColumnSize < scrollTop + height + overscanByPixels && measuredCellCount < cellCount) {
10034
+ var batchSize = Math.min(cellCount - measuredCellCount, Math.ceil((scrollTop + height + overscanByPixels - shortestColumnSize) / cellMeasurerCache.defaultHeight * width / cellMeasurerCache.defaultWidth));
10035
+
10036
+ for (var _index = measuredCellCount; _index < measuredCellCount + batchSize; _index++) {
10037
+ stopIndex = _index;
10038
+
10039
+ children.push(cellRenderer({
10040
+ index: _index,
10041
+ isScrolling: isScrolling,
10042
+ key: keyMapper(_index),
10043
+ parent: this,
10044
+ style: {
10045
+ width: cellMeasurerCache.getWidth(_index)
10046
+ }
10047
+ }));
10048
+ }
10049
+ }
10050
+
10051
+ this._startIndex = startIndex;
10052
+ this._stopIndex = stopIndex;
10053
+
10054
+ return __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement(
10055
+ 'div',
10056
+ {
10057
+ ref: this._setScrollingContainerRef,
10058
+ 'aria-label': this.props['aria-label'],
10059
+ className: __WEBPACK_IMPORTED_MODULE_7_classnames___default()('ReactVirtualized__Masonry', className),
10060
+ id: id,
10061
+ onScroll: this._onScroll,
10062
+ role: role,
10063
+ style: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({
10064
+ boxSizing: 'border-box',
10065
+ direction: 'ltr',
10066
+ height: autoHeight ? 'auto' : height,
10067
+ overflowX: 'hidden',
10068
+ overflowY: estimateTotalHeight < height ? 'hidden' : 'auto',
10069
+ position: 'relative',
10070
+ width: width,
10071
+ WebkitOverflowScrolling: 'touch',
10072
+ willChange: 'transform'
10073
+ }, style),
10074
+ tabIndex: tabIndex },
10075
+ __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement(
10076
+ 'div',
10077
+ {
10078
+ className: 'ReactVirtualized__Masonry__innerScrollContainer',
10079
+ style: {
10080
+ width: '100%',
10081
+ height: estimateTotalHeight,
10082
+ maxWidth: '100%',
10083
+ maxHeight: estimateTotalHeight,
10084
+ overflow: 'hidden',
10085
+ pointerEvents: isScrolling ? 'none' : '',
10086
+ position: 'relative'
10087
+ } },
10088
+ children
10089
+ )
10090
+ );
10091
+ }
10092
+ }, {
10093
+ key: '_checkInvalidateOnUpdate',
10094
+ value: function _checkInvalidateOnUpdate() {
10095
+ if (typeof this._invalidateOnUpdateStartIndex === 'number') {
10096
+ var _startIndex = this._invalidateOnUpdateStartIndex;
10097
+ var _stopIndex = this._invalidateOnUpdateStopIndex;
10098
+
10099
+ this._invalidateOnUpdateStartIndex = null;
10100
+ this._invalidateOnUpdateStopIndex = null;
10101
+
10102
+ // Query external layout logic for position of newly-measured cells
10103
+ this._populatePositionCache(_startIndex, _stopIndex);
10104
+
10105
+ this.forceUpdate();
10106
+ }
10107
+ }
10108
+ }, {
10109
+ key: '_debounceResetIsScrolling',
10110
+ value: function _debounceResetIsScrolling() {
10111
+ var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;
10112
+
10113
+
10114
+ if (this._debounceResetIsScrollingId) {
10115
+ Object(__WEBPACK_IMPORTED_MODULE_9__utils_requestAnimationTimeout__["cancelAnimationTimeout"])(this._debounceResetIsScrollingId);
10116
+ }
10117
+
10118
+ this._debounceResetIsScrollingId = Object(__WEBPACK_IMPORTED_MODULE_9__utils_requestAnimationTimeout__["requestAnimationTimeout"])(this._debounceResetIsScrollingCallback, scrollingResetTimeInterval);
10119
+ }
10120
+ }, {
10121
+ key: '_debounceResetIsScrollingCallback',
10122
+ value: function _debounceResetIsScrollingCallback() {
10123
+ this.setState({
10124
+ isScrolling: false
10125
+ });
10126
+ }
10127
+ }, {
10128
+ key: '_getEstimatedTotalHeight',
10129
+ value: function _getEstimatedTotalHeight() {
10130
+ var _props2 = this.props,
10131
+ cellCount = _props2.cellCount,
10132
+ cellMeasurerCache = _props2.cellMeasurerCache,
10133
+ width = _props2.width;
10134
+
10135
+
10136
+ var estimatedColumnCount = Math.max(1, Math.floor(width / cellMeasurerCache.defaultWidth));
10137
+
10138
+ return this._positionCache.estimateTotalHeight(cellCount, estimatedColumnCount, cellMeasurerCache.defaultHeight);
10139
+ }
10140
+ }, {
10141
+ key: '_invokeOnScrollCallback',
10142
+ value: function _invokeOnScrollCallback() {
10143
+ var _props3 = this.props,
10144
+ height = _props3.height,
10145
+ onScroll = _props3.onScroll;
10146
+ var scrollTop = this.state.scrollTop;
10147
+
10148
+
10149
+ if (this._onScrollMemoized !== scrollTop) {
10150
+ onScroll({
10151
+ clientHeight: height,
10152
+ scrollHeight: this._getEstimatedTotalHeight(),
10153
+ scrollTop: scrollTop
10154
+ });
10155
+
10156
+ this._onScrollMemoized = scrollTop;
10157
+ }
10158
+ }
10159
+ }, {
10160
+ key: '_invokeOnCellsRenderedCallback',
10161
+ value: function _invokeOnCellsRenderedCallback() {
10162
+ if (this._startIndexMemoized !== this._startIndex || this._stopIndexMemoized !== this._stopIndex) {
10163
+ var _onCellsRendered = this.props.onCellsRendered;
10164
+
10165
+
10166
+ _onCellsRendered({
10167
+ startIndex: this._startIndex,
10168
+ stopIndex: this._stopIndex
10169
+ });
10170
+
10171
+ this._startIndexMemoized = this._startIndex;
10172
+ this._stopIndexMemoized = this._stopIndex;
10173
+ }
10174
+ }
10175
+ }, {
10176
+ key: '_populatePositionCache',
10177
+ value: function _populatePositionCache(startIndex, stopIndex) {
10178
+ var _props4 = this.props,
10179
+ cellMeasurerCache = _props4.cellMeasurerCache,
10180
+ cellPositioner = _props4.cellPositioner;
10181
+
10182
+
10183
+ for (var _index2 = startIndex; _index2 <= stopIndex; _index2++) {
10184
+ var _cellPositioner = cellPositioner(_index2),
10185
+ _left = _cellPositioner.left,
10186
+ _top = _cellPositioner.top;
10187
+
10188
+ this._positionCache.setPosition(_index2, _left, _top, cellMeasurerCache.getHeight(_index2));
10189
+ }
10190
+ }
10191
+ }, {
10192
+ key: '_setScrollingContainerRef',
10193
+ value: function _setScrollingContainerRef(ref) {
10194
+ this._scrollingContainer = ref;
10195
+ }
10196
+ }, {
10197
+ key: '_onScroll',
10198
+ value: function _onScroll(event) {
10199
+ var height = this.props.height;
10200
+
10201
+
10202
+ var eventScrollTop = event.target.scrollTop;
10203
+
10204
+ // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,
10205
+ // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.
10206
+ // This causes a series of rapid renders that is slow for long lists.
10207
+ // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.
10208
+ var scrollTop = Math.min(Math.max(0, this._getEstimatedTotalHeight() - height), eventScrollTop);
10209
+
10210
+ // On iOS, we can arrive at negative offsets by swiping past the start or end.
10211
+ // Avoid re-rendering in this case as it can cause problems; see #532 for more.
10212
+ if (eventScrollTop !== scrollTop) {
10213
+ return;
10214
+ }
10215
+
10216
+ // Prevent pointer events from interrupting a smooth scroll
10217
+ this._debounceResetIsScrolling();
10218
+
10219
+ // Certain devices (like Apple touchpad) rapid-fire duplicate events.
10220
+ // Don't force a re-render if this is the case.
10221
+ // The mouse may move faster then the animation frame does.
10222
+ // Use requestAnimationFrame to avoid over-updating.
10223
+ if (this.state.scrollTop !== scrollTop) {
10224
+ this.setState({
10225
+ isScrolling: true,
10226
+ scrollTop: scrollTop
10227
+ });
10228
+ }
10229
+ }
10230
+ }]);
10231
+
10232
+ return Masonry;
10233
+ }(__WEBPACK_IMPORTED_MODULE_6_react__["PureComponent"]);
10234
+
10235
+ Masonry.defaultProps = {
10236
+ autoHeight: false,
10237
+ keyMapper: identity,
10238
+ onCellsRendered: noop,
10239
+ onScroll: noop,
10240
+ overscanByPixels: 20,
10241
+ role: 'grid',
10242
+ scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,
10243
+ style: emptyObject,
10244
+ tabIndex: 0
10245
+ };
10246
+ /* harmony default export */ __webpack_exports__["default"] = (Masonry);
10247
+
10248
+
10249
+ function identity(value) {
10250
+ return value;
10251
+ }
10252
+
10253
+ function noop() {}
10254
+
10255
+ var babelPluginFlowReactPropTypes_proptype_CellMeasurerCache = {
10256
+ defaultHeight: __webpack_require__(0).number.isRequired,
10257
+ defaultWidth: __webpack_require__(0).number.isRequired,
10258
+ getHeight: __webpack_require__(0).func.isRequired,
10259
+ getWidth: __webpack_require__(0).func.isRequired
10260
+ };
10261
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_CellMeasurerCache', {
10262
+ value: babelPluginFlowReactPropTypes_proptype_CellMeasurerCache,
10263
+ configurable: true
10264
+ });
10265
+
10266
+ var babelPluginFlowReactPropTypes_proptype_Positioner = __webpack_require__(0).func;
10267
+
10268
+ if (typeof exports !== 'undefined') Object.defineProperty(exports, 'babelPluginFlowReactPropTypes_proptype_Positioner', {
10269
+ value: babelPluginFlowReactPropTypes_proptype_Positioner,
10270
+ configurable: true
10271
+ });
10272
+
10273
+ /***/ }),
10274
+ /* 180 */
10275
+ /***/ (function(module, exports, __webpack_require__) {
10276
+
10277
+ "use strict";
10278
+
10279
+
10280
+ Object.defineProperty(exports, "__esModule", {
10281
+ value: true
10282
+ });
10283
+
10284
+ var _DragDropContext = __webpack_require__(265);
10285
+
10286
+ Object.defineProperty(exports, 'DragDropContext', {
10287
+ enumerable: true,
10288
+ get: function get() {
10289
+ return _interopRequireDefault(_DragDropContext).default;
10290
+ }
10291
+ });
10292
+
10293
+ var _DragDropContextProvider = __webpack_require__(687);
10294
+
10295
+ Object.defineProperty(exports, 'DragDropContextProvider', {
10296
+ enumerable: true,
10297
+ get: function get() {
10298
+ return _interopRequireDefault(_DragDropContextProvider).default;
10299
+ }
10300
+ });
10301
+
10302
+ var _DragLayer = __webpack_require__(688);
10303
+
10304
+ Object.defineProperty(exports, 'DragLayer', {
10305
+ enumerable: true,
10306
+ get: function get() {
10307
+ return _interopRequireDefault(_DragLayer).default;
10308
+ }
10309
+ });
10310
+
10311
+ var _DragSource = __webpack_require__(689);
10312
+
10313
+ Object.defineProperty(exports, 'DragSource', {
10314
+ enumerable: true,
10315
+ get: function get() {
10316
+ return _interopRequireDefault(_DragSource).default;
10317
+ }
10318
+ });
10319
+
10320
+ var _DropTarget = __webpack_require__(699);
10321
+
10322
+ Object.defineProperty(exports, 'DropTarget', {
10323
+ enumerable: true,
10324
+ get: function get() {
10325
+ return _interopRequireDefault(_DropTarget).default;
10326
+ }
10327
+ });
10328
+
10329
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10330
+
10331
+ /***/ }),
10332
+ /* 181 */
10333
+ /***/ (function(module, exports, __webpack_require__) {
10334
+
10335
+ var root = __webpack_require__(94);
10336
+
10337
+ /** Built-in value references. */
10338
+ var Symbol = root.Symbol;
10339
+
10340
+ module.exports = Symbol;
10341
+
10342
+
10343
+ /***/ }),
10344
+ /* 182 */
10345
+ /***/ (function(module, exports, __webpack_require__) {
10346
+
10347
+ var MapCache = __webpack_require__(271),
10348
+ setCacheAdd = __webpack_require__(655),
10349
+ setCacheHas = __webpack_require__(656);
10350
+
10351
+ /**
10352
+ *
10353
+ * Creates an array cache object to store unique values.
10354
+ *
10355
+ * @private
10356
+ * @constructor
10357
+ * @param {Array} [values] The values to cache.
10358
+ */
10359
+ function SetCache(values) {
10360
+ var index = -1,
10361
+ length = values == null ? 0 : values.length;
10362
+
10363
+ this.__data__ = new MapCache;
10364
+ while (++index < length) {
10365
+ this.add(values[index]);
10366
+ }
10367
+ }
10368
+
10369
+ // Add methods to `SetCache`.
10370
+ SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
10371
+ SetCache.prototype.has = setCacheHas;
10372
+
10373
+ module.exports = SetCache;
10374
+
10375
+
10376
+ /***/ }),
10377
+ /* 183 */
10378
+ /***/ (function(module, exports, __webpack_require__) {
10379
+
10380
+ var baseIndexOf = __webpack_require__(657);
10381
+
10382
+ /**
10383
+ * A specialized version of `_.includes` for arrays without support for
10384
+ * specifying an index to search from.
10385
+ *
10386
+ * @private
10387
+ * @param {Array} [array] The array to inspect.
10388
+ * @param {*} target The value to search for.
10389
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
10390
+ */
10391
+ function arrayIncludes(array, value) {
10392
+ var length = array == null ? 0 : array.length;
10393
+ return !!length && baseIndexOf(array, value, 0) > -1;
10394
+ }
10395
+
10396
+ module.exports = arrayIncludes;
10397
+
10398
+
10399
+ /***/ }),
10400
+ /* 184 */
10401
+ /***/ (function(module, exports) {
10402
+
10403
+ /**
10404
+ * This function is like `arrayIncludes` except that it accepts a comparator.
10405
+ *
10406
+ * @private
10407
+ * @param {Array} [array] The array to inspect.
10408
+ * @param {*} target The value to search for.
10409
+ * @param {Function} comparator The comparator invoked per element.
10410
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
10411
+ */
10412
+ function arrayIncludesWith(array, value, comparator) {
10413
+ var index = -1,
10414
+ length = array == null ? 0 : array.length;
10415
+
10416
+ while (++index < length) {
10417
+ if (comparator(value, array[index])) {
10418
+ return true;
10419
+ }
10420
+ }
10421
+ return false;
10422
+ }
10423
+
10424
+ module.exports = arrayIncludesWith;
10425
+
10426
+
10427
+ /***/ }),
10428
+ /* 185 */
10429
+ /***/ (function(module, exports) {
10430
+
10431
+ /**
10432
+ * A specialized version of `_.map` for arrays without support for iteratee
10433
+ * shorthands.
10434
+ *
10435
+ * @private
10436
+ * @param {Array} [array] The array to iterate over.
10437
+ * @param {Function} iteratee The function invoked per iteration.
10438
+ * @returns {Array} Returns the new mapped array.
10439
+ */
10440
+ function arrayMap(array, iteratee) {
10441
+ var index = -1,
10442
+ length = array == null ? 0 : array.length,
10443
+ result = Array(length);
10444
+
10445
+ while (++index < length) {
10446
+ result[index] = iteratee(array[index], index, array);
10447
+ }
10448
+ return result;
10449
+ }
10450
+
10451
+ module.exports = arrayMap;
10452
+
10453
+
10454
+ /***/ }),
10455
+ /* 186 */
10456
+ /***/ (function(module, exports) {
10457
+
10458
+ /**
10459
+ * The base implementation of `_.unary` without support for storing metadata.
10460
+ *
10461
+ * @private
10462
+ * @param {Function} func The function to cap arguments for.
10463
+ * @returns {Function} Returns the new capped function.
10464
+ */
10465
+ function baseUnary(func) {
10466
+ return function(value) {
10467
+ return func(value);
10468
+ };
10469
+ }
10470
+
10471
+ module.exports = baseUnary;
10472
+
10473
+
10474
+ /***/ }),
10475
+ /* 187 */
10476
+ /***/ (function(module, exports) {
10477
+
10478
+ /**
10479
+ * Checks if a `cache` value for `key` exists.
10480
+ *
10481
+ * @private
10482
+ * @param {Object} cache The cache to query.
10483
+ * @param {string} key The key of the entry to check.
10484
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
10485
+ */
10486
+ function cacheHas(cache, key) {
10487
+ return cache.has(key);
10488
+ }
10489
+
10490
+ module.exports = cacheHas;
10491
+
10492
+
10493
+ /***/ }),
10494
+ /* 188 */
10495
+ /***/ (function(module, exports, __webpack_require__) {
10496
+
10497
+ var isFunction = __webpack_require__(272),
10498
+ isLength = __webpack_require__(276);
10499
+
10500
+ /**
10501
+ * Checks if `value` is array-like. A value is considered array-like if it's
10502
+ * not a function and has a `value.length` that's an integer greater than or
10503
+ * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
10504
+ *
10505
+ * @static
10506
+ * @memberOf _
10507
+ * @since 4.0.0
10508
+ * @category Lang
10509
+ * @param {*} value The value to check.
10510
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
10511
+ * @example
10512
+ *
10513
+ * _.isArrayLike([1, 2, 3]);
10514
+ * // => true
10515
+ *
10516
+ * _.isArrayLike(document.body.children);
10517
+ * // => true
10518
+ *
10519
+ * _.isArrayLike('abc');
10520
+ * // => true
10521
+ *
10522
+ * _.isArrayLike(_.noop);
10523
+ * // => false
10524
+ */
10525
+ function isArrayLike(value) {
10526
+ return value != null && isLength(value.length) && !isFunction(value);
10527
+ }
10528
+
10529
+ module.exports = isArrayLike;
10530
+
10531
+
10532
+ /***/ }),
10533
+ /* 189 */
10534
+ /***/ (function(module, exports, __webpack_require__) {
10535
+
10536
+ "use strict";
10537
+ /**
10538
+ * Copyright 2015, Yahoo! Inc.
10539
+ * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
10540
+ */
10541
+
10542
+
10543
+ var REACT_STATICS = {
10544
+ childContextTypes: true,
10545
+ contextTypes: true,
10546
+ defaultProps: true,
10547
+ displayName: true,
10548
+ getDefaultProps: true,
10549
+ mixins: true,
10550
+ propTypes: true,
10551
+ type: true
10552
+ };
10553
+
10554
+ var KNOWN_STATICS = {
10555
+ name: true,
10556
+ length: true,
10557
+ prototype: true,
10558
+ caller: true,
10559
+ callee: true,
10560
+ arguments: true,
10561
+ arity: true
10562
+ };
10563
+
10564
+ var defineProperty = Object.defineProperty;
10565
+ var getOwnPropertyNames = Object.getOwnPropertyNames;
10566
+ var getOwnPropertySymbols = Object.getOwnPropertySymbols;
10567
+ var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
10568
+ var getPrototypeOf = Object.getPrototypeOf;
10569
+ var objectPrototype = getPrototypeOf && getPrototypeOf(Object);
10570
+
10571
+ module.exports = function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {
10572
+ if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components
10573
+
10574
+ if (objectPrototype) {
10575
+ var inheritedComponent = getPrototypeOf(sourceComponent);
10576
+ if (inheritedComponent && inheritedComponent !== objectPrototype) {
10577
+ hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);
10578
+ }
10579
+ }
10580
+
10581
+ var keys = getOwnPropertyNames(sourceComponent);
10582
+
10583
+ if (getOwnPropertySymbols) {
10584
+ keys = keys.concat(getOwnPropertySymbols(sourceComponent));
10585
+ }
10586
+
10587
+ for (var i = 0; i < keys.length; ++i) {
10588
+ var key = keys[i];
10589
+ if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {
10590
+ var descriptor = getOwnPropertyDescriptor(sourceComponent, key);
10591
+ try { // Avoid failures from read-only properties
10592
+ defineProperty(targetComponent, key, descriptor);
10593
+ } catch (e) {}
10594
+ }
10595
+ }
10596
+
10597
+ return targetComponent;
10598
+ }
10599
+
10600
+ return targetComponent;
10601
+ };
10602
+
10603
+
10604
+ /***/ }),
10605
+ /* 190 */
10606
+ /***/ (function(module, exports, __webpack_require__) {
10607
+
10608
+ "use strict";
10609
+
10610
+
10611
+ Object.defineProperty(exports, "__esModule", {
10612
+ value: true
10613
+ });
10614
+ exports.default = shallowEqual;
10615
+ function shallowEqual(objA, objB) {
10616
+ if (objA === objB) {
10617
+ return true;
10618
+ }
10619
+
10620
+ var keysA = Object.keys(objA);
10621
+ var keysB = Object.keys(objB);
10622
+
10623
+ if (keysA.length !== keysB.length) {
10624
+ return false;
10625
+ }
10626
+
10627
+ // Test for A's keys different from B.
10628
+ var hasOwn = Object.prototype.hasOwnProperty;
10629
+ for (var i = 0; i < keysA.length; i += 1) {
10630
+ if (!hasOwn.call(objB, keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {
10631
+ return false;
10632
+ }
10633
+
10634
+ var valA = objA[keysA[i]];
10635
+ var valB = objB[keysA[i]];
10636
+
10637
+ if (valA !== valB) {
10638
+ return false;
10639
+ }
10640
+ }
10641
+
10642
+ return true;
10643
+ }
10644
+
10645
+ /***/ }),
10646
+ /* 191 */
10647
+ /***/ (function(module, exports, __webpack_require__) {
10648
+
10649
+ "use strict";
10650
+
10651
+
10652
+ exports.__esModule = true;
10653
+ exports['default'] = isDisposable;
10654
+
10655
+ function isDisposable(obj) {
10656
+ return Boolean(obj && typeof obj.dispose === 'function');
10657
+ }
10658
+
10659
+ module.exports = exports['default'];
10660
+
10661
+ /***/ }),
10662
+ /* 192 */
10663
+ /***/ (function(module, exports, __webpack_require__) {
10664
+
10665
+ "use strict";
10666
+
10667
+
10668
+ Object.defineProperty(exports, "__esModule", {
10669
+ value: true
10670
+ });
10671
+ var FILE = exports.FILE = '__NATIVE_FILE__';
10672
+ var URL = exports.URL = '__NATIVE_URL__';
10673
+ var TEXT = exports.TEXT = '__NATIVE_TEXT__';
10674
+
10675
+ /***/ }),
10676
+ /* 193 */
10677
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
10678
+
10679
+ "use strict";
10680
+ /**
10681
+ * @ignore
10682
+ * some key-codes definition and utils from closure-library
10683
+ * @author yiminghe@gmail.com
10684
+ */
10685
+
10686
+ var KeyCode = {
10687
+ /**
10688
+ * MAC_ENTER
10689
+ */
10690
+ MAC_ENTER: 3,
10691
+ /**
10692
+ * BACKSPACE
10693
+ */
10694
+ BACKSPACE: 8,
10695
+ /**
10696
+ * TAB
10697
+ */
10698
+ TAB: 9,
10699
+ /**
10700
+ * NUMLOCK on FF/Safari Mac
10701
+ */
10702
+ NUM_CENTER: 12, // NUMLOCK on FF/Safari Mac
10703
+ /**
10704
+ * ENTER
10705
+ */
10706
+ ENTER: 13,
10707
+ /**
10708
+ * SHIFT
10709
+ */
10710
+ SHIFT: 16,
10711
+ /**
10712
+ * CTRL
10713
+ */
10714
+ CTRL: 17,
10715
+ /**
10716
+ * ALT
10717
+ */
10718
+ ALT: 18,
10719
+ /**
10720
+ * PAUSE
10721
+ */
10722
+ PAUSE: 19,
10723
+ /**
10724
+ * CAPS_LOCK
10725
+ */
10726
+ CAPS_LOCK: 20,
10727
+ /**
10728
+ * ESC
10729
+ */
10730
+ ESC: 27,
10731
+ /**
10732
+ * SPACE
10733
+ */
10734
+ SPACE: 32,
10735
+ /**
10736
+ * PAGE_UP
10737
+ */
10738
+ PAGE_UP: 33, // also NUM_NORTH_EAST
10739
+ /**
10740
+ * PAGE_DOWN
10741
+ */
10742
+ PAGE_DOWN: 34, // also NUM_SOUTH_EAST
10743
+ /**
10744
+ * END
10745
+ */
10746
+ END: 35, // also NUM_SOUTH_WEST
10747
+ /**
10748
+ * HOME
10749
+ */
10750
+ HOME: 36, // also NUM_NORTH_WEST
10751
+ /**
10752
+ * LEFT
10753
+ */
10754
+ LEFT: 37, // also NUM_WEST
10755
+ /**
10756
+ * UP
10757
+ */
10758
+ UP: 38, // also NUM_NORTH
10759
+ /**
10760
+ * RIGHT
10761
+ */
10762
+ RIGHT: 39, // also NUM_EAST
10763
+ /**
10764
+ * DOWN
10765
+ */
10766
+ DOWN: 40, // also NUM_SOUTH
10767
+ /**
10768
+ * PRINT_SCREEN
10769
+ */
10770
+ PRINT_SCREEN: 44,
10771
+ /**
10772
+ * INSERT
10773
+ */
10774
+ INSERT: 45, // also NUM_INSERT
10775
+ /**
10776
+ * DELETE
10777
+ */
10778
+ DELETE: 46, // also NUM_DELETE
10779
+ /**
10780
+ * ZERO
10781
+ */
10782
+ ZERO: 48,
10783
+ /**
10784
+ * ONE
10785
+ */
10786
+ ONE: 49,
10787
+ /**
10788
+ * TWO
10789
+ */
10790
+ TWO: 50,
10791
+ /**
10792
+ * THREE
10793
+ */
10794
+ THREE: 51,
10795
+ /**
10796
+ * FOUR
10797
+ */
10798
+ FOUR: 52,
10799
+ /**
10800
+ * FIVE
10801
+ */
10802
+ FIVE: 53,
10803
+ /**
10804
+ * SIX
10805
+ */
10806
+ SIX: 54,
10807
+ /**
10808
+ * SEVEN
10809
+ */
10810
+ SEVEN: 55,
10811
+ /**
10812
+ * EIGHT
10813
+ */
10814
+ EIGHT: 56,
10815
+ /**
10816
+ * NINE
10817
+ */
10818
+ NINE: 57,
10819
+ /**
10820
+ * QUESTION_MARK
10821
+ */
10822
+ QUESTION_MARK: 63, // needs localization
10823
+ /**
10824
+ * A
10825
+ */
10826
+ A: 65,
10827
+ /**
10828
+ * B
10829
+ */
10830
+ B: 66,
10831
+ /**
10832
+ * C
10833
+ */
10834
+ C: 67,
10835
+ /**
10836
+ * D
10837
+ */
10838
+ D: 68,
10839
+ /**
10840
+ * E
10841
+ */
10842
+ E: 69,
10843
+ /**
10844
+ * F
10845
+ */
10846
+ F: 70,
10847
+ /**
10848
+ * G
10849
+ */
10850
+ G: 71,
10851
+ /**
10852
+ * H
10853
+ */
10854
+ H: 72,
10855
+ /**
10856
+ * I
10857
+ */
10858
+ I: 73,
10859
+ /**
10860
+ * J
10861
+ */
10862
+ J: 74,
10863
+ /**
10864
+ * K
10865
+ */
10866
+ K: 75,
10867
+ /**
10868
+ * L
10869
+ */
10870
+ L: 76,
10871
+ /**
10872
+ * M
10873
+ */
10874
+ M: 77,
10875
+ /**
10876
+ * N
10877
+ */
10878
+ N: 78,
10879
+ /**
10880
+ * O
10881
+ */
10882
+ O: 79,
10883
+ /**
10884
+ * P
10885
+ */
10886
+ P: 80,
10887
+ /**
10888
+ * Q
10889
+ */
10890
+ Q: 81,
10891
+ /**
10892
+ * R
10893
+ */
10894
+ R: 82,
10895
+ /**
10896
+ * S
10897
+ */
10898
+ S: 83,
10899
+ /**
10900
+ * T
10901
+ */
10902
+ T: 84,
10903
+ /**
10904
+ * U
10905
+ */
10906
+ U: 85,
10907
+ /**
10908
+ * V
10909
+ */
10910
+ V: 86,
10911
+ /**
10912
+ * W
10913
+ */
10914
+ W: 87,
10915
+ /**
10916
+ * X
10917
+ */
10918
+ X: 88,
10919
+ /**
10920
+ * Y
10921
+ */
10922
+ Y: 89,
10923
+ /**
10924
+ * Z
10925
+ */
10926
+ Z: 90,
10927
+ /**
10928
+ * META
10929
+ */
10930
+ META: 91, // WIN_KEY_LEFT
10931
+ /**
10932
+ * WIN_KEY_RIGHT
10933
+ */
10934
+ WIN_KEY_RIGHT: 92,
10935
+ /**
10936
+ * CONTEXT_MENU
10937
+ */
10938
+ CONTEXT_MENU: 93,
10939
+ /**
10940
+ * NUM_ZERO
10941
+ */
10942
+ NUM_ZERO: 96,
10943
+ /**
10944
+ * NUM_ONE
10945
+ */
10946
+ NUM_ONE: 97,
10947
+ /**
10948
+ * NUM_TWO
10949
+ */
10950
+ NUM_TWO: 98,
10951
+ /**
10952
+ * NUM_THREE
10953
+ */
10954
+ NUM_THREE: 99,
10955
+ /**
10956
+ * NUM_FOUR
10957
+ */
10958
+ NUM_FOUR: 100,
10959
+ /**
10960
+ * NUM_FIVE
10961
+ */
10962
+ NUM_FIVE: 101,
10963
+ /**
10964
+ * NUM_SIX
10965
+ */
10966
+ NUM_SIX: 102,
10967
+ /**
10968
+ * NUM_SEVEN
10969
+ */
10970
+ NUM_SEVEN: 103,
10971
+ /**
10972
+ * NUM_EIGHT
10973
+ */
10974
+ NUM_EIGHT: 104,
10975
+ /**
10976
+ * NUM_NINE
10977
+ */
10978
+ NUM_NINE: 105,
10979
+ /**
10980
+ * NUM_MULTIPLY
10981
+ */
10982
+ NUM_MULTIPLY: 106,
10983
+ /**
10984
+ * NUM_PLUS
10985
+ */
10986
+ NUM_PLUS: 107,
10987
+ /**
10988
+ * NUM_MINUS
10989
+ */
10990
+ NUM_MINUS: 109,
10991
+ /**
10992
+ * NUM_PERIOD
10993
+ */
10994
+ NUM_PERIOD: 110,
10995
+ /**
10996
+ * NUM_DIVISION
10997
+ */
10998
+ NUM_DIVISION: 111,
10999
+ /**
11000
+ * F1
11001
+ */
11002
+ F1: 112,
11003
+ /**
11004
+ * F2
11005
+ */
11006
+ F2: 113,
11007
+ /**
11008
+ * F3
11009
+ */
11010
+ F3: 114,
11011
+ /**
11012
+ * F4
11013
+ */
11014
+ F4: 115,
11015
+ /**
11016
+ * F5
11017
+ */
11018
+ F5: 116,
11019
+ /**
11020
+ * F6
11021
+ */
11022
+ F6: 117,
11023
+ /**
11024
+ * F7
11025
+ */
11026
+ F7: 118,
11027
+ /**
11028
+ * F8
11029
+ */
11030
+ F8: 119,
11031
+ /**
11032
+ * F9
11033
+ */
11034
+ F9: 120,
11035
+ /**
11036
+ * F10
11037
+ */
11038
+ F10: 121,
11039
+ /**
11040
+ * F11
11041
+ */
11042
+ F11: 122,
11043
+ /**
11044
+ * F12
11045
+ */
11046
+ F12: 123,
11047
+ /**
11048
+ * NUMLOCK
11049
+ */
11050
+ NUMLOCK: 144,
11051
+ /**
11052
+ * SEMICOLON
11053
+ */
11054
+ SEMICOLON: 186, // needs localization
11055
+ /**
11056
+ * DASH
11057
+ */
11058
+ DASH: 189, // needs localization
11059
+ /**
11060
+ * EQUALS
11061
+ */
11062
+ EQUALS: 187, // needs localization
11063
+ /**
11064
+ * COMMA
11065
+ */
11066
+ COMMA: 188, // needs localization
11067
+ /**
11068
+ * PERIOD
11069
+ */
11070
+ PERIOD: 190, // needs localization
11071
+ /**
11072
+ * SLASH
11073
+ */
11074
+ SLASH: 191, // needs localization
11075
+ /**
11076
+ * APOSTROPHE
11077
+ */
11078
+ APOSTROPHE: 192, // needs localization
11079
+ /**
11080
+ * SINGLE_QUOTE
11081
+ */
11082
+ SINGLE_QUOTE: 222, // needs localization
11083
+ /**
11084
+ * OPEN_SQUARE_BRACKET
11085
+ */
11086
+ OPEN_SQUARE_BRACKET: 219, // needs localization
11087
+ /**
11088
+ * BACKSLASH
11089
+ */
11090
+ BACKSLASH: 220, // needs localization
11091
+ /**
11092
+ * CLOSE_SQUARE_BRACKET
11093
+ */
11094
+ CLOSE_SQUARE_BRACKET: 221, // needs localization
11095
+ /**
11096
+ * WIN_KEY
11097
+ */
11098
+ WIN_KEY: 224,
11099
+ /**
11100
+ * MAC_FF_META
11101
+ */
11102
+ MAC_FF_META: 224, // Firefox (Gecko) fires this for the meta key instead of 91
11103
+ /**
11104
+ * WIN_IME
11105
+ */
11106
+ WIN_IME: 229
11107
+ };
11108
+
11109
+ /*
11110
+ whether text and modified key is entered at the same time.
11111
+ */
11112
+ KeyCode.isTextModifyingKeyEvent = function isTextModifyingKeyEvent(e) {
11113
+ var keyCode = e.keyCode;
11114
+ if (e.altKey && !e.ctrlKey || e.metaKey ||
11115
+ // Function keys don't generate text
11116
+ keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {
11117
+ return false;
11118
+ }
11119
+
11120
+ // The following keys are quite harmless, even in combination with
11121
+ // CTRL, ALT or SHIFT.
11122
+ switch (keyCode) {
11123
+ case KeyCode.ALT:
11124
+ case KeyCode.CAPS_LOCK:
11125
+ case KeyCode.CONTEXT_MENU:
11126
+ case KeyCode.CTRL:
11127
+ case KeyCode.DOWN:
11128
+ case KeyCode.END:
11129
+ case KeyCode.ESC:
11130
+ case KeyCode.HOME:
11131
+ case KeyCode.INSERT:
11132
+ case KeyCode.LEFT:
11133
+ case KeyCode.MAC_FF_META:
11134
+ case KeyCode.META:
11135
+ case KeyCode.NUMLOCK:
11136
+ case KeyCode.NUM_CENTER:
11137
+ case KeyCode.PAGE_DOWN:
11138
+ case KeyCode.PAGE_UP:
11139
+ case KeyCode.PAUSE:
11140
+ case KeyCode.PRINT_SCREEN:
11141
+ case KeyCode.RIGHT:
11142
+ case KeyCode.SHIFT:
11143
+ case KeyCode.UP:
11144
+ case KeyCode.WIN_KEY:
11145
+ case KeyCode.WIN_KEY_RIGHT:
11146
+ return false;
11147
+ default:
11148
+ return true;
11149
+ }
11150
+ };
11151
+
11152
+ /*
11153
+ whether character is entered.
11154
+ */
11155
+ KeyCode.isCharacterKey = function isCharacterKey(keyCode) {
11156
+ if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {
11157
+ return true;
11158
+ }
11159
+
11160
+ if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {
11161
+ return true;
11162
+ }
11163
+
11164
+ if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {
11165
+ return true;
11166
+ }
11167
+
11168
+ // Safari sends zero key code for non-latin characters.
11169
+ if (window.navigation.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {
11170
+ return true;
11171
+ }
11172
+
11173
+ switch (keyCode) {
11174
+ case KeyCode.SPACE:
11175
+ case KeyCode.QUESTION_MARK:
11176
+ case KeyCode.NUM_PLUS:
11177
+ case KeyCode.NUM_MINUS:
11178
+ case KeyCode.NUM_PERIOD:
11179
+ case KeyCode.NUM_DIVISION:
11180
+ case KeyCode.SEMICOLON:
11181
+ case KeyCode.DASH:
11182
+ case KeyCode.EQUALS:
11183
+ case KeyCode.COMMA:
11184
+ case KeyCode.PERIOD:
11185
+ case KeyCode.SLASH:
11186
+ case KeyCode.APOSTROPHE:
11187
+ case KeyCode.SINGLE_QUOTE:
11188
+ case KeyCode.OPEN_SQUARE_BRACKET:
11189
+ case KeyCode.BACKSLASH:
11190
+ case KeyCode.CLOSE_SQUARE_BRACKET:
11191
+ return true;
11192
+ default:
11193
+ return false;
11194
+ }
11195
+ };
11196
+
11197
+ /* harmony default export */ __webpack_exports__["a"] = (KeyCode);
11198
+
11199
+ /***/ }),
11200
+ /* 194 */
11201
+ /***/ (function(module, exports, __webpack_require__) {
11202
+
11203
+ "use strict";
11204
+
11205
+
11206
+ Object.defineProperty(exports, "__esModule", {
11207
+ value: true
11208
+ });
11209
+ exports.cf7sDuplicateRules = exports.cf7sSurroundingRules = exports.cf7sDropRules = exports.cf7sRequest = exports.mergeDefault = exports.randomizeName = exports.cf7sItems = undefined;
11210
+
11211
+ var _cf7sItems = __webpack_require__(301);
11212
+
11213
+ var _api = __webpack_require__(800);
11214
+
11215
+ var _functions = __webpack_require__(302);
11216
+
11217
+ var _cf7sRules = __webpack_require__(802);
11218
+
11219
+ // Simplify import of utils
11220
+ exports.cf7sItems = _cf7sItems.cf7sItems;
11221
+ exports.randomizeName = _functions.randomizeName;
11222
+ exports.mergeDefault = _functions.mergeDefault;
11223
+ exports.cf7sRequest = _api.cf7sRequest;
11224
+ exports.cf7sDropRules = _cf7sRules.cf7sDropRules;
11225
+ exports.cf7sSurroundingRules = _cf7sRules.cf7sSurroundingRules;
11226
+ exports.cf7sDuplicateRules = _cf7sRules.cf7sDuplicateRules;
11227
+
11228
+ /***/ }),
11229
+ /* 195 */
11230
+ /***/ (function(module, exports, __webpack_require__) {
11231
+
11232
+ module.exports = !__webpack_require__(14) && !__webpack_require__(5)(function () {
11233
+ return Object.defineProperty(__webpack_require__(129)('div'), 'a', { get: function () { return 7; } }).a != 7;
11234
+ });
11235
+
11236
+
11237
+ /***/ }),
11238
+ /* 196 */
11239
+ /***/ (function(module, exports, __webpack_require__) {
11240
+
11241
+ exports.f = __webpack_require__(9);
11242
+
11243
+
11244
+ /***/ }),
11245
+ /* 197 */
11246
+ /***/ (function(module, exports, __webpack_require__) {
11247
+
11248
+ var has = __webpack_require__(24);
11249
+ var toIObject = __webpack_require__(29);
11250
+ var arrayIndexOf = __webpack_require__(98)(false);
11251
+ var IE_PROTO = __webpack_require__(131)('IE_PROTO');
11252
+
11253
+ module.exports = function (object, names) {
11254
+ var O = toIObject(object);
11255
+ var i = 0;
11256
+ var result = [];
11257
+ var key;
11258
+ for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
11259
+ // Don't enum bug & hidden keys
11260
+ while (names.length > i) if (has(O, key = names[i++])) {
11261
+ ~arrayIndexOf(result, key) || result.push(key);
11262
+ }
11263
+ return result;
11264
+ };
11265
+
11266
+
11267
+ /***/ }),
11268
+ /* 198 */
11269
+ /***/ (function(module, exports, __webpack_require__) {
11270
+
11271
+ var dP = __webpack_require__(15);
11272
+ var anObject = __webpack_require__(3);
11273
+ var getKeys = __webpack_require__(56);
11274
+
11275
+ module.exports = __webpack_require__(14) ? Object.defineProperties : function defineProperties(O, Properties) {
11276
+ anObject(O);
11277
+ var keys = getKeys(Properties);
11278
+ var length = keys.length;
11279
+ var i = 0;
11280
+ var P;
11281
+ while (length > i) dP.f(O, P = keys[i++], Properties[P]);
11282
+ return O;
11283
+ };
11284
+
11285
+
11286
+ /***/ }),
11287
+ /* 199 */
11288
+ /***/ (function(module, exports, __webpack_require__) {
11289
+
11290
+ // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
11291
+ var toIObject = __webpack_require__(29);
11292
+ var gOPN = __webpack_require__(59).f;
11293
+ var toString = {}.toString;
11294
+
11295
+ var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
11296
+ ? Object.getOwnPropertyNames(window) : [];
11297
+
11298
+ var getWindowNames = function (it) {
11299
+ try {
11300
+ return gOPN(it);
11301
+ } catch (e) {
11302
+ return windowNames.slice();
11303
+ }
11304
+ };
11305
+
11306
+ module.exports.f = function getOwnPropertyNames(it) {
11307
+ return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
11308
+ };
11309
+
11310
+
11311
+ /***/ }),
11312
+ /* 200 */
11313
+ /***/ (function(module, exports, __webpack_require__) {
11314
+
11315
+ "use strict";
11316
+
11317
+ // 19.1.2.1 Object.assign(target, source, ...)
11318
+ var getKeys = __webpack_require__(56);
11319
+ var gOPS = __webpack_require__(99);
11320
+ var pIE = __webpack_require__(85);
11321
+ var toObject = __webpack_require__(18);
11322
+ var IObject = __webpack_require__(84);
11323
+ var $assign = Object.assign;
11324
+
11325
+ // should work with symbols and should have deterministic property order (V8 bug)
11326
+ module.exports = !$assign || __webpack_require__(5)(function () {
11327
+ var A = {};
11328
+ var B = {};
11329
+ // eslint-disable-next-line no-undef
11330
+ var S = Symbol();
11331
+ var K = 'abcdefghijklmnopqrst';
11332
+ A[S] = 7;
11333
+ K.split('').forEach(function (k) { B[k] = k; });
11334
+ return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
11335
+ }) ? function assign(target, source) { // eslint-disable-line no-unused-vars
11336
+ var T = toObject(target);
11337
+ var aLen = arguments.length;
11338
+ var index = 1;
11339
+ var getSymbols = gOPS.f;
11340
+ var isEnum = pIE.f;
11341
+ while (aLen > index) {
11342
+ var S = IObject(arguments[index++]);
11343
+ var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
11344
+ var length = keys.length;
11345
+ var j = 0;
11346
+ var key;
11347
+ while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];
11348
+ } return T;
11349
+ } : $assign;
11350
+
11351
+
11352
+ /***/ }),
11353
+ /* 201 */
11354
+ /***/ (function(module, exports, __webpack_require__) {
11355
+
11356
+ "use strict";
11357
+
11358
+ var aFunction = __webpack_require__(20);
11359
+ var isObject = __webpack_require__(6);
11360
+ var invoke = __webpack_require__(202);
11361
+ var arraySlice = [].slice;
11362
+ var factories = {};
11363
+
11364
+ var construct = function (F, len, args) {
11365
+ if (!(len in factories)) {
11366
+ for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';
11367
+ // eslint-disable-next-line no-new-func
11368
+ factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
11369
+ } return factories[len](F, args);
11370
+ };
11371
+
11372
+ module.exports = Function.bind || function bind(that /* , ...args */) {
11373
+ var fn = aFunction(this);
11374
+ var partArgs = arraySlice.call(arguments, 1);
11375
+ var bound = function (/* args... */) {
11376
+ var args = partArgs.concat(arraySlice.call(arguments));
11377
+ return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
11378
+ };
11379
+ if (isObject(fn.prototype)) bound.prototype = fn.prototype;
11380
+ return bound;
11381
+ };
11382
+
11383
+
11384
+ /***/ }),
11385
+ /* 202 */
11386
+ /***/ (function(module, exports) {
11387
+
11388
+ // fast apply, http://jsperf.lnkit.com/fast-apply/5
11389
+ module.exports = function (fn, args, that) {
11390
+ var un = that === undefined;
11391
+ switch (args.length) {
11392
+ case 0: return un ? fn()
11393
+ : fn.call(that);
11394
+ case 1: return un ? fn(args[0])
11395
+ : fn.call(that, args[0]);
11396
+ case 2: return un ? fn(args[0], args[1])
11397
+ : fn.call(that, args[0], args[1]);
11398
+ case 3: return un ? fn(args[0], args[1], args[2])
11399
+ : fn.call(that, args[0], args[1], args[2]);
11400
+ case 4: return un ? fn(args[0], args[1], args[2], args[3])
11401
+ : fn.call(that, args[0], args[1], args[2], args[3]);
11402
+ } return fn.apply(that, args);
11403
+ };
11404
+
11405
+
11406
+ /***/ }),
11407
+ /* 203 */
11408
+ /***/ (function(module, exports, __webpack_require__) {
11409
+
11410
+ var $parseInt = __webpack_require__(4).parseInt;
11411
+ var $trim = __webpack_require__(73).trim;
11412
+ var ws = __webpack_require__(135);
11413
+ var hex = /^[-+]?0[xX]/;
11414
+
11415
+ module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {
11416
+ var string = $trim(String(str), 3);
11417
+ return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
11418
+ } : $parseInt;
11419
+
11420
+
11421
+ /***/ }),
11422
+ /* 204 */
11423
+ /***/ (function(module, exports, __webpack_require__) {
11424
+
11425
+ var $parseFloat = __webpack_require__(4).parseFloat;
11426
+ var $trim = __webpack_require__(73).trim;
11427
+
11428
+ module.exports = 1 / $parseFloat(__webpack_require__(135) + '-0') !== -Infinity ? function parseFloat(str) {
11429
+ var string = $trim(String(str), 3);
11430
+ var result = $parseFloat(string);
11431
+ return result === 0 && string.charAt(0) == '-' ? -0 : result;
11432
+ } : $parseFloat;
11433
+
11434
+
11435
+ /***/ }),
11436
+ /* 205 */
11437
+ /***/ (function(module, exports, __webpack_require__) {
11438
+
11439
+ var cof = __webpack_require__(36);
11440
+ module.exports = function (it, msg) {
11441
+ if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);
11442
+ return +it;
11443
+ };
11444
+
11445
+
11446
+ /***/ }),
11447
+ /* 206 */
11448
+ /***/ (function(module, exports, __webpack_require__) {
11449
+
11450
+ // 20.1.2.3 Number.isInteger(number)
11451
+ var isObject = __webpack_require__(6);
11452
+ var floor = Math.floor;
11453
+ module.exports = function isInteger(it) {
11454
+ return !isObject(it) && isFinite(it) && floor(it) === it;
11455
+ };
11456
+
11457
+
11458
+ /***/ }),
11459
+ /* 207 */
11460
+ /***/ (function(module, exports) {
11461
+
11462
+ // 20.2.2.20 Math.log1p(x)
11463
+ module.exports = Math.log1p || function log1p(x) {
11464
+ return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);
11465
+ };
11466
+
11467
+
11468
+ /***/ }),
11469
+ /* 208 */
11470
+ /***/ (function(module, exports, __webpack_require__) {
11471
+
11472
+ // 20.2.2.16 Math.fround(x)
11473
+ var sign = __webpack_require__(138);
11474
+ var pow = Math.pow;
11475
+ var EPSILON = pow(2, -52);
11476
+ var EPSILON32 = pow(2, -23);
11477
+ var MAX32 = pow(2, 127) * (2 - EPSILON32);
11478
+ var MIN32 = pow(2, -126);
11479
+
11480
+ var roundTiesToEven = function (n) {
11481
+ return n + 1 / EPSILON - 1 / EPSILON;
11482
+ };
11483
+
11484
+ module.exports = Math.fround || function fround(x) {
11485
+ var $abs = Math.abs(x);
11486
+ var $sign = sign(x);
11487
+ var a, result;
11488
+ if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
11489
+ a = (1 + EPSILON32 / EPSILON) * $abs;
11490
+ result = a - (a - $abs);
11491
+ // eslint-disable-next-line no-self-compare
11492
+ if (result > MAX32 || result != result) return $sign * Infinity;
11493
+ return $sign * result;
11494
+ };
11495
+
11496
+
11497
+ /***/ }),
11498
+ /* 209 */
11499
+ /***/ (function(module, exports, __webpack_require__) {
11500
+
11501
+ // call something on iterator step with safe closing on error
11502
+ var anObject = __webpack_require__(3);
11503
+ module.exports = function (iterator, fn, value, entries) {
11504
+ try {
11505
+ return entries ? fn(anObject(value)[0], value[1]) : fn(value);
11506
+ // 7.4.6 IteratorClose(iterator, completion)
11507
+ } catch (e) {
11508
+ var ret = iterator['return'];
11509
+ if (ret !== undefined) anObject(ret.call(iterator));
11510
+ throw e;
11511
+ }
11512
+ };
11513
+
11514
+
11515
+ /***/ }),
11516
+ /* 210 */
11517
+ /***/ (function(module, exports, __webpack_require__) {
11518
+
11519
+ var aFunction = __webpack_require__(20);
11520
+ var toObject = __webpack_require__(18);
11521
+ var IObject = __webpack_require__(84);
11522
+ var toLength = __webpack_require__(16);
11523
+
11524
+ module.exports = function (that, callbackfn, aLen, memo, isRight) {
11525
+ aFunction(callbackfn);
11526
+ var O = toObject(that);
11527
+ var self = IObject(O);
11528
+ var length = toLength(O.length);
11529
+ var index = isRight ? length - 1 : 0;
11530
+ var i = isRight ? -1 : 1;
11531
+ if (aLen < 2) for (;;) {
11532
+ if (index in self) {
11533
+ memo = self[index];
11534
+ index += i;
11535
+ break;
11536
+ }
11537
+ index += i;
11538
+ if (isRight ? index < 0 : length <= index) {
11539
+ throw TypeError('Reduce of empty array with no initial value');
11540
+ }
11541
+ }
11542
+ for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {
11543
+ memo = callbackfn(memo, self[index], index, O);
11544
+ }
11545
+ return memo;
11546
+ };
11547
+
11548
+
11549
+ /***/ }),
11550
+ /* 211 */
11551
+ /***/ (function(module, exports, __webpack_require__) {
11552
+
11553
+ "use strict";
11554
+ // 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
11555
+
11556
+ var toObject = __webpack_require__(18);
11557
+ var toAbsoluteIndex = __webpack_require__(57);
11558
+ var toLength = __webpack_require__(16);
11559
+
11560
+ module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {
11561
+ var O = toObject(this);
11562
+ var len = toLength(O.length);
11563
+ var to = toAbsoluteIndex(target, len);
11564
+ var from = toAbsoluteIndex(start, len);
11565
+ var end = arguments.length > 2 ? arguments[2] : undefined;
11566
+ var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);
11567
+ var inc = 1;
11568
+ if (from < to && to < from + count) {
11569
+ inc = -1;
11570
+ from += count - 1;
11571
+ to += count - 1;
11572
+ }
11573
+ while (count-- > 0) {
11574
+ if (from in O) O[to] = O[from];
11575
+ else delete O[to];
11576
+ to += inc;
11577
+ from += inc;
11578
+ } return O;
11579
+ };
11580
+
11581
+
11582
+ /***/ }),
11583
+ /* 212 */
11584
+ /***/ (function(module, exports) {
11585
+
11586
+ module.exports = function (done, value) {
11587
+ return { value: value, done: !!done };
11588
+ };
11589
+
11590
+
11591
+ /***/ }),
11592
+ /* 213 */
11593
+ /***/ (function(module, exports, __webpack_require__) {
11594
+
11595
+ // 21.2.5.3 get RegExp.prototype.flags()
11596
+ if (__webpack_require__(14) && /./g.flags != 'g') __webpack_require__(15).f(RegExp.prototype, 'flags', {
11597
+ configurable: true,
11598
+ get: __webpack_require__(103)
11599
+ });
11600
+
11601
+
11602
+ /***/ }),
11603
+ /* 214 */
11604
+ /***/ (function(module, exports) {
11605
+
11606
+ module.exports = function (exec) {
11607
+ try {
11608
+ return { e: false, v: exec() };
11609
+ } catch (e) {
11610
+ return { e: true, v: e };
11611
+ }
11612
+ };
11613
+
11614
+
11615
+ /***/ }),
11616
+ /* 215 */
11617
+ /***/ (function(module, exports, __webpack_require__) {
11618
+
11619
+ var anObject = __webpack_require__(3);
11620
+ var isObject = __webpack_require__(6);
11621
+ var newPromiseCapability = __webpack_require__(153);
11622
+
11623
+ module.exports = function (C, x) {
11624
+ anObject(C);
11625
+ if (isObject(x) && x.constructor === C) return x;
11626
+ var promiseCapability = newPromiseCapability.f(C);
11627
+ var resolve = promiseCapability.resolve;
11628
+ resolve(x);
11629
+ return promiseCapability.promise;
11630
+ };
11631
+
11632
+
11633
+ /***/ }),
11634
+ /* 216 */
11635
+ /***/ (function(module, exports, __webpack_require__) {
11636
+
11637
+ "use strict";
11638
+
11639
+ var strong = __webpack_require__(217);
11640
+ var validate = __webpack_require__(75);
11641
+ var MAP = 'Map';
11642
+
11643
+ // 23.1 Map Objects
11644
+ module.exports = __webpack_require__(106)(MAP, function (get) {
11645
+ return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
11646
+ }, {
11647
+ // 23.1.3.6 Map.prototype.get(key)
11648
+ get: function get(key) {
11649
+ var entry = strong.getEntry(validate(this, MAP), key);
11650
+ return entry && entry.v;
11651
+ },
11652
+ // 23.1.3.9 Map.prototype.set(key, value)
11653
+ set: function set(key, value) {
11654
+ return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);
11655
+ }
11656
+ }, strong, true);
11657
+
11658
+
11659
+ /***/ }),
11660
+ /* 217 */
11661
+ /***/ (function(module, exports, __webpack_require__) {
11662
+
11663
+ "use strict";
11664
+
11665
+ var dP = __webpack_require__(15).f;
11666
+ var create = __webpack_require__(58);
11667
+ var redefineAll = __webpack_require__(63);
11668
+ var ctx = __webpack_require__(35);
11669
+ var anInstance = __webpack_require__(61);
11670
+ var forOf = __webpack_require__(62);
11671
+ var $iterDefine = __webpack_require__(141);
11672
+ var step = __webpack_require__(212);
11673
+ var setSpecies = __webpack_require__(60);
11674
+ var DESCRIPTORS = __webpack_require__(14);
11675
+ var fastKey = __webpack_require__(48).fastKey;
11676
+ var validate = __webpack_require__(75);
11677
+ var SIZE = DESCRIPTORS ? '_s' : 'size';
11678
+
11679
+ var getEntry = function (that, key) {
11680
+ // fast case
11681
+ var index = fastKey(key);
11682
+ var entry;
11683
+ if (index !== 'F') return that._i[index];
11684
+ // frozen object case
11685
+ for (entry = that._f; entry; entry = entry.n) {
11686
+ if (entry.k == key) return entry;
11687
+ }
11688
+ };
11689
+
11690
+ module.exports = {
11691
+ getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
11692
+ var C = wrapper(function (that, iterable) {
11693
+ anInstance(that, C, NAME, '_i');
11694
+ that._t = NAME; // collection type
11695
+ that._i = create(null); // index
11696
+ that._f = undefined; // first entry
11697
+ that._l = undefined; // last entry
11698
+ that[SIZE] = 0; // size
11699
+ if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
11700
+ });
11701
+ redefineAll(C.prototype, {
11702
+ // 23.1.3.1 Map.prototype.clear()
11703
+ // 23.2.3.2 Set.prototype.clear()
11704
+ clear: function clear() {
11705
+ for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {
11706
+ entry.r = true;
11707
+ if (entry.p) entry.p = entry.p.n = undefined;
11708
+ delete data[entry.i];
11709
+ }
11710
+ that._f = that._l = undefined;
11711
+ that[SIZE] = 0;
11712
+ },
11713
+ // 23.1.3.3 Map.prototype.delete(key)
11714
+ // 23.2.3.4 Set.prototype.delete(value)
11715
+ 'delete': function (key) {
11716
+ var that = validate(this, NAME);
11717
+ var entry = getEntry(that, key);
11718
+ if (entry) {
11719
+ var next = entry.n;
11720
+ var prev = entry.p;
11721
+ delete that._i[entry.i];
11722
+ entry.r = true;
11723
+ if (prev) prev.n = next;
11724
+ if (next) next.p = prev;
11725
+ if (that._f == entry) that._f = next;
11726
+ if (that._l == entry) that._l = prev;
11727
+ that[SIZE]--;
11728
+ } return !!entry;
11729
+ },
11730
+ // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
11731
+ // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
11732
+ forEach: function forEach(callbackfn /* , that = undefined */) {
11733
+ validate(this, NAME);
11734
+ var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
11735
+ var entry;
11736
+ while (entry = entry ? entry.n : this._f) {
11737
+ f(entry.v, entry.k, this);
11738
+ // revert to the last existing entry
11739
+ while (entry && entry.r) entry = entry.p;
11740
+ }
11741
+ },
11742
+ // 23.1.3.7 Map.prototype.has(key)
11743
+ // 23.2.3.7 Set.prototype.has(value)
11744
+ has: function has(key) {
11745
+ return !!getEntry(validate(this, NAME), key);
11746
+ }
11747
+ });
11748
+ if (DESCRIPTORS) dP(C.prototype, 'size', {
11749
+ get: function () {
11750
+ return validate(this, NAME)[SIZE];
11751
+ }
11752
+ });
11753
+ return C;
11754
+ },
11755
+ def: function (that, key, value) {
11756
+ var entry = getEntry(that, key);
11757
+ var prev, index;
11758
+ // change existing entry
11759
+ if (entry) {
11760
+ entry.v = value;
11761
+ // create new entry
11762
+ } else {
11763
+ that._l = entry = {
11764
+ i: index = fastKey(key, true), // <- index
11765
+ k: key, // <- key
11766
+ v: value, // <- value
11767
+ p: prev = that._l, // <- previous entry
11768
+ n: undefined, // <- next entry
11769
+ r: false // <- removed
11770
+ };
11771
+ if (!that._f) that._f = entry;
11772
+ if (prev) prev.n = entry;
11773
+ that[SIZE]++;
11774
+ // add to index
11775
+ if (index !== 'F') that._i[index] = entry;
11776
+ } return that;
11777
+ },
11778
+ getEntry: getEntry,
11779
+ setStrong: function (C, NAME, IS_MAP) {
11780
+ // add .keys, .values, .entries, [@@iterator]
11781
+ // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
11782
+ $iterDefine(C, NAME, function (iterated, kind) {
11783
+ this._t = validate(iterated, NAME); // target
11784
+ this._k = kind; // kind
11785
+ this._l = undefined; // previous
11786
+ }, function () {
11787
+ var that = this;
11788
+ var kind = that._k;
11789
+ var entry = that._l;
11790
+ // revert to the last existing entry
11791
+ while (entry && entry.r) entry = entry.p;
11792
+ // get next entry
11793
+ if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {
11794
+ // or finish the iteration
11795
+ that._t = undefined;
11796
+ return step(1);
11797
+ }
11798
+ // return step by kind
11799
+ if (kind == 'keys') return step(0, entry.k);
11800
+ if (kind == 'values') return step(0, entry.v);
11801
+ return step(0, [entry.k, entry.v]);
11802
+ }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);
11803
+
11804
+ // add [@@species], 23.1.2.2, 23.2.2.2
11805
+ setSpecies(NAME);
11806
+ }
11807
+ };
11808
+
11809
+
11810
+ /***/ }),
11811
+ /* 218 */
11812
+ /***/ (function(module, exports, __webpack_require__) {
11813
+
11814
+ "use strict";
11815
+
11816
+ var strong = __webpack_require__(217);
11817
+ var validate = __webpack_require__(75);
11818
+ var SET = 'Set';
11819
+
11820
+ // 23.2 Set Objects
11821
+ module.exports = __webpack_require__(106)(SET, function (get) {
11822
+ return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
11823
+ }, {
11824
+ // 23.2.3.1 Set.prototype.add(value)
11825
+ add: function add(value) {
11826
+ return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);
11827
+ }
11828
+ }, strong);
11829
+
11830
+
11831
+ /***/ }),
11832
+ /* 219 */
11833
+ /***/ (function(module, exports, __webpack_require__) {
11834
+
11835
+ "use strict";
11836
+
11837
+ var each = __webpack_require__(43)(0);
11838
+ var redefine = __webpack_require__(26);
11839
+ var meta = __webpack_require__(48);
11840
+ var assign = __webpack_require__(200);
11841
+ var weak = __webpack_require__(220);
11842
+ var isObject = __webpack_require__(6);
11843
+ var fails = __webpack_require__(5);
11844
+ var validate = __webpack_require__(75);
11845
+ var WEAK_MAP = 'WeakMap';
11846
+ var getWeak = meta.getWeak;
11847
+ var isExtensible = Object.isExtensible;
11848
+ var uncaughtFrozenStore = weak.ufstore;
11849
+ var tmp = {};
11850
+ var InternalMap;
11851
+
11852
+ var wrapper = function (get) {
11853
+ return function WeakMap() {
11854
+ return get(this, arguments.length > 0 ? arguments[0] : undefined);
11855
+ };
11856
+ };
11857
+
11858
+ var methods = {
11859
+ // 23.3.3.3 WeakMap.prototype.get(key)
11860
+ get: function get(key) {
11861
+ if (isObject(key)) {
11862
+ var data = getWeak(key);
11863
+ if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
11864
+ return data ? data[this._i] : undefined;
11865
+ }
11866
+ },
11867
+ // 23.3.3.5 WeakMap.prototype.set(key, value)
11868
+ set: function set(key, value) {
11869
+ return weak.def(validate(this, WEAK_MAP), key, value);
11870
+ }
11871
+ };
11872
+
11873
+ // 23.3 WeakMap Objects
11874
+ var $WeakMap = module.exports = __webpack_require__(106)(WEAK_MAP, wrapper, methods, weak, true, true);
11875
+
11876
+ // IE11 WeakMap frozen keys fix
11877
+ if (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {
11878
+ InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
11879
+ assign(InternalMap.prototype, methods);
11880
+ meta.NEED = true;
11881
+ each(['delete', 'has', 'get', 'set'], function (key) {
11882
+ var proto = $WeakMap.prototype;
11883
+ var method = proto[key];
11884
+ redefine(proto, key, function (a, b) {
11885
+ // store frozen objects on internal weakmap shim
11886
+ if (isObject(a) && !isExtensible(a)) {
11887
+ if (!this._f) this._f = new InternalMap();
11888
+ var result = this._f[key](a, b);
11889
+ return key == 'set' ? this : result;
11890
+ // store all the rest on native weakmap
11891
+ } return method.call(this, a, b);
11892
+ });
11893
+ });
11894
+ }
11895
+
11896
+
11897
+ /***/ }),
11898
+ /* 220 */
11899
+ /***/ (function(module, exports, __webpack_require__) {
11900
+
11901
+ "use strict";
11902
+
11903
+ var redefineAll = __webpack_require__(63);
11904
+ var getWeak = __webpack_require__(48).getWeak;
11905
+ var anObject = __webpack_require__(3);
11906
+ var isObject = __webpack_require__(6);
11907
+ var anInstance = __webpack_require__(61);
11908
+ var forOf = __webpack_require__(62);
11909
+ var createArrayMethod = __webpack_require__(43);
11910
+ var $has = __webpack_require__(24);
11911
+ var validate = __webpack_require__(75);
11912
+ var arrayFind = createArrayMethod(5);
11913
+ var arrayFindIndex = createArrayMethod(6);
11914
+ var id = 0;
11915
+
11916
+ // fallback for uncaught frozen keys
11917
+ var uncaughtFrozenStore = function (that) {
11918
+ return that._l || (that._l = new UncaughtFrozenStore());
11919
+ };
11920
+ var UncaughtFrozenStore = function () {
11921
+ this.a = [];
11922
+ };
11923
+ var findUncaughtFrozen = function (store, key) {
11924
+ return arrayFind(store.a, function (it) {
11925
+ return it[0] === key;
11926
+ });
11927
+ };
11928
+ UncaughtFrozenStore.prototype = {
11929
+ get: function (key) {
11930
+ var entry = findUncaughtFrozen(this, key);
11931
+ if (entry) return entry[1];
11932
+ },
11933
+ has: function (key) {
11934
+ return !!findUncaughtFrozen(this, key);
11935
+ },
11936
+ set: function (key, value) {
11937
+ var entry = findUncaughtFrozen(this, key);
11938
+ if (entry) entry[1] = value;
11939
+ else this.a.push([key, value]);
11940
+ },
11941
+ 'delete': function (key) {
11942
+ var index = arrayFindIndex(this.a, function (it) {
11943
+ return it[0] === key;
11944
+ });
11945
+ if (~index) this.a.splice(index, 1);
11946
+ return !!~index;
11947
+ }
11948
+ };
11949
+
11950
+ module.exports = {
11951
+ getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
11952
+ var C = wrapper(function (that, iterable) {
11953
+ anInstance(that, C, NAME, '_i');
11954
+ that._t = NAME; // collection type
11955
+ that._i = id++; // collection id
11956
+ that._l = undefined; // leak store for uncaught frozen objects
11957
+ if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
11958
+ });
11959
+ redefineAll(C.prototype, {
11960
+ // 23.3.3.2 WeakMap.prototype.delete(key)
11961
+ // 23.4.3.3 WeakSet.prototype.delete(value)
11962
+ 'delete': function (key) {
11963
+ if (!isObject(key)) return false;
11964
+ var data = getWeak(key);
11965
+ if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
11966
+ return data && $has(data, this._i) && delete data[this._i];
11967
+ },
11968
+ // 23.3.3.4 WeakMap.prototype.has(key)
11969
+ // 23.4.3.4 WeakSet.prototype.has(value)
11970
+ has: function has(key) {
11971
+ if (!isObject(key)) return false;
11972
+ var data = getWeak(key);
11973
+ if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
11974
+ return data && $has(data, this._i);
11975
+ }
11976
+ });
11977
+ return C;
11978
+ },
11979
+ def: function (that, key, value) {
11980
+ var data = getWeak(anObject(key), true);
11981
+ if (data === true) uncaughtFrozenStore(that).set(key, value);
11982
+ else data[that._i] = value;
11983
+ return that;
11984
+ },
11985
+ ufstore: uncaughtFrozenStore
11986
+ };
11987
+
11988
+
11989
+ /***/ }),
11990
+ /* 221 */
11991
+ /***/ (function(module, exports, __webpack_require__) {
11992
+
11993
+ // https://tc39.github.io/ecma262/#sec-toindex
11994
+ var toInteger = __webpack_require__(41);
11995
+ var toLength = __webpack_require__(16);
11996
+ module.exports = function (it) {
11997
+ if (it === undefined) return 0;
11998
+ var number = toInteger(it);
11999
+ var length = toLength(number);
12000
+ if (number !== length) throw RangeError('Wrong length!');
12001
+ return length;
12002
+ };
12003
+
12004
+
12005
+ /***/ }),
12006
+ /* 222 */
12007
+ /***/ (function(module, exports, __webpack_require__) {
12008
+
12009
+ // all object keys, includes non-enumerable and symbols
12010
+ var gOPN = __webpack_require__(59);
12011
+ var gOPS = __webpack_require__(99);
12012
+ var anObject = __webpack_require__(3);
12013
+ var Reflect = __webpack_require__(4).Reflect;
12014
+ module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
12015
+ var keys = gOPN.f(anObject(it));
12016
+ var getSymbols = gOPS.f;
12017
+ return getSymbols ? keys.concat(getSymbols(it)) : keys;
12018
+ };
12019
+
12020
+
12021
+ /***/ }),
12022
+ /* 223 */
12023
+ /***/ (function(module, exports, __webpack_require__) {
12024
+
12025
+ "use strict";
12026
+
12027
+ // https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
12028
+ var isArray = __webpack_require__(100);
12029
+ var isObject = __webpack_require__(6);
12030
+ var toLength = __webpack_require__(16);
12031
+ var ctx = __webpack_require__(35);
12032
+ var IS_CONCAT_SPREADABLE = __webpack_require__(9)('isConcatSpreadable');
12033
+
12034
+ function flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {
12035
+ var targetIndex = start;
12036
+ var sourceIndex = 0;
12037
+ var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;
12038
+ var element, spreadable;
12039
+
12040
+ while (sourceIndex < sourceLen) {
12041
+ if (sourceIndex in source) {
12042
+ element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
12043
+
12044
+ spreadable = false;
12045
+ if (isObject(element)) {
12046
+ spreadable = element[IS_CONCAT_SPREADABLE];
12047
+ spreadable = spreadable !== undefined ? !!spreadable : isArray(element);
12048
+ }
12049
+
12050
+ if (spreadable && depth > 0) {
12051
+ targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;
12052
+ } else {
12053
+ if (targetIndex >= 0x1fffffffffffff) throw TypeError();
12054
+ target[targetIndex] = element;
12055
+ }
12056
+
12057
+ targetIndex++;
12058
+ }
12059
+ sourceIndex++;
12060
+ }
12061
+ return targetIndex;
12062
+ }
12063
+
12064
+ module.exports = flattenIntoArray;
12065
+
12066
+
12067
+ /***/ }),
12068
+ /* 224 */
12069
+ /***/ (function(module, exports, __webpack_require__) {
12070
+
12071
+ // https://github.com/tc39/proposal-string-pad-start-end
12072
+ var toLength = __webpack_require__(16);
12073
+ var repeat = __webpack_require__(137);
12074
+ var defined = __webpack_require__(40);
12075
+
12076
+ module.exports = function (that, maxLength, fillString, left) {
12077
+ var S = String(defined(that));
12078
+ var stringLength = S.length;
12079
+ var fillStr = fillString === undefined ? ' ' : String(fillString);
12080
+ var intMaxLength = toLength(maxLength);
12081
+ if (intMaxLength <= stringLength || fillStr == '') return S;
12082
+ var fillLen = intMaxLength - stringLength;
12083
+ var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
12084
+ if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
12085
+ return left ? stringFiller + S : S + stringFiller;
12086
+ };
12087
+
12088
+
12089
+ /***/ }),
12090
+ /* 225 */
12091
+ /***/ (function(module, exports, __webpack_require__) {
12092
+
12093
+ var getKeys = __webpack_require__(56);
12094
+ var toIObject = __webpack_require__(29);
12095
+ var isEnum = __webpack_require__(85).f;
12096
+ module.exports = function (isEntries) {
12097
+ return function (it) {
12098
+ var O = toIObject(it);
12099
+ var keys = getKeys(O);
12100
+ var length = keys.length;
12101
+ var i = 0;
12102
+ var result = [];
12103
+ var key;
12104
+ while (length > i) if (isEnum.call(O, key = keys[i++])) {
12105
+ result.push(isEntries ? [key, O[key]] : O[key]);
12106
+ } return result;
12107
+ };
12108
+ };
12109
+
12110
+
12111
+ /***/ }),
12112
+ /* 226 */
12113
+ /***/ (function(module, exports, __webpack_require__) {
12114
+
12115
+ // https://github.com/DavidBruant/Map-Set.prototype.toJSON
12116
+ var classof = __webpack_require__(86);
12117
+ var from = __webpack_require__(227);
12118
+ module.exports = function (NAME) {
12119
+ return function toJSON() {
12120
+ if (classof(this) != NAME) throw TypeError(NAME + "#toJSON isn't generic");
12121
+ return from(this);
12122
+ };
12123
+ };
12124
+
12125
+
12126
+ /***/ }),
12127
+ /* 227 */
12128
+ /***/ (function(module, exports, __webpack_require__) {
12129
+
12130
+ var forOf = __webpack_require__(62);
12131
+
12132
+ module.exports = function (iter, ITERATOR) {
12133
+ var result = [];
12134
+ forOf(iter, false, result.push, result, ITERATOR);
12135
+ return result;
12136
+ };
12137
+
12138
+
12139
+ /***/ }),
12140
+ /* 228 */
12141
+ /***/ (function(module, exports) {
12142
+
12143
+ // https://rwaldron.github.io/proposal-math-extensions/
12144
+ module.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {
12145
+ if (
12146
+ arguments.length === 0
12147
+ // eslint-disable-next-line no-self-compare
12148
+ || x != x
12149
+ // eslint-disable-next-line no-self-compare
12150
+ || inLow != inLow
12151
+ // eslint-disable-next-line no-self-compare
12152
+ || inHigh != inHigh
12153
+ // eslint-disable-next-line no-self-compare
12154
+ || outLow != outLow
12155
+ // eslint-disable-next-line no-self-compare
12156
+ || outHigh != outHigh
12157
+ ) return NaN;
12158
+ if (x === Infinity || x === -Infinity) return x;
12159
+ return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;
12160
+ };
12161
+
12162
+
12163
+ /***/ }),
12164
+ /* 229 */
12165
+ /***/ (function(module, exports, __webpack_require__) {
12166
+
12167
+ "use strict";
12168
+ /**
12169
+ * Copyright (c) 2013-present, Facebook, Inc.
12170
+ *
12171
+ * This source code is licensed under the MIT license found in the
12172
+ * LICENSE file in the root directory of this source tree.
12173
+ *
12174
+ */
12175
+
12176
+
12177
+
12178
+ var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
12179
+
12180
+ /**
12181
+ * Simple, lightweight module assisting with the detection and context of
12182
+ * Worker. Helps avoid circular dependencies and allows code to reason about
12183
+ * whether or not they are in a Worker, even if they never include the main
12184
+ * `ReactWorker` dependency.
12185
+ */
12186
+ var ExecutionEnvironment = {
12187
+
12188
+ canUseDOM: canUseDOM,
12189
+
12190
+ canUseWorkers: typeof Worker !== 'undefined',
12191
+
12192
+ canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),
12193
+
12194
+ canUseViewport: canUseDOM && !!window.screen,
12195
+
12196
+ isInWorker: !canUseDOM // For now, this is true - might change in the future.
12197
+
12198
+ };
12199
+
12200
+ module.exports = ExecutionEnvironment;
12201
+
12202
+ /***/ }),
12203
+ /* 230 */
12204
+ /***/ (function(module, exports, __webpack_require__) {
12205
+
12206
+ "use strict";
12207
+ /* WEBPACK VAR INJECTION */(function(process) {
12208
+
12209
+ /**
12210
+ * Copyright (c) 2013-present, Facebook, Inc.
12211
+ *
12212
+ * This source code is licensed under the MIT license found in the
12213
+ * LICENSE file in the root directory of this source tree.
12214
+ *
12215
+ * @typechecks
12216
+ */
12217
+
12218
+ var emptyFunction = __webpack_require__(50);
12219
+
12220
+ /**
12221
+ * Upstream version of event listener. Does not take into account specific
12222
+ * nature of platform.
12223
+ */
12224
+ var EventListener = {
12225
+ /**
12226
+ * Listen to DOM events during the bubble phase.
12227
+ *
12228
+ * @param {DOMEventTarget} target DOM element to register listener on.
12229
+ * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.
12230
+ * @param {function} callback Callback function.
12231
+ * @return {object} Object with a `remove` method.
12232
+ */
12233
+ listen: function listen(target, eventType, callback) {
12234
+ if (target.addEventListener) {
12235
+ target.addEventListener(eventType, callback, false);
12236
+ return {
12237
+ remove: function remove() {
12238
+ target.removeEventListener(eventType, callback, false);
12239
+ }
12240
+ };
12241
+ } else if (target.attachEvent) {
12242
+ target.attachEvent('on' + eventType, callback);
12243
+ return {
12244
+ remove: function remove() {
12245
+ target.detachEvent('on' + eventType, callback);
12246
+ }
12247
+ };
12248
+ }
12249
+ },
12250
+
12251
+ /**
12252
+ * Listen to DOM events during the capture phase.
12253
+ *
12254
+ * @param {DOMEventTarget} target DOM element to register listener on.
12255
+ * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.
12256
+ * @param {function} callback Callback function.
12257
+ * @return {object} Object with a `remove` method.
12258
+ */
12259
+ capture: function capture(target, eventType, callback) {
12260
+ if (target.addEventListener) {
12261
+ target.addEventListener(eventType, callback, true);
12262
+ return {
12263
+ remove: function remove() {
12264
+ target.removeEventListener(eventType, callback, true);
12265
+ }
12266
+ };
12267
+ } else {
12268
+ if (process.env.NODE_ENV !== 'production') {
12269
+ console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');
12270
+ }
12271
+ return {
12272
+ remove: emptyFunction
12273
+ };
12274
+ }
12275
+ },
12276
+
12277
+ registerDefault: function registerDefault() {}
12278
+ };
12279
+
12280
+ module.exports = EventListener;
12281
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
12282
+
12283
+ /***/ }),
12284
+ /* 231 */
12285
+ /***/ (function(module, exports, __webpack_require__) {
12286
+
12287
+ "use strict";
12288
+
12289
+
12290
+ /**
12291
+ * Copyright (c) 2013-present, Facebook, Inc.
12292
+ *
12293
+ * This source code is licensed under the MIT license found in the
12294
+ * LICENSE file in the root directory of this source tree.
12295
+ *
12296
+ * @typechecks
12297
+ */
12298
+
12299
+ /* eslint-disable fb-www/typeof-undefined */
12300
+
12301
+ /**
12302
+ * Same as document.activeElement but wraps in a try-catch block. In IE it is
12303
+ * not safe to call document.activeElement if there is nothing focused.
12304
+ *
12305
+ * The activeElement will be null only if the document or document body is not
12306
+ * yet defined.
12307
+ *
12308
+ * @param {?DOMDocument} doc Defaults to current document.
12309
+ * @return {?DOMElement}
12310
+ */
12311
+ function getActiveElement(doc) /*?DOMElement*/{
12312
+ doc = doc || (typeof document !== 'undefined' ? document : undefined);
12313
+ if (typeof doc === 'undefined') {
12314
+ return null;
12315
+ }
12316
+ try {
12317
+ return doc.activeElement || doc.body;
12318
+ } catch (e) {
12319
+ return doc.body;
12320
+ }
12321
+ }
12322
+
12323
+ module.exports = getActiveElement;
12324
+
12325
+ /***/ }),
12326
+ /* 232 */
12327
+ /***/ (function(module, exports, __webpack_require__) {
12328
+
12329
+ "use strict";
12330
+ /**
12331
+ * Copyright (c) 2013-present, Facebook, Inc.
12332
+ *
12333
+ * This source code is licensed under the MIT license found in the
12334
+ * LICENSE file in the root directory of this source tree.
12335
+ *
12336
+ * @typechecks
12337
+ *
12338
+ */
12339
+
12340
+ /*eslint-disable no-self-compare */
12341
+
12342
+
12343
+
12344
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
12345
+
12346
+ /**
12347
+ * inlined Object.is polyfill to avoid requiring consumers ship their own
12348
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
12349
+ */
12350
+ function is(x, y) {
12351
+ // SameValue algorithm
12352
+ if (x === y) {
12353
+ // Steps 1-5, 7-10
12354
+ // Steps 6.b-6.e: +0 != -0
12355
+ // Added the nonzero y check to make Flow happy, but it is redundant
12356
+ return x !== 0 || y !== 0 || 1 / x === 1 / y;
12357
+ } else {
12358
+ // Step 6.a: NaN == NaN
12359
+ return x !== x && y !== y;
12360
+ }
12361
+ }
12362
+
12363
+ /**
12364
+ * Performs equality by iterating through keys on an object and returning false
12365
+ * when any key has values which are not strictly equal between the arguments.
12366
+ * Returns true when the values of all keys are strictly equal.
12367
+ */
12368
+ function shallowEqual(objA, objB) {
12369
+ if (is(objA, objB)) {
12370
+ return true;
12371
+ }
12372
+
12373
+ if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
12374
+ return false;
12375
+ }
12376
+
12377
+ var keysA = Object.keys(objA);
12378
+ var keysB = Object.keys(objB);
12379
+
12380
+ if (keysA.length !== keysB.length) {
12381
+ return false;
12382
+ }
12383
+
12384
+ // Test for A's keys different from B.
12385
+ for (var i = 0; i < keysA.length; i++) {
12386
+ if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
12387
+ return false;
12388
+ }
12389
+ }
12390
+
12391
+ return true;
12392
+ }
12393
+
12394
+ module.exports = shallowEqual;
12395
+
12396
+ /***/ }),
12397
+ /* 233 */
12398
+ /***/ (function(module, exports, __webpack_require__) {
12399
+
12400
+ "use strict";
12401
+
12402
+
12403
+ /**
12404
+ * Copyright (c) 2013-present, Facebook, Inc.
12405
+ *
12406
+ * This source code is licensed under the MIT license found in the
12407
+ * LICENSE file in the root directory of this source tree.
12408
+ *
12409
+ *
12410
+ */
12411
+
12412
+ var isTextNode = __webpack_require__(510);
12413
+
12414
+ /*eslint-disable no-bitwise */
12415
+
12416
+ /**
12417
+ * Checks if a given DOM node contains or is another DOM node.
12418
+ */
12419
+ function containsNode(outerNode, innerNode) {
12420
+ if (!outerNode || !innerNode) {
12421
+ return false;
12422
+ } else if (outerNode === innerNode) {
12423
+ return true;
12424
+ } else if (isTextNode(outerNode)) {
12425
+ return false;
12426
+ } else if (isTextNode(innerNode)) {
12427
+ return containsNode(outerNode, innerNode.parentNode);
12428
+ } else if ('contains' in outerNode) {
12429
+ return outerNode.contains(innerNode);
12430
+ } else if (outerNode.compareDocumentPosition) {
12431
+ return !!(outerNode.compareDocumentPosition(innerNode) & 16);
12432
+ } else {
12433
+ return false;
12434
+ }
12435
+ }
12436
+
12437
+ module.exports = containsNode;
12438
+
12439
+ /***/ }),
12440
+ /* 234 */
12441
+ /***/ (function(module, exports, __webpack_require__) {
12442
+
12443
+ "use strict";
12444
+ /**
12445
+ * Copyright (c) 2013-present, Facebook, Inc.
12446
+ *
12447
+ * This source code is licensed under the MIT license found in the
12448
+ * LICENSE file in the root directory of this source tree.
12449
+ *
12450
+ */
12451
+
12452
+
12453
+
12454
+ /**
12455
+ * @param {DOMElement} node input/textarea to focus
12456
+ */
12457
+
12458
+ function focusNode(node) {
12459
+ // IE8 can throw "Can't move focus to the control because it is invisible,
12460
+ // not enabled, or of a type that does not accept the focus." for all kinds of
12461
+ // reasons that are too expensive and fragile to test.
12462
+ try {
12463
+ node.focus();
12464
+ } catch (e) {}
12465
+ }
12466
+
12467
+ module.exports = focusNode;
12468
+
12469
+ /***/ }),
12470
+ /* 235 */
12471
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
12472
+
12473
+ "use strict";
12474
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of__ = __webpack_require__(21);
12475
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of__);
12476
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(8);
12477
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);
12478
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__ = __webpack_require__(10);
12479
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass__);
12480
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(12);
12481
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn__);
12482
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits__ = __webpack_require__(13);
12483
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits__);
12484
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react__ = __webpack_require__(2);
12485
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react__);
12486
+
12487
+
12488
+
12489
+
12490
+
12491
+
12492
+ var babelPluginFlowReactPropTypes_proptype_RenderedSection = __webpack_require__(23).babelPluginFlowReactPropTypes_proptype_RenderedSection || __webpack_require__(0).any;
12493
+
12494
+ var babelPluginFlowReactPropTypes_proptype_ScrollIndices = __webpack_require__(569).babelPluginFlowReactPropTypes_proptype_ScrollIndices || __webpack_require__(0).any;
12495
+
12496
+
12497
+
12498
+ /**
12499
+ * This HOC decorates a virtualized component and responds to arrow-key events by scrolling one row or column at a time.
12500
+ */
12501
+
12502
+ var ArrowKeyStepper = function (_React$PureComponent) {
12503
+ __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits___default()(ArrowKeyStepper, _React$PureComponent);
12504
+
12505
+ function ArrowKeyStepper(props) {
12506
+ __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, ArrowKeyStepper);
12507
+
12508
+ var _this = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn___default()(this, (ArrowKeyStepper.__proto__ || __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of___default()(ArrowKeyStepper)).call(this, props));
12509
+
12510
+ _this._columnStartIndex = 0;
12511
+ _this._columnStopIndex = 0;
12512
+ _this._rowStartIndex = 0;
12513
+ _this._rowStopIndex = 0;
12514
+
12515
+ _this._onKeyDown = function (event) {
12516
+ var _this$props = _this.props,
12517
+ columnCount = _this$props.columnCount,
12518
+ disabled = _this$props.disabled,
12519
+ mode = _this$props.mode,
12520
+ rowCount = _this$props.rowCount;
12521
+
12522
+
12523
+ if (disabled) {
12524
+ return;
12525
+ }
12526
+
12527
+ var _this$_getScrollState = _this._getScrollState(),
12528
+ scrollToColumnPrevious = _this$_getScrollState.scrollToColumn,
12529
+ scrollToRowPrevious = _this$_getScrollState.scrollToRow;
12530
+
12531
+ var _this$_getScrollState2 = _this._getScrollState(),
12532
+ scrollToColumn = _this$_getScrollState2.scrollToColumn,
12533
+ scrollToRow = _this$_getScrollState2.scrollToRow;
12534
+
12535
+ // The above cases all prevent default event event behavior.
12536
+ // This is to keep the grid from scrolling after the snap-to update.
12537
+
12538
+
12539
+ switch (event.key) {
12540
+ case 'ArrowDown':
12541
+ scrollToRow = mode === 'cells' ? Math.min(scrollToRow + 1, rowCount - 1) : Math.min(_this._rowStopIndex + 1, rowCount - 1);
12542
+ break;
12543
+ case 'ArrowLeft':
12544
+ scrollToColumn = mode === 'cells' ? Math.max(scrollToColumn - 1, 0) : Math.max(_this._columnStartIndex - 1, 0);
12545
+ break;
12546
+ case 'ArrowRight':
12547
+ scrollToColumn = mode === 'cells' ? Math.min(scrollToColumn + 1, columnCount - 1) : Math.min(_this._columnStopIndex + 1, columnCount - 1);
12548
+ break;
12549
+ case 'ArrowUp':
12550
+ scrollToRow = mode === 'cells' ? Math.max(scrollToRow - 1, 0) : Math.max(_this._rowStartIndex - 1, 0);
12551
+ break;
12552
+ }
12553
+
12554
+ if (scrollToColumn !== scrollToColumnPrevious || scrollToRow !== scrollToRowPrevious) {
12555
+ event.preventDefault();
12556
+
12557
+ _this._updateScrollState({ scrollToColumn: scrollToColumn, scrollToRow: scrollToRow });
12558
+ }
12559
+ };
12560
+
12561
+ _this._onSectionRendered = function (_ref) {
12562
+ var columnStartIndex = _ref.columnStartIndex,
12563
+ columnStopIndex = _ref.columnStopIndex,
12564
+ rowStartIndex = _ref.rowStartIndex,
12565
+ rowStopIndex = _ref.rowStopIndex;
12566
+
12567
+ _this._columnStartIndex = columnStartIndex;
12568
+ _this._columnStopIndex = columnStopIndex;
12569
+ _this._rowStartIndex = rowStartIndex;
12570
+ _this._rowStopIndex = rowStopIndex;
12571
+ };
12572
+
12573
+ _this.state = {
12574
+ scrollToColumn: props.scrollToColumn,
12575
+ scrollToRow: props.scrollToRow
12576
+ };
12577
+ return _this;
12578
+ }
12579
+
12580
+ __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_createClass___default()(ArrowKeyStepper, [{
12581
+ key: 'componentWillReceiveProps',
12582
+ value: function componentWillReceiveProps(nextProps) {
12583
+ if (this.props.isControlled) {
12584
+ return;
12585
+ }
12586
+
12587
+ var scrollToColumn = nextProps.scrollToColumn,
12588
+ scrollToRow = nextProps.scrollToRow;
12589
+ var _props = this.props,
12590
+ prevScrollToColumn = _props.scrollToColumn,
12591
+ prevScrollToRow = _props.scrollToRow;
12592
+
12593
+
12594
+ if (prevScrollToColumn !== scrollToColumn && prevScrollToRow !== scrollToRow) {
12595
+ this.setState({
12596
+ scrollToColumn: scrollToColumn,
12597
+ scrollToRow: scrollToRow
12598
+ });
12599
+ } else if (prevScrollToColumn !== scrollToColumn) {
12600
+ this.setState({ scrollToColumn: scrollToColumn });
12601
+ } else if (prevScrollToRow !== scrollToRow) {
12602
+ this.setState({ scrollToRow: scrollToRow });
12603
+ }
12604
+ }
12605
+ }, {
12606
+ key: 'setScrollIndexes',
12607
+ value: function setScrollIndexes(_ref2) {
12608
+ var scrollToColumn = _ref2.scrollToColumn,
12609
+ scrollToRow = _ref2.scrollToRow;
12610
+
12611
+ this.setState({
12612
+ scrollToRow: scrollToRow,
12613
+ scrollToColumn: scrollToColumn
12614
+ });
12615
+ }
12616
+ }, {
12617
+ key: 'render',
12618
+ value: function render() {
12619
+ var _props2 = this.props,
12620
+ className = _props2.className,
12621
+ children = _props2.children;
12622
+
12623
+ var _getScrollState2 = this._getScrollState(),
12624
+ scrollToColumn = _getScrollState2.scrollToColumn,
12625
+ scrollToRow = _getScrollState2.scrollToRow;
12626
+
12627
+ return __WEBPACK_IMPORTED_MODULE_5_react__["createElement"](
12628
+ 'div',
12629
+ { className: className, onKeyDown: this._onKeyDown },
12630
+ children({
12631
+ onSectionRendered: this._onSectionRendered,
12632
+ scrollToColumn: scrollToColumn,
12633
+ scrollToRow: scrollToRow
12634
+ })
12635
+ );
12636
+ }
12637
+ }, {
12638
+ key: '_getScrollState',
12639
+ value: function _getScrollState() {
12640
+ return this.props.isControlled ? this.props : this.state;
12641
+ }
12642
+ }, {
12643
+ key: '_updateScrollState',
12644
+ value: function _updateScrollState(_ref3) {
12645
+ var scrollToColumn = _ref3.scrollToColumn,
12646
+ scrollToRow = _ref3.scrollToRow;
12647
+ var _props3 = this.props,
12648
+ isControlled = _props3.isControlled,
12649
+ onScrollToChange = _props3.onScrollToChange;
12650
+
12651
+
12652
+ if (typeof onScrollToChange === 'function') {
12653
+ onScrollToChange({ scrollToColumn: scrollToColumn, scrollToRow: scrollToRow });
12654
+ }
12655
+
12656
+ if (!isControlled) {
12657
+ this.setState({ scrollToColumn: scrollToColumn, scrollToRow: scrollToRow });
12658
+ }
12659
+ }
12660
+ }]);
12661
+
12662
+ return ArrowKeyStepper;
12663
+ }(__WEBPACK_IMPORTED_MODULE_5_react__["PureComponent"]);
12664
+
12665
+ ArrowKeyStepper.defaultProps = {
12666
+ disabled: false,
12667
+ isControlled: false,
12668
+ mode: 'edges',
12669
+ scrollToColumn: 0,
12670
+ scrollToRow: 0
12671
+ };
12672
+ ArrowKeyStepper.propTypes = {
12673
+ children: __webpack_require__(0).func.isRequired,
12674
+ className: __webpack_require__(0).string,
12675
+ columnCount: __webpack_require__(0).number.isRequired,
12676
+ disabled: __webpack_require__(0).bool.isRequired,
12677
+ isControlled: __webpack_require__(0).bool.isRequired,
12678
+ mode: __webpack_require__(0).oneOf(['cells', 'edges']).isRequired,
12679
+ onScrollToChange: __webpack_require__(0).func,
12680
+ rowCount: __webpack_require__(0).number.isRequired,
12681
+ scrollToColumn: __webpack_require__(0).number.isRequired,
12682
+ scrollToRow: __webpack_require__(0).number.isRequired
12683
+ };
12684
+ /* harmony default export */ __webpack_exports__["a"] = (ArrowKeyStepper);
12685
+
12686
+ /***/ }),
12687
+ /* 236 */
12688
+ /***/ (function(module, exports, __webpack_require__) {
12689
+
12690
+ // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
12691
+ var has = __webpack_require__(65);
12692
+ var toObject = __webpack_require__(111);
12693
+ var IE_PROTO = __webpack_require__(160)('IE_PROTO');
12694
+ var ObjectProto = Object.prototype;
12695
+
12696
+ module.exports = Object.getPrototypeOf || function (O) {
12697
+ O = toObject(O);
12698
+ if (has(O, IE_PROTO)) return O[IE_PROTO];
12699
+ if (typeof O.constructor == 'function' && O instanceof O.constructor) {
12700
+ return O.constructor.prototype;
12701
+ } return O instanceof Object ? ObjectProto : null;
12702
+ };
12703
+
12704
+
12705
+ /***/ }),
12706
+ /* 237 */
12707
+ /***/ (function(module, exports, __webpack_require__) {
12708
+
12709
+ // optional / simple context binding
12710
+ var aFunction = __webpack_require__(524);
12711
+ module.exports = function (fn, that, length) {
12712
+ aFunction(fn);
12713
+ if (that === undefined) return fn;
12714
+ switch (length) {
12715
+ case 1: return function (a) {
12716
+ return fn.call(that, a);
12717
+ };
12718
+ case 2: return function (a, b) {
12719
+ return fn.call(that, a, b);
12720
+ };
12721
+ case 3: return function (a, b, c) {
12722
+ return fn.call(that, a, b, c);
12723
+ };
12724
+ }
12725
+ return function (/* ...args */) {
12726
+ return fn.apply(that, arguments);
12727
+ };
12728
+ };
12729
+
12730
+
12731
+ /***/ }),
12732
+ /* 238 */
12733
+ /***/ (function(module, exports, __webpack_require__) {
12734
+
12735
+ module.exports = !__webpack_require__(68) && !__webpack_require__(80)(function () {
12736
+ return Object.defineProperty(__webpack_require__(239)('div'), 'a', { get: function () { return 7; } }).a != 7;
12737
+ });
12738
+
12739
+
12740
+ /***/ }),
12741
+ /* 239 */
12742
+ /***/ (function(module, exports, __webpack_require__) {
12743
+
12744
+ var isObject = __webpack_require__(79);
12745
+ var document = __webpack_require__(51).document;
12746
+ // typeof document.createElement is 'object' in old IE
12747
+ var is = isObject(document) && isObject(document.createElement);
12748
+ module.exports = function (it) {
12749
+ return is ? document.createElement(it) : {};
12750
+ };
12751
+
12752
+
12753
+ /***/ }),
12754
+ /* 240 */
12755
+ /***/ (function(module, exports, __webpack_require__) {
12756
+
12757
+ module.exports = { "default": __webpack_require__(525), __esModule: true };
12758
+
12759
+ /***/ }),
12760
+ /* 241 */
12761
+ /***/ (function(module, exports, __webpack_require__) {
12762
+
12763
+ "use strict";
12764
+
12765
+ var LIBRARY = __webpack_require__(166);
12766
+ var $export = __webpack_require__(66);
12767
+ var redefine = __webpack_require__(242);
12768
+ var hide = __webpack_require__(77);
12769
+ var has = __webpack_require__(65);
12770
+ var Iterators = __webpack_require__(89);
12771
+ var $iterCreate = __webpack_require__(530);
12772
+ var setToStringTag = __webpack_require__(170);
12773
+ var getPrototypeOf = __webpack_require__(236);
12774
+ var ITERATOR = __webpack_require__(46)('iterator');
12775
+ var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
12776
+ var FF_ITERATOR = '@@iterator';
12777
+ var KEYS = 'keys';
12778
+ var VALUES = 'values';
12779
+
12780
+ var returnThis = function () { return this; };
12781
+
12782
+ module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
12783
+ $iterCreate(Constructor, NAME, next);
12784
+ var getMethod = function (kind) {
12785
+ if (!BUGGY && kind in proto) return proto[kind];
12786
+ switch (kind) {
12787
+ case KEYS: return function keys() { return new Constructor(this, kind); };
12788
+ case VALUES: return function values() { return new Constructor(this, kind); };
12789
+ } return function entries() { return new Constructor(this, kind); };
12790
+ };
12791
+ var TAG = NAME + ' Iterator';
12792
+ var DEF_VALUES = DEFAULT == VALUES;
12793
+ var VALUES_BUG = false;
12794
+ var proto = Base.prototype;
12795
+ var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
12796
+ var $default = (!BUGGY && $native) || getMethod(DEFAULT);
12797
+ var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
12798
+ var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
12799
+ var methods, key, IteratorPrototype;
12800
+ // Fix native
12801
+ if ($anyNative) {
12802
+ IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
12803
+ if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
12804
+ // Set @@toStringTag to native iterators
12805
+ setToStringTag(IteratorPrototype, TAG, true);
12806
+ // fix for some old engines
12807
+ if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);
12808
+ }
12809
+ }
12810
+ // fix Array#{values, @@iterator}.name in V8 / FF
12811
+ if (DEF_VALUES && $native && $native.name !== VALUES) {
12812
+ VALUES_BUG = true;
12813
+ $default = function values() { return $native.call(this); };
12814
+ }
12815
+ // Define iterator
12816
+ if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
12817
+ hide(proto, ITERATOR, $default);
12818
+ }
12819
+ // Plug for library
12820
+ Iterators[NAME] = $default;
12821
+ Iterators[TAG] = returnThis;
12822
+ if (DEFAULT) {
12823
+ methods = {
12824
+ values: DEF_VALUES ? $default : getMethod(VALUES),
12825
+ keys: IS_SET ? $default : getMethod(KEYS),
12826
+ entries: $entries
12827
+ };
12828
+ if (FORCED) for (key in methods) {
12829
+ if (!(key in proto)) redefine(proto, key, methods[key]);
12830
+ } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
12831
+ }
12832
+ return methods;
12833
+ };
12834
+
12835
+
12836
+ /***/ }),
12837
+ /* 242 */
12838
+ /***/ (function(module, exports, __webpack_require__) {
12839
+
12840
+ module.exports = __webpack_require__(77);
12841
+
12842
+
12843
+ /***/ }),
12844
+ /* 243 */
12845
+ /***/ (function(module, exports, __webpack_require__) {
12846
+
12847
+ var has = __webpack_require__(65);
12848
+ var toIObject = __webpack_require__(69);
12849
+ var arrayIndexOf = __webpack_require__(532)(false);
12850
+ var IE_PROTO = __webpack_require__(160)('IE_PROTO');
12851
+
12852
+ module.exports = function (object, names) {
12853
+ var O = toIObject(object);
12854
+ var i = 0;
12855
+ var result = [];
12856
+ var key;
12857
+ for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
12858
+ // Don't enum bug & hidden keys
12859
+ while (names.length > i) if (has(O, key = names[i++])) {
12860
+ ~arrayIndexOf(result, key) || result.push(key);
12861
+ }
12862
+ return result;
12863
+ };
12864
+
12865
+
12866
+ /***/ }),
12867
+ /* 244 */
12868
+ /***/ (function(module, exports, __webpack_require__) {
12869
+
12870
+ // fallback for non-array-like ES3 and non-enumerable old V8 strings
12871
+ var cof = __webpack_require__(168);
12872
+ // eslint-disable-next-line no-prototype-builtins
12873
+ module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
12874
+ return cof(it) == 'String' ? it.split('') : Object(it);
12875
+ };
12876
+
12877
+
12878
+ /***/ }),
12879
+ /* 245 */
12880
+ /***/ (function(module, exports, __webpack_require__) {
12881
+
12882
+ // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
12883
+ var $keys = __webpack_require__(243);
12884
+ var hiddenKeys = __webpack_require__(169).concat('length', 'prototype');
12885
+
12886
+ exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
12887
+ return $keys(O, hiddenKeys);
12888
+ };
12889
+
12890
+
12891
+ /***/ }),
12892
+ /* 246 */
12893
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
12894
+
12895
+ "use strict";
12896
+ /* unused harmony export DEFAULT_SCROLLING_RESET_TIME_INTERVAL */
12897
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(17);
12898
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__);
12899
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of__ = __webpack_require__(21);
12900
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of__);
12901
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck__ = __webpack_require__(8);
12902
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck__);
12903
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass__ = __webpack_require__(10);
12904
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass__);
12905
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(12);
12906
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn__);
12907
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits__ = __webpack_require__(13);
12908
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits__);
12909
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react__ = __webpack_require__(2);
12910
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react__);
12911
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_classnames__ = __webpack_require__(47);
12912
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_classnames__);
12913
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_calculateSizeAndPositionDataAndUpdateScrollOffset__ = __webpack_require__(563);
12914
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__utils_ScalingCellSizeAndPositionManager__ = __webpack_require__(176);
12915
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__utils_createCallbackMemoizer__ = __webpack_require__(177);
12916
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__defaultOverscanIndicesGetter__ = __webpack_require__(248);
12917
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__utils_updateScrollIndexHelper__ = __webpack_require__(566);
12918
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__defaultCellRangeRenderer__ = __webpack_require__(249);
12919
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_14_dom_helpers_util_scrollbarSize__ = __webpack_require__(250);
12920
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_14_dom_helpers_util_scrollbarSize___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_14_dom_helpers_util_scrollbarSize__);
12921
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__utils_requestAnimationTimeout__ = __webpack_require__(91);
12922
+
12923
+
12924
+
12925
+
12926
+
12927
+
12928
+
12929
+ var babelPluginFlowReactPropTypes_proptype_Alignment = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_Alignment || __webpack_require__(0).any;
12930
+
12931
+ var babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter || __webpack_require__(0).any;
12932
+
12933
+ var babelPluginFlowReactPropTypes_proptype_RenderedSection = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_RenderedSection || __webpack_require__(0).any;
12934
+
12935
+ var babelPluginFlowReactPropTypes_proptype_ScrollbarPresenceChange = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_ScrollbarPresenceChange || __webpack_require__(0).any;
12936
+
12937
+ var babelPluginFlowReactPropTypes_proptype_Scroll = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_Scroll || __webpack_require__(0).any;
12938
+
12939
+ var babelPluginFlowReactPropTypes_proptype_NoContentRenderer = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_NoContentRenderer || __webpack_require__(0).any;
12940
+
12941
+ var babelPluginFlowReactPropTypes_proptype_CellSizeGetter = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_CellSizeGetter || __webpack_require__(0).any;
12942
+
12943
+ var babelPluginFlowReactPropTypes_proptype_CellSize = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_CellSize || __webpack_require__(0).any;
12944
+
12945
+ var babelPluginFlowReactPropTypes_proptype_CellPosition = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_CellPosition || __webpack_require__(0).any;
12946
+
12947
+ var babelPluginFlowReactPropTypes_proptype_CellRangeRenderer = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_CellRangeRenderer || __webpack_require__(0).any;
12948
+
12949
+ var babelPluginFlowReactPropTypes_proptype_CellRenderer = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_CellRenderer || __webpack_require__(0).any;
12950
+
12951
+ var babelPluginFlowReactPropTypes_proptype_AnimationTimeoutId = __webpack_require__(91).babelPluginFlowReactPropTypes_proptype_AnimationTimeoutId || __webpack_require__(0).any;
12952
+
12953
+
12954
+
12955
+
12956
+
12957
+
12958
+
12959
+
12960
+
12961
+
12962
+
12963
+
12964
+ /**
12965
+ * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.
12966
+ * This improves performance and makes scrolling smoother.
12967
+ */
12968
+ var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;
12969
+
12970
+ /**
12971
+ * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.
12972
+ * This prevents Grid from interrupting mouse-wheel animations (see issue #2).
12973
+ */
12974
+ var SCROLL_POSITION_CHANGE_REASONS = {
12975
+ OBSERVED: 'observed',
12976
+ REQUESTED: 'requested'
12977
+ };
12978
+
12979
+ var renderNull = function renderNull() {
12980
+ return null;
12981
+ };
12982
+
12983
+ /**
12984
+ * Renders tabular data with virtualization along the vertical and horizontal axes.
12985
+ * Row heights and column widths must be known ahead of time and specified as properties.
12986
+ */
12987
+ var Grid = function (_React$PureComponent) {
12988
+ __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits___default()(Grid, _React$PureComponent);
12989
+
12990
+ // Invokes onSectionRendered callback only when start/stop row or column indices change
12991
+ function Grid(props) {
12992
+ __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default()(this, Grid);
12993
+
12994
+ var _this = __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default()(this, (Grid.__proto__ || __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of___default()(Grid)).call(this, props));
12995
+
12996
+ _this.state = {
12997
+ isScrolling: false,
12998
+ scrollDirectionHorizontal: __WEBPACK_IMPORTED_MODULE_11__defaultOverscanIndicesGetter__["b" /* SCROLL_DIRECTION_FORWARD */],
12999
+ scrollDirectionVertical: __WEBPACK_IMPORTED_MODULE_11__defaultOverscanIndicesGetter__["b" /* SCROLL_DIRECTION_FORWARD */],
13000
+ scrollLeft: 0,
13001
+ scrollTop: 0,
13002
+ scrollPositionChangeReason: null
13003
+ };
13004
+ _this._onGridRenderedMemoizer = Object(__WEBPACK_IMPORTED_MODULE_10__utils_createCallbackMemoizer__["a" /* default */])();
13005
+ _this._onScrollMemoizer = Object(__WEBPACK_IMPORTED_MODULE_10__utils_createCallbackMemoizer__["a" /* default */])(false);
13006
+ _this._deferredInvalidateColumnIndex = null;
13007
+ _this._deferredInvalidateRowIndex = null;
13008
+ _this._recomputeScrollLeftFlag = false;
13009
+ _this._recomputeScrollTopFlag = false;
13010
+ _this._horizontalScrollBarSize = 0;
13011
+ _this._verticalScrollBarSize = 0;
13012
+ _this._scrollbarPresenceChanged = false;
13013
+ _this._cellCache = {};
13014
+ _this._styleCache = {};
13015
+ _this._scrollbarSizeMeasured = false;
13016
+ _this._renderedColumnStartIndex = 0;
13017
+ _this._renderedColumnStopIndex = 0;
13018
+ _this._renderedRowStartIndex = 0;
13019
+ _this._renderedRowStopIndex = 0;
13020
+
13021
+ _this._debounceScrollEndedCallback = function () {
13022
+ _this._disablePointerEventsTimeoutId = null;
13023
+ _this._resetStyleCache();
13024
+ };
13025
+
13026
+ _this._invokeOnGridRenderedHelper = function () {
13027
+ var onSectionRendered = _this.props.onSectionRendered;
13028
+
13029
+
13030
+ _this._onGridRenderedMemoizer({
13031
+ callback: onSectionRendered,
13032
+ indices: {
13033
+ columnOverscanStartIndex: _this._columnStartIndex,
13034
+ columnOverscanStopIndex: _this._columnStopIndex,
13035
+ columnStartIndex: _this._renderedColumnStartIndex,
13036
+ columnStopIndex: _this._renderedColumnStopIndex,
13037
+ rowOverscanStartIndex: _this._rowStartIndex,
13038
+ rowOverscanStopIndex: _this._rowStopIndex,
13039
+ rowStartIndex: _this._renderedRowStartIndex,
13040
+ rowStopIndex: _this._renderedRowStopIndex
13041
+ }
13042
+ });
13043
+ };
13044
+
13045
+ _this._setScrollingContainerRef = function (ref) {
13046
+ _this._scrollingContainer = ref;
13047
+ };
13048
+
13049
+ _this._onScroll = function (event) {
13050
+ // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.
13051
+ // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.
13052
+ // See issue #404 for more information.
13053
+ if (event.target === _this._scrollingContainer) {
13054
+ _this.handleScrollEvent(event.target);
13055
+ }
13056
+ };
13057
+
13058
+ _this._columnWidthGetter = _this._wrapSizeGetter(props.columnWidth);
13059
+ _this._rowHeightGetter = _this._wrapSizeGetter(props.rowHeight);
13060
+
13061
+ _this._columnSizeAndPositionManager = new __WEBPACK_IMPORTED_MODULE_9__utils_ScalingCellSizeAndPositionManager__["a" /* default */]({
13062
+ cellCount: props.columnCount,
13063
+ cellSizeGetter: function cellSizeGetter(params) {
13064
+ return _this._columnWidthGetter(params);
13065
+ },
13066
+ estimatedCellSize: _this._getEstimatedColumnSize(props)
13067
+ });
13068
+ _this._rowSizeAndPositionManager = new __WEBPACK_IMPORTED_MODULE_9__utils_ScalingCellSizeAndPositionManager__["a" /* default */]({
13069
+ cellCount: props.rowCount,
13070
+ cellSizeGetter: function cellSizeGetter(params) {
13071
+ return _this._rowHeightGetter(params);
13072
+ },
13073
+ estimatedCellSize: _this._getEstimatedRowSize(props)
13074
+ });
13075
+ return _this;
13076
+ }
13077
+
13078
+ /**
13079
+ * Gets offsets for a given cell and alignment.
13080
+ */
13081
+
13082
+
13083
+ // See defaultCellRangeRenderer() for more information on the usage of these caches
13084
+
13085
+
13086
+ __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default()(Grid, [{
13087
+ key: 'getOffsetForCell',
13088
+ value: function getOffsetForCell() {
13089
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
13090
+ _ref$alignment = _ref.alignment,
13091
+ alignment = _ref$alignment === undefined ? this.props.scrollToAlignment : _ref$alignment,
13092
+ _ref$columnIndex = _ref.columnIndex,
13093
+ columnIndex = _ref$columnIndex === undefined ? this.props.scrollToColumn : _ref$columnIndex,
13094
+ _ref$rowIndex = _ref.rowIndex,
13095
+ rowIndex = _ref$rowIndex === undefined ? this.props.scrollToRow : _ref$rowIndex;
13096
+
13097
+ var offsetProps = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({}, this.props, {
13098
+ scrollToAlignment: alignment,
13099
+ scrollToColumn: columnIndex,
13100
+ scrollToRow: rowIndex
13101
+ });
13102
+
13103
+ return {
13104
+ scrollLeft: this._getCalculatedScrollLeft(offsetProps),
13105
+ scrollTop: this._getCalculatedScrollTop(offsetProps)
13106
+ };
13107
+ }
13108
+
13109
+ /**
13110
+ * This method handles a scroll event originating from an external scroll control.
13111
+ * It's an advanced method and should probably not be used unless you're implementing a custom scroll-bar solution.
13112
+ */
13113
+
13114
+ }, {
13115
+ key: 'handleScrollEvent',
13116
+ value: function handleScrollEvent(_ref2) {
13117
+ var _ref2$scrollLeft = _ref2.scrollLeft,
13118
+ scrollLeftParam = _ref2$scrollLeft === undefined ? 0 : _ref2$scrollLeft,
13119
+ _ref2$scrollTop = _ref2.scrollTop,
13120
+ scrollTopParam = _ref2$scrollTop === undefined ? 0 : _ref2$scrollTop;
13121
+
13122
+ // On iOS, we can arrive at negative offsets by swiping past the start.
13123
+ // To prevent flicker here, we make playing in the negative offset zone cause nothing to happen.
13124
+ if (scrollTopParam < 0) {
13125
+ return;
13126
+ }
13127
+
13128
+ // Prevent pointer events from interrupting a smooth scroll
13129
+ this._debounceScrollEnded();
13130
+
13131
+ var _props = this.props,
13132
+ autoHeight = _props.autoHeight,
13133
+ autoWidth = _props.autoWidth,
13134
+ height = _props.height,
13135
+ width = _props.width;
13136
+
13137
+ // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,
13138
+ // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.
13139
+ // This causes a series of rapid renders that is slow for long lists.
13140
+ // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.
13141
+
13142
+ var scrollbarSize = this._scrollbarSize;
13143
+ var totalRowsHeight = this._rowSizeAndPositionManager.getTotalSize();
13144
+ var totalColumnsWidth = this._columnSizeAndPositionManager.getTotalSize();
13145
+ var scrollLeft = Math.min(Math.max(0, totalColumnsWidth - width + scrollbarSize), scrollLeftParam);
13146
+ var scrollTop = Math.min(Math.max(0, totalRowsHeight - height + scrollbarSize), scrollTopParam);
13147
+
13148
+ // Certain devices (like Apple touchpad) rapid-fire duplicate events.
13149
+ // Don't force a re-render if this is the case.
13150
+ // The mouse may move faster then the animation frame does.
13151
+ // Use requestAnimationFrame to avoid over-updating.
13152
+ if (this.state.scrollLeft !== scrollLeft || this.state.scrollTop !== scrollTop) {
13153
+ // Track scrolling direction so we can more efficiently overscan rows to reduce empty space around the edges while scrolling.
13154
+ // Don't change direction for an axis unless scroll offset has changed.
13155
+ var _scrollDirectionHorizontal = scrollLeft !== this.state.scrollLeft ? scrollLeft > this.state.scrollLeft ? __WEBPACK_IMPORTED_MODULE_11__defaultOverscanIndicesGetter__["b" /* SCROLL_DIRECTION_FORWARD */] : __WEBPACK_IMPORTED_MODULE_11__defaultOverscanIndicesGetter__["a" /* SCROLL_DIRECTION_BACKWARD */] : this.state.scrollDirectionHorizontal;
13156
+ var _scrollDirectionVertical = scrollTop !== this.state.scrollTop ? scrollTop > this.state.scrollTop ? __WEBPACK_IMPORTED_MODULE_11__defaultOverscanIndicesGetter__["b" /* SCROLL_DIRECTION_FORWARD */] : __WEBPACK_IMPORTED_MODULE_11__defaultOverscanIndicesGetter__["a" /* SCROLL_DIRECTION_BACKWARD */] : this.state.scrollDirectionVertical;
13157
+
13158
+ var newState = {
13159
+ isScrolling: true,
13160
+ scrollDirectionHorizontal: _scrollDirectionHorizontal,
13161
+ scrollDirectionVertical: _scrollDirectionVertical,
13162
+ scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.OBSERVED
13163
+ };
13164
+
13165
+ if (!autoHeight) {
13166
+ newState.scrollTop = scrollTop;
13167
+ }
13168
+
13169
+ if (!autoWidth) {
13170
+ newState.scrollLeft = scrollLeft;
13171
+ }
13172
+
13173
+ this.setState(newState);
13174
+ }
13175
+
13176
+ this._invokeOnScrollMemoizer({
13177
+ scrollLeft: scrollLeft,
13178
+ scrollTop: scrollTop,
13179
+ totalColumnsWidth: totalColumnsWidth,
13180
+ totalRowsHeight: totalRowsHeight
13181
+ });
13182
+ }
13183
+
13184
+ /**
13185
+ * Invalidate Grid size and recompute visible cells.
13186
+ * This is a deferred wrapper for recomputeGridSize().
13187
+ * It sets a flag to be evaluated on cDM/cDU to avoid unnecessary renders.
13188
+ * This method is intended for advanced use-cases like CellMeasurer.
13189
+ */
13190
+ // @TODO (bvaughn) Add automated test coverage for this.
13191
+
13192
+ }, {
13193
+ key: 'invalidateCellSizeAfterRender',
13194
+ value: function invalidateCellSizeAfterRender(_ref3) {
13195
+ var columnIndex = _ref3.columnIndex,
13196
+ rowIndex = _ref3.rowIndex;
13197
+
13198
+ this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;
13199
+ this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;
13200
+ }
13201
+
13202
+ /**
13203
+ * Pre-measure all columns and rows in a Grid.
13204
+ * Typically cells are only measured as needed and estimated sizes are used for cells that have not yet been measured.
13205
+ * This method ensures that the next call to getTotalSize() returns an exact size (as opposed to just an estimated one).
13206
+ */
13207
+
13208
+ }, {
13209
+ key: 'measureAllCells',
13210
+ value: function measureAllCells() {
13211
+ var _props2 = this.props,
13212
+ columnCount = _props2.columnCount,
13213
+ rowCount = _props2.rowCount;
13214
+
13215
+
13216
+ this._columnSizeAndPositionManager.getSizeAndPositionOfCell(columnCount - 1);
13217
+ this._rowSizeAndPositionManager.getSizeAndPositionOfCell(rowCount - 1);
13218
+ }
13219
+
13220
+ /**
13221
+ * Forced recompute of row heights and column widths.
13222
+ * This function should be called if dynamic column or row sizes have changed but nothing else has.
13223
+ * Since Grid only receives :columnCount and :rowCount it has no way of detecting when the underlying data changes.
13224
+ */
13225
+
13226
+ }, {
13227
+ key: 'recomputeGridSize',
13228
+ value: function recomputeGridSize() {
13229
+ var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
13230
+ _ref4$columnIndex = _ref4.columnIndex,
13231
+ columnIndex = _ref4$columnIndex === undefined ? 0 : _ref4$columnIndex,
13232
+ _ref4$rowIndex = _ref4.rowIndex,
13233
+ rowIndex = _ref4$rowIndex === undefined ? 0 : _ref4$rowIndex;
13234
+
13235
+ var _props3 = this.props,
13236
+ scrollToColumn = _props3.scrollToColumn,
13237
+ scrollToRow = _props3.scrollToRow;
13238
+
13239
+
13240
+ this._columnSizeAndPositionManager.resetCell(columnIndex);
13241
+ this._rowSizeAndPositionManager.resetCell(rowIndex);
13242
+
13243
+ // Cell sizes may be determined by a function property.
13244
+ // In this case the cDU handler can't know if they changed.
13245
+ // Store this flag to let the next cDU pass know it needs to recompute the scroll offset.
13246
+ this._recomputeScrollLeftFlag = scrollToColumn >= 0 && columnIndex <= scrollToColumn;
13247
+ this._recomputeScrollTopFlag = scrollToRow >= 0 && rowIndex <= scrollToRow;
13248
+
13249
+ // Clear cell cache in case we are scrolling;
13250
+ // Invalid row heights likely mean invalid cached content as well.
13251
+ this._cellCache = {};
13252
+ this._styleCache = {};
13253
+
13254
+ this.forceUpdate();
13255
+ }
13256
+
13257
+ /**
13258
+ * Ensure column and row are visible.
13259
+ */
13260
+
13261
+ }, {
13262
+ key: 'scrollToCell',
13263
+ value: function scrollToCell(_ref5) {
13264
+ var columnIndex = _ref5.columnIndex,
13265
+ rowIndex = _ref5.rowIndex;
13266
+ var columnCount = this.props.columnCount;
13267
+
13268
+
13269
+ var props = this.props;
13270
+
13271
+ // Don't adjust scroll offset for single-column grids (eg List, Table).
13272
+ // This can cause a funky scroll offset because of the vertical scrollbar width.
13273
+ if (columnCount > 1 && columnIndex !== undefined) {
13274
+ this._updateScrollLeftForScrollToColumn(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({}, props, {
13275
+ scrollToColumn: columnIndex
13276
+ }));
13277
+ }
13278
+
13279
+ if (rowIndex !== undefined) {
13280
+ this._updateScrollTopForScrollToRow(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({}, props, {
13281
+ scrollToRow: rowIndex
13282
+ }));
13283
+ }
13284
+ }
13285
+ }, {
13286
+ key: 'componentDidMount',
13287
+ value: function componentDidMount() {
13288
+ var _props4 = this.props,
13289
+ getScrollbarSize = _props4.getScrollbarSize,
13290
+ height = _props4.height,
13291
+ scrollLeft = _props4.scrollLeft,
13292
+ scrollToColumn = _props4.scrollToColumn,
13293
+ scrollTop = _props4.scrollTop,
13294
+ scrollToRow = _props4.scrollToRow,
13295
+ width = _props4.width;
13296
+
13297
+ // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.
13298
+ // We must do this at the start of the method as we may calculate and update scroll position below.
13299
+
13300
+ this._handleInvalidatedGridSize();
13301
+
13302
+ // If this component was first rendered server-side, scrollbar size will be undefined.
13303
+ // In that event we need to remeasure.
13304
+ if (!this._scrollbarSizeMeasured) {
13305
+ this._scrollbarSize = getScrollbarSize();
13306
+ this._scrollbarSizeMeasured = true;
13307
+ this.setState({});
13308
+ }
13309
+
13310
+ if (typeof scrollLeft === 'number' && scrollLeft >= 0 || typeof scrollTop === 'number' && scrollTop >= 0) {
13311
+ this.scrollToPosition({ scrollLeft: scrollLeft, scrollTop: scrollTop });
13312
+ }
13313
+
13314
+ // Don't update scroll offset if the size is 0; we don't render any cells in this case.
13315
+ // Setting a state may cause us to later thing we've updated the offce when we haven't.
13316
+ var sizeIsBiggerThanZero = height > 0 && width > 0;
13317
+ if (scrollToColumn >= 0 && sizeIsBiggerThanZero) {
13318
+ this._updateScrollLeftForScrollToColumn();
13319
+ }
13320
+ if (scrollToRow >= 0 && sizeIsBiggerThanZero) {
13321
+ this._updateScrollTopForScrollToRow();
13322
+ }
13323
+
13324
+ // Update onRowsRendered callback
13325
+ this._invokeOnGridRenderedHelper();
13326
+
13327
+ // Initialize onScroll callback
13328
+ this._invokeOnScrollMemoizer({
13329
+ scrollLeft: scrollLeft || 0,
13330
+ scrollTop: scrollTop || 0,
13331
+ totalColumnsWidth: this._columnSizeAndPositionManager.getTotalSize(),
13332
+ totalRowsHeight: this._rowSizeAndPositionManager.getTotalSize()
13333
+ });
13334
+
13335
+ this._maybeCallOnScrollbarPresenceChange();
13336
+ }
13337
+
13338
+ /**
13339
+ * @private
13340
+ * This method updates scrollLeft/scrollTop in state for the following conditions:
13341
+ * 1) New scroll-to-cell props have been set
13342
+ */
13343
+
13344
+ }, {
13345
+ key: 'componentDidUpdate',
13346
+ value: function componentDidUpdate(prevProps, prevState) {
13347
+ var _this2 = this;
13348
+
13349
+ var _props5 = this.props,
13350
+ autoHeight = _props5.autoHeight,
13351
+ autoWidth = _props5.autoWidth,
13352
+ columnCount = _props5.columnCount,
13353
+ height = _props5.height,
13354
+ rowCount = _props5.rowCount,
13355
+ scrollToAlignment = _props5.scrollToAlignment,
13356
+ scrollToColumn = _props5.scrollToColumn,
13357
+ scrollToRow = _props5.scrollToRow,
13358
+ width = _props5.width;
13359
+ var _state = this.state,
13360
+ scrollLeft = _state.scrollLeft,
13361
+ scrollPositionChangeReason = _state.scrollPositionChangeReason,
13362
+ scrollTop = _state.scrollTop;
13363
+
13364
+ // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.
13365
+ // We must do this at the start of the method as we may calculate and update scroll position below.
13366
+
13367
+ this._handleInvalidatedGridSize();
13368
+
13369
+ // Handle edge case where column or row count has only just increased over 0.
13370
+ // In this case we may have to restore a previously-specified scroll offset.
13371
+ // For more info see bvaughn/react-virtualized/issues/218
13372
+ var columnOrRowCountJustIncreasedFromZero = columnCount > 0 && prevProps.columnCount === 0 || rowCount > 0 && prevProps.rowCount === 0;
13373
+
13374
+ // Make sure requested changes to :scrollLeft or :scrollTop get applied.
13375
+ // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,
13376
+ // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).
13377
+ // So we only set these when we require an adjustment of the scroll position.
13378
+ // See issue #2 for more information.
13379
+ if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {
13380
+ // @TRICKY :autoHeight and :autoWidth properties instructs Grid to leave :scrollTop and :scrollLeft management to an external HOC (eg WindowScroller).
13381
+ // In this case we should avoid checking scrollingContainer.scrollTop and scrollingContainer.scrollLeft since it forces layout/flow.
13382
+ if (!autoWidth && scrollLeft >= 0 && (scrollLeft !== prevState.scrollLeft && scrollLeft !== this._scrollingContainer.scrollLeft || columnOrRowCountJustIncreasedFromZero)) {
13383
+ this._scrollingContainer.scrollLeft = scrollLeft;
13384
+ }
13385
+ if (!autoHeight && scrollTop >= 0 && (scrollTop !== prevState.scrollTop && scrollTop !== this._scrollingContainer.scrollTop || columnOrRowCountJustIncreasedFromZero)) {
13386
+ this._scrollingContainer.scrollTop = scrollTop;
13387
+ }
13388
+ }
13389
+
13390
+ // Special case where the previous size was 0:
13391
+ // In this case we don't show any windowed cells at all.
13392
+ // So we should always recalculate offset afterwards.
13393
+ var sizeJustIncreasedFromZero = (prevProps.width === 0 || prevProps.height === 0) && height > 0 && width > 0;
13394
+
13395
+ // Update scroll offsets if the current :scrollToColumn or :scrollToRow values requires it
13396
+ // @TODO Do we also need this check or can the one in componentWillUpdate() suffice?
13397
+ if (this._recomputeScrollLeftFlag) {
13398
+ this._recomputeScrollLeftFlag = false;
13399
+ this._updateScrollLeftForScrollToColumn(this.props);
13400
+ } else {
13401
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_updateScrollIndexHelper__["a" /* default */])({
13402
+ cellSizeAndPositionManager: this._columnSizeAndPositionManager,
13403
+ previousCellsCount: prevProps.columnCount,
13404
+ previousCellSize: prevProps.columnWidth,
13405
+ previousScrollToAlignment: prevProps.scrollToAlignment,
13406
+ previousScrollToIndex: prevProps.scrollToColumn,
13407
+ previousSize: prevProps.width,
13408
+ scrollOffset: scrollLeft,
13409
+ scrollToAlignment: scrollToAlignment,
13410
+ scrollToIndex: scrollToColumn,
13411
+ size: width,
13412
+ sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,
13413
+ updateScrollIndexCallback: function updateScrollIndexCallback() {
13414
+ return _this2._updateScrollLeftForScrollToColumn(_this2.props);
13415
+ }
13416
+ });
13417
+ }
13418
+
13419
+ if (this._recomputeScrollTopFlag) {
13420
+ this._recomputeScrollTopFlag = false;
13421
+ this._updateScrollTopForScrollToRow(this.props);
13422
+ } else {
13423
+ Object(__WEBPACK_IMPORTED_MODULE_12__utils_updateScrollIndexHelper__["a" /* default */])({
13424
+ cellSizeAndPositionManager: this._rowSizeAndPositionManager,
13425
+ previousCellsCount: prevProps.rowCount,
13426
+ previousCellSize: prevProps.rowHeight,
13427
+ previousScrollToAlignment: prevProps.scrollToAlignment,
13428
+ previousScrollToIndex: prevProps.scrollToRow,
13429
+ previousSize: prevProps.height,
13430
+ scrollOffset: scrollTop,
13431
+ scrollToAlignment: scrollToAlignment,
13432
+ scrollToIndex: scrollToRow,
13433
+ size: height,
13434
+ sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,
13435
+ updateScrollIndexCallback: function updateScrollIndexCallback() {
13436
+ return _this2._updateScrollTopForScrollToRow(_this2.props);
13437
+ }
13438
+ });
13439
+ }
13440
+
13441
+ // Update onRowsRendered callback if start/stop indices have changed
13442
+ this._invokeOnGridRenderedHelper();
13443
+
13444
+ // Changes to :scrollLeft or :scrollTop should also notify :onScroll listeners
13445
+ if (scrollLeft !== prevState.scrollLeft || scrollTop !== prevState.scrollTop) {
13446
+ var totalRowsHeight = this._rowSizeAndPositionManager.getTotalSize();
13447
+ var totalColumnsWidth = this._columnSizeAndPositionManager.getTotalSize();
13448
+
13449
+ this._invokeOnScrollMemoizer({
13450
+ scrollLeft: scrollLeft,
13451
+ scrollTop: scrollTop,
13452
+ totalColumnsWidth: totalColumnsWidth,
13453
+ totalRowsHeight: totalRowsHeight
13454
+ });
13455
+ }
13456
+
13457
+ this._maybeCallOnScrollbarPresenceChange();
13458
+ }
13459
+ }, {
13460
+ key: 'componentWillMount',
13461
+ value: function componentWillMount() {
13462
+ var getScrollbarSize = this.props.getScrollbarSize;
13463
+
13464
+ // If this component is being rendered server-side, getScrollbarSize() will return undefined.
13465
+ // We handle this case in componentDidMount()
13466
+
13467
+ this._scrollbarSize = getScrollbarSize();
13468
+ if (this._scrollbarSize === undefined) {
13469
+ this._scrollbarSizeMeasured = false;
13470
+ this._scrollbarSize = 0;
13471
+ } else {
13472
+ this._scrollbarSizeMeasured = true;
13473
+ }
13474
+
13475
+ this._calculateChildrenToRender();
13476
+ }
13477
+ }, {
13478
+ key: 'componentWillUnmount',
13479
+ value: function componentWillUnmount() {
13480
+ if (this._disablePointerEventsTimeoutId) {
13481
+ Object(__WEBPACK_IMPORTED_MODULE_15__utils_requestAnimationTimeout__["cancelAnimationTimeout"])(this._disablePointerEventsTimeoutId);
13482
+ }
13483
+ }
13484
+
13485
+ /**
13486
+ * @private
13487
+ * This method updates scrollLeft/scrollTop in state for the following conditions:
13488
+ * 1) Empty content (0 rows or columns)
13489
+ * 2) New scroll props overriding the current state
13490
+ * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid
13491
+ */
13492
+
13493
+ }, {
13494
+ key: 'componentWillReceiveProps',
13495
+ value: function componentWillReceiveProps(nextProps) {
13496
+ var _this3 = this;
13497
+
13498
+ var _state2 = this.state,
13499
+ scrollLeft = _state2.scrollLeft,
13500
+ scrollTop = _state2.scrollTop;
13501
+
13502
+
13503
+ if (nextProps.columnCount === 0 && scrollLeft !== 0 || nextProps.rowCount === 0 && scrollTop !== 0) {
13504
+ this.scrollToPosition({
13505
+ scrollLeft: 0,
13506
+ scrollTop: 0
13507
+ });
13508
+ } else if (nextProps.scrollLeft !== this.props.scrollLeft || nextProps.scrollTop !== this.props.scrollTop) {
13509
+ var newState = {};
13510
+
13511
+ if (nextProps.scrollLeft != null) {
13512
+ newState.scrollLeft = nextProps.scrollLeft;
13513
+ }
13514
+ if (nextProps.scrollTop != null) {
13515
+ newState.scrollTop = nextProps.scrollTop;
13516
+ }
13517
+
13518
+ this.scrollToPosition(newState);
13519
+ }
13520
+
13521
+ if (nextProps.columnWidth !== this.props.columnWidth || nextProps.rowHeight !== this.props.rowHeight) {
13522
+ this._styleCache = {};
13523
+ }
13524
+
13525
+ this._columnWidthGetter = this._wrapSizeGetter(nextProps.columnWidth);
13526
+ this._rowHeightGetter = this._wrapSizeGetter(nextProps.rowHeight);
13527
+
13528
+ this._columnSizeAndPositionManager.configure({
13529
+ cellCount: nextProps.columnCount,
13530
+ estimatedCellSize: this._getEstimatedColumnSize(nextProps)
13531
+ });
13532
+ this._rowSizeAndPositionManager.configure({
13533
+ cellCount: nextProps.rowCount,
13534
+ estimatedCellSize: this._getEstimatedRowSize(nextProps)
13535
+ });
13536
+
13537
+ var _props6 = this.props,
13538
+ columnCount = _props6.columnCount,
13539
+ rowCount = _props6.rowCount;
13540
+
13541
+ // Special case when either cols or rows were 0
13542
+ // This would prevent any cells from rendering
13543
+ // So we need to reset row scroll if cols changed from 0 (and vice versa)
13544
+
13545
+ if (columnCount === 0 || rowCount === 0) {
13546
+ columnCount = 0;
13547
+ rowCount = 0;
13548
+ }
13549
+
13550
+ // If scrolling is controlled outside this component, clear cache when scrolling stops
13551
+ if (nextProps.autoHeight && nextProps.isScrolling === false && this.props.isScrolling === true) {
13552
+ this._resetStyleCache();
13553
+ }
13554
+
13555
+ // Update scroll offsets if the size or number of cells have changed, invalidating the previous value
13556
+ Object(__WEBPACK_IMPORTED_MODULE_8__utils_calculateSizeAndPositionDataAndUpdateScrollOffset__["a" /* default */])({
13557
+ cellCount: columnCount,
13558
+ cellSize: typeof this.props.columnWidth === 'number' ? this.props.columnWidth : null,
13559
+ computeMetadataCallback: function computeMetadataCallback() {
13560
+ return _this3._columnSizeAndPositionManager.resetCell(0);
13561
+ },
13562
+ computeMetadataCallbackProps: nextProps,
13563
+ nextCellsCount: nextProps.columnCount,
13564
+ nextCellSize: typeof nextProps.columnWidth === 'number' ? nextProps.columnWidth : null,
13565
+ nextScrollToIndex: nextProps.scrollToColumn,
13566
+ scrollToIndex: this.props.scrollToColumn,
13567
+ updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {
13568
+ return _this3._updateScrollLeftForScrollToColumn(nextProps, _this3.state);
13569
+ }
13570
+ });
13571
+ Object(__WEBPACK_IMPORTED_MODULE_8__utils_calculateSizeAndPositionDataAndUpdateScrollOffset__["a" /* default */])({
13572
+ cellCount: rowCount,
13573
+ cellSize: typeof this.props.rowHeight === 'number' ? this.props.rowHeight : null,
13574
+ computeMetadataCallback: function computeMetadataCallback() {
13575
+ return _this3._rowSizeAndPositionManager.resetCell(0);
13576
+ },
13577
+ computeMetadataCallbackProps: nextProps,
13578
+ nextCellsCount: nextProps.rowCount,
13579
+ nextCellSize: typeof nextProps.rowHeight === 'number' ? nextProps.rowHeight : null,
13580
+ nextScrollToIndex: nextProps.scrollToRow,
13581
+ scrollToIndex: this.props.scrollToRow,
13582
+ updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {
13583
+ return _this3._updateScrollTopForScrollToRow(nextProps, _this3.state);
13584
+ }
13585
+ });
13586
+ }
13587
+ }, {
13588
+ key: 'componentWillUpdate',
13589
+ value: function componentWillUpdate(nextProps, nextState) {
13590
+ this._calculateChildrenToRender(nextProps, nextState);
13591
+ }
13592
+ }, {
13593
+ key: 'render',
13594
+ value: function render() {
13595
+ var _props7 = this.props,
13596
+ autoContainerWidth = _props7.autoContainerWidth,
13597
+ autoHeight = _props7.autoHeight,
13598
+ autoWidth = _props7.autoWidth,
13599
+ className = _props7.className,
13600
+ containerProps = _props7.containerProps,
13601
+ containerRole = _props7.containerRole,
13602
+ containerStyle = _props7.containerStyle,
13603
+ height = _props7.height,
13604
+ id = _props7.id,
13605
+ noContentRenderer = _props7.noContentRenderer,
13606
+ role = _props7.role,
13607
+ style = _props7.style,
13608
+ tabIndex = _props7.tabIndex,
13609
+ width = _props7.width;
13610
+
13611
+
13612
+ var isScrolling = this._isScrolling();
13613
+
13614
+ var gridStyle = {
13615
+ boxSizing: 'border-box',
13616
+ direction: 'ltr',
13617
+ height: autoHeight ? 'auto' : height,
13618
+ position: 'relative',
13619
+ width: autoWidth ? 'auto' : width,
13620
+ WebkitOverflowScrolling: 'touch',
13621
+ willChange: 'transform'
13622
+ };
13623
+
13624
+ var totalColumnsWidth = this._columnSizeAndPositionManager.getTotalSize();
13625
+ var totalRowsHeight = this._rowSizeAndPositionManager.getTotalSize();
13626
+
13627
+ // Force browser to hide scrollbars when we know they aren't necessary.
13628
+ // Otherwise once scrollbars appear they may not disappear again.
13629
+ // For more info see issue #116
13630
+ var verticalScrollBarSize = totalRowsHeight > height ? this._scrollbarSize : 0;
13631
+ var horizontalScrollBarSize = totalColumnsWidth > width ? this._scrollbarSize : 0;
13632
+
13633
+ if (horizontalScrollBarSize !== this._horizontalScrollBarSize || verticalScrollBarSize !== this._verticalScrollBarSize) {
13634
+ this._horizontalScrollBarSize = horizontalScrollBarSize;
13635
+ this._verticalScrollBarSize = verticalScrollBarSize;
13636
+ this._scrollbarPresenceChanged = true;
13637
+ }
13638
+
13639
+ // Also explicitly init styles to 'auto' if scrollbars are required.
13640
+ // This works around an obscure edge case where external CSS styles have not yet been loaded,
13641
+ // But an initial scroll index of offset is set as an external prop.
13642
+ // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.
13643
+ // This was originally reported via clauderic/react-infinite-calendar/issues/23
13644
+ gridStyle.overflowX = totalColumnsWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';
13645
+ gridStyle.overflowY = totalRowsHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';
13646
+
13647
+ var childrenToDisplay = this._childrenToDisplay;
13648
+
13649
+ var showNoContentRenderer = childrenToDisplay.length === 0 && height > 0 && width > 0;
13650
+
13651
+ return __WEBPACK_IMPORTED_MODULE_6_react__["createElement"](
13652
+ 'div',
13653
+ __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({
13654
+ ref: this._setScrollingContainerRef
13655
+ }, containerProps, {
13656
+ 'aria-label': this.props['aria-label'],
13657
+ 'aria-readonly': this.props['aria-readonly'],
13658
+ className: __WEBPACK_IMPORTED_MODULE_7_classnames___default()('ReactVirtualized__Grid', className),
13659
+ id: id,
13660
+ onScroll: this._onScroll,
13661
+ role: role,
13662
+ style: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({}, gridStyle, style),
13663
+ tabIndex: tabIndex }),
13664
+ childrenToDisplay.length > 0 && __WEBPACK_IMPORTED_MODULE_6_react__["createElement"](
13665
+ 'div',
13666
+ {
13667
+ className: 'ReactVirtualized__Grid__innerScrollContainer',
13668
+ role: containerRole,
13669
+ style: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({
13670
+ width: autoContainerWidth ? 'auto' : totalColumnsWidth,
13671
+ height: totalRowsHeight,
13672
+ maxWidth: totalColumnsWidth,
13673
+ maxHeight: totalRowsHeight,
13674
+ overflow: 'hidden',
13675
+ pointerEvents: isScrolling ? 'none' : '',
13676
+ position: 'relative'
13677
+ }, containerStyle) },
13678
+ childrenToDisplay
13679
+ ),
13680
+ showNoContentRenderer && noContentRenderer()
13681
+ );
13682
+ }
13683
+
13684
+ /* ---------------------------- Helper methods ---------------------------- */
13685
+
13686
+ }, {
13687
+ key: '_calculateChildrenToRender',
13688
+ value: function _calculateChildrenToRender() {
13689
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;
13690
+ var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;
13691
+ var cellRenderer = props.cellRenderer,
13692
+ cellRangeRenderer = props.cellRangeRenderer,
13693
+ columnCount = props.columnCount,
13694
+ deferredMeasurementCache = props.deferredMeasurementCache,
13695
+ height = props.height,
13696
+ overscanColumnCount = props.overscanColumnCount,
13697
+ overscanIndicesGetter = props.overscanIndicesGetter,
13698
+ overscanRowCount = props.overscanRowCount,
13699
+ rowCount = props.rowCount,
13700
+ width = props.width;
13701
+ var scrollDirectionHorizontal = state.scrollDirectionHorizontal,
13702
+ scrollDirectionVertical = state.scrollDirectionVertical,
13703
+ scrollLeft = state.scrollLeft,
13704
+ scrollTop = state.scrollTop;
13705
+
13706
+
13707
+ var isScrolling = this._isScrolling(props, state);
13708
+
13709
+ this._childrenToDisplay = [];
13710
+
13711
+ // Render only enough columns and rows to cover the visible area of the grid.
13712
+ if (height > 0 && width > 0) {
13713
+ var visibleColumnIndices = this._columnSizeAndPositionManager.getVisibleCellRange({
13714
+ containerSize: width,
13715
+ offset: scrollLeft
13716
+ });
13717
+ var visibleRowIndices = this._rowSizeAndPositionManager.getVisibleCellRange({
13718
+ containerSize: height,
13719
+ offset: scrollTop
13720
+ });
13721
+
13722
+ var horizontalOffsetAdjustment = this._columnSizeAndPositionManager.getOffsetAdjustment({
13723
+ containerSize: width,
13724
+ offset: scrollLeft
13725
+ });
13726
+ var verticalOffsetAdjustment = this._rowSizeAndPositionManager.getOffsetAdjustment({
13727
+ containerSize: height,
13728
+ offset: scrollTop
13729
+ });
13730
+
13731
+ // Store for _invokeOnGridRenderedHelper()
13732
+ this._renderedColumnStartIndex = visibleColumnIndices.start;
13733
+ this._renderedColumnStopIndex = visibleColumnIndices.stop;
13734
+ this._renderedRowStartIndex = visibleRowIndices.start;
13735
+ this._renderedRowStopIndex = visibleRowIndices.stop;
13736
+
13737
+ var overscanColumnIndices = overscanIndicesGetter({
13738
+ direction: 'horizontal',
13739
+ cellCount: columnCount,
13740
+ overscanCellsCount: overscanColumnCount,
13741
+ scrollDirection: scrollDirectionHorizontal,
13742
+ startIndex: typeof visibleColumnIndices.start === 'number' ? visibleColumnIndices.start : 0,
13743
+ stopIndex: typeof visibleColumnIndices.stop === 'number' ? visibleColumnIndices.stop : -1
13744
+ });
13745
+
13746
+ var overscanRowIndices = overscanIndicesGetter({
13747
+ direction: 'vertical',
13748
+ cellCount: rowCount,
13749
+ overscanCellsCount: overscanRowCount,
13750
+ scrollDirection: scrollDirectionVertical,
13751
+ startIndex: typeof visibleRowIndices.start === 'number' ? visibleRowIndices.start : 0,
13752
+ stopIndex: typeof visibleRowIndices.stop === 'number' ? visibleRowIndices.stop : -1
13753
+ });
13754
+
13755
+ // Store for _invokeOnGridRenderedHelper()
13756
+ this._columnStartIndex = overscanColumnIndices.overscanStartIndex;
13757
+ this._columnStopIndex = overscanColumnIndices.overscanStopIndex;
13758
+ this._rowStartIndex = overscanRowIndices.overscanStartIndex;
13759
+ this._rowStopIndex = overscanRowIndices.overscanStopIndex;
13760
+
13761
+ // Advanced use-cases (eg CellMeasurer) require batched measurements to determine accurate sizes.
13762
+ if (deferredMeasurementCache) {
13763
+ // If rows have a dynamic height, scan the rows we are about to render.
13764
+ // If any have not yet been measured, then we need to render all columns initially,
13765
+ // Because the height of the row is equal to the tallest cell within that row,
13766
+ // (And so we can't know the height without measuring all column-cells first).
13767
+ if (!deferredMeasurementCache.hasFixedHeight()) {
13768
+ for (var rowIndex = this._rowStartIndex; rowIndex <= this._rowStopIndex; rowIndex++) {
13769
+ if (!deferredMeasurementCache.has(rowIndex, 0)) {
13770
+ this._columnStartIndex = 0;
13771
+ this._columnStopIndex = columnCount - 1;
13772
+ break;
13773
+ }
13774
+ }
13775
+ }
13776
+
13777
+ // If columns have a dynamic width, scan the columns we are about to render.
13778
+ // If any have not yet been measured, then we need to render all rows initially,
13779
+ // Because the width of the column is equal to the widest cell within that column,
13780
+ // (And so we can't know the width without measuring all row-cells first).
13781
+ if (!deferredMeasurementCache.hasFixedWidth()) {
13782
+ for (var columnIndex = this._columnStartIndex; columnIndex <= this._columnStopIndex; columnIndex++) {
13783
+ if (!deferredMeasurementCache.has(0, columnIndex)) {
13784
+ this._rowStartIndex = 0;
13785
+ this._rowStopIndex = rowCount - 1;
13786
+ break;
13787
+ }
13788
+ }
13789
+ }
13790
+ }
13791
+
13792
+ this._childrenToDisplay = cellRangeRenderer({
13793
+ cellCache: this._cellCache,
13794
+ cellRenderer: cellRenderer,
13795
+ columnSizeAndPositionManager: this._columnSizeAndPositionManager,
13796
+ columnStartIndex: this._columnStartIndex,
13797
+ columnStopIndex: this._columnStopIndex,
13798
+ deferredMeasurementCache: deferredMeasurementCache,
13799
+ horizontalOffsetAdjustment: horizontalOffsetAdjustment,
13800
+ isScrolling: isScrolling,
13801
+ parent: this,
13802
+ rowSizeAndPositionManager: this._rowSizeAndPositionManager,
13803
+ rowStartIndex: this._rowStartIndex,
13804
+ rowStopIndex: this._rowStopIndex,
13805
+ scrollLeft: scrollLeft,
13806
+ scrollTop: scrollTop,
13807
+ styleCache: this._styleCache,
13808
+ verticalOffsetAdjustment: verticalOffsetAdjustment,
13809
+ visibleColumnIndices: visibleColumnIndices,
13810
+ visibleRowIndices: visibleRowIndices
13811
+ });
13812
+ }
13813
+ }
13814
+
13815
+ /**
13816
+ * Sets an :isScrolling flag for a small window of time.
13817
+ * This flag is used to disable pointer events on the scrollable portion of the Grid.
13818
+ * This prevents jerky/stuttery mouse-wheel scrolling.
13819
+ */
13820
+
13821
+ }, {
13822
+ key: '_debounceScrollEnded',
13823
+ value: function _debounceScrollEnded() {
13824
+ var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;
13825
+
13826
+
13827
+ if (this._disablePointerEventsTimeoutId) {
13828
+ Object(__WEBPACK_IMPORTED_MODULE_15__utils_requestAnimationTimeout__["cancelAnimationTimeout"])(this._disablePointerEventsTimeoutId);
13829
+ }
13830
+
13831
+ this._disablePointerEventsTimeoutId = Object(__WEBPACK_IMPORTED_MODULE_15__utils_requestAnimationTimeout__["requestAnimationTimeout"])(this._debounceScrollEndedCallback, scrollingResetTimeInterval);
13832
+ }
13833
+ }, {
13834
+ key: '_getEstimatedColumnSize',
13835
+ value: function _getEstimatedColumnSize(props) {
13836
+ return typeof props.columnWidth === 'number' ? props.columnWidth : props.estimatedColumnSize;
13837
+ }
13838
+ }, {
13839
+ key: '_getEstimatedRowSize',
13840
+ value: function _getEstimatedRowSize(props) {
13841
+ return typeof props.rowHeight === 'number' ? props.rowHeight : props.estimatedRowSize;
13842
+ }
13843
+
13844
+ /**
13845
+ * Check for batched CellMeasurer size invalidations.
13846
+ * This will occur the first time one or more previously unmeasured cells are rendered.
13847
+ */
13848
+
13849
+ }, {
13850
+ key: '_handleInvalidatedGridSize',
13851
+ value: function _handleInvalidatedGridSize() {
13852
+ if (typeof this._deferredInvalidateColumnIndex === 'number' && typeof this._deferredInvalidateRowIndex === 'number') {
13853
+ var columnIndex = this._deferredInvalidateColumnIndex;
13854
+ var rowIndex = this._deferredInvalidateRowIndex;
13855
+
13856
+ this._deferredInvalidateColumnIndex = null;
13857
+ this._deferredInvalidateRowIndex = null;
13858
+
13859
+ this.recomputeGridSize({ columnIndex: columnIndex, rowIndex: rowIndex });
13860
+ }
13861
+ }
13862
+ }, {
13863
+ key: '_invokeOnScrollMemoizer',
13864
+ value: function _invokeOnScrollMemoizer(_ref6) {
13865
+ var _this4 = this;
13866
+
13867
+ var scrollLeft = _ref6.scrollLeft,
13868
+ scrollTop = _ref6.scrollTop,
13869
+ totalColumnsWidth = _ref6.totalColumnsWidth,
13870
+ totalRowsHeight = _ref6.totalRowsHeight;
13871
+
13872
+ this._onScrollMemoizer({
13873
+ callback: function callback(_ref7) {
13874
+ var scrollLeft = _ref7.scrollLeft,
13875
+ scrollTop = _ref7.scrollTop;
13876
+ var _props8 = _this4.props,
13877
+ height = _props8.height,
13878
+ onScroll = _props8.onScroll,
13879
+ width = _props8.width;
13880
+
13881
+
13882
+ onScroll({
13883
+ clientHeight: height,
13884
+ clientWidth: width,
13885
+ scrollHeight: totalRowsHeight,
13886
+ scrollLeft: scrollLeft,
13887
+ scrollTop: scrollTop,
13888
+ scrollWidth: totalColumnsWidth
13889
+ });
13890
+ },
13891
+ indices: {
13892
+ scrollLeft: scrollLeft,
13893
+ scrollTop: scrollTop
13894
+ }
13895
+ });
13896
+ }
13897
+ }, {
13898
+ key: '_isScrolling',
13899
+ value: function _isScrolling() {
13900
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;
13901
+ var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;
13902
+
13903
+ // If isScrolling is defined in props, use it to override the value in state
13904
+ // This is a performance optimization for WindowScroller + Grid
13905
+ return Object.hasOwnProperty.call(props, 'isScrolling') ? Boolean(props.isScrolling) : Boolean(state.isScrolling);
13906
+ }
13907
+ }, {
13908
+ key: '_maybeCallOnScrollbarPresenceChange',
13909
+ value: function _maybeCallOnScrollbarPresenceChange() {
13910
+ if (this._scrollbarPresenceChanged) {
13911
+ var _onScrollbarPresenceChange = this.props.onScrollbarPresenceChange;
13912
+
13913
+
13914
+ this._scrollbarPresenceChanged = false;
13915
+
13916
+ _onScrollbarPresenceChange({
13917
+ horizontal: this._horizontalScrollBarSize > 0,
13918
+ size: this._scrollbarSize,
13919
+ vertical: this._verticalScrollBarSize > 0
13920
+ });
13921
+ }
13922
+ }
13923
+ }, {
13924
+ key: 'scrollToPosition',
13925
+
13926
+
13927
+ /**
13928
+ * Scroll to the specified offset(s).
13929
+ * Useful for animating position changes.
13930
+ */
13931
+ value: function scrollToPosition(_ref8) {
13932
+ var scrollLeft = _ref8.scrollLeft,
13933
+ scrollTop = _ref8.scrollTop;
13934
+
13935
+ var newState = {
13936
+ scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED
13937
+ };
13938
+
13939
+ if (typeof scrollLeft === 'number' && scrollLeft >= 0) {
13940
+ newState.scrollDirectionHorizontal = scrollLeft > this.state.scrollLeft ? __WEBPACK_IMPORTED_MODULE_11__defaultOverscanIndicesGetter__["b" /* SCROLL_DIRECTION_FORWARD */] : __WEBPACK_IMPORTED_MODULE_11__defaultOverscanIndicesGetter__["a" /* SCROLL_DIRECTION_BACKWARD */];
13941
+ newState.scrollLeft = scrollLeft;
13942
+ }
13943
+
13944
+ if (typeof scrollTop === 'number' && scrollTop >= 0) {
13945
+ newState.scrollDirectionVertical = scrollTop > this.state.scrollTop ? __WEBPACK_IMPORTED_MODULE_11__defaultOverscanIndicesGetter__["b" /* SCROLL_DIRECTION_FORWARD */] : __WEBPACK_IMPORTED_MODULE_11__defaultOverscanIndicesGetter__["a" /* SCROLL_DIRECTION_BACKWARD */];
13946
+ newState.scrollTop = scrollTop;
13947
+ }
13948
+
13949
+ if (typeof scrollLeft === 'number' && scrollLeft >= 0 && scrollLeft !== this.state.scrollLeft || typeof scrollTop === 'number' && scrollTop >= 0 && scrollTop !== this.state.scrollTop) {
13950
+ this.setState(newState);
13951
+ }
13952
+ }
13953
+ }, {
13954
+ key: '_wrapSizeGetter',
13955
+ value: function _wrapSizeGetter(value) {
13956
+ return typeof value === 'function' ? value : function () {
13957
+ return value;
13958
+ };
13959
+ }
13960
+ }, {
13961
+ key: '_getCalculatedScrollLeft',
13962
+ value: function _getCalculatedScrollLeft() {
13963
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;
13964
+ var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;
13965
+ var columnCount = props.columnCount,
13966
+ height = props.height,
13967
+ scrollToAlignment = props.scrollToAlignment,
13968
+ scrollToColumn = props.scrollToColumn,
13969
+ width = props.width;
13970
+ var scrollLeft = state.scrollLeft;
13971
+
13972
+
13973
+ if (columnCount > 0) {
13974
+ var finalColumn = columnCount - 1;
13975
+ var targetIndex = scrollToColumn < 0 ? finalColumn : Math.min(finalColumn, scrollToColumn);
13976
+ var totalRowsHeight = this._rowSizeAndPositionManager.getTotalSize();
13977
+ var scrollBarSize = totalRowsHeight > height ? this._scrollbarSize : 0;
13978
+
13979
+ return this._columnSizeAndPositionManager.getUpdatedOffsetForIndex({
13980
+ align: scrollToAlignment,
13981
+ containerSize: width - scrollBarSize,
13982
+ currentOffset: scrollLeft,
13983
+ targetIndex: targetIndex
13984
+ });
13985
+ }
13986
+ }
13987
+ }, {
13988
+ key: '_updateScrollLeftForScrollToColumn',
13989
+ value: function _updateScrollLeftForScrollToColumn() {
13990
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;
13991
+ var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;
13992
+ var scrollLeft = state.scrollLeft;
13993
+
13994
+ var calculatedScrollLeft = this._getCalculatedScrollLeft(props, state);
13995
+
13996
+ if (typeof calculatedScrollLeft === 'number' && calculatedScrollLeft >= 0 && scrollLeft !== calculatedScrollLeft) {
13997
+ this.scrollToPosition({
13998
+ scrollLeft: calculatedScrollLeft,
13999
+ scrollTop: -1
14000
+ });
14001
+ }
14002
+ }
14003
+ }, {
14004
+ key: '_getCalculatedScrollTop',
14005
+ value: function _getCalculatedScrollTop() {
14006
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;
14007
+ var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;
14008
+ var height = props.height,
14009
+ rowCount = props.rowCount,
14010
+ scrollToAlignment = props.scrollToAlignment,
14011
+ scrollToRow = props.scrollToRow,
14012
+ width = props.width;
14013
+ var scrollTop = state.scrollTop;
14014
+
14015
+
14016
+ if (rowCount > 0) {
14017
+ var finalRow = rowCount - 1;
14018
+ var targetIndex = scrollToRow < 0 ? finalRow : Math.min(finalRow, scrollToRow);
14019
+ var totalColumnsWidth = this._columnSizeAndPositionManager.getTotalSize();
14020
+ var scrollBarSize = totalColumnsWidth > width ? this._scrollbarSize : 0;
14021
+
14022
+ return this._rowSizeAndPositionManager.getUpdatedOffsetForIndex({
14023
+ align: scrollToAlignment,
14024
+ containerSize: height - scrollBarSize,
14025
+ currentOffset: scrollTop,
14026
+ targetIndex: targetIndex
14027
+ });
14028
+ }
14029
+ }
14030
+ }, {
14031
+ key: '_resetStyleCache',
14032
+ value: function _resetStyleCache() {
14033
+ var styleCache = this._styleCache;
14034
+
14035
+ // Reset cell and style caches once scrolling stops.
14036
+ // This makes Grid simpler to use (since cells commonly change).
14037
+ // And it keeps the caches from growing too large.
14038
+ // Performance is most sensitive when a user is scrolling.
14039
+ this._cellCache = {};
14040
+ this._styleCache = {};
14041
+
14042
+ // Copy over the visible cell styles so avoid unnecessary re-render.
14043
+ for (var rowIndex = this._rowStartIndex; rowIndex <= this._rowStopIndex; rowIndex++) {
14044
+ for (var columnIndex = this._columnStartIndex; columnIndex <= this._columnStopIndex; columnIndex++) {
14045
+ var key = rowIndex + '-' + columnIndex;
14046
+ this._styleCache[key] = styleCache[key];
14047
+ }
14048
+ }
14049
+
14050
+ this.setState({
14051
+ isScrolling: false
14052
+ });
14053
+ }
14054
+ }, {
14055
+ key: '_updateScrollTopForScrollToRow',
14056
+ value: function _updateScrollTopForScrollToRow() {
14057
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;
14058
+ var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;
14059
+ var scrollTop = state.scrollTop;
14060
+
14061
+ var calculatedScrollTop = this._getCalculatedScrollTop(props, state);
14062
+
14063
+ if (typeof calculatedScrollTop === 'number' && calculatedScrollTop >= 0 && scrollTop !== calculatedScrollTop) {
14064
+ this.scrollToPosition({
14065
+ scrollLeft: -1,
14066
+ scrollTop: calculatedScrollTop
14067
+ });
14068
+ }
14069
+ }
14070
+ }]);
14071
+
14072
+ return Grid;
14073
+ }(__WEBPACK_IMPORTED_MODULE_6_react__["PureComponent"]);
14074
+
14075
+ Grid.defaultProps = {
14076
+ 'aria-label': 'grid',
14077
+ 'aria-readonly': true,
14078
+ autoContainerWidth: false,
14079
+ autoHeight: false,
14080
+ autoWidth: false,
14081
+ cellRangeRenderer: __WEBPACK_IMPORTED_MODULE_13__defaultCellRangeRenderer__["a" /* default */],
14082
+ containerRole: 'rowgroup',
14083
+ containerStyle: {},
14084
+ estimatedColumnSize: 100,
14085
+ estimatedRowSize: 30,
14086
+ getScrollbarSize: __WEBPACK_IMPORTED_MODULE_14_dom_helpers_util_scrollbarSize___default.a,
14087
+ noContentRenderer: renderNull,
14088
+ onScroll: function onScroll() {},
14089
+ onScrollbarPresenceChange: function onScrollbarPresenceChange() {},
14090
+ onSectionRendered: function onSectionRendered() {},
14091
+ overscanColumnCount: 0,
14092
+ overscanIndicesGetter: __WEBPACK_IMPORTED_MODULE_11__defaultOverscanIndicesGetter__["c" /* default */],
14093
+ overscanRowCount: 10,
14094
+ role: 'grid',
14095
+ scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,
14096
+ scrollToAlignment: 'auto',
14097
+ scrollToColumn: -1,
14098
+ scrollToRow: -1,
14099
+ style: {},
14100
+ tabIndex: 0
14101
+ };
14102
+ Grid.propTypes = {
14103
+ "aria-label": __webpack_require__(0).string.isRequired,
14104
+ "aria-readonly": __webpack_require__(0).bool,
14105
+
14106
+
14107
+ /**
14108
+ * Set the width of the inner scrollable container to 'auto'.
14109
+ * This is useful for single-column Grids to ensure that the column doesn't extend below a vertical scrollbar.
14110
+ */
14111
+ autoContainerWidth: __webpack_require__(0).bool.isRequired,
14112
+
14113
+
14114
+ /**
14115
+ * Removes fixed height from the scrollingContainer so that the total height of rows can stretch the window.
14116
+ * Intended for use with WindowScroller
14117
+ */
14118
+ autoHeight: __webpack_require__(0).bool.isRequired,
14119
+
14120
+
14121
+ /**
14122
+ * Removes fixed width from the scrollingContainer so that the total width of rows can stretch the window.
14123
+ * Intended for use with WindowScroller
14124
+ */
14125
+ autoWidth: __webpack_require__(0).bool.isRequired,
14126
+
14127
+
14128
+ /** Responsible for rendering a cell given an row and column index. */
14129
+ cellRenderer: typeof babelPluginFlowReactPropTypes_proptype_CellRenderer === 'function' ? babelPluginFlowReactPropTypes_proptype_CellRenderer.isRequired ? babelPluginFlowReactPropTypes_proptype_CellRenderer.isRequired : babelPluginFlowReactPropTypes_proptype_CellRenderer : __webpack_require__(0).shape(babelPluginFlowReactPropTypes_proptype_CellRenderer).isRequired,
14130
+
14131
+
14132
+ /** Responsible for rendering a group of cells given their index ranges. */
14133
+ cellRangeRenderer: typeof babelPluginFlowReactPropTypes_proptype_CellRangeRenderer === 'function' ? babelPluginFlowReactPropTypes_proptype_CellRangeRenderer.isRequired ? babelPluginFlowReactPropTypes_proptype_CellRangeRenderer.isRequired : babelPluginFlowReactPropTypes_proptype_CellRangeRenderer : __webpack_require__(0).shape(babelPluginFlowReactPropTypes_proptype_CellRangeRenderer).isRequired,
14134
+
14135
+
14136
+ /** Optional custom CSS class name to attach to root Grid element. */
14137
+ className: __webpack_require__(0).string,
14138
+
14139
+
14140
+ /** Number of columns in grid. */
14141
+ columnCount: __webpack_require__(0).number.isRequired,
14142
+
14143
+
14144
+ /** Either a fixed column width (number) or a function that returns the width of a column given its index. */
14145
+ columnWidth: typeof babelPluginFlowReactPropTypes_proptype_CellSize === 'function' ? babelPluginFlowReactPropTypes_proptype_CellSize.isRequired ? babelPluginFlowReactPropTypes_proptype_CellSize.isRequired : babelPluginFlowReactPropTypes_proptype_CellSize : __webpack_require__(0).shape(babelPluginFlowReactPropTypes_proptype_CellSize).isRequired,
14146
+
14147
+
14148
+ /** Unfiltered props for the Grid container. */
14149
+ containerProps: __webpack_require__(0).object,
14150
+
14151
+
14152
+ /** ARIA role for the cell-container. */
14153
+ containerRole: __webpack_require__(0).string.isRequired,
14154
+
14155
+
14156
+ /** Optional inline style applied to inner cell-container */
14157
+ containerStyle: __webpack_require__(0).object.isRequired,
14158
+
14159
+
14160
+ /**
14161
+ * If CellMeasurer is used to measure this Grid's children, this should be a pointer to its CellMeasurerCache.
14162
+ * A shared CellMeasurerCache reference enables Grid and CellMeasurer to share measurement data.
14163
+ */
14164
+ deferredMeasurementCache: __webpack_require__(0).object,
14165
+
14166
+
14167
+ /**
14168
+ * Used to estimate the total width of a Grid before all of its columns have actually been measured.
14169
+ * The estimated total width is adjusted as columns are rendered.
14170
+ */
14171
+ estimatedColumnSize: __webpack_require__(0).number.isRequired,
14172
+
14173
+
14174
+ /**
14175
+ * Used to estimate the total height of a Grid before all of its rows have actually been measured.
14176
+ * The estimated total height is adjusted as rows are rendered.
14177
+ */
14178
+ estimatedRowSize: __webpack_require__(0).number.isRequired,
14179
+
14180
+
14181
+ /** Exposed for testing purposes only. */
14182
+ getScrollbarSize: __webpack_require__(0).func.isRequired,
14183
+
14184
+
14185
+ /** Height of Grid; this property determines the number of visible (vs virtualized) rows. */
14186
+ height: __webpack_require__(0).number.isRequired,
14187
+
14188
+
14189
+ /** Optional custom id to attach to root Grid element. */
14190
+ id: __webpack_require__(0).string,
14191
+
14192
+
14193
+ /**
14194
+ * Override internal is-scrolling state tracking.
14195
+ * This property is primarily intended for use with the WindowScroller component.
14196
+ */
14197
+ isScrolling: __webpack_require__(0).bool,
14198
+
14199
+
14200
+ /** Optional renderer to be used in place of rows when either :rowCount or :columnCount is 0. */
14201
+ noContentRenderer: typeof babelPluginFlowReactPropTypes_proptype_NoContentRenderer === 'function' ? babelPluginFlowReactPropTypes_proptype_NoContentRenderer.isRequired ? babelPluginFlowReactPropTypes_proptype_NoContentRenderer.isRequired : babelPluginFlowReactPropTypes_proptype_NoContentRenderer : __webpack_require__(0).shape(babelPluginFlowReactPropTypes_proptype_NoContentRenderer).isRequired,
14202
+
14203
+
14204
+ /**
14205
+ * Callback invoked whenever the scroll offset changes within the inner scrollable region.
14206
+ * This callback can be used to sync scrolling between lists, tables, or grids.
14207
+ */
14208
+ onScroll: __webpack_require__(0).func.isRequired,
14209
+
14210
+
14211
+ /**
14212
+ * Called whenever a horizontal or vertical scrollbar is added or removed.
14213
+ * This prop is not intended for end-user use;
14214
+ * It is used by MultiGrid to support fixed-row/fixed-column scroll syncing.
14215
+ */
14216
+ onScrollbarPresenceChange: __webpack_require__(0).func.isRequired,
14217
+
14218
+
14219
+ /** Callback invoked with information about the section of the Grid that was just rendered. */
14220
+ onSectionRendered: __webpack_require__(0).func.isRequired,
14221
+
14222
+
14223
+ /**
14224
+ * Number of columns to render before/after the visible section of the grid.
14225
+ * These columns can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.
14226
+ */
14227
+ overscanColumnCount: __webpack_require__(0).number.isRequired,
14228
+
14229
+
14230
+ /**
14231
+ * Calculates the number of cells to overscan before and after a specified range.
14232
+ * This function ensures that overscanning doesn't exceed the available cells.
14233
+ */
14234
+ overscanIndicesGetter: typeof babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter === 'function' ? babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter.isRequired ? babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter.isRequired : babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter : __webpack_require__(0).shape(babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter).isRequired,
14235
+
14236
+
14237
+ /**
14238
+ * Number of rows to render above/below the visible section of the grid.
14239
+ * These rows can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.
14240
+ */
14241
+ overscanRowCount: __webpack_require__(0).number.isRequired,
14242
+
14243
+
14244
+ /** ARIA role for the grid element. */
14245
+ role: __webpack_require__(0).string.isRequired,
14246
+
14247
+
14248
+ /**
14249
+ * Either a fixed row height (number) or a function that returns the height of a row given its index.
14250
+ * Should implement the following interface: ({ index: number }): number
14251
+ */
14252
+ rowHeight: typeof babelPluginFlowReactPropTypes_proptype_CellSize === 'function' ? babelPluginFlowReactPropTypes_proptype_CellSize.isRequired ? babelPluginFlowReactPropTypes_proptype_CellSize.isRequired : babelPluginFlowReactPropTypes_proptype_CellSize : __webpack_require__(0).shape(babelPluginFlowReactPropTypes_proptype_CellSize).isRequired,
14253
+
14254
+
14255
+ /** Number of rows in grid. */
14256
+ rowCount: __webpack_require__(0).number.isRequired,
14257
+
14258
+
14259
+ /** Wait this amount of time after the last scroll event before resetting Grid `pointer-events`. */
14260
+ scrollingResetTimeInterval: __webpack_require__(0).number.isRequired,
14261
+
14262
+
14263
+ /** Horizontal offset. */
14264
+ scrollLeft: __webpack_require__(0).number,
14265
+
14266
+
14267
+ /**
14268
+ * Controls scroll-to-cell behavior of the Grid.
14269
+ * The default ("auto") scrolls the least amount possible to ensure that the specified cell is fully visible.
14270
+ * Use "start" to align cells to the top/left of the Grid and "end" to align bottom/right.
14271
+ */
14272
+ scrollToAlignment: typeof babelPluginFlowReactPropTypes_proptype_Alignment === 'function' ? babelPluginFlowReactPropTypes_proptype_Alignment.isRequired ? babelPluginFlowReactPropTypes_proptype_Alignment.isRequired : babelPluginFlowReactPropTypes_proptype_Alignment : __webpack_require__(0).shape(babelPluginFlowReactPropTypes_proptype_Alignment).isRequired,
14273
+
14274
+
14275
+ /** Column index to ensure visible (by forcefully scrolling if necessary) */
14276
+ scrollToColumn: __webpack_require__(0).number.isRequired,
14277
+
14278
+
14279
+ /** Vertical offset. */
14280
+ scrollTop: __webpack_require__(0).number,
14281
+
14282
+
14283
+ /** Row index to ensure visible (by forcefully scrolling if necessary) */
14284
+ scrollToRow: __webpack_require__(0).number.isRequired,
14285
+
14286
+
14287
+ /** Optional inline style */
14288
+ style: __webpack_require__(0).object.isRequired,
14289
+
14290
+
14291
+ /** Tab index for focus */
14292
+ tabIndex: __webpack_require__(0).number,
14293
+
14294
+
14295
+ /** Width of Grid; this property determines the number of visible (vs virtualized) columns. */
14296
+ width: __webpack_require__(0).number.isRequired
14297
+ };
14298
+ /* harmony default export */ __webpack_exports__["a"] = (Grid);
14299
+
14300
+ /***/ }),
14301
+ /* 247 */
14302
+ /***/ (function(module, exports, __webpack_require__) {
14303
+
14304
+ module.exports = { "default": __webpack_require__(564), __esModule: true };
14305
+
14306
+ /***/ }),
14307
+ /* 248 */
14308
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
14309
+
14310
+ "use strict";
14311
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SCROLL_DIRECTION_BACKWARD; });
14312
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return SCROLL_DIRECTION_FORWARD; });
14313
+ /* unused harmony export SCROLL_DIRECTION_HORIZONTAL */
14314
+ /* unused harmony export SCROLL_DIRECTION_VERTICAL */
14315
+ /* harmony export (immutable) */ __webpack_exports__["c"] = defaultOverscanIndicesGetter;
14316
+ var babelPluginFlowReactPropTypes_proptype_OverscanIndices = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_OverscanIndices || __webpack_require__(0).any;
14317
+
14318
+ var babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetterParams = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetterParams || __webpack_require__(0).any;
14319
+
14320
+ var SCROLL_DIRECTION_BACKWARD = -1;
14321
+ var SCROLL_DIRECTION_FORWARD = 1;
14322
+
14323
+ var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';
14324
+ var SCROLL_DIRECTION_VERTICAL = 'vertical';
14325
+
14326
+ /**
14327
+ * Calculates the number of cells to overscan before and after a specified range.
14328
+ * This function ensures that overscanning doesn't exceed the available cells.
14329
+ */
14330
+
14331
+ function defaultOverscanIndicesGetter(_ref) {
14332
+ var cellCount = _ref.cellCount,
14333
+ overscanCellsCount = _ref.overscanCellsCount,
14334
+ scrollDirection = _ref.scrollDirection,
14335
+ startIndex = _ref.startIndex,
14336
+ stopIndex = _ref.stopIndex;
14337
+
14338
+ if (scrollDirection === SCROLL_DIRECTION_FORWARD) {
14339
+ return {
14340
+ overscanStartIndex: Math.max(0, startIndex),
14341
+ overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)
14342
+ };
14343
+ } else {
14344
+ return {
14345
+ overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),
14346
+ overscanStopIndex: Math.min(cellCount - 1, stopIndex)
14347
+ };
14348
+ }
14349
+ }
14350
+
14351
+ /***/ }),
14352
+ /* 249 */
14353
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
14354
+
14355
+ "use strict";
14356
+ /* WEBPACK VAR INJECTION */(function(process) {/* harmony export (immutable) */ __webpack_exports__["a"] = defaultCellRangeRenderer;
14357
+
14358
+
14359
+ /**
14360
+ * Default implementation of cellRangeRenderer used by Grid.
14361
+ * This renderer supports cell-caching while the user is scrolling.
14362
+ */
14363
+
14364
+ var babelPluginFlowReactPropTypes_proptype_CellRangeRendererParams = __webpack_require__(11).babelPluginFlowReactPropTypes_proptype_CellRangeRendererParams || __webpack_require__(0).any;
14365
+
14366
+ function defaultCellRangeRenderer(_ref) {
14367
+ var cellCache = _ref.cellCache,
14368
+ cellRenderer = _ref.cellRenderer,
14369
+ columnSizeAndPositionManager = _ref.columnSizeAndPositionManager,
14370
+ columnStartIndex = _ref.columnStartIndex,
14371
+ columnStopIndex = _ref.columnStopIndex,
14372
+ deferredMeasurementCache = _ref.deferredMeasurementCache,
14373
+ horizontalOffsetAdjustment = _ref.horizontalOffsetAdjustment,
14374
+ isScrolling = _ref.isScrolling,
14375
+ parent = _ref.parent,
14376
+ rowSizeAndPositionManager = _ref.rowSizeAndPositionManager,
14377
+ rowStartIndex = _ref.rowStartIndex,
14378
+ rowStopIndex = _ref.rowStopIndex,
14379
+ styleCache = _ref.styleCache,
14380
+ verticalOffsetAdjustment = _ref.verticalOffsetAdjustment,
14381
+ visibleColumnIndices = _ref.visibleColumnIndices,
14382
+ visibleRowIndices = _ref.visibleRowIndices;
14383
+
14384
+ var renderedCells = [];
14385
+
14386
+ // Browsers have native size limits for elements (eg Chrome 33M pixels, IE 1.5M pixes).
14387
+ // User cannot scroll beyond these size limitations.
14388
+ // In order to work around this, ScalingCellSizeAndPositionManager compresses offsets.
14389
+ // We should never cache styles for compressed offsets though as this can lead to bugs.
14390
+ // See issue #576 for more.
14391
+ var areOffsetsAdjusted = columnSizeAndPositionManager.areOffsetsAdjusted() || rowSizeAndPositionManager.areOffsetsAdjusted();
14392
+
14393
+ var canCacheStyle = !isScrolling && !areOffsetsAdjusted;
14394
+
14395
+ for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {
14396
+ var rowDatum = rowSizeAndPositionManager.getSizeAndPositionOfCell(rowIndex);
14397
+
14398
+ for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {
14399
+ var columnDatum = columnSizeAndPositionManager.getSizeAndPositionOfCell(columnIndex);
14400
+ var isVisible = columnIndex >= visibleColumnIndices.start && columnIndex <= visibleColumnIndices.stop && rowIndex >= visibleRowIndices.start && rowIndex <= visibleRowIndices.stop;
14401
+ var key = rowIndex + '-' + columnIndex;
14402
+ var style = void 0;
14403
+
14404
+ // Cache style objects so shallow-compare doesn't re-render unnecessarily.
14405
+ if (canCacheStyle && styleCache[key]) {
14406
+ style = styleCache[key];
14407
+ } else {
14408
+ // In deferred mode, cells will be initially rendered before we know their size.
14409
+ // Don't interfere with CellMeasurer's measurements by setting an invalid size.
14410
+ if (deferredMeasurementCache && !deferredMeasurementCache.has(rowIndex, columnIndex)) {
14411
+ // Position not-yet-measured cells at top/left 0,0,
14412
+ // And give them width/height of 'auto' so they can grow larger than the parent Grid if necessary.
14413
+ // Positioning them further to the right/bottom influences their measured size.
14414
+ style = {
14415
+ height: 'auto',
14416
+ left: 0,
14417
+ position: 'absolute',
14418
+ top: 0,
14419
+ width: 'auto'
14420
+ };
14421
+ } else {
14422
+ style = {
14423
+ height: rowDatum.size,
14424
+ left: columnDatum.offset + horizontalOffsetAdjustment,
14425
+ position: 'absolute',
14426
+ top: rowDatum.offset + verticalOffsetAdjustment,
14427
+ width: columnDatum.size
14428
+ };
14429
+
14430
+ styleCache[key] = style;
14431
+ }
14432
+ }
14433
+
14434
+ var cellRendererParams = {
14435
+ columnIndex: columnIndex,
14436
+ isScrolling: isScrolling,
14437
+ isVisible: isVisible,
14438
+ key: key,
14439
+ parent: parent,
14440
+ rowIndex: rowIndex,
14441
+ style: style
14442
+ };
14443
+
14444
+ var renderedCell = void 0;
14445
+
14446
+ // Avoid re-creating cells while scrolling.
14447
+ // This can lead to the same cell being created many times and can cause performance issues for "heavy" cells.
14448
+ // If a scroll is in progress- cache and reuse cells.
14449
+ // This cache will be thrown away once scrolling completes.
14450
+ // However if we are scaling scroll positions and sizes, we should also avoid caching.
14451
+ // This is because the offset changes slightly as scroll position changes and caching leads to stale values.
14452
+ // For more info refer to issue #395
14453
+ if (isScrolling && !horizontalOffsetAdjustment && !verticalOffsetAdjustment) {
14454
+ if (!cellCache[key]) {
14455
+ cellCache[key] = cellRenderer(cellRendererParams);
14456
+ }
14457
+
14458
+ renderedCell = cellCache[key];
14459
+
14460
+ // If the user is no longer scrolling, don't cache cells.
14461
+ // This makes dynamic cell content difficult for users and would also lead to a heavier memory footprint.
14462
+ } else {
14463
+ renderedCell = cellRenderer(cellRendererParams);
14464
+ }
14465
+
14466
+ if (renderedCell == null || renderedCell === false) {
14467
+ continue;
14468
+ }
14469
+
14470
+ if (process.env.NODE_ENV !== 'production') {
14471
+ warnAboutMissingStyle(parent, renderedCell);
14472
+ }
14473
+
14474
+ renderedCells.push(renderedCell);
14475
+ }
14476
+ }
14477
+
14478
+ return renderedCells;
14479
+ }
14480
+
14481
+ function warnAboutMissingStyle(parent, renderedCell) {
14482
+ if (process.env.NODE_ENV !== 'production') {
14483
+ if (renderedCell) {
14484
+ // If the direct child is a CellMeasurer, then we should check its child
14485
+ // See issue #611
14486
+ if (renderedCell.type && renderedCell.type.__internalCellMeasurerFlag) {
14487
+ renderedCell = renderedCell.props.children;
14488
+ }
14489
+
14490
+ if (renderedCell && renderedCell.props && renderedCell.props.style === undefined && parent.__warnedAboutMissingStyle !== true) {
14491
+ parent.__warnedAboutMissingStyle = true;
14492
+
14493
+ console.warn('Rendered cell should include style property for positioning.');
14494
+ }
14495
+ }
14496
+ }
14497
+ }
14498
+ /* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(7)))
14499
+
14500
+ /***/ }),
14501
+ /* 250 */
14502
+ /***/ (function(module, exports, __webpack_require__) {
14503
+
14504
+ "use strict";
14505
+
14506
+
14507
+ Object.defineProperty(exports, "__esModule", {
14508
+ value: true
14509
+ });
14510
+
14511
+ exports.default = function (recalc) {
14512
+ if (!size && size !== 0 || recalc) {
14513
+ if (_inDOM2.default) {
14514
+ var scrollDiv = document.createElement('div');
14515
+
14516
+ scrollDiv.style.position = 'absolute';
14517
+ scrollDiv.style.top = '-9999px';
14518
+ scrollDiv.style.width = '50px';
14519
+ scrollDiv.style.height = '50px';
14520
+ scrollDiv.style.overflow = 'scroll';
14521
+
14522
+ document.body.appendChild(scrollDiv);
14523
+ size = scrollDiv.offsetWidth - scrollDiv.clientWidth;
14524
+ document.body.removeChild(scrollDiv);
14525
+ }
14526
+ }
14527
+
14528
+ return size;
14529
+ };
14530
+
14531
+ var _inDOM = __webpack_require__(567);
14532
+
14533
+ var _inDOM2 = _interopRequireDefault(_inDOM);
14534
+
14535
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14536
+
14537
+ var size = void 0;
14538
+
14539
+ module.exports = exports['default'];
14540
+
14541
+ /***/ }),
14542
+ /* 251 */
14543
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
14544
+
14545
+ "use strict";
14546
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(17);
14547
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__);
14548
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of__ = __webpack_require__(21);
14549
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of__);
14550
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck__ = __webpack_require__(8);
14551
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck__);
14552
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass__ = __webpack_require__(10);
14553
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass__);
14554
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(12);
14555
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn__);
14556
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits__ = __webpack_require__(13);
14557
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits__);
14558
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react__ = __webpack_require__(2);
14559
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react__);
14560
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__vendor_detectElementResize__ = __webpack_require__(252);
14561
+
14562
+
14563
+
14564
+
14565
+
14566
+
14567
+
14568
+
14569
+
14570
+ var AutoSizer = function (_React$PureComponent) {
14571
+ __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits___default()(AutoSizer, _React$PureComponent);
14572
+
14573
+ function AutoSizer() {
14574
+ var _ref;
14575
+
14576
+ var _temp, _this, _ret;
14577
+
14578
+ __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default()(this, AutoSizer);
14579
+
14580
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
14581
+ args[_key] = arguments[_key];
14582
+ }
14583
+
14584
+ return _ret = (_temp = (_this = __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default()(this, (_ref = AutoSizer.__proto__ || __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of___default()(AutoSizer)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
14585
+ height: _this.props.defaultHeight || 0,
14586
+ width: _this.props.defaultWidth || 0
14587
+ }, _this._onResize = function () {
14588
+ var _this$props = _this.props,
14589
+ disableHeight = _this$props.disableHeight,
14590
+ disableWidth = _this$props.disableWidth,
14591
+ onResize = _this$props.onResize;
14592
+
14593
+
14594
+ if (_this._parentNode) {
14595
+ // Guard against AutoSizer component being removed from the DOM immediately after being added.
14596
+ // This can result in invalid style values which can result in NaN values if we don't handle them.
14597
+ // See issue #150 for more context.
14598
+
14599
+ var _height = _this._parentNode.offsetHeight || 0;
14600
+ var _width = _this._parentNode.offsetWidth || 0;
14601
+
14602
+ var _style = window.getComputedStyle(_this._parentNode) || {};
14603
+ var paddingLeft = parseInt(_style.paddingLeft, 10) || 0;
14604
+ var paddingRight = parseInt(_style.paddingRight, 10) || 0;
14605
+ var paddingTop = parseInt(_style.paddingTop, 10) || 0;
14606
+ var paddingBottom = parseInt(_style.paddingBottom, 10) || 0;
14607
+
14608
+ var newHeight = _height - paddingTop - paddingBottom;
14609
+ var newWidth = _width - paddingLeft - paddingRight;
14610
+
14611
+ if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {
14612
+ _this.setState({
14613
+ height: _height - paddingTop - paddingBottom,
14614
+ width: _width - paddingLeft - paddingRight
14615
+ });
14616
+
14617
+ onResize({ height: _height, width: _width });
14618
+ }
14619
+ }
14620
+ }, _this._setRef = function (autoSizer) {
14621
+ _this._autoSizer = autoSizer;
14622
+ }, _temp), __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);
14623
+ }
14624
+
14625
+ __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default()(AutoSizer, [{
14626
+ key: 'componentDidMount',
14627
+ value: function componentDidMount() {
14628
+ var nonce = this.props.nonce;
14629
+
14630
+ if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {
14631
+ // Delay access of parentNode until mount.
14632
+ // This handles edge-cases where the component has already been unmounted before its ref has been set,
14633
+ // As well as libraries like react-lite which have a slightly different lifecycle.
14634
+ this._parentNode = this._autoSizer.parentNode;
14635
+
14636
+ // Defer requiring resize handler in order to support server-side rendering.
14637
+ // See issue #41
14638
+ this._detectElementResize = Object(__WEBPACK_IMPORTED_MODULE_7__vendor_detectElementResize__["a" /* default */])(nonce);
14639
+ this._detectElementResize.addResizeListener(this._parentNode, this._onResize);
14640
+
14641
+ this._onResize();
14642
+ }
14643
+ }
14644
+ }, {
14645
+ key: 'componentWillUnmount',
14646
+ value: function componentWillUnmount() {
14647
+ if (this._detectElementResize && this._parentNode) {
14648
+ this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);
14649
+ }
14650
+ }
14651
+ }, {
14652
+ key: 'render',
14653
+ value: function render() {
14654
+ var _props = this.props,
14655
+ children = _props.children,
14656
+ className = _props.className,
14657
+ disableHeight = _props.disableHeight,
14658
+ disableWidth = _props.disableWidth,
14659
+ style = _props.style;
14660
+ var _state = this.state,
14661
+ height = _state.height,
14662
+ width = _state.width;
14663
+
14664
+ // Outer div should not force width/height since that may prevent containers from shrinking.
14665
+ // Inner component should overflow and use calculated width/height.
14666
+ // See issue #68 for more information.
14667
+
14668
+ var outerStyle = { overflow: 'visible' };
14669
+ var childParams = {};
14670
+
14671
+ if (!disableHeight) {
14672
+ outerStyle.height = 0;
14673
+ childParams.height = height;
14674
+ }
14675
+
14676
+ if (!disableWidth) {
14677
+ outerStyle.width = 0;
14678
+ childParams.width = width;
14679
+ }
14680
+
14681
+ /**
14682
+ * TODO: Avoid rendering children before the initial measurements have been collected.
14683
+ * At best this would just be wasting cycles.
14684
+ * Add this check into version 10 though as it could break too many ref callbacks in version 9.
14685
+ * Note that if default width/height props were provided this would still work with SSR.
14686
+ if (
14687
+ height !== 0 &&
14688
+ width !== 0
14689
+ ) {
14690
+ child = children({ height, width })
14691
+ }
14692
+ */
14693
+
14694
+ return __WEBPACK_IMPORTED_MODULE_6_react__["createElement"](
14695
+ 'div',
14696
+ {
14697
+ className: className,
14698
+ ref: this._setRef,
14699
+ style: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({}, outerStyle, style) },
14700
+ children(childParams)
14701
+ );
14702
+ }
14703
+ }]);
14704
+
14705
+ return AutoSizer;
14706
+ }(__WEBPACK_IMPORTED_MODULE_6_react__["PureComponent"]);
14707
+
14708
+ AutoSizer.defaultProps = {
14709
+ onResize: function onResize() {},
14710
+ disableHeight: false,
14711
+ disableWidth: false,
14712
+ style: {}
14713
+ };
14714
+ AutoSizer.propTypes = {
14715
+ /** Function responsible for rendering children.*/
14716
+ children: __webpack_require__(0).func.isRequired,
14717
+
14718
+
14719
+ /** Optional custom CSS class name to attach to root AutoSizer element. */
14720
+ className: __webpack_require__(0).string,
14721
+
14722
+
14723
+ /** Default height to use for initial render; useful for SSR */
14724
+ defaultHeight: __webpack_require__(0).number,
14725
+
14726
+
14727
+ /** Default width to use for initial render; useful for SSR */
14728
+ defaultWidth: __webpack_require__(0).number,
14729
+
14730
+
14731
+ /** Disable dynamic :height property */
14732
+ disableHeight: __webpack_require__(0).bool.isRequired,
14733
+
14734
+
14735
+ /** Disable dynamic :width property */
14736
+ disableWidth: __webpack_require__(0).bool.isRequired,
14737
+
14738
+
14739
+ /** Nonce of the inlined stylesheet for Content Security Policy */
14740
+ nonce: __webpack_require__(0).string,
14741
+
14742
+
14743
+ /** Callback to be invoked on-resize */
14744
+ onResize: __webpack_require__(0).func.isRequired,
14745
+
14746
+
14747
+ /** Optional inline style */
14748
+ style: __webpack_require__(0).object
14749
+ };
14750
+ /* harmony default export */ __webpack_exports__["a"] = (AutoSizer);
14751
+
14752
+ /***/ }),
14753
+ /* 252 */
14754
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
14755
+
14756
+ "use strict";
14757
+ /* WEBPACK VAR INJECTION */(function(global) {/* harmony export (immutable) */ __webpack_exports__["a"] = createDetectElementResize;
14758
+ /**
14759
+ * Detect Element Resize.
14760
+ * https://github.com/sdecima/javascript-detect-element-resize
14761
+ * Sebastian Decima
14762
+ *
14763
+ * Forked from version 0.5.3; includes the following modifications:
14764
+ * 1) Guard against unsafe 'window' and 'document' references (to support SSR).
14765
+ * 2) Defer initialization code via a top-level function wrapper (to support SSR).
14766
+ * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.
14767
+ * 4) Add nonce for style element.
14768
+ **/
14769
+
14770
+ function createDetectElementResize(nonce) {
14771
+ // Check `document` and `window` in case of server-side rendering
14772
+ var _window;
14773
+ if (typeof window !== 'undefined') {
14774
+ _window = window;
14775
+ } else if (typeof self !== 'undefined') {
14776
+ _window = self;
14777
+ } else {
14778
+ _window = global;
14779
+ }
14780
+
14781
+ var attachEvent = typeof document !== 'undefined' && document.attachEvent;
14782
+
14783
+ if (!attachEvent) {
14784
+ var requestFrame = function () {
14785
+ var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) {
14786
+ return _window.setTimeout(fn, 20);
14787
+ };
14788
+ return function (fn) {
14789
+ return raf(fn);
14790
+ };
14791
+ }();
14792
+
14793
+ var cancelFrame = function () {
14794
+ var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout;
14795
+ return function (id) {
14796
+ return cancel(id);
14797
+ };
14798
+ }();
14799
+
14800
+ var resetTriggers = function resetTriggers(element) {
14801
+ var triggers = element.__resizeTriggers__,
14802
+ expand = triggers.firstElementChild,
14803
+ contract = triggers.lastElementChild,
14804
+ expandChild = expand.firstElementChild;
14805
+ contract.scrollLeft = contract.scrollWidth;
14806
+ contract.scrollTop = contract.scrollHeight;
14807
+ expandChild.style.width = expand.offsetWidth + 1 + 'px';
14808
+ expandChild.style.height = expand.offsetHeight + 1 + 'px';
14809
+ expand.scrollLeft = expand.scrollWidth;
14810
+ expand.scrollTop = expand.scrollHeight;
14811
+ };
14812
+
14813
+ var checkTriggers = function checkTriggers(element) {
14814
+ return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;
14815
+ };
14816
+
14817
+ var scrollListener = function scrollListener(e) {
14818
+ // Don't measure (which forces) reflow for scrolls that happen inside of children!
14819
+ if (e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {
14820
+ return;
14821
+ }
14822
+
14823
+ var element = this;
14824
+ resetTriggers(this);
14825
+ if (this.__resizeRAF__) {
14826
+ cancelFrame(this.__resizeRAF__);
14827
+ }
14828
+ this.__resizeRAF__ = requestFrame(function () {
14829
+ if (checkTriggers(element)) {
14830
+ element.__resizeLast__.width = element.offsetWidth;
14831
+ element.__resizeLast__.height = element.offsetHeight;
14832
+ element.__resizeListeners__.forEach(function (fn) {
14833
+ fn.call(element, e);
14834
+ });
14835
+ }
14836
+ });
14837
+ };
14838
+
14839
+ /* Detect CSS Animations support to detect element display/re-attach */
14840
+ var animation = false,
14841
+ keyframeprefix = '',
14842
+ animationstartevent = 'animationstart',
14843
+ domPrefixes = 'Webkit Moz O ms'.split(' '),
14844
+ startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),
14845
+ pfx = '';
14846
+ {
14847
+ var elm = document.createElement('fakeelement');
14848
+ if (elm.style.animationName !== undefined) {
14849
+ animation = true;
14850
+ }
14851
+
14852
+ if (animation === false) {
14853
+ for (var i = 0; i < domPrefixes.length; i++) {
14854
+ if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {
14855
+ pfx = domPrefixes[i];
14856
+ keyframeprefix = '-' + pfx.toLowerCase() + '-';
14857
+ animationstartevent = startEvents[i];
14858
+ animation = true;
14859
+ break;
14860
+ }
14861
+ }
14862
+ }
14863
+ }
14864
+
14865
+ var animationName = 'resizeanim';
14866
+ var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';
14867
+ var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';
14868
+ }
14869
+
14870
+ var createStyles = function createStyles(doc) {
14871
+ if (!doc.getElementById('detectElementResize')) {
14872
+ //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360
14873
+ var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',
14874
+ head = doc.head || doc.getElementsByTagName('head')[0],
14875
+ style = doc.createElement('style');
14876
+
14877
+ style.id = 'detectElementResize';
14878
+ style.type = 'text/css';
14879
+
14880
+ if (nonce != null) {
14881
+ style.setAttribute('nonce', nonce);
14882
+ }
14883
+
14884
+ if (style.styleSheet) {
14885
+ style.styleSheet.cssText = css;
14886
+ } else {
14887
+ style.appendChild(doc.createTextNode(css));
14888
+ }
14889
+
14890
+ head.appendChild(style);
14891
+ }
14892
+ };
14893
+
14894
+ var addResizeListener = function addResizeListener(element, fn) {
14895
+ if (attachEvent) {
14896
+ element.attachEvent('onresize', fn);
14897
+ } else {
14898
+ if (!element.__resizeTriggers__) {
14899
+ var doc = element.ownerDocument;
14900
+ var elementStyle = _window.getComputedStyle(element);
14901
+ if (elementStyle && elementStyle.position == 'static') {
14902
+ element.style.position = 'relative';
14903
+ }
14904
+ createStyles(doc);
14905
+ element.__resizeLast__ = {};
14906
+ element.__resizeListeners__ = [];
14907
+ (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';
14908
+ element.__resizeTriggers__.innerHTML = '<div class="expand-trigger"><div></div></div>' + '<div class="contract-trigger"></div>';
14909
+ element.appendChild(element.__resizeTriggers__);
14910
+ resetTriggers(element);
14911
+ element.addEventListener('scroll', scrollListener, true);
14912
+
14913
+ /* Listen for a css animation to detect element display/re-attach */
14914
+ if (animationstartevent) {
14915
+ element.__resizeTriggers__.__animationListener__ = function animationListener(e) {
14916
+ if (e.animationName == animationName) {
14917
+ resetTriggers(element);
14918
+ }
14919
+ };
14920
+ element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);
14921
+ }
14922
+ }
14923
+ element.__resizeListeners__.push(fn);
14924
+ }
14925
+ };
14926
+
14927
+ var removeResizeListener = function removeResizeListener(element, fn) {
14928
+ if (attachEvent) {
14929
+ element.detachEvent('onresize', fn);
14930
+ } else {
14931
+ element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
14932
+ if (!element.__resizeListeners__.length) {
14933
+ element.removeEventListener('scroll', scrollListener, true);
14934
+ if (element.__resizeTriggers__.__animationListener__) {
14935
+ element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);
14936
+ element.__resizeTriggers__.__animationListener__ = null;
14937
+ }
14938
+ try {
14939
+ element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);
14940
+ } catch (e) {
14941
+ // Preact compat; see developit/preact-compat/issues/228
14942
+ }
14943
+ }
14944
+ }
14945
+ };
14946
+
14947
+ return {
14948
+ addResizeListener: addResizeListener,
14949
+ removeResizeListener: removeResizeListener
14950
+ };
14951
+ }
14952
+ /* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(34)))
14953
+
14954
+ /***/ }),
14955
+ /* 253 */
14956
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
14957
+
14958
+ "use strict";
14959
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__CellMeasurer__ = __webpack_require__(571);
14960
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__CellMeasurerCache__ = __webpack_require__(254);
14961
+ /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __WEBPACK_IMPORTED_MODULE_0__CellMeasurer__["a"]; });
14962
+ /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_1__CellMeasurerCache__["a"]; });
14963
+
14964
+
14965
+
14966
+ /* unused harmony default export */ var _unused_webpack_default_export = (__WEBPACK_IMPORTED_MODULE_0__CellMeasurer__["a" /* default */]);
14967
+
14968
+
14969
+ /***/ }),
14970
+ /* 254 */
14971
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
14972
+
14973
+ "use strict";
14974
+ /* WEBPACK VAR INJECTION */(function(process) {/* unused harmony export DEFAULT_HEIGHT */
14975
+ /* unused harmony export DEFAULT_WIDTH */
14976
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__ = __webpack_require__(8);
14977
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck__);
14978
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__ = __webpack_require__(10);
14979
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass__);
14980
+
14981
+
14982
+ var DEFAULT_HEIGHT = 30;
14983
+ var DEFAULT_WIDTH = 100;
14984
+
14985
+ // Enables more intelligent mapping of a given column and row index to an item ID.
14986
+ // This prevents a cell cache from being invalidated when its parent collection is modified.
14987
+
14988
+ /**
14989
+ * Caches measurements for a given cell.
14990
+ */
14991
+ var CellMeasurerCache = function () {
14992
+ function CellMeasurerCache() {
14993
+ var _this = this;
14994
+
14995
+ var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
14996
+
14997
+ __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default()(this, CellMeasurerCache);
14998
+
14999
+ this._cellHeightCache = {};
15000
+ this._cellWidthCache = {};
15001
+ this._columnWidthCache = {};
15002
+ this._rowHeightCache = {};
15003
+ this._columnCount = 0;
15004
+ this._rowCount = 0;
15005
+
15006
+ this.columnWidth = function (_ref) {
15007
+ var index = _ref.index;
15008
+
15009
+ var key = _this._keyMapper(0, index);
15010
+
15011
+ return _this._columnWidthCache.hasOwnProperty(key) ? _this._columnWidthCache[key] : _this._defaultWidth;
15012
+ };
15013
+
15014
+ this.rowHeight = function (_ref2) {
15015
+ var index = _ref2.index;
15016
+
15017
+ var key = _this._keyMapper(index, 0);
15018
+
15019
+ return _this._rowHeightCache.hasOwnProperty(key) ? _this._rowHeightCache[key] : _this._defaultHeight;
15020
+ };
15021
+
15022
+ var defaultHeight = params.defaultHeight,
15023
+ defaultWidth = params.defaultWidth,
15024
+ fixedHeight = params.fixedHeight,
15025
+ fixedWidth = params.fixedWidth,
15026
+ keyMapper = params.keyMapper,
15027
+ minHeight = params.minHeight,
15028
+ minWidth = params.minWidth;
15029
+
15030
+
15031
+ this._hasFixedHeight = fixedHeight === true;
15032
+ this._hasFixedWidth = fixedWidth === true;
15033
+ this._minHeight = minHeight || 0;
15034
+ this._minWidth = minWidth || 0;
15035
+ this._keyMapper = keyMapper || defaultKeyMapper;
15036
+
15037
+ this._defaultHeight = Math.max(this._minHeight, typeof defaultHeight === 'number' ? defaultHeight : DEFAULT_HEIGHT);
15038
+ this._defaultWidth = Math.max(this._minWidth, typeof defaultWidth === 'number' ? defaultWidth : DEFAULT_WIDTH);
15039
+
15040
+ if (process.env.NODE_ENV !== 'production') {
15041
+ if (this._hasFixedHeight === false && this._hasFixedWidth === false) {
15042
+ console.warn("CellMeasurerCache should only measure a cell's width or height. " + 'You have configured CellMeasurerCache to measure both. ' + 'This will result in poor performance.');
15043
+ }
15044
+
15045
+ if (this._hasFixedHeight === false && this._defaultHeight === 0) {
15046
+ console.warn('Fixed height CellMeasurerCache should specify a :defaultHeight greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');
15047
+ }
15048
+
15049
+ if (this._hasFixedWidth === false && this._defaultWidth === 0) {
15050
+ console.warn('Fixed width CellMeasurerCache should specify a :defaultWidth greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');
15051
+ }
15052
+ }
15053
+ }
15054
+
15055
+ __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_createClass___default()(CellMeasurerCache, [{
15056
+ key: 'clear',
15057
+ value: function clear(rowIndex) {
15058
+ var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
15059
+
15060
+ var key = this._keyMapper(rowIndex, columnIndex);
15061
+
15062
+ delete this._cellHeightCache[key];
15063
+ delete this._cellWidthCache[key];
15064
+
15065
+ this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);
15066
+ }
15067
+ }, {
15068
+ key: 'clearAll',
15069
+ value: function clearAll() {
15070
+ this._cellHeightCache = {};
15071
+ this._cellWidthCache = {};
15072
+ this._columnWidthCache = {};
15073
+ this._rowHeightCache = {};
15074
+ this._rowCount = 0;
15075
+ this._columnCount = 0;
15076
+ }
15077
+ }, {
15078
+ key: 'hasFixedHeight',
15079
+ value: function hasFixedHeight() {
15080
+ return this._hasFixedHeight;
15081
+ }
15082
+ }, {
15083
+ key: 'hasFixedWidth',
15084
+ value: function hasFixedWidth() {
15085
+ return this._hasFixedWidth;
15086
+ }
15087
+ }, {
15088
+ key: 'getHeight',
15089
+ value: function getHeight(rowIndex) {
15090
+ var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
15091
+
15092
+ if (this._hasFixedHeight) {
15093
+ return this._defaultHeight;
15094
+ } else {
15095
+ var _key = this._keyMapper(rowIndex, columnIndex);
15096
+
15097
+ return this._cellHeightCache.hasOwnProperty(_key) ? Math.max(this._minHeight, this._cellHeightCache[_key]) : this._defaultHeight;
15098
+ }
15099
+ }
15100
+ }, {
15101
+ key: 'getWidth',
15102
+ value: function getWidth(rowIndex) {
15103
+ var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
15104
+
15105
+ if (this._hasFixedWidth) {
15106
+ return this._defaultWidth;
15107
+ } else {
15108
+ var _key2 = this._keyMapper(rowIndex, columnIndex);
15109
+
15110
+ return this._cellWidthCache.hasOwnProperty(_key2) ? Math.max(this._minWidth, this._cellWidthCache[_key2]) : this._defaultWidth;
15111
+ }
15112
+ }
15113
+ }, {
15114
+ key: 'has',
15115
+ value: function has(rowIndex) {
15116
+ var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
15117
+
15118
+ var key = this._keyMapper(rowIndex, columnIndex);
15119
+
15120
+ return this._cellHeightCache.hasOwnProperty(key);
15121
+ }
15122
+ }, {
15123
+ key: 'set',
15124
+ value: function set(rowIndex, columnIndex, width, height) {
15125
+ var key = this._keyMapper(rowIndex, columnIndex);
15126
+
15127
+ if (columnIndex >= this._columnCount) {
15128
+ this._columnCount = columnIndex + 1;
15129
+ }
15130
+ if (rowIndex >= this._rowCount) {
15131
+ this._rowCount = rowIndex + 1;
15132
+ }
15133
+
15134
+ // Size is cached per cell so we don't have to re-measure if cells are re-ordered.
15135
+ this._cellHeightCache[key] = height;
15136
+ this._cellWidthCache[key] = width;
15137
+
15138
+ this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);
15139
+ }
15140
+ }, {
15141
+ key: '_updateCachedColumnAndRowSizes',
15142
+ value: function _updateCachedColumnAndRowSizes(rowIndex, columnIndex) {
15143
+ // :columnWidth and :rowHeight are derived based on all cells in a column/row.
15144
+ // Pre-cache these derived values for faster lookup later.
15145
+ // Reads are expected to occur more frequently than writes in this case.
15146
+ // Only update non-fixed dimensions though to avoid doing unnecessary work.
15147
+ if (!this._hasFixedWidth) {
15148
+ var columnWidth = 0;
15149
+ for (var i = 0; i < this._rowCount; i++) {
15150
+ columnWidth = Math.max(columnWidth, this.getWidth(i, columnIndex));
15151
+ }
15152
+ var columnKey = this._keyMapper(0, columnIndex);
15153
+ this._columnWidthCache[columnKey] = columnWidth;
15154
+ }
15155
+ if (!this._hasFixedHeight) {
15156
+ var rowHeight = 0;
15157
+ for (var _i = 0; _i < this._columnCount; _i++) {
15158
+ rowHeight = Math.max(rowHeight, this.getHeight(rowIndex, _i));
15159
+ }
15160
+ var rowKey = this._keyMapper(rowIndex, 0);
15161
+ this._rowHeightCache[rowKey] = rowHeight;
15162
+ }
15163
+ }
15164
+ }, {
15165
+ key: 'defaultHeight',
15166
+ get: function get() {
15167
+ return this._defaultHeight;
15168
+ }
15169
+ }, {
15170
+ key: 'defaultWidth',
15171
+ get: function get() {
15172
+ return this._defaultWidth;
15173
+ }
15174
+ }]);
15175
+
15176
+ return CellMeasurerCache;
15177
+ }();
15178
+
15179
+ /* harmony default export */ __webpack_exports__["a"] = (CellMeasurerCache);
15180
+
15181
+
15182
+ function defaultKeyMapper(rowIndex, columnIndex) {
15183
+ return rowIndex + '-' + columnIndex;
15184
+ }
15185
+ /* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(7)))
15186
+
15187
+ /***/ }),
15188
+ /* 255 */
15189
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
15190
+
15191
+ "use strict";
15192
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(17);
15193
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__);
15194
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_own_property_descriptor__ = __webpack_require__(584);
15195
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_own_property_descriptor___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_own_property_descriptor__);
15196
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_core_js_object_get_prototype_of__ = __webpack_require__(21);
15197
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_core_js_object_get_prototype_of___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_core_js_object_get_prototype_of__);
15198
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_classCallCheck__ = __webpack_require__(8);
15199
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_classCallCheck__);
15200
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_createClass__ = __webpack_require__(10);
15201
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_createClass__);
15202
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(12);
15203
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_possibleConstructorReturn__);
15204
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_babel_runtime_helpers_inherits__ = __webpack_require__(13);
15205
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_babel_runtime_helpers_inherits__);
15206
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__Grid__ = __webpack_require__(23);
15207
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_react__ = __webpack_require__(2);
15208
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_react__);
15209
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_classnames__ = __webpack_require__(47);
15210
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_9_classnames__);
15211
+
15212
+
15213
+
15214
+
15215
+
15216
+
15217
+
15218
+
15219
+ var babelPluginFlowReactPropTypes_proptype_Scroll = __webpack_require__(23).babelPluginFlowReactPropTypes_proptype_Scroll || __webpack_require__(0).any;
15220
+
15221
+ var babelPluginFlowReactPropTypes_proptype_CellRendererParams = __webpack_require__(23).babelPluginFlowReactPropTypes_proptype_CellRendererParams || __webpack_require__(0).any;
15222
+
15223
+ var babelPluginFlowReactPropTypes_proptype_RenderedSection = __webpack_require__(23).babelPluginFlowReactPropTypes_proptype_RenderedSection || __webpack_require__(0).any;
15224
+
15225
+ var babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter = __webpack_require__(23).babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter || __webpack_require__(0).any;
15226
+
15227
+ var babelPluginFlowReactPropTypes_proptype_CellPosition = __webpack_require__(23).babelPluginFlowReactPropTypes_proptype_CellPosition || __webpack_require__(0).any;
15228
+
15229
+ var babelPluginFlowReactPropTypes_proptype_CellSize = __webpack_require__(23).babelPluginFlowReactPropTypes_proptype_CellSize || __webpack_require__(0).any;
15230
+
15231
+ var babelPluginFlowReactPropTypes_proptype_Alignment = __webpack_require__(23).babelPluginFlowReactPropTypes_proptype_Alignment || __webpack_require__(0).any;
15232
+
15233
+ var babelPluginFlowReactPropTypes_proptype_NoContentRenderer = __webpack_require__(23).babelPluginFlowReactPropTypes_proptype_NoContentRenderer || __webpack_require__(0).any;
15234
+
15235
+ var babelPluginFlowReactPropTypes_proptype_Scroll = __webpack_require__(178).babelPluginFlowReactPropTypes_proptype_Scroll || __webpack_require__(0).any;
15236
+
15237
+ var babelPluginFlowReactPropTypes_proptype_RenderedRows = __webpack_require__(178).babelPluginFlowReactPropTypes_proptype_RenderedRows || __webpack_require__(0).any;
15238
+
15239
+ var babelPluginFlowReactPropTypes_proptype_RowRenderer = __webpack_require__(178).babelPluginFlowReactPropTypes_proptype_RowRenderer || __webpack_require__(0).any;
15240
+
15241
+
15242
+
15243
+
15244
+
15245
+ /**
15246
+ * It is inefficient to create and manage a large list of DOM elements within a scrolling container
15247
+ * if only a few of those elements are visible. The primary purpose of this component is to improve
15248
+ * performance by only rendering the DOM nodes that a user is able to see based on their current
15249
+ * scroll position.
15250
+ *
15251
+ * This component renders a virtualized list of elements with either fixed or dynamic heights.
15252
+ */
15253
+
15254
+ var List = function (_React$PureComponent) {
15255
+ __WEBPACK_IMPORTED_MODULE_6_babel_runtime_helpers_inherits___default()(List, _React$PureComponent);
15256
+
15257
+ function List() {
15258
+ var _ref;
15259
+
15260
+ var _temp, _this, _ret;
15261
+
15262
+ __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_classCallCheck___default()(this, List);
15263
+
15264
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
15265
+ args[_key] = arguments[_key];
15266
+ }
15267
+
15268
+ return _ret = (_temp = (_this = __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_possibleConstructorReturn___default()(this, (_ref = List.__proto__ || __WEBPACK_IMPORTED_MODULE_2_babel_runtime_core_js_object_get_prototype_of___default()(List)).call.apply(_ref, [this].concat(args))), _this), _this._cellRenderer = function (_ref2) {
15269
+ var parent = _ref2.parent,
15270
+ rowIndex = _ref2.rowIndex,
15271
+ style = _ref2.style,
15272
+ isScrolling = _ref2.isScrolling,
15273
+ isVisible = _ref2.isVisible,
15274
+ key = _ref2.key;
15275
+ var rowRenderer = _this.props.rowRenderer;
15276
+
15277
+ // TRICKY The style object is sometimes cached by Grid.
15278
+ // This prevents new style objects from bypassing shallowCompare().
15279
+ // However as of React 16, style props are auto-frozen (at least in dev mode)
15280
+ // Check to make sure we can still modify the style before proceeding.
15281
+ // https://github.com/facebook/react/commit/977357765b44af8ff0cfea327866861073095c12#commitcomment-20648713
15282
+
15283
+ var _Object$getOwnPropert = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_own_property_descriptor___default()(style, 'width'),
15284
+ writable = _Object$getOwnPropert.writable;
15285
+
15286
+ if (writable) {
15287
+ // By default, List cells should be 100% width.
15288
+ // This prevents them from flowing under a scrollbar (if present).
15289
+ style.width = '100%';
15290
+ }
15291
+
15292
+ return rowRenderer({
15293
+ index: rowIndex,
15294
+ style: style,
15295
+ isScrolling: isScrolling,
15296
+ isVisible: isVisible,
15297
+ key: key,
15298
+ parent: parent
15299
+ });
15300
+ }, _this._setRef = function (ref) {
15301
+ _this.Grid = ref;
15302
+ }, _this._onScroll = function (_ref3) {
15303
+ var clientHeight = _ref3.clientHeight,
15304
+ scrollHeight = _ref3.scrollHeight,
15305
+ scrollTop = _ref3.scrollTop;
15306
+ var onScroll = _this.props.onScroll;
15307
+
15308
+
15309
+ onScroll({ clientHeight: clientHeight, scrollHeight: scrollHeight, scrollTop: scrollTop });
15310
+ }, _this._onSectionRendered = function (_ref4) {
15311
+ var rowOverscanStartIndex = _ref4.rowOverscanStartIndex,
15312
+ rowOverscanStopIndex = _ref4.rowOverscanStopIndex,
15313
+ rowStartIndex = _ref4.rowStartIndex,
15314
+ rowStopIndex = _ref4.rowStopIndex;
15315
+ var onRowsRendered = _this.props.onRowsRendered;
15316
+
15317
+
15318
+ onRowsRendered({
15319
+ overscanStartIndex: rowOverscanStartIndex,
15320
+ overscanStopIndex: rowOverscanStopIndex,
15321
+ startIndex: rowStartIndex,
15322
+ stopIndex: rowStopIndex
15323
+ });
15324
+ }, _temp), __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);
15325
+ }
15326
+
15327
+ __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_createClass___default()(List, [{
15328
+ key: 'forceUpdateGrid',
15329
+ value: function forceUpdateGrid() {
15330
+ if (this.Grid) {
15331
+ this.Grid.forceUpdate();
15332
+ }
15333
+ }
15334
+
15335
+ /** See Grid#getOffsetForCell */
15336
+
15337
+ }, {
15338
+ key: 'getOffsetForRow',
15339
+ value: function getOffsetForRow(_ref5) {
15340
+ var alignment = _ref5.alignment,
15341
+ index = _ref5.index;
15342
+
15343
+ if (this.Grid) {
15344
+ var _Grid$getOffsetForCel = this.Grid.getOffsetForCell({
15345
+ alignment: alignment,
15346
+ rowIndex: index,
15347
+ columnIndex: 0
15348
+ }),
15349
+ _scrollTop = _Grid$getOffsetForCel.scrollTop;
15350
+
15351
+ return _scrollTop;
15352
+ }
15353
+ return 0;
15354
+ }
15355
+
15356
+ /** CellMeasurer compatibility */
15357
+
15358
+ }, {
15359
+ key: 'invalidateCellSizeAfterRender',
15360
+ value: function invalidateCellSizeAfterRender(_ref6) {
15361
+ var columnIndex = _ref6.columnIndex,
15362
+ rowIndex = _ref6.rowIndex;
15363
+
15364
+ if (this.Grid) {
15365
+ this.Grid.invalidateCellSizeAfterRender({
15366
+ rowIndex: rowIndex,
15367
+ columnIndex: columnIndex
15368
+ });
15369
+ }
15370
+ }
15371
+
15372
+ /** See Grid#measureAllCells */
15373
+
15374
+ }, {
15375
+ key: 'measureAllRows',
15376
+ value: function measureAllRows() {
15377
+ if (this.Grid) {
15378
+ this.Grid.measureAllCells();
15379
+ }
15380
+ }
15381
+
15382
+ /** CellMeasurer compatibility */
15383
+
15384
+ }, {
15385
+ key: 'recomputeGridSize',
15386
+ value: function recomputeGridSize() {
15387
+ var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
15388
+ _ref7$columnIndex = _ref7.columnIndex,
15389
+ columnIndex = _ref7$columnIndex === undefined ? 0 : _ref7$columnIndex,
15390
+ _ref7$rowIndex = _ref7.rowIndex,
15391
+ rowIndex = _ref7$rowIndex === undefined ? 0 : _ref7$rowIndex;
15392
+
15393
+ if (this.Grid) {
15394
+ this.Grid.recomputeGridSize({
15395
+ rowIndex: rowIndex,
15396
+ columnIndex: columnIndex
15397
+ });
15398
+ }
15399
+ }
15400
+
15401
+ /** See Grid#recomputeGridSize */
15402
+
15403
+ }, {
15404
+ key: 'recomputeRowHeights',
15405
+ value: function recomputeRowHeights() {
15406
+ var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
15407
+
15408
+ if (this.Grid) {
15409
+ this.Grid.recomputeGridSize({
15410
+ rowIndex: index,
15411
+ columnIndex: 0
15412
+ });
15413
+ }
15414
+ }
15415
+
15416
+ /** See Grid#scrollToPosition */
15417
+
15418
+ }, {
15419
+ key: 'scrollToPosition',
15420
+ value: function scrollToPosition() {
15421
+ var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
15422
+
15423
+ if (this.Grid) {
15424
+ this.Grid.scrollToPosition({ scrollTop: scrollTop });
15425
+ }
15426
+ }
15427
+
15428
+ /** See Grid#scrollToCell */
15429
+
15430
+ }, {
15431
+ key: 'scrollToRow',
15432
+ value: function scrollToRow() {
15433
+ var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
15434
+
15435
+ if (this.Grid) {
15436
+ this.Grid.scrollToCell({
15437
+ columnIndex: 0,
15438
+ rowIndex: index
15439
+ });
15440
+ }
15441
+ }
15442
+ }, {
15443
+ key: 'render',
15444
+ value: function render() {
15445
+ var _props = this.props,
15446
+ className = _props.className,
15447
+ noRowsRenderer = _props.noRowsRenderer,
15448
+ scrollToIndex = _props.scrollToIndex,
15449
+ width = _props.width;
15450
+
15451
+
15452
+ var classNames = __WEBPACK_IMPORTED_MODULE_9_classnames___default()('ReactVirtualized__List', className);
15453
+
15454
+ return __WEBPACK_IMPORTED_MODULE_8_react__["createElement"](__WEBPACK_IMPORTED_MODULE_7__Grid__["default"], __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({}, this.props, {
15455
+ autoContainerWidth: true,
15456
+ cellRenderer: this._cellRenderer,
15457
+ className: classNames,
15458
+ columnWidth: width,
15459
+ columnCount: 1,
15460
+ noContentRenderer: noRowsRenderer,
15461
+ onScroll: this._onScroll,
15462
+ onSectionRendered: this._onSectionRendered,
15463
+ ref: this._setRef,
15464
+ scrollToRow: scrollToIndex
15465
+ }));
15466
+ }
15467
+ }]);
15468
+
15469
+ return List;
15470
+ }(__WEBPACK_IMPORTED_MODULE_8_react__["PureComponent"]);
15471
+
15472
+ List.defaultProps = {
15473
+ autoHeight: false,
15474
+ estimatedRowSize: 30,
15475
+ onScroll: function onScroll() {},
15476
+ noRowsRenderer: function noRowsRenderer() {
15477
+ return null;
15478
+ },
15479
+ onRowsRendered: function onRowsRendered() {},
15480
+ overscanIndicesGetter: __WEBPACK_IMPORTED_MODULE_7__Grid__["accessibilityOverscanIndicesGetter"],
15481
+ overscanRowCount: 10,
15482
+ scrollToAlignment: 'auto',
15483
+ scrollToIndex: -1,
15484
+ style: {}
15485
+ };
15486
+ List.propTypes = {
15487
+ "aria-label": __webpack_require__(0).string,
15488
+
15489
+
15490
+ /**
15491
+ * Removes fixed height from the scrollingContainer so that the total height
15492
+ * of rows can stretch the window. Intended for use with WindowScroller
15493
+ */
15494
+ autoHeight: __webpack_require__(0).bool.isRequired,
15495
+
15496
+
15497
+ /** Optional CSS class name */
15498
+ className: __webpack_require__(0).string,
15499
+
15500
+
15501
+ /**
15502
+ * Used to estimate the total height of a List before all of its rows have actually been measured.
15503
+ * The estimated total height is adjusted as rows are rendered.
15504
+ */
15505
+ estimatedRowSize: __webpack_require__(0).number.isRequired,
15506
+
15507
+
15508
+ /** Height constraint for list (determines how many actual rows are rendered) */
15509
+ height: __webpack_require__(0).number.isRequired,
15510
+
15511
+
15512
+ /** Optional renderer to be used in place of rows when rowCount is 0 */
15513
+ noRowsRenderer: typeof babelPluginFlowReactPropTypes_proptype_NoContentRenderer === 'function' ? babelPluginFlowReactPropTypes_proptype_NoContentRenderer.isRequired ? babelPluginFlowReactPropTypes_proptype_NoContentRenderer.isRequired : babelPluginFlowReactPropTypes_proptype_NoContentRenderer : __webpack_require__(0).shape(babelPluginFlowReactPropTypes_proptype_NoContentRenderer).isRequired,
15514
+
15515
+
15516
+ /** Callback invoked with information about the slice of rows that were just rendered. */
15517
+
15518
+ onRowsRendered: __webpack_require__(0).func.isRequired,
15519
+
15520
+
15521
+ /**
15522
+ * Callback invoked whenever the scroll offset changes within the inner scrollable region.
15523
+ * This callback can be used to sync scrolling between lists, tables, or grids.
15524
+ */
15525
+ onScroll: __webpack_require__(0).func.isRequired,
15526
+
15527
+
15528
+ /** See Grid#overscanIndicesGetter */
15529
+ overscanIndicesGetter: typeof babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter === 'function' ? babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter.isRequired ? babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter.isRequired : babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter : __webpack_require__(0).shape(babelPluginFlowReactPropTypes_proptype_OverscanIndicesGetter).isRequired,
15530
+
15531
+
15532
+ /**
15533
+ * Number of rows to render above/below the visible bounds of the list.
15534
+ * These rows can help for smoother scrolling on touch devices.
15535
+ */
15536
+ overscanRowCount: __webpack_require__(0).number.isRequired,
15537
+
15538
+
15539
+ /** Either a fixed row height (number) or a function that returns the height of a row given its index. */
15540
+ rowHeight: typeof babelPluginFlowReactPropTypes_proptype_CellSize === 'function' ? babelPluginFlowReactPropTypes_proptype_CellSize.isRequired ? babelPluginFlowReactPropTypes_proptype_CellSize.isRequired : babelPluginFlowReactPropTypes_proptype_CellSize : __webpack_require__(0).shape(babelPluginFlowReactPropTypes_proptype_CellSize).isRequired,
15541
+
15542
+
15543
+ /** Responsible for rendering a row given an index; ({ index: number }): node */
15544
+ rowRenderer: typeof babelPluginFlowReactPropTypes_proptype_RowRenderer === 'function' ? babelPluginFlowReactPropTypes_proptype_RowRenderer.isRequired ? babelPluginFlowReactPropTypes_proptype_RowRenderer.isRequired : babelPluginFlowReactPropTypes_proptype_RowRenderer : __webpack_require__(0).shape(babelPluginFlowReactPropTypes_proptype_RowRenderer).isRequired,
15545
+
15546
+
15547
+ /** Number of rows in list. */
15548
+ rowCount: __webpack_require__(0).number.isRequired,
15549
+
15550
+
15551
+ /** See Grid#scrollToAlignment */
15552
+ scrollToAlignment: typeof babelPluginFlowReactPropTypes_proptype_Alignment === 'function' ? babelPluginFlowReactPropTypes_proptype_Alignment.isRequired ? babelPluginFlowReactPropTypes_proptype_Alignment.isRequired : babelPluginFlowReactPropTypes_proptype_Alignment : __webpack_require__(0).shape(babelPluginFlowReactPropTypes_proptype_Alignment).isRequired,
15553
+
15554
+
15555
+ /** Row index to ensure visible (by forcefully scrolling if necessary) */
15556
+ scrollToIndex: __webpack_require__(0).number.isRequired,
15557
+
15558
+
15559
+ /** Vertical offset. */
15560
+ scrollTop: __webpack_require__(0).number,
15561
+
15562
+
15563
+ /** Optional inline style */
15564
+ style: __webpack_require__(0).object.isRequired,
15565
+
15566
+
15567
+ /** Tab index for focus */
15568
+ tabIndex: __webpack_require__(0).number,
15569
+
15570
+
15571
+ /** Width of list */
15572
+ width: __webpack_require__(0).number.isRequired
15573
+ };
15574
+ /* harmony default export */ __webpack_exports__["a"] = (List);
15575
+
15576
+ /***/ }),
15577
+ /* 256 */
15578
+ /***/ (function(module, exports, __webpack_require__) {
15579
+
15580
+ // getting tag from 19.1.3.6 Object.prototype.toString()
15581
+ var cof = __webpack_require__(168);
15582
+ var TAG = __webpack_require__(46)('toStringTag');
15583
+ // ES3 wrong here
15584
+ var ARG = cof(function () { return arguments; }()) == 'Arguments';
15585
+
15586
+ // fallback for IE11 Script Access Denied error
15587
+ var tryGet = function (it, key) {
15588
+ try {
15589
+ return it[key];
15590
+ } catch (e) { /* empty */ }
15591
+ };
15592
+
15593
+ module.exports = function (it) {
15594
+ var O, T, B;
15595
+ return it === undefined ? 'Undefined' : it === null ? 'Null'
15596
+ // @@toStringTag case
15597
+ : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
15598
+ // builtinTag case
15599
+ : ARG ? cof(O)
15600
+ // ES3 arguments fallback
15601
+ : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
15602
+ };
15603
+
15604
+
15605
+ /***/ }),
15606
+ /* 257 */
15607
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
15608
+
15609
+ "use strict";
15610
+ /* harmony export (immutable) */ __webpack_exports__["a"] = defaultCellDataGetter;
15611
+
15612
+
15613
+ /**
15614
+ * Default accessor for returning a cell value for a given attribute.
15615
+ * This function expects to operate on either a vanilla Object or an Immutable Map.
15616
+ * You should override the column's cellDataGetter if your data is some other type of object.
15617
+ */
15618
+ var babelPluginFlowReactPropTypes_proptype_CellDataGetterParams = __webpack_require__(92).babelPluginFlowReactPropTypes_proptype_CellDataGetterParams || __webpack_require__(0).any;
15619
+
15620
+ function defaultCellDataGetter(_ref) {
15621
+ var dataKey = _ref.dataKey,
15622
+ rowData = _ref.rowData;
15623
+
15624
+ if (typeof rowData.get === 'function') {
15625
+ return rowData.get(dataKey);
15626
+ } else {
15627
+ return rowData[dataKey];
15628
+ }
15629
+ }
15630
+
15631
+ /***/ }),
15632
+ /* 258 */
15633
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
15634
+
15635
+ "use strict";
15636
+ /* harmony export (immutable) */ __webpack_exports__["a"] = defaultCellRenderer;
15637
+
15638
+
15639
+ /**
15640
+ * Default cell renderer that displays an attribute as a simple string
15641
+ * You should override the column's cellRenderer if your data is some other type of object.
15642
+ */
15643
+ var babelPluginFlowReactPropTypes_proptype_CellRendererParams = __webpack_require__(92).babelPluginFlowReactPropTypes_proptype_CellRendererParams || __webpack_require__(0).any;
15644
+
15645
+ function defaultCellRenderer(_ref) {
15646
+ var cellData = _ref.cellData;
15647
+
15648
+ if (cellData == null) {
15649
+ return '';
15650
+ } else {
15651
+ return String(cellData);
15652
+ }
15653
+ }
15654
+
15655
+ /***/ }),
15656
+ /* 259 */
15657
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
15658
+
15659
+ "use strict";
15660
+ /* harmony export (immutable) */ __webpack_exports__["a"] = defaultHeaderRowRenderer;
15661
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(2);
15662
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);
15663
+
15664
+
15665
+ var babelPluginFlowReactPropTypes_proptype_HeaderRowRendererParams = __webpack_require__(92).babelPluginFlowReactPropTypes_proptype_HeaderRowRendererParams || __webpack_require__(0).any;
15666
+
15667
+ function defaultHeaderRowRenderer(_ref) {
15668
+ var className = _ref.className,
15669
+ columns = _ref.columns,
15670
+ style = _ref.style;
15671
+
15672
+ return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(
15673
+ 'div',
15674
+ { className: className, role: 'row', style: style },
15675
+ columns
15676
+ );
15677
+ }
15678
+ defaultHeaderRowRenderer.propTypes = babelPluginFlowReactPropTypes_proptype_HeaderRowRendererParams === __webpack_require__(0).any ? {} : babelPluginFlowReactPropTypes_proptype_HeaderRowRendererParams;
15679
+
15680
+ /***/ }),
15681
+ /* 260 */
15682
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
15683
+
15684
+ "use strict";
15685
+ /* harmony export (immutable) */ __webpack_exports__["a"] = defaultHeaderRenderer;
15686
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(2);
15687
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);
15688
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__SortIndicator__ = __webpack_require__(261);
15689
+
15690
+
15691
+
15692
+ /**
15693
+ * Default table header renderer.
15694
+ */
15695
+ var babelPluginFlowReactPropTypes_proptype_HeaderRendererParams = __webpack_require__(92).babelPluginFlowReactPropTypes_proptype_HeaderRendererParams || __webpack_require__(0).any;
15696
+
15697
+ function defaultHeaderRenderer(_ref) {
15698
+ var dataKey = _ref.dataKey,
15699
+ label = _ref.label,
15700
+ sortBy = _ref.sortBy,
15701
+ sortDirection = _ref.sortDirection;
15702
+
15703
+ var showSortIndicator = sortBy === dataKey;
15704
+ var children = [__WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(
15705
+ 'span',
15706
+ {
15707
+ className: 'ReactVirtualized__Table__headerTruncatedText',
15708
+ key: 'label',
15709
+ title: label },
15710
+ label
15711
+ )];
15712
+
15713
+ if (showSortIndicator) {
15714
+ children.push(__WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_1__SortIndicator__["a" /* default */], { key: 'SortIndicator', sortDirection: sortDirection }));
15715
+ }
15716
+
15717
+ return children;
15718
+ }
15719
+ defaultHeaderRenderer.propTypes = babelPluginFlowReactPropTypes_proptype_HeaderRendererParams === __webpack_require__(0).any ? {} : babelPluginFlowReactPropTypes_proptype_HeaderRendererParams;
15720
+
15721
+ /***/ }),
15722
+ /* 261 */
15723
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
15724
+
15725
+ "use strict";
15726
+ /* WEBPACK VAR INJECTION */(function(process) {/* harmony export (immutable) */ __webpack_exports__["a"] = SortIndicator;
15727
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames__ = __webpack_require__(47);
15728
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_classnames__);
15729
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_prop_types__ = __webpack_require__(0);
15730
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_prop_types__);
15731
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react__ = __webpack_require__(2);
15732
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react__);
15733
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__SortDirection__ = __webpack_require__(117);
15734
+
15735
+
15736
+
15737
+
15738
+
15739
+ /**
15740
+ * Displayed beside a header to indicate that a Table is currently sorted by this column.
15741
+ */
15742
+ function SortIndicator(_ref) {
15743
+ var sortDirection = _ref.sortDirection;
15744
+
15745
+ var classNames = __WEBPACK_IMPORTED_MODULE_0_classnames___default()('ReactVirtualized__Table__sortableHeaderIcon', {
15746
+ 'ReactVirtualized__Table__sortableHeaderIcon--ASC': sortDirection === __WEBPACK_IMPORTED_MODULE_3__SortDirection__["a" /* default */].ASC,
15747
+ 'ReactVirtualized__Table__sortableHeaderIcon--DESC': sortDirection === __WEBPACK_IMPORTED_MODULE_3__SortDirection__["a" /* default */].DESC
15748
+ });
15749
+
15750
+ return __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement(
15751
+ 'svg',
15752
+ { className: classNames, width: 18, height: 18, viewBox: '0 0 24 24' },
15753
+ sortDirection === __WEBPACK_IMPORTED_MODULE_3__SortDirection__["a" /* default */].ASC ? __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement('path', { d: 'M7 14l5-5 5 5z' }) : __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement('path', { d: 'M7 10l5 5 5-5z' }),
15754
+ __WEBPACK_IMPORTED_MODULE_2_react___default.a.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' })
15755
+ );
15756
+ }
15757
+
15758
+ SortIndicator.propTypes = process.env.NODE_ENV !== "production" ? {
15759
+ sortDirection: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.oneOf([__WEBPACK_IMPORTED_MODULE_3__SortDirection__["a" /* default */].ASC, __WEBPACK_IMPORTED_MODULE_3__SortDirection__["a" /* default */].DESC])
15760
+ } : {};
15761
+ /* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(7)))
15762
+
15763
+ /***/ }),
15764
+ /* 262 */
15765
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
15766
+
15767
+ "use strict";
15768
+ /* harmony export (immutable) */ __webpack_exports__["a"] = defaultRowRenderer;
15769
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(17);
15770
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__);
15771
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react__ = __webpack_require__(2);
15772
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react__);
15773
+
15774
+
15775
+
15776
+ /**
15777
+ * Default row renderer for Table.
15778
+ */
15779
+ var babelPluginFlowReactPropTypes_proptype_RowRendererParams = __webpack_require__(92).babelPluginFlowReactPropTypes_proptype_RowRendererParams || __webpack_require__(0).any;
15780
+
15781
+ function defaultRowRenderer(_ref) {
15782
+ var className = _ref.className,
15783
+ columns = _ref.columns,
15784
+ index = _ref.index,
15785
+ key = _ref.key,
15786
+ onRowClick = _ref.onRowClick,
15787
+ onRowDoubleClick = _ref.onRowDoubleClick,
15788
+ onRowMouseOut = _ref.onRowMouseOut,
15789
+ onRowMouseOver = _ref.onRowMouseOver,
15790
+ onRowRightClick = _ref.onRowRightClick,
15791
+ rowData = _ref.rowData,
15792
+ style = _ref.style;
15793
+
15794
+ var a11yProps = {};
15795
+
15796
+ if (onRowClick || onRowDoubleClick || onRowMouseOut || onRowMouseOver || onRowRightClick) {
15797
+ a11yProps['aria-label'] = 'row';
15798
+ a11yProps.tabIndex = 0;
15799
+
15800
+ if (onRowClick) {
15801
+ a11yProps.onClick = function (event) {
15802
+ return onRowClick({ event: event, index: index, rowData: rowData });
15803
+ };
15804
+ }
15805
+ if (onRowDoubleClick) {
15806
+ a11yProps.onDoubleClick = function (event) {
15807
+ return onRowDoubleClick({ event: event, index: index, rowData: rowData });
15808
+ };
15809
+ }
15810
+ if (onRowMouseOut) {
15811
+ a11yProps.onMouseOut = function (event) {
15812
+ return onRowMouseOut({ event: event, index: index, rowData: rowData });
15813
+ };
15814
+ }
15815
+ if (onRowMouseOver) {
15816
+ a11yProps.onMouseOver = function (event) {
15817
+ return onRowMouseOver({ event: event, index: index, rowData: rowData });
15818
+ };
15819
+ }
15820
+ if (onRowRightClick) {
15821
+ a11yProps.onContextMenu = function (event) {
15822
+ return onRowRightClick({ event: event, index: index, rowData: rowData });
15823
+ };
15824
+ }
15825
+ }
15826
+
15827
+ return __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(
15828
+ 'div',
15829
+ __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({}, a11yProps, {
15830
+ className: className,
15831
+ key: key,
15832
+ role: 'row',
15833
+ style: style }),
15834
+ columns
15835
+ );
15836
+ }
15837
+ defaultRowRenderer.propTypes = babelPluginFlowReactPropTypes_proptype_RowRendererParams === __webpack_require__(0).any ? {} : babelPluginFlowReactPropTypes_proptype_RowRendererParams;
15838
+
15839
+ /***/ }),
15840
+ /* 263 */
15841
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
15842
+
15843
+ "use strict";
15844
+ /* WEBPACK VAR INJECTION */(function(process) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of__ = __webpack_require__(21);
15845
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of__);
15846
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(8);
15847
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);
15848
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(12);
15849
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__);
15850
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__ = __webpack_require__(13);
15851
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__);
15852
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_prop_types__ = __webpack_require__(0);
15853
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_prop_types__);
15854
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react__ = __webpack_require__(2);
15855
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react__);
15856
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__defaultHeaderRenderer__ = __webpack_require__(260);
15857
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__defaultCellRenderer__ = __webpack_require__(258);
15858
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__defaultCellDataGetter__ = __webpack_require__(257);
15859
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__SortDirection__ = __webpack_require__(117);
15860
+
15861
+
15862
+
15863
+
15864
+
15865
+
15866
+
15867
+
15868
+
15869
+
15870
+
15871
+ /**
15872
+ * Describes the header and cell contents of a table column.
15873
+ */
15874
+
15875
+ var Column = function (_Component) {
15876
+ __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(Column, _Component);
15877
+
15878
+ function Column() {
15879
+ __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, Column);
15880
+
15881
+ return __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, (Column.__proto__ || __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_get_prototype_of___default()(Column)).apply(this, arguments));
15882
+ }
15883
+
15884
+ return Column;
15885
+ }(__WEBPACK_IMPORTED_MODULE_5_react__["Component"]);
15886
+
15887
+ Column.defaultProps = {
15888
+ cellDataGetter: __WEBPACK_IMPORTED_MODULE_8__defaultCellDataGetter__["a" /* default */],
15889
+ cellRenderer: __WEBPACK_IMPORTED_MODULE_7__defaultCellRenderer__["a" /* default */],
15890
+ defaultSortDirection: __WEBPACK_IMPORTED_MODULE_9__SortDirection__["a" /* default */].ASC,
15891
+ flexGrow: 0,
15892
+ flexShrink: 1,
15893
+ headerRenderer: __WEBPACK_IMPORTED_MODULE_6__defaultHeaderRenderer__["a" /* default */],
15894
+ style: {}
15895
+ };
15896
+ /* harmony default export */ __webpack_exports__["a"] = (Column);
15897
+ Column.propTypes = process.env.NODE_ENV !== "production" ? {
15898
+ /** Optional aria-label value to set on the column header */
15899
+ 'aria-label': __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.string,
15900
+
15901
+ /**
15902
+ * Callback responsible for returning a cell's data, given its :dataKey
15903
+ * ({ columnData: any, dataKey: string, rowData: any }): any
15904
+ */
15905
+ cellDataGetter: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.func,
15906
+
15907
+ /**
15908
+ * Callback responsible for rendering a cell's contents.
15909
+ * ({ cellData: any, columnData: any, dataKey: string, rowData: any, rowIndex: number }): node
15910
+ */
15911
+ cellRenderer: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.func,
15912
+
15913
+ /** Optional CSS class to apply to cell */
15914
+ className: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.string,
15915
+
15916
+ /** Optional additional data passed to this column's :cellDataGetter */
15917
+ columnData: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.object,
15918
+
15919
+ /** Uniquely identifies the row-data attribute corresponding to this cell */
15920
+ dataKey: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.any.isRequired,
15921
+
15922
+ /** Optional direction to be used when clicked the first time */
15923
+ defaultSortDirection: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.oneOf([__WEBPACK_IMPORTED_MODULE_9__SortDirection__["a" /* default */].ASC, __WEBPACK_IMPORTED_MODULE_9__SortDirection__["a" /* default */].DESC]),
15924
+
15925
+ /** If sort is enabled for the table at large, disable it for this column */
15926
+ disableSort: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.bool,
15927
+
15928
+ /** Flex grow style; defaults to 0 */
15929
+ flexGrow: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.number,
15930
+
15931
+ /** Flex shrink style; defaults to 1 */
15932
+ flexShrink: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.number,
15933
+
15934
+ /** Optional CSS class to apply to this column's header */
15935
+ headerClassName: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.string,
15936
+
15937
+ /**
15938
+ * Optional callback responsible for rendering a column header contents.
15939
+ * ({ columnData: object, dataKey: string, disableSort: boolean, label: node, sortBy: string, sortDirection: string }): PropTypes.node
15940
+ */
15941
+ headerRenderer: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.func.isRequired,
15942
+
15943
+ /** Optional inline style to apply to this column's header */
15944
+ headerStyle: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.object,
15945
+
15946
+ /** Optional id to set on the column header */
15947
+ id: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.string,
15948
+
15949
+ /** Header label for this column */
15950
+ label: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.node,
15951
+
15952
+ /** Maximum width of column; this property will only be used if :flexGrow is > 0. */
15953
+ maxWidth: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.number,
15954
+
15955
+ /** Minimum width of column. */
15956
+ minWidth: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.number,
15957
+
15958
+ /** Optional inline style to apply to cell */
15959
+ style: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.object,
15960
+
15961
+ /** Flex basis (width) for this column; This value can grow or shrink based on :flexGrow and :flexShrink properties. */
15962
+ width: __WEBPACK_IMPORTED_MODULE_4_prop_types___default.a.number.isRequired
15963
+ } : {};
15964
+ /* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(7)))
15965
+
15966
+ /***/ }),
15967
+ /* 264 */
15968
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
15969
+
15970
+ "use strict";
15971
+ /* unused harmony export IS_SCROLLING_TIMEOUT */
15972
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(17);
15973
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__);
15974
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of__ = __webpack_require__(21);
15975
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of__);
15976
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck__ = __webpack_require__(8);
15977
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck__);
15978
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass__ = __webpack_require__(10);
15979
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass__);
15980
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(12);
15981
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn__);
15982
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits__ = __webpack_require__(13);
15983
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits__);
15984
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react__ = __webpack_require__(2);
15985
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react__);
15986
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_dom__ = __webpack_require__(19);
15987
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_dom___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_react_dom__);
15988
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_onScroll__ = __webpack_require__(609);
15989
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__utils_dimensions__ = __webpack_require__(610);
15990
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__vendor_detectElementResize__ = __webpack_require__(252);
15991
+
15992
+
15993
+
15994
+
15995
+
15996
+
15997
+
15998
+
15999
+
16000
+
16001
+
16002
+
16003
+ /**
16004
+ * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.
16005
+ * This improves performance and makes scrolling smoother.
16006
+ */
16007
+ var IS_SCROLLING_TIMEOUT = 150;
16008
+
16009
+ var getWindow = function getWindow() {
16010
+ return typeof window !== 'undefined' ? window : undefined;
16011
+ };
16012
+
16013
+ var WindowScroller = function (_React$PureComponent) {
16014
+ __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits___default()(WindowScroller, _React$PureComponent);
16015
+
16016
+ function WindowScroller() {
16017
+ var _ref;
16018
+
16019
+ var _temp, _this, _ret;
16020
+
16021
+ __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default()(this, WindowScroller);
16022
+
16023
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
16024
+ args[_key] = arguments[_key];
16025
+ }
16026
+
16027
+ return _ret = (_temp = (_this = __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default()(this, (_ref = WindowScroller.__proto__ || __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_get_prototype_of___default()(WindowScroller)).call.apply(_ref, [this].concat(args))), _this), _this._window = getWindow(), _this._isMounted = false, _this._positionFromTop = 0, _this._positionFromLeft = 0, _this.state = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({}, Object(__WEBPACK_IMPORTED_MODULE_9__utils_dimensions__["a" /* getDimensions */])(_this.props.scrollElement, _this.props), {
16028
+ isScrolling: false,
16029
+ scrollLeft: 0,
16030
+ scrollTop: 0
16031
+ }), _this._registerChild = function (element) {
16032
+ if (element && !(element instanceof Element)) {
16033
+ console.warn('WindowScroller registerChild expects to be passed Element or null');
16034
+ }
16035
+ _this._child = element;
16036
+ _this.updatePosition();
16037
+ }, _this._onChildScroll = function (_ref2) {
16038
+ var scrollTop = _ref2.scrollTop;
16039
+
16040
+ if (_this.state.scrollTop === scrollTop) {
16041
+ return;
16042
+ }
16043
+
16044
+ var scrollElement = _this.props.scrollElement;
16045
+ if (scrollElement) {
16046
+ if (typeof scrollElement.scrollTo === 'function') {
16047
+ scrollElement.scrollTo(0, scrollTop + _this._positionFromTop);
16048
+ } else {
16049
+ scrollElement.scrollTop = scrollTop + _this._positionFromTop;
16050
+ }
16051
+ }
16052
+ }, _this._registerResizeListener = function (element) {
16053
+ if (element === window) {
16054
+ window.addEventListener('resize', _this._onResize, false);
16055
+ } else {
16056
+ _this._detectElementResize.addResizeListener(element, _this._onResize);
16057
+ }
16058
+ }, _this._unregisterResizeListener = function (element) {
16059
+ if (element === window) {
16060
+ window.removeEventListener('resize', _this._onResize, false);
16061
+ } else if (element) {
16062
+ _this._detectElementResize.removeResizeListener(element, _this._onResize);
16063
+ }
16064
+ }, _this._onResize = function () {
16065
+ _this.updatePosition();
16066
+ }, _this.__handleWindowScrollEvent = function () {
16067
+ if (!_this._isMounted) {
16068
+ return;
16069
+ }
16070
+
16071
+ var onScroll = _this.props.onScroll;
16072
+
16073
+
16074
+ var scrollElement = _this.props.scrollElement;
16075
+ if (scrollElement) {
16076
+ var scrollOffset = Object(__WEBPACK_IMPORTED_MODULE_9__utils_dimensions__["c" /* getScrollOffset */])(scrollElement);
16077
+ var _scrollLeft = Math.max(0, scrollOffset.left - _this._positionFromLeft);
16078
+ var _scrollTop = Math.max(0, scrollOffset.top - _this._positionFromTop);
16079
+
16080
+ _this.setState({
16081
+ isScrolling: true,
16082
+ scrollLeft: _scrollLeft,
16083
+ scrollTop: _scrollTop
16084
+ });
16085
+
16086
+ onScroll({
16087
+ scrollLeft: _scrollLeft,
16088
+ scrollTop: _scrollTop
16089
+ });
16090
+ }
16091
+ }, _this.__resetIsScrolling = function () {
16092
+ _this.setState({
16093
+ isScrolling: false
16094
+ });
16095
+ }, _temp), __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);
16096
+ }
16097
+
16098
+ __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default()(WindowScroller, [{
16099
+ key: 'updatePosition',
16100
+ value: function updatePosition() {
16101
+ var scrollElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.scrollElement;
16102
+ var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.props;
16103
+ var onResize = this.props.onResize;
16104
+ var _state = this.state,
16105
+ height = _state.height,
16106
+ width = _state.width;
16107
+
16108
+
16109
+ var thisNode = this._child || __WEBPACK_IMPORTED_MODULE_7_react_dom___default.a.findDOMNode(this);
16110
+ if (thisNode instanceof Element && scrollElement) {
16111
+ var offset = Object(__WEBPACK_IMPORTED_MODULE_9__utils_dimensions__["b" /* getPositionOffset */])(thisNode, scrollElement);
16112
+ this._positionFromTop = offset.top;
16113
+ this._positionFromLeft = offset.left;
16114
+ }
16115
+
16116
+ var dimensions = Object(__WEBPACK_IMPORTED_MODULE_9__utils_dimensions__["a" /* getDimensions */])(scrollElement, props);
16117
+ if (height !== dimensions.height || width !== dimensions.width) {
16118
+ this.setState({
16119
+ height: dimensions.height,
16120
+ width: dimensions.width
16121
+ });
16122
+ onResize({
16123
+ height: dimensions.height,
16124
+ width: dimensions.width
16125
+ });
16126
+ }
16127
+ }
16128
+ }, {
16129
+ key: 'componentDidMount',
16130
+ value: function componentDidMount() {
16131
+ var scrollElement = this.props.scrollElement;
16132
+
16133
+ this._detectElementResize = Object(__WEBPACK_IMPORTED_MODULE_10__vendor_detectElementResize__["a" /* default */])();
16134
+
16135
+ this.updatePosition(scrollElement);
16136
+
16137
+ if (scrollElement) {
16138
+ Object(__WEBPACK_IMPORTED_MODULE_8__utils_onScroll__["a" /* registerScrollListener */])(this, scrollElement);
16139
+ this._registerResizeListener(scrollElement);
16140
+ }
16141
+
16142
+ this._isMounted = true;
16143
+ }
16144
+ }, {
16145
+ key: 'componentWillReceiveProps',
16146
+ value: function componentWillReceiveProps(nextProps) {
16147
+ var scrollElement = this.props.scrollElement;
16148
+ var nextScrollElement = nextProps.scrollElement;
16149
+
16150
+ if (scrollElement !== nextScrollElement && scrollElement && nextScrollElement) {
16151
+ this.updatePosition(nextScrollElement, nextProps);
16152
+
16153
+ Object(__WEBPACK_IMPORTED_MODULE_8__utils_onScroll__["b" /* unregisterScrollListener */])(this, scrollElement);
16154
+ Object(__WEBPACK_IMPORTED_MODULE_8__utils_onScroll__["a" /* registerScrollListener */])(this, nextScrollElement);
16155
+
16156
+ this._unregisterResizeListener(scrollElement);
16157
+ this._registerResizeListener(nextScrollElement);
16158
+ }
16159
+ }
16160
+ }, {
16161
+ key: 'componentWillUnmount',
16162
+ value: function componentWillUnmount() {
16163
+ var scrollElement = this.props.scrollElement;
16164
+ if (scrollElement) {
16165
+ Object(__WEBPACK_IMPORTED_MODULE_8__utils_onScroll__["b" /* unregisterScrollListener */])(this, scrollElement);
16166
+ this._unregisterResizeListener(scrollElement);
16167
+ }
16168
+
16169
+ this._isMounted = false;
16170
+ }
16171
+ }, {
16172
+ key: 'render',
16173
+ value: function render() {
16174
+ var children = this.props.children;
16175
+ var _state2 = this.state,
16176
+ isScrolling = _state2.isScrolling,
16177
+ scrollTop = _state2.scrollTop,
16178
+ scrollLeft = _state2.scrollLeft,
16179
+ height = _state2.height,
16180
+ width = _state2.width;
16181
+
16182
+
16183
+ return children({
16184
+ onChildScroll: this._onChildScroll,
16185
+ registerChild: this._registerChild,
16186
+ height: height,
16187
+ isScrolling: isScrolling,
16188
+ scrollLeft: scrollLeft,
16189
+ scrollTop: scrollTop,
16190
+ width: width
16191
+ });
16192
+ }
16193
+
16194
+ // Referenced by utils/onScroll
16195
+
16196
+
16197
+ // Referenced by utils/onScroll
16198
+
16199
+ }]);
16200
+
16201
+ return WindowScroller;
16202
+ }(__WEBPACK_IMPORTED_MODULE_6_react__["PureComponent"]);
16203
+
16204
+ WindowScroller.defaultProps = {
16205
+ onResize: function onResize() {},
16206
+ onScroll: function onScroll() {},
16207
+ scrollingResetTimeInterval: IS_SCROLLING_TIMEOUT,
16208
+ scrollElement: getWindow(),
16209
+ serverHeight: 0,
16210
+ serverWidth: 0
16211
+ };
16212
+ WindowScroller.propTypes = {
16213
+ /**
16214
+ * Function responsible for rendering children.
16215
+ * This function should implement the following signature:
16216
+ * ({ height, isScrolling, scrollLeft, scrollTop, width }) => PropTypes.element
16217
+ */
16218
+ children: __webpack_require__(0).func.isRequired,
16219
+
16220
+
16221
+ /** Callback to be invoked on-resize: ({ height, width }) */
16222
+ onResize: __webpack_require__(0).func.isRequired,
16223
+
16224
+
16225
+ /** Callback to be invoked on-scroll: ({ scrollLeft, scrollTop }) */
16226
+ onScroll: __webpack_require__(0).func.isRequired,
16227
+
16228
+
16229
+ /** Element to attach scroll event listeners. Defaults to window. */
16230
+ scrollElement: __webpack_require__(0).oneOfType([__webpack_require__(0).any, typeof Element === 'function' ? __webpack_require__(0).instanceOf(Element) : __webpack_require__(0).any]),
16231
+
16232
+ /**
16233
+ * Wait this amount of time after the last scroll event before resetting child `pointer-events`.
16234
+ */
16235
+ scrollingResetTimeInterval: __webpack_require__(0).number.isRequired,
16236
+
16237
+
16238
+ /** Height used for server-side rendering */
16239
+ serverHeight: __webpack_require__(0).number.isRequired,
16240
+
16241
+
16242
+ /** Width used for server-side rendering */
16243
+ serverWidth: __webpack_require__(0).number.isRequired
16244
+ };
16245
+ /* harmony default export */ __webpack_exports__["a"] = (WindowScroller);
16246
+
16247
+ /***/ }),
16248
+ /* 265 */
16249
+ /***/ (function(module, exports, __webpack_require__) {
16250
+
16251
+ "use strict";
16252
+
16253
+
16254
+ Object.defineProperty(exports, "__esModule", {
16255
+ value: true
16256
+ });
16257
+ exports.unpackBackendForEs5Users = exports.createChildContext = exports.CHILD_CONTEXT_TYPES = undefined;
16258
+
16259
+ 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; };
16260
+
16261
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
16262
+
16263
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
16264
+
16265
+ exports.default = DragDropContext;
16266
+
16267
+ var _react = __webpack_require__(2);
16268
+
16269
+ var _react2 = _interopRequireDefault(_react);
16270
+
16271
+ var _propTypes = __webpack_require__(0);
16272
+
16273
+ var _propTypes2 = _interopRequireDefault(_propTypes);
16274
+
16275
+ var _dndCore = __webpack_require__(619);
16276
+
16277
+ var _invariant = __webpack_require__(28);
16278
+
16279
+ var _invariant2 = _interopRequireDefault(_invariant);
16280
+
16281
+ var _hoistNonReactStatics = __webpack_require__(189);
16282
+
16283
+ var _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);
16284
+
16285
+ var _checkDecoratorArguments = __webpack_require__(127);
16286
+
16287
+ var _checkDecoratorArguments2 = _interopRequireDefault(_checkDecoratorArguments);
16288
+
16289
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16290
+
16291
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
16292
+
16293
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
16294
+
16295
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
16296
+
16297
+ var CHILD_CONTEXT_TYPES = exports.CHILD_CONTEXT_TYPES = {
16298
+ dragDropManager: _propTypes2.default.object.isRequired
16299
+ };
16300
+
16301
+ var createChildContext = exports.createChildContext = function createChildContext(backend, context) {
16302
+ return {
16303
+ dragDropManager: new _dndCore.DragDropManager(backend, context)
16304
+ };
16305
+ };
16306
+
16307
+ var unpackBackendForEs5Users = exports.unpackBackendForEs5Users = function unpackBackendForEs5Users(backendOrModule) {
16308
+ // Auto-detect ES6 default export for people still using ES5
16309
+ var backend = backendOrModule;
16310
+ if ((typeof backend === 'undefined' ? 'undefined' : _typeof(backend)) === 'object' && typeof backend.default === 'function') {
16311
+ backend = backend.default;
16312
+ }
16313
+ (0, _invariant2.default)(typeof backend === 'function', 'Expected the backend to be a function or an ES6 module exporting a default function. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs-drag-drop-context.html');
16314
+ return backend;
16315
+ };
16316
+
16317
+ function DragDropContext(backendOrModule) {
16318
+ _checkDecoratorArguments2.default.apply(undefined, ['DragDropContext', 'backend'].concat(Array.prototype.slice.call(arguments))); // eslint-disable-line prefer-rest-params
16319
+
16320
+ var backend = unpackBackendForEs5Users(backendOrModule);
16321
+ var childContext = createChildContext(backend);
16322
+
16323
+ return function decorateContext(DecoratedComponent) {
16324
+ var _class, _temp;
16325
+
16326
+ var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';
16327
+
16328
+ var DragDropContextContainer = (_temp = _class = function (_Component) {
16329
+ _inherits(DragDropContextContainer, _Component);
16330
+
16331
+ function DragDropContextContainer() {
16332
+ _classCallCheck(this, DragDropContextContainer);
16333
+
16334
+ return _possibleConstructorReturn(this, (DragDropContextContainer.__proto__ || Object.getPrototypeOf(DragDropContextContainer)).apply(this, arguments));
16335
+ }
16336
+
16337
+ _createClass(DragDropContextContainer, [{
16338
+ key: 'getDecoratedComponentInstance',
16339
+ value: function getDecoratedComponentInstance() {
16340
+ (0, _invariant2.default)(this.child, 'In order to access an instance of the decorated component it can not be a stateless component.');
16341
+ return this.child;
16342
+ }
16343
+ }, {
16344
+ key: 'getManager',
16345
+ value: function getManager() {
16346
+ return childContext.dragDropManager;
16347
+ }
16348
+ }, {
16349
+ key: 'getChildContext',
16350
+ value: function getChildContext() {
16351
+ return childContext;
16352
+ }
16353
+ }, {
16354
+ key: 'render',
16355
+ value: function render() {
16356
+ var _this2 = this;
16357
+
16358
+ return _react2.default.createElement(DecoratedComponent, _extends({}, this.props, {
16359
+ ref: function ref(child) {
16360
+ _this2.child = child;
16361
+ }
16362
+ }));
16363
+ }
16364
+ }]);
16365
+
16366
+ return DragDropContextContainer;
16367
+ }(_react.Component), _class.DecoratedComponent = DecoratedComponent, _class.displayName = 'DragDropContext(' + displayName + ')', _class.childContextTypes = CHILD_CONTEXT_TYPES, _temp);
16368
+
16369
+
16370
+ return (0, _hoistNonReactStatics2.default)(DragDropContextContainer, DecoratedComponent);
16371
+ };
16372
+ }
16373
+
16374
+ /***/ }),
16375
+ /* 266 */
16376
+ /***/ (function(module, exports, __webpack_require__) {
16377
+
16378
+ /* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
16379
+ var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
16380
+
16381
+ module.exports = freeGlobal;
16382
+
16383
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(34)))
16384
+
16385
+ /***/ }),
16386
+ /* 267 */
16387
+ /***/ (function(module, exports, __webpack_require__) {
16388
+
16389
+ "use strict";
16390
+
16391
+
16392
+ Object.defineProperty(exports, "__esModule", {
16393
+ value: true
16394
+ });
16395
+
16396
+ 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; };
16397
+
16398
+ exports.default = dragOffset;
16399
+ exports.getSourceClientOffset = getSourceClientOffset;
16400
+ exports.getDifferenceFromInitialOffset = getDifferenceFromInitialOffset;
16401
+
16402
+ var _dragDrop = __webpack_require__(119);
16403
+
16404
+ var initialState = {
16405
+ initialSourceClientOffset: null,
16406
+ initialClientOffset: null,
16407
+ clientOffset: null
16408
+ };
16409
+
16410
+ function areOffsetsEqual(offsetA, offsetB) {
16411
+ if (offsetA === offsetB) {
16412
+ return true;
16413
+ }
16414
+ return offsetA && offsetB && offsetA.x === offsetB.x && offsetA.y === offsetB.y;
16415
+ }
16416
+
16417
+ function dragOffset() {
16418
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
16419
+ var action = arguments[1];
16420
+
16421
+ switch (action.type) {
16422
+ case _dragDrop.BEGIN_DRAG:
16423
+ return {
16424
+ initialSourceClientOffset: action.sourceClientOffset,
16425
+ initialClientOffset: action.clientOffset,
16426
+ clientOffset: action.clientOffset
16427
+ };
16428
+ case _dragDrop.HOVER:
16429
+ if (areOffsetsEqual(state.clientOffset, action.clientOffset)) {
16430
+ return state;
16431
+ }
16432
+ return _extends({}, state, {
16433
+ clientOffset: action.clientOffset
16434
+ });
16435
+ case _dragDrop.END_DRAG:
16436
+ case _dragDrop.DROP:
16437
+ return initialState;
16438
+ default:
16439
+ return state;
16440
+ }
16441
+ }
16442
+
16443
+ function getSourceClientOffset(state) {
16444
+ var clientOffset = state.clientOffset,
16445
+ initialClientOffset = state.initialClientOffset,
16446
+ initialSourceClientOffset = state.initialSourceClientOffset;
16447
+
16448
+ if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {
16449
+ return null;
16450
+ }
16451
+ return {
16452
+ x: clientOffset.x + initialSourceClientOffset.x - initialClientOffset.x,
16453
+ y: clientOffset.y + initialSourceClientOffset.y - initialClientOffset.y
16454
+ };
16455
+ }
16456
+
16457
+ function getDifferenceFromInitialOffset(state) {
16458
+ var clientOffset = state.clientOffset,
16459
+ initialClientOffset = state.initialClientOffset;
16460
+
16461
+ if (!clientOffset || !initialClientOffset) {
16462
+ return null;
16463
+ }
16464
+ return {
16465
+ x: clientOffset.x - initialClientOffset.x,
16466
+ y: clientOffset.y - initialClientOffset.y
16467
+ };
16468
+ }
16469
+
16470
+ /***/ }),
16471
+ /* 268 */
16472
+ /***/ (function(module, exports, __webpack_require__) {
16473
+
16474
+ "use strict";
16475
+
16476
+
16477
+ Object.defineProperty(exports, "__esModule", {
16478
+ value: true
16479
+ });
16480
+ exports.default = matchesType;
16481
+
16482
+ var _isArray = __webpack_require__(71);
16483
+
16484
+ var _isArray2 = _interopRequireDefault(_isArray);
16485
+
16486
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16487
+
16488
+ function matchesType(targetType, draggedItemType) {
16489
+ if ((0, _isArray2.default)(targetType)) {
16490
+ return targetType.some(function (t) {
16491
+ return t === draggedItemType;
16492
+ });
16493
+ } else {
16494
+ return targetType === draggedItemType;
16495
+ }
16496
+ }
16497
+
16498
+ /***/ }),
16499
+ /* 269 */
16500
+ /***/ (function(module, exports, __webpack_require__) {
16501
+
16502
+ var baseDifference = __webpack_require__(270),
16503
+ baseRest = __webpack_require__(82),
16504
+ isArrayLikeObject = __webpack_require__(125);
16505
+
16506
+ /**
16507
+ * Creates an array excluding all given values using
16508
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
16509
+ * for equality comparisons.
16510
+ *
16511
+ * **Note:** Unlike `_.pull`, this method returns a new array.
16512
+ *
16513
+ * @static
16514
+ * @memberOf _
16515
+ * @since 0.1.0
16516
+ * @category Array
16517
+ * @param {Array} array The array to inspect.
16518
+ * @param {...*} [values] The values to exclude.
16519
+ * @returns {Array} Returns the new array of filtered values.
16520
+ * @see _.difference, _.xor
16521
+ * @example
16522
+ *
16523
+ * _.without([2, 1, 2, 3], 1, 2);
16524
+ * // => [3]
16525
+ */
16526
+ var without = baseRest(function(array, values) {
16527
+ return isArrayLikeObject(array)
16528
+ ? baseDifference(array, values)
16529
+ : [];
16530
+ });
16531
+
16532
+ module.exports = without;
16533
+
16534
+
16535
+ /***/ }),
16536
+ /* 270 */
16537
+ /***/ (function(module, exports, __webpack_require__) {
16538
+
16539
+ var SetCache = __webpack_require__(182),
16540
+ arrayIncludes = __webpack_require__(183),
16541
+ arrayIncludesWith = __webpack_require__(184),
16542
+ arrayMap = __webpack_require__(185),
16543
+ baseUnary = __webpack_require__(186),
16544
+ cacheHas = __webpack_require__(187);
16545
+
16546
+ /** Used as the size to enable large array optimizations. */
16547
+ var LARGE_ARRAY_SIZE = 200;
16548
+
16549
+ /**
16550
+ * The base implementation of methods like `_.difference` without support
16551
+ * for excluding multiple arrays or iteratee shorthands.
16552
+ *
16553
+ * @private
16554
+ * @param {Array} array The array to inspect.
16555
+ * @param {Array} values The values to exclude.
16556
+ * @param {Function} [iteratee] The iteratee invoked per element.
16557
+ * @param {Function} [comparator] The comparator invoked per element.
16558
+ * @returns {Array} Returns the new array of filtered values.
16559
+ */
16560
+ function baseDifference(array, values, iteratee, comparator) {
16561
+ var index = -1,
16562
+ includes = arrayIncludes,
16563
+ isCommon = true,
16564
+ length = array.length,
16565
+ result = [],
16566
+ valuesLength = values.length;
16567
+
16568
+ if (!length) {
16569
+ return result;
16570
+ }
16571
+ if (iteratee) {
16572
+ values = arrayMap(values, baseUnary(iteratee));
16573
+ }
16574
+ if (comparator) {
16575
+ includes = arrayIncludesWith;
16576
+ isCommon = false;
16577
+ }
16578
+ else if (values.length >= LARGE_ARRAY_SIZE) {
16579
+ includes = cacheHas;
16580
+ isCommon = false;
16581
+ values = new SetCache(values);
16582
+ }
16583
+ outer:
16584
+ while (++index < length) {
16585
+ var value = array[index],
16586
+ computed = iteratee == null ? value : iteratee(value);
16587
+
16588
+ value = (comparator || value !== 0) ? value : 0;
16589
+ if (isCommon && computed === computed) {
16590
+ var valuesIndex = valuesLength;
16591
+ while (valuesIndex--) {
16592
+ if (values[valuesIndex] === computed) {
16593
+ continue outer;
16594
+ }
16595
+ }
16596
+ result.push(value);
16597
+ }
16598
+ else if (!includes(values, computed, comparator)) {
16599
+ result.push(value);
16600
+ }
16601
+ }
16602
+ return result;
16603
+ }
16604
+
16605
+ module.exports = baseDifference;
16606
+
16607
+
16608
+ /***/ }),
16609
+ /* 271 */
16610
+ /***/ (function(module, exports, __webpack_require__) {
16611
+
16612
+ var mapCacheClear = __webpack_require__(631),
16613
+ mapCacheDelete = __webpack_require__(650),
16614
+ mapCacheGet = __webpack_require__(652),
16615
+ mapCacheHas = __webpack_require__(653),
16616
+ mapCacheSet = __webpack_require__(654);
16617
+
16618
+ /**
16619
+ * Creates a map cache object to store key-value pairs.
16620
+ *
16621
+ * @private
16622
+ * @constructor
16623
+ * @param {Array} [entries] The key-value pairs to cache.
16624
+ */
16625
+ function MapCache(entries) {
16626
+ var index = -1,
16627
+ length = entries == null ? 0 : entries.length;
16628
+
16629
+ this.clear();
16630
+ while (++index < length) {
16631
+ var entry = entries[index];
16632
+ this.set(entry[0], entry[1]);
16633
+ }
16634
+ }
16635
+
16636
+ // Add methods to `MapCache`.
16637
+ MapCache.prototype.clear = mapCacheClear;
16638
+ MapCache.prototype['delete'] = mapCacheDelete;
16639
+ MapCache.prototype.get = mapCacheGet;
16640
+ MapCache.prototype.has = mapCacheHas;
16641
+ MapCache.prototype.set = mapCacheSet;
16642
+
16643
+ module.exports = MapCache;
16644
+
16645
+
16646
+ /***/ }),
16647
+ /* 272 */
16648
+ /***/ (function(module, exports, __webpack_require__) {
16649
+
16650
+ var baseGetTag = __webpack_require__(118),
16651
+ isObject = __webpack_require__(96);
16652
+
16653
+ /** `Object#toString` result references. */
16654
+ var asyncTag = '[object AsyncFunction]',
16655
+ funcTag = '[object Function]',
16656
+ genTag = '[object GeneratorFunction]',
16657
+ proxyTag = '[object Proxy]';
16658
+
16659
+ /**
16660
+ * Checks if `value` is classified as a `Function` object.
16661
+ *
16662
+ * @static
16663
+ * @memberOf _
16664
+ * @since 0.1.0
16665
+ * @category Lang
16666
+ * @param {*} value The value to check.
16667
+ * @returns {boolean} Returns `true` if `value` is a function, else `false`.
16668
+ * @example
16669
+ *
16670
+ * _.isFunction(_);
16671
+ * // => true
16672
+ *
16673
+ * _.isFunction(/abc/);
16674
+ * // => false
16675
+ */
16676
+ function isFunction(value) {
16677
+ if (!isObject(value)) {
16678
+ return false;
16679
+ }
16680
+ // The use of `Object#toString` avoids issues with the `typeof` operator
16681
+ // in Safari 9 which returns 'object' for typed arrays and other constructors.
16682
+ var tag = baseGetTag(value);
16683
+ return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
16684
+ }
16685
+
16686
+ module.exports = isFunction;
16687
+
16688
+
16689
+ /***/ }),
16690
+ /* 273 */
16691
+ /***/ (function(module, exports) {
16692
+
16693
+ /**
16694
+ * This method returns the first argument it receives.
16695
+ *
16696
+ * @static
16697
+ * @since 0.1.0
16698
+ * @memberOf _
16699
+ * @category Util
16700
+ * @param {*} value Any value.
16701
+ * @returns {*} Returns `value`.
16702
+ * @example
16703
+ *
16704
+ * var object = { 'a': 1 };
16705
+ *
16706
+ * console.log(_.identity(object) === object);
16707
+ * // => true
16708
+ */
16709
+ function identity(value) {
16710
+ return value;
16711
+ }
16712
+
16713
+ module.exports = identity;
16714
+
16715
+
16716
+ /***/ }),
16717
+ /* 274 */
16718
+ /***/ (function(module, exports) {
16719
+
16720
+ /**
16721
+ * A faster alternative to `Function#apply`, this function invokes `func`
16722
+ * with the `this` binding of `thisArg` and the arguments of `args`.
16723
+ *
16724
+ * @private
16725
+ * @param {Function} func The function to invoke.
16726
+ * @param {*} thisArg The `this` binding of `func`.
16727
+ * @param {Array} args The arguments to invoke `func` with.
16728
+ * @returns {*} Returns the result of `func`.
16729
+ */
16730
+ function apply(func, thisArg, args) {
16731
+ switch (args.length) {
16732
+ case 0: return func.call(thisArg);
16733
+ case 1: return func.call(thisArg, args[0]);
16734
+ case 2: return func.call(thisArg, args[0], args[1]);
16735
+ case 3: return func.call(thisArg, args[0], args[1], args[2]);
16736
+ }
16737
+ return func.apply(thisArg, args);
16738
+ }
16739
+
16740
+ module.exports = apply;
16741
+
16742
+
16743
+ /***/ }),
16744
+ /* 275 */
16745
+ /***/ (function(module, exports, __webpack_require__) {
16746
+
16747
+ var getNative = __webpack_require__(121);
16748
+
16749
+ var defineProperty = (function() {
16750
+ try {
16751
+ var func = getNative(Object, 'defineProperty');
16752
+ func({}, '', {});
16753
+ return func;
16754
+ } catch (e) {}
16755
+ }());
16756
+
16757
+ module.exports = defineProperty;
16758
+
16759
+
16760
+ /***/ }),
16761
+ /* 276 */
16762
+ /***/ (function(module, exports) {
16763
+
16764
+ /** Used as references for various `Number` constants. */
16765
+ var MAX_SAFE_INTEGER = 9007199254740991;
16766
+
16767
+ /**
16768
+ * Checks if `value` is a valid array-like length.
16769
+ *
16770
+ * **Note:** This method is loosely based on
16771
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
16772
+ *
16773
+ * @static
16774
+ * @memberOf _
16775
+ * @since 4.0.0
16776
+ * @category Lang
16777
+ * @param {*} value The value to check.
16778
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
16779
+ * @example
16780
+ *
16781
+ * _.isLength(3);
16782
+ * // => true
16783
+ *
16784
+ * _.isLength(Number.MIN_VALUE);
16785
+ * // => false
16786
+ *
16787
+ * _.isLength(Infinity);
16788
+ * // => false
16789
+ *
16790
+ * _.isLength('3');
16791
+ * // => false
16792
+ */
16793
+ function isLength(value) {
16794
+ return typeof value == 'number' &&
16795
+ value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
16796
+ }
16797
+
16798
+ module.exports = isLength;
16799
+
16800
+
16801
+ /***/ }),
16802
+ /* 277 */
16803
+ /***/ (function(module, exports, __webpack_require__) {
16804
+
16805
+ "use strict";
16806
+
16807
+
16808
+ Object.defineProperty(exports, "__esModule", {
16809
+ value: true
16810
+ });
16811
+ exports.default = dirtyHandlerIds;
16812
+ exports.areDirty = areDirty;
16813
+
16814
+ var _xor = __webpack_require__(667);
16815
+
16816
+ var _xor2 = _interopRequireDefault(_xor);
16817
+
16818
+ var _intersection = __webpack_require__(675);
16819
+
16820
+ var _intersection2 = _interopRequireDefault(_intersection);
16821
+
16822
+ var _dragDrop = __webpack_require__(119);
16823
+
16824
+ var _registry = __webpack_require__(126);
16825
+
16826
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16827
+
16828
+ var NONE = [];
16829
+ var ALL = [];
16830
+
16831
+ function dirtyHandlerIds() {
16832
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : NONE;
16833
+ var action = arguments[1];
16834
+ var dragOperation = arguments[2];
16835
+
16836
+ switch (action.type) {
16837
+ case _dragDrop.HOVER:
16838
+ break;
16839
+ case _registry.ADD_SOURCE:
16840
+ case _registry.ADD_TARGET:
16841
+ case _registry.REMOVE_TARGET:
16842
+ case _registry.REMOVE_SOURCE:
16843
+ return NONE;
16844
+ case _dragDrop.BEGIN_DRAG:
16845
+ case _dragDrop.PUBLISH_DRAG_SOURCE:
16846
+ case _dragDrop.END_DRAG:
16847
+ case _dragDrop.DROP:
16848
+ default:
16849
+ return ALL;
16850
+ }
16851
+
16852
+ var targetIds = action.targetIds;
16853
+ var prevTargetIds = dragOperation.targetIds;
16854
+
16855
+ var result = (0, _xor2.default)(targetIds, prevTargetIds);
16856
+
16857
+ var didChange = false;
16858
+ if (result.length === 0) {
16859
+ for (var i = 0; i < targetIds.length; i++) {
16860
+ if (targetIds[i] !== prevTargetIds[i]) {
16861
+ didChange = true;
16862
+ break;
16863
+ }
16864
+ }
16865
+ } else {
16866
+ didChange = true;
16867
+ }
16868
+
16869
+ if (!didChange) {
16870
+ return NONE;
16871
+ }
16872
+
16873
+ var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];
16874
+ var innermostTargetId = targetIds[targetIds.length - 1];
16875
+
16876
+ if (prevInnermostTargetId !== innermostTargetId) {
16877
+ if (prevInnermostTargetId) {
16878
+ result.push(prevInnermostTargetId);
16879
+ }
16880
+ if (innermostTargetId) {
16881
+ result.push(innermostTargetId);
16882
+ }
16883
+ }
16884
+
16885
+ return result;
16886
+ }
16887
+
16888
+ function areDirty(state, handlerIds) {
16889
+ if (state === NONE) {
16890
+ return false;
16891
+ }
16892
+
16893
+ if (state === ALL || typeof handlerIds === 'undefined') {
16894
+ return true;
16895
+ }
16896
+
16897
+ return (0, _intersection2.default)(handlerIds, state).length > 0;
16898
+ }
16899
+
16900
+ /***/ }),
16901
+ /* 278 */
16902
+ /***/ (function(module, exports, __webpack_require__) {
16903
+
16904
+ var arrayPush = __webpack_require__(670),
16905
+ isFlattenable = __webpack_require__(671);
16906
+
16907
+ /**
16908
+ * The base implementation of `_.flatten` with support for restricting flattening.
16909
+ *
16910
+ * @private
16911
+ * @param {Array} array The array to flatten.
16912
+ * @param {number} depth The maximum recursion depth.
16913
+ * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
16914
+ * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
16915
+ * @param {Array} [result=[]] The initial result value.
16916
+ * @returns {Array} Returns the new flattened array.
16917
+ */
16918
+ function baseFlatten(array, depth, predicate, isStrict, result) {
16919
+ var index = -1,
16920
+ length = array.length;
16921
+
16922
+ predicate || (predicate = isFlattenable);
16923
+ result || (result = []);
16924
+
16925
+ while (++index < length) {
16926
+ var value = array[index];
16927
+ if (depth > 0 && predicate(value)) {
16928
+ if (depth > 1) {
16929
+ // Recursively flatten arrays (susceptible to call stack limits).
16930
+ baseFlatten(value, depth - 1, predicate, isStrict, result);
16931
+ } else {
16932
+ arrayPush(result, value);
16933
+ }
16934
+ } else if (!isStrict) {
16935
+ result[result.length] = value;
16936
+ }
16937
+ }
16938
+ return result;
16939
+ }
16940
+
16941
+ module.exports = baseFlatten;
16942
+
16943
+
16944
+ /***/ }),
16945
+ /* 279 */
16946
+ /***/ (function(module, exports, __webpack_require__) {
16947
+
16948
+ var baseIsArguments = __webpack_require__(672),
16949
+ isObjectLike = __webpack_require__(95);
16950
+
16951
+ /** Used for built-in method references. */
16952
+ var objectProto = Object.prototype;
16953
+
16954
+ /** Used to check objects for own properties. */
16955
+ var hasOwnProperty = objectProto.hasOwnProperty;
16956
+
16957
+ /** Built-in value references. */
16958
+ var propertyIsEnumerable = objectProto.propertyIsEnumerable;
16959
+
16960
+ /**
16961
+ * Checks if `value` is likely an `arguments` object.
16962
+ *
16963
+ * @static
16964
+ * @memberOf _
16965
+ * @since 0.1.0
16966
+ * @category Lang
16967
+ * @param {*} value The value to check.
16968
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
16969
+ * else `false`.
16970
+ * @example
16971
+ *
16972
+ * _.isArguments(function() { return arguments; }());
16973
+ * // => true
16974
+ *
16975
+ * _.isArguments([1, 2, 3]);
16976
+ * // => false
16977
+ */
16978
+ var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
16979
+ return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
16980
+ !propertyIsEnumerable.call(value, 'callee');
16981
+ };
16982
+
16983
+ module.exports = isArguments;
16984
+
16985
+
16986
+ /***/ }),
16987
+ /* 280 */
16988
+ /***/ (function(module, exports, __webpack_require__) {
16989
+
16990
+ var SetCache = __webpack_require__(182),
16991
+ arrayIncludes = __webpack_require__(183),
16992
+ arrayIncludesWith = __webpack_require__(184),
16993
+ cacheHas = __webpack_require__(187),
16994
+ createSet = __webpack_require__(673),
16995
+ setToArray = __webpack_require__(282);
16996
+
16997
+ /** Used as the size to enable large array optimizations. */
16998
+ var LARGE_ARRAY_SIZE = 200;
16999
+
17000
+ /**
17001
+ * The base implementation of `_.uniqBy` without support for iteratee shorthands.
17002
+ *
17003
+ * @private
17004
+ * @param {Array} array The array to inspect.
17005
+ * @param {Function} [iteratee] The iteratee invoked per element.
17006
+ * @param {Function} [comparator] The comparator invoked per element.
17007
+ * @returns {Array} Returns the new duplicate free array.
17008
+ */
17009
+ function baseUniq(array, iteratee, comparator) {
17010
+ var index = -1,
17011
+ includes = arrayIncludes,
17012
+ length = array.length,
17013
+ isCommon = true,
17014
+ result = [],
17015
+ seen = result;
17016
+
17017
+ if (comparator) {
17018
+ isCommon = false;
17019
+ includes = arrayIncludesWith;
17020
+ }
17021
+ else if (length >= LARGE_ARRAY_SIZE) {
17022
+ var set = iteratee ? null : createSet(array);
17023
+ if (set) {
17024
+ return setToArray(set);
17025
+ }
17026
+ isCommon = false;
17027
+ includes = cacheHas;
17028
+ seen = new SetCache;
17029
+ }
17030
+ else {
17031
+ seen = iteratee ? [] : result;
17032
+ }
17033
+ outer:
17034
+ while (++index < length) {
17035
+ var value = array[index],
17036
+ computed = iteratee ? iteratee(value) : value;
17037
+
17038
+ value = (comparator || value !== 0) ? value : 0;
17039
+ if (isCommon && computed === computed) {
17040
+ var seenIndex = seen.length;
17041
+ while (seenIndex--) {
17042
+ if (seen[seenIndex] === computed) {
17043
+ continue outer;
17044
+ }
17045
+ }
17046
+ if (iteratee) {
17047
+ seen.push(computed);
17048
+ }
17049
+ result.push(value);
17050
+ }
17051
+ else if (!includes(seen, computed, comparator)) {
17052
+ if (seen !== result) {
17053
+ seen.push(computed);
17054
+ }
17055
+ result.push(value);
17056
+ }
17057
+ }
17058
+ return result;
17059
+ }
17060
+
17061
+ module.exports = baseUniq;
17062
+
17063
+
17064
+ /***/ }),
17065
+ /* 281 */
17066
+ /***/ (function(module, exports) {
17067
+
17068
+ /**
17069
+ * This method returns `undefined`.
17070
+ *
17071
+ * @static
17072
+ * @memberOf _
17073
+ * @since 2.3.0
17074
+ * @category Util
17075
+ * @example
17076
+ *
17077
+ * _.times(2, _.noop);
17078
+ * // => [undefined, undefined]
17079
+ */
17080
+ function noop() {
17081
+ // No operation performed.
17082
+ }
17083
+
17084
+ module.exports = noop;
17085
+
17086
+
17087
+ /***/ }),
17088
+ /* 282 */
17089
+ /***/ (function(module, exports) {
17090
+
17091
+ /**
17092
+ * Converts `set` to an array of its values.
17093
+ *
17094
+ * @private
17095
+ * @param {Object} set The set to convert.
17096
+ * @returns {Array} Returns the values.
17097
+ */
17098
+ function setToArray(set) {
17099
+ var index = -1,
17100
+ result = Array(set.size);
17101
+
17102
+ set.forEach(function(value) {
17103
+ result[++index] = value;
17104
+ });
17105
+ return result;
17106
+ }
17107
+
17108
+ module.exports = setToArray;
17109
+
17110
+
17111
+ /***/ }),
17112
+ /* 283 */
17113
+ /***/ (function(module, exports, __webpack_require__) {
17114
+
17115
+ "use strict";
17116
+
17117
+
17118
+ Object.defineProperty(exports, "__esModule", {
17119
+ value: true
17120
+ });
17121
+
17122
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
17123
+
17124
+ exports.default = shallowEqualScalar;
17125
+ function shallowEqualScalar(objA, objB) {
17126
+ if (objA === objB) {
17127
+ return true;
17128
+ }
17129
+
17130
+ if ((typeof objA === 'undefined' ? 'undefined' : _typeof(objA)) !== 'object' || objA === null || (typeof objB === 'undefined' ? 'undefined' : _typeof(objB)) !== 'object' || objB === null) {
17131
+ return false;
17132
+ }
17133
+
17134
+ var keysA = Object.keys(objA);
17135
+ var keysB = Object.keys(objB);
17136
+
17137
+ if (keysA.length !== keysB.length) {
17138
+ return false;
17139
+ }
17140
+
17141
+ // Test for A's keys different from B.
17142
+ var hasOwn = Object.prototype.hasOwnProperty;
17143
+ for (var i = 0; i < keysA.length; i += 1) {
17144
+ if (!hasOwn.call(objB, keysA[i])) {
17145
+ return false;
17146
+ }
17147
+
17148
+ var valA = objA[keysA[i]];
17149
+ var valB = objB[keysA[i]];
17150
+
17151
+ if (valA !== valB || (typeof valA === 'undefined' ? 'undefined' : _typeof(valA)) === 'object' || (typeof valB === 'undefined' ? 'undefined' : _typeof(valB)) === 'object') {
17152
+ return false;
17153
+ }
17154
+ }
17155
+
17156
+ return true;
17157
+ }
17158
+
17159
+ /***/ }),
17160
+ /* 284 */
17161
+ /***/ (function(module, exports, __webpack_require__) {
17162
+
17163
+ "use strict";
17164
+ /* WEBPACK VAR INJECTION */(function(process) {
17165
+
17166
+ Object.defineProperty(exports, "__esModule", {
17167
+ value: true
17168
+ });
17169
+
17170
+ 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; };
17171
+
17172
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
17173
+
17174
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
17175
+
17176
+ exports.default = decorateHandler;
17177
+
17178
+ var _react = __webpack_require__(2);
17179
+
17180
+ var _react2 = _interopRequireDefault(_react);
17181
+
17182
+ var _propTypes = __webpack_require__(0);
17183
+
17184
+ var _propTypes2 = _interopRequireDefault(_propTypes);
17185
+
17186
+ var _disposables = __webpack_require__(690);
17187
+
17188
+ var _isPlainObject = __webpack_require__(70);
17189
+
17190
+ var _isPlainObject2 = _interopRequireDefault(_isPlainObject);
17191
+
17192
+ var _invariant = __webpack_require__(28);
17193
+
17194
+ var _invariant2 = _interopRequireDefault(_invariant);
17195
+
17196
+ var _hoistNonReactStatics = __webpack_require__(189);
17197
+
17198
+ var _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);
17199
+
17200
+ var _shallowEqual = __webpack_require__(190);
17201
+
17202
+ var _shallowEqual2 = _interopRequireDefault(_shallowEqual);
17203
+
17204
+ var _shallowEqualScalar = __webpack_require__(283);
17205
+
17206
+ var _shallowEqualScalar2 = _interopRequireDefault(_shallowEqualScalar);
17207
+
17208
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17209
+
17210
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
17211
+
17212
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
17213
+
17214
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
17215
+
17216
+ var isClassComponent = function isClassComponent(Comp) {
17217
+ return Boolean(Comp && Comp.prototype && typeof Comp.prototype.render === 'function');
17218
+ };
17219
+
17220
+ function decorateHandler(_ref) {
17221
+ var _class, _temp;
17222
+
17223
+ var DecoratedComponent = _ref.DecoratedComponent,
17224
+ createHandler = _ref.createHandler,
17225
+ createMonitor = _ref.createMonitor,
17226
+ createConnector = _ref.createConnector,
17227
+ registerHandler = _ref.registerHandler,
17228
+ containerDisplayName = _ref.containerDisplayName,
17229
+ getType = _ref.getType,
17230
+ collect = _ref.collect,
17231
+ options = _ref.options;
17232
+ var _options$arePropsEqua = options.arePropsEqual,
17233
+ arePropsEqual = _options$arePropsEqua === undefined ? _shallowEqualScalar2.default : _options$arePropsEqua;
17234
+
17235
+ var displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component';
17236
+
17237
+ var DragDropContainer = (_temp = _class = function (_Component) {
17238
+ _inherits(DragDropContainer, _Component);
17239
+
17240
+ _createClass(DragDropContainer, [{
17241
+ key: 'getHandlerId',
17242
+ value: function getHandlerId() {
17243
+ return this.handlerId;
17244
+ }
17245
+ }, {
17246
+ key: 'getDecoratedComponentInstance',
17247
+ value: function getDecoratedComponentInstance() {
17248
+ return this.decoratedComponentInstance;
17249
+ }
17250
+ }, {
17251
+ key: 'shouldComponentUpdate',
17252
+ value: function shouldComponentUpdate(nextProps, nextState) {
17253
+ return !arePropsEqual(nextProps, this.props) || !(0, _shallowEqual2.default)(nextState, this.state);
17254
+ }
17255
+ }]);
17256
+
17257
+ function DragDropContainer(props, context) {
17258
+ _classCallCheck(this, DragDropContainer);
17259
+
17260
+ var _this = _possibleConstructorReturn(this, (DragDropContainer.__proto__ || Object.getPrototypeOf(DragDropContainer)).call(this, props, context));
17261
+
17262
+ _this.handleChange = _this.handleChange.bind(_this);
17263
+ _this.handleChildRef = _this.handleChildRef.bind(_this);
17264
+
17265
+ (0, _invariant2.default)(_typeof(_this.context.dragDropManager) === 'object', 'Could not find the drag and drop manager in the context of %s. ' + 'Make sure to wrap the top-level component of your app with DragDropContext. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs-troubleshooting.html#could-not-find-the-drag-and-drop-manager-in-the-context', displayName, displayName);
17266
+
17267
+ _this.manager = _this.context.dragDropManager;
17268
+ _this.handlerMonitor = createMonitor(_this.manager);
17269
+ _this.handlerConnector = createConnector(_this.manager.getBackend());
17270
+ _this.handler = createHandler(_this.handlerMonitor);
17271
+
17272
+ _this.disposable = new _disposables.SerialDisposable();
17273
+ _this.receiveProps(props);
17274
+ _this.state = _this.getCurrentState();
17275
+ _this.dispose();
17276
+ return _this;
17277
+ }
17278
+
17279
+ _createClass(DragDropContainer, [{
17280
+ key: 'componentDidMount',
17281
+ value: function componentDidMount() {
17282
+ this.isCurrentlyMounted = true;
17283
+ this.disposable = new _disposables.SerialDisposable();
17284
+ this.currentType = null;
17285
+ this.receiveProps(this.props);
17286
+ this.handleChange();
17287
+ }
17288
+ }, {
17289
+ key: 'componentWillReceiveProps',
17290
+ value: function componentWillReceiveProps(nextProps) {
17291
+ if (!arePropsEqual(nextProps, this.props)) {
17292
+ this.receiveProps(nextProps);
17293
+ this.handleChange();
17294
+ }
17295
+ }
17296
+ }, {
17297
+ key: 'componentWillUnmount',
17298
+ value: function componentWillUnmount() {
17299
+ this.dispose();
17300
+ this.isCurrentlyMounted = false;
17301
+ }
17302
+ }, {
17303
+ key: 'receiveProps',
17304
+ value: function receiveProps(props) {
17305
+ this.handler.receiveProps(props);
17306
+ this.receiveType(getType(props));
17307
+ }
17308
+ }, {
17309
+ key: 'receiveType',
17310
+ value: function receiveType(type) {
17311
+ if (type === this.currentType) {
17312
+ return;
17313
+ }
17314
+
17315
+ this.currentType = type;
17316
+
17317
+ var _registerHandler = registerHandler(type, this.handler, this.manager),
17318
+ handlerId = _registerHandler.handlerId,
17319
+ unregister = _registerHandler.unregister;
17320
+
17321
+ this.handlerId = handlerId;
17322
+ this.handlerMonitor.receiveHandlerId(handlerId);
17323
+ this.handlerConnector.receiveHandlerId(handlerId);
17324
+
17325
+ var globalMonitor = this.manager.getMonitor();
17326
+ var unsubscribe = globalMonitor.subscribeToStateChange(this.handleChange, { handlerIds: [handlerId] });
17327
+
17328
+ this.disposable.setDisposable(new _disposables.CompositeDisposable(new _disposables.Disposable(unsubscribe), new _disposables.Disposable(unregister)));
17329
+ }
17330
+ }, {
17331
+ key: 'handleChange',
17332
+ value: function handleChange() {
17333
+ if (!this.isCurrentlyMounted) {
17334
+ return;
17335
+ }
17336
+
17337
+ var nextState = this.getCurrentState();
17338
+ if (!(0, _shallowEqual2.default)(nextState, this.state)) {
17339
+ this.setState(nextState);
17340
+ }
17341
+ }
17342
+ }, {
17343
+ key: 'dispose',
17344
+ value: function dispose() {
17345
+ this.disposable.dispose();
17346
+ this.handlerConnector.receiveHandlerId(null);
17347
+ }
17348
+ }, {
17349
+ key: 'handleChildRef',
17350
+ value: function handleChildRef(component) {
17351
+ this.decoratedComponentInstance = component;
17352
+ this.handler.receiveComponent(component);
17353
+ }
17354
+ }, {
17355
+ key: 'getCurrentState',
17356
+ value: function getCurrentState() {
17357
+ var nextState = collect(this.handlerConnector.hooks, this.handlerMonitor);
17358
+
17359
+ if (process.env.NODE_ENV !== 'production') {
17360
+ (0, _invariant2.default)((0, _isPlainObject2.default)(nextState), 'Expected `collect` specified as the second argument to ' + '%s for %s to return a plain object of props to inject. ' + 'Instead, received %s.', containerDisplayName, displayName, nextState);
17361
+ }
17362
+
17363
+ return nextState;
17364
+ }
17365
+ }, {
17366
+ key: 'render',
17367
+ value: function render() {
17368
+ return _react2.default.createElement(DecoratedComponent, _extends({}, this.props, this.state, {
17369
+ ref: isClassComponent(DecoratedComponent) ? this.handleChildRef : null
17370
+ }));
17371
+ }
17372
+ }]);
17373
+
17374
+ return DragDropContainer;
17375
+ }(_react.Component), _class.DecoratedComponent = DecoratedComponent, _class.displayName = containerDisplayName + '(' + displayName + ')', _class.contextTypes = {
17376
+ dragDropManager: _propTypes2.default.object.isRequired
17377
+ }, _temp);
17378
+
17379
+
17380
+ return (0, _hoistNonReactStatics2.default)(DragDropContainer, DecoratedComponent);
17381
+ }
17382
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
17383
+
17384
+ /***/ }),
17385
+ /* 285 */
17386
+ /***/ (function(module, exports, __webpack_require__) {
17387
+
17388
+ "use strict";
17389
+
17390
+
17391
+ Object.defineProperty(exports, "__esModule", {
17392
+ value: true
17393
+ });
17394
+ exports.default = wrapConnectorHooks;
17395
+
17396
+ var _react = __webpack_require__(2);
17397
+
17398
+ var _cloneWithRef = __webpack_require__(698);
17399
+
17400
+ var _cloneWithRef2 = _interopRequireDefault(_cloneWithRef);
17401
+
17402
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17403
+
17404
+ function throwIfCompositeComponentElement(element) {
17405
+ // Custom components can no longer be wrapped directly in React DnD 2.0
17406
+ // so that we don't need to depend on findDOMNode() from react-dom.
17407
+ if (typeof element.type === 'string') {
17408
+ return;
17409
+ }
17410
+
17411
+ var displayName = element.type.displayName || element.type.name || 'the component';
17412
+
17413
+ throw new Error('Only native element nodes can now be passed to React DnD connectors.' + ('You can either wrap ' + displayName + ' into a <div>, or turn it into a ') + 'drag source or a drop target itself.');
17414
+ }
17415
+
17416
+ function wrapHookToRecognizeElement(hook) {
17417
+ return function () {
17418
+ var elementOrNode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
17419
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
17420
+
17421
+ // When passed a node, call the hook straight away.
17422
+ if (!(0, _react.isValidElement)(elementOrNode)) {
17423
+ var node = elementOrNode;
17424
+ hook(node, options);
17425
+ return undefined;
17426
+ }
17427
+
17428
+ // If passed a ReactElement, clone it and attach this function as a ref.
17429
+ // This helps us achieve a neat API where user doesn't even know that refs
17430
+ // are being used under the hood.
17431
+ var element = elementOrNode;
17432
+ throwIfCompositeComponentElement(element);
17433
+
17434
+ // When no options are passed, use the hook directly
17435
+ var ref = options ? function (node) {
17436
+ return hook(node, options);
17437
+ } : hook;
17438
+
17439
+ return (0, _cloneWithRef2.default)(element, ref);
17440
+ };
17441
+ }
17442
+
17443
+ function wrapConnectorHooks(hooks) {
17444
+ var wrappedHooks = {};
17445
+
17446
+ Object.keys(hooks).forEach(function (key) {
17447
+ var hook = hooks[key];
17448
+ var wrappedHook = wrapHookToRecognizeElement(hook);
17449
+ wrappedHooks[key] = function () {
17450
+ return wrappedHook;
17451
+ };
17452
+ });
17453
+
17454
+ return wrappedHooks;
17455
+ }
17456
+
17457
+ /***/ }),
17458
+ /* 286 */
17459
+ /***/ (function(module, exports, __webpack_require__) {
17460
+
17461
+ "use strict";
17462
+
17463
+
17464
+ Object.defineProperty(exports, "__esModule", {
17465
+ value: true
17466
+ });
17467
+ exports.default = areOptionsEqual;
17468
+
17469
+ var _shallowEqual = __webpack_require__(190);
17470
+
17471
+ var _shallowEqual2 = _interopRequireDefault(_shallowEqual);
17472
+
17473
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17474
+
17475
+ function areOptionsEqual(nextOptions, currentOptions) {
17476
+ if (currentOptions === nextOptions) {
17477
+ return true;
17478
+ }
17479
+
17480
+ return currentOptions !== null && nextOptions !== null && (0, _shallowEqual2.default)(currentOptions, nextOptions);
17481
+ }
17482
+
17483
+ /***/ }),
17484
+ /* 287 */
17485
+ /***/ (function(module, exports, __webpack_require__) {
17486
+
17487
+ "use strict";
17488
+
17489
+
17490
+ Object.defineProperty(exports, "__esModule", {
17491
+ value: true
17492
+ });
17493
+
17494
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
17495
+
17496
+ exports.default = isValidType;
17497
+
17498
+ var _isArray = __webpack_require__(71);
17499
+
17500
+ var _isArray2 = _interopRequireDefault(_isArray);
17501
+
17502
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17503
+
17504
+ function isValidType(type, allowArray) {
17505
+ return typeof type === 'string' || (typeof type === 'undefined' ? 'undefined' : _typeof(type)) === 'symbol' || allowArray && (0, _isArray2.default)(type) && type.every(function (t) {
17506
+ return isValidType(t, false);
17507
+ });
17508
+ }
17509
+
17510
+ /***/ }),
17511
+ /* 288 */
17512
+ /***/ (function(module, exports, __webpack_require__) {
17513
+
17514
+ "use strict";
17515
+
17516
+
17517
+ Object.defineProperty(exports, "__esModule", {
17518
+ value: true
17519
+ });
17520
+ exports.getEmptyImage = exports.NativeTypes = undefined;
17521
+ exports.default = createHTML5Backend;
17522
+
17523
+ var _HTML5Backend = __webpack_require__(704);
17524
+
17525
+ var _HTML5Backend2 = _interopRequireDefault(_HTML5Backend);
17526
+
17527
+ var _getEmptyImage = __webpack_require__(730);
17528
+
17529
+ var _getEmptyImage2 = _interopRequireDefault(_getEmptyImage);
17530
+
17531
+ var _NativeTypes = __webpack_require__(192);
17532
+
17533
+ var NativeTypes = _interopRequireWildcard(_NativeTypes);
17534
+
17535
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
17536
+
17537
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17538
+
17539
+ exports.NativeTypes = NativeTypes;
17540
+ exports.getEmptyImage = _getEmptyImage2.default;
17541
+ function createHTML5Backend(manager) {
17542
+ return new _HTML5Backend2.default(manager);
17543
+ }
17544
+
17545
+ /***/ }),
17546
+ /* 289 */
17547
+ /***/ (function(module, exports, __webpack_require__) {
17548
+
17549
+ var defineProperty = __webpack_require__(275);
17550
+
17551
+ /**
17552
+ * The base implementation of `assignValue` and `assignMergeValue` without
17553
+ * value checks.
17554
+ *
17555
+ * @private
17556
+ * @param {Object} object The object to modify.
17557
+ * @param {string} key The key of the property to assign.
17558
+ * @param {*} value The value to assign.
17559
+ */
17560
+ function baseAssignValue(object, key, value) {
17561
+ if (key == '__proto__' && defineProperty) {
17562
+ defineProperty(object, key, {
17563
+ 'configurable': true,
17564
+ 'enumerable': true,
17565
+ 'value': value,
17566
+ 'writable': true
17567
+ });
17568
+ } else {
17569
+ object[key] = value;
17570
+ }
17571
+ }
17572
+
17573
+ module.exports = baseAssignValue;
17574
+
17575
+
17576
+ /***/ }),
17577
+ /* 290 */
17578
+ /***/ (function(module, exports) {
17579
+
17580
+ /** Used as references for various `Number` constants. */
17581
+ var MAX_SAFE_INTEGER = 9007199254740991;
17582
+
17583
+ /** Used to detect unsigned integer values. */
17584
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
17585
+
17586
+ /**
17587
+ * Checks if `value` is a valid array-like index.
17588
+ *
17589
+ * @private
17590
+ * @param {*} value The value to check.
17591
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
17592
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
17593
+ */
17594
+ function isIndex(value, length) {
17595
+ length = length == null ? MAX_SAFE_INTEGER : length;
17596
+ return !!length &&
17597
+ (typeof value == 'number' || reIsUint.test(value)) &&
17598
+ (value > -1 && value % 1 == 0 && value < length);
17599
+ }
17600
+
17601
+ module.exports = isIndex;
17602
+
17603
+
17604
+ /***/ }),
17605
+ /* 291 */
17606
+ /***/ (function(module, exports, __webpack_require__) {
17607
+
17608
+ "use strict";
17609
+
17610
+
17611
+ Object.defineProperty(exports, "__esModule", {
17612
+ value: true
17613
+ });
17614
+ exports.isSafari = exports.isFirefox = undefined;
17615
+
17616
+ var _memoize = __webpack_require__(726);
17617
+
17618
+ var _memoize2 = _interopRequireDefault(_memoize);
17619
+
17620
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17621
+
17622
+ var isFirefox = exports.isFirefox = (0, _memoize2.default)(function () {
17623
+ return (/firefox/i.test(navigator.userAgent)
17624
+ );
17625
+ });
17626
+ var isSafari = exports.isSafari = (0, _memoize2.default)(function () {
17627
+ return Boolean(window.safari);
17628
+ });
17629
+
17630
+ /***/ }),
17631
+ /* 292 */
17632
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
17633
+
17634
+ "use strict";
17635
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(17);
17636
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__);
17637
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react__ = __webpack_require__(2);
17638
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react__);
17639
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_prop_types__ = __webpack_require__(0);
17640
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_prop_types__);
17641
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_react_dom__ = __webpack_require__(19);
17642
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_react_dom___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_react_dom__);
17643
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_rc_util_es_KeyCode__ = __webpack_require__(193);
17644
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_rc_util_es_createChainedFunction__ = __webpack_require__(749);
17645
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_classnames__ = __webpack_require__(47);
17646
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_classnames__);
17647
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_dom_scroll_into_view__ = __webpack_require__(750);
17648
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_dom_scroll_into_view___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_dom_scroll_into_view__);
17649
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__util__ = __webpack_require__(128);
17650
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__DOMWrap__ = __webpack_require__(753);
17651
+
17652
+
17653
+
17654
+
17655
+
17656
+
17657
+
17658
+
17659
+
17660
+
17661
+
17662
+ function allDisabled(arr) {
17663
+ if (!arr.length) {
17664
+ return true;
17665
+ }
17666
+ return arr.every(function (c) {
17667
+ return !!c.props.disabled;
17668
+ });
17669
+ }
17670
+
17671
+ function getActiveKey(props, originalActiveKey) {
17672
+ var activeKey = originalActiveKey;
17673
+ var children = props.children,
17674
+ eventKey = props.eventKey;
17675
+
17676
+ if (activeKey) {
17677
+ var found = void 0;
17678
+ Object(__WEBPACK_IMPORTED_MODULE_8__util__["b" /* loopMenuItem */])(children, function (c, i) {
17679
+ if (c && !c.props.disabled && activeKey === Object(__WEBPACK_IMPORTED_MODULE_8__util__["a" /* getKeyFromChildrenIndex */])(c, eventKey, i)) {
17680
+ found = true;
17681
+ }
17682
+ });
17683
+ if (found) {
17684
+ return activeKey;
17685
+ }
17686
+ }
17687
+ activeKey = null;
17688
+ if (props.defaultActiveFirst) {
17689
+ Object(__WEBPACK_IMPORTED_MODULE_8__util__["b" /* loopMenuItem */])(children, function (c, i) {
17690
+ if (!activeKey && c && !c.props.disabled) {
17691
+ activeKey = Object(__WEBPACK_IMPORTED_MODULE_8__util__["a" /* getKeyFromChildrenIndex */])(c, eventKey, i);
17692
+ }
17693
+ });
17694
+ return activeKey;
17695
+ }
17696
+ return activeKey;
17697
+ }
17698
+
17699
+ function saveRef(index, subIndex, c) {
17700
+ if (c) {
17701
+ if (subIndex !== undefined) {
17702
+ this.instanceArray[index] = this.instanceArray[index] || [];
17703
+ this.instanceArray[index][subIndex] = c;
17704
+ } else {
17705
+ this.instanceArray[index] = c;
17706
+ }
17707
+ }
17708
+ }
17709
+
17710
+ var MenuMixin = {
17711
+ propTypes: {
17712
+ focusable: __WEBPACK_IMPORTED_MODULE_2_prop_types___default.a.bool,
17713
+ multiple: __WEBPACK_IMPORTED_MODULE_2_prop_types___default.a.bool,
17714
+ style: __WEBPACK_IMPORTED_MODULE_2_prop_types___default.a.object,
17715
+ defaultActiveFirst: __WEBPACK_IMPORTED_MODULE_2_prop_types___default.a.bool,
17716
+ visible: __WEBPACK_IMPORTED_MODULE_2_prop_types___default.a.bool,
17717
+ activeKey: __WEBPACK_IMPORTED_MODULE_2_prop_types___default.a.string,
17718
+ selectedKeys: __WEBPACK_IMPORTED_MODULE_2_prop_types___default.a.arrayOf(__WEBPACK_IMPORTED_MODULE_2_prop_types___default.a.string),
17719
+ defaultSelectedKeys: __WEBPACK_IMPORTED_MODULE_2_prop_types___default.a.arrayOf(__WEBPACK_IMPORTED_MODULE_2_prop_types___default.a.string),
17720
+ defaultOpenKeys: __WEBPACK_IMPORTED_MODULE_2_prop_types___default.a.arrayOf(__WEBPACK_IMPORTED_MODULE_2_prop_types___default.a.string),
17721
+ openKeys: __WEBPACK_IMPORTED_MODULE_2_prop_types___default.a.arrayOf(__WEBPACK_IMPORTED_MODULE_2_prop_types___default.a.string),
17722
+ children: __WEBPACK_IMPORTED_MODULE_2_prop_types___default.a.any
17723
+ },
17724
+
17725
+ getDefaultProps: function getDefaultProps() {
17726
+ return {
17727
+ prefixCls: 'rc-menu',
17728
+ className: '',
17729
+ mode: 'vertical',
17730
+ level: 1,
17731
+ inlineIndent: 24,
17732
+ visible: true,
17733
+ focusable: true,
17734
+ style: {}
17735
+ };
17736
+ },
17737
+ getInitialState: function getInitialState() {
17738
+ var props = this.props;
17739
+ return {
17740
+ activeKey: getActiveKey(props, props.activeKey)
17741
+ };
17742
+ },
17743
+ componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
17744
+ var props = void 0;
17745
+ if ('activeKey' in nextProps) {
17746
+ props = {
17747
+ activeKey: getActiveKey(nextProps, nextProps.activeKey)
17748
+ };
17749
+ } else {
17750
+ var originalActiveKey = this.state.activeKey;
17751
+ var activeKey = getActiveKey(nextProps, originalActiveKey);
17752
+ // fix: this.setState(), parent.render(),
17753
+ if (activeKey !== originalActiveKey) {
17754
+ props = {
17755
+ activeKey: activeKey
17756
+ };
17757
+ }
17758
+ }
17759
+ if (props) {
17760
+ this.setState(props);
17761
+ }
17762
+ },
17763
+ shouldComponentUpdate: function shouldComponentUpdate(nextProps) {
17764
+ return this.props.visible || nextProps.visible;
17765
+ },
17766
+ componentWillMount: function componentWillMount() {
17767
+ this.instanceArray = [];
17768
+ },
17769
+
17770
+
17771
+ // all keyboard events callbacks run from here at first
17772
+ onKeyDown: function onKeyDown(e, callback) {
17773
+ var _this = this;
17774
+
17775
+ var keyCode = e.keyCode;
17776
+ var handled = void 0;
17777
+ this.getFlatInstanceArray().forEach(function (obj) {
17778
+ if (obj && obj.props.active && obj.onKeyDown) {
17779
+ handled = obj.onKeyDown(e);
17780
+ }
17781
+ });
17782
+ if (handled) {
17783
+ return 1;
17784
+ }
17785
+ var activeItem = null;
17786
+ if (keyCode === __WEBPACK_IMPORTED_MODULE_4_rc_util_es_KeyCode__["a" /* default */].UP || keyCode === __WEBPACK_IMPORTED_MODULE_4_rc_util_es_KeyCode__["a" /* default */].DOWN) {
17787
+ activeItem = this.step(keyCode === __WEBPACK_IMPORTED_MODULE_4_rc_util_es_KeyCode__["a" /* default */].UP ? -1 : 1);
17788
+ }
17789
+ if (activeItem) {
17790
+ e.preventDefault();
17791
+ this.setState({
17792
+ activeKey: activeItem.props.eventKey
17793
+ }, function () {
17794
+ __WEBPACK_IMPORTED_MODULE_7_dom_scroll_into_view___default()(__WEBPACK_IMPORTED_MODULE_3_react_dom___default.a.findDOMNode(activeItem), __WEBPACK_IMPORTED_MODULE_3_react_dom___default.a.findDOMNode(_this), {
17795
+ onlyScrollIfNeeded: true
17796
+ });
17797
+ // https://github.com/react-component/menu/commit/9899a9672f6f028ec3cdf773f1ecea5badd2d33e
17798
+ if (typeof callback === 'function') {
17799
+ callback(activeItem);
17800
+ }
17801
+ });
17802
+ return 1;
17803
+ } else if (activeItem === undefined) {
17804
+ e.preventDefault();
17805
+ this.setState({
17806
+ activeKey: null
17807
+ });
17808
+ return 1;
17809
+ }
17810
+ },
17811
+ onItemHover: function onItemHover(e) {
17812
+ var key = e.key,
17813
+ hover = e.hover;
17814
+
17815
+ this.setState({
17816
+ activeKey: hover ? key : null
17817
+ });
17818
+ },
17819
+ getFlatInstanceArray: function getFlatInstanceArray() {
17820
+ var instanceArray = this.instanceArray;
17821
+ var hasInnerArray = instanceArray.some(function (a) {
17822
+ return Array.isArray(a);
17823
+ });
17824
+ if (hasInnerArray) {
17825
+ instanceArray = [];
17826
+ this.instanceArray.forEach(function (a) {
17827
+ if (Array.isArray(a)) {
17828
+ instanceArray.push.apply(instanceArray, a);
17829
+ } else {
17830
+ instanceArray.push(a);
17831
+ }
17832
+ });
17833
+ this.instanceArray = instanceArray;
17834
+ }
17835
+ return instanceArray;
17836
+ },
17837
+ renderCommonMenuItem: function renderCommonMenuItem(child, i, subIndex, extraProps) {
17838
+ var state = this.state;
17839
+ var props = this.props;
17840
+ var key = Object(__WEBPACK_IMPORTED_MODULE_8__util__["a" /* getKeyFromChildrenIndex */])(child, props.eventKey, i);
17841
+ var childProps = child.props;
17842
+ var isActive = key === state.activeKey;
17843
+ var newChildProps = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({
17844
+ mode: props.mode,
17845
+ level: props.level,
17846
+ inlineIndent: props.inlineIndent,
17847
+ renderMenuItem: this.renderMenuItem,
17848
+ rootPrefixCls: props.prefixCls,
17849
+ index: i,
17850
+ parentMenu: this,
17851
+ ref: childProps.disabled ? undefined : Object(__WEBPACK_IMPORTED_MODULE_5_rc_util_es_createChainedFunction__["a" /* default */])(child.ref, saveRef.bind(this, i, subIndex)),
17852
+ eventKey: key,
17853
+ active: !childProps.disabled && isActive,
17854
+ multiple: props.multiple,
17855
+ onClick: this.onClick,
17856
+ onItemHover: this.onItemHover,
17857
+ openTransitionName: this.getOpenTransitionName(),
17858
+ openAnimation: props.openAnimation,
17859
+ subMenuOpenDelay: props.subMenuOpenDelay,
17860
+ subMenuCloseDelay: props.subMenuCloseDelay,
17861
+ forceSubMenuRender: props.forceSubMenuRender,
17862
+ onOpenChange: this.onOpenChange,
17863
+ onDeselect: this.onDeselect,
17864
+ onSelect: this.onSelect
17865
+ }, extraProps);
17866
+ if (props.mode === 'inline') {
17867
+ newChildProps.triggerSubMenuAction = 'click';
17868
+ }
17869
+ return __WEBPACK_IMPORTED_MODULE_1_react___default.a.cloneElement(child, newChildProps);
17870
+ },
17871
+ renderRoot: function renderRoot(props) {
17872
+ this.instanceArray = [];
17873
+ var className = __WEBPACK_IMPORTED_MODULE_6_classnames___default()(props.prefixCls, props.className, props.prefixCls + '-' + props.mode);
17874
+ var domProps = {
17875
+ className: className,
17876
+ role: 'menu',
17877
+ 'aria-activedescendant': ''
17878
+ };
17879
+ if (props.id) {
17880
+ domProps.id = props.id;
17881
+ }
17882
+ if (props.focusable) {
17883
+ domProps.tabIndex = '0';
17884
+ domProps.onKeyDown = this.onKeyDown;
17885
+ }
17886
+ return (
17887
+ // ESLint is not smart enough to know that the type of `children` was checked.
17888
+ /* eslint-disable */
17889
+ __WEBPACK_IMPORTED_MODULE_1_react___default.a.createElement(
17890
+ __WEBPACK_IMPORTED_MODULE_9__DOMWrap__["a" /* default */],
17891
+ __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({
17892
+ style: props.style,
17893
+ tag: 'ul',
17894
+ hiddenClassName: props.prefixCls + '-hidden',
17895
+ visible: props.visible
17896
+ }, domProps),
17897
+ __WEBPACK_IMPORTED_MODULE_1_react___default.a.Children.map(props.children, this.renderMenuItem)
17898
+ )
17899
+ /*eslint-enable */
17900
+
17901
+ );
17902
+ },
17903
+ step: function step(direction) {
17904
+ var children = this.getFlatInstanceArray();
17905
+ var activeKey = this.state.activeKey;
17906
+ var len = children.length;
17907
+ if (!len) {
17908
+ return null;
17909
+ }
17910
+ if (direction < 0) {
17911
+ children = children.concat().reverse();
17912
+ }
17913
+ // find current activeIndex
17914
+ var activeIndex = -1;
17915
+ children.every(function (c, ci) {
17916
+ if (c && c.props.eventKey === activeKey) {
17917
+ activeIndex = ci;
17918
+ return false;
17919
+ }
17920
+ return true;
17921
+ });
17922
+ if (!this.props.defaultActiveFirst && activeIndex !== -1) {
17923
+ if (allDisabled(children.slice(activeIndex, len - 1))) {
17924
+ return undefined;
17925
+ }
17926
+ }
17927
+ var start = (activeIndex + 1) % len;
17928
+ var i = start;
17929
+ for (;;) {
17930
+ var child = children[i];
17931
+ if (!child || child.props.disabled) {
17932
+ i = (i + 1 + len) % len;
17933
+ // complete a loop
17934
+ if (i === start) {
17935
+ return null;
17936
+ }
17937
+ } else {
17938
+ return child;
17939
+ }
17940
+ }
17941
+ }
17942
+ };
17943
+
17944
+ /* harmony default export */ __webpack_exports__["a"] = (MenuMixin);
17945
+
17946
+ /***/ }),
17947
+ /* 293 */
17948
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
17949
+
17950
+ "use strict";
17951
+ /* harmony export (immutable) */ __webpack_exports__["a"] = addEventListenerWrap;
17952
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_add_dom_event_listener__ = __webpack_require__(757);
17953
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_add_dom_event_listener___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_add_dom_event_listener__);
17954
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_dom__ = __webpack_require__(19);
17955
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_dom___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react_dom__);
17956
+
17957
+
17958
+
17959
+ function addEventListenerWrap(target, eventType, cb) {
17960
+ /* eslint camelcase: 2 */
17961
+ var callback = __WEBPACK_IMPORTED_MODULE_1_react_dom___default.a.unstable_batchedUpdates ? function run(e) {
17962
+ __WEBPACK_IMPORTED_MODULE_1_react_dom___default.a.unstable_batchedUpdates(cb, e);
17963
+ } : cb;
17964
+ return __WEBPACK_IMPORTED_MODULE_0_add_dom_event_listener___default()(target, eventType, callback);
17965
+ }
17966
+
17967
+ /***/ }),
17968
+ /* 294 */
17969
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
17970
+
17971
+ "use strict";
17972
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(83);
17973
+
17974
+
17975
+ /**
17976
+ * 得到会导致元素显示不全的祖先元素
17977
+ */
17978
+
17979
+ function getOffsetParent(element) {
17980
+ if (__WEBPACK_IMPORTED_MODULE_0__utils__["a" /* default */].isWindow(element) || element.nodeType === 9) {
17981
+ return null;
17982
+ }
17983
+ // ie 这个也不是完全可行
17984
+ /*
17985
+ <div style="width: 50px;height: 100px;overflow: hidden">
17986
+ <div style="width: 50px;height: 100px;position: relative;" id="d6">
17987
+ 元素 6 高 100px 宽 50px<br/>
17988
+ </div>
17989
+ </div>
17990
+ */
17991
+ // element.offsetParent does the right thing in ie7 and below. Return parent with layout!
17992
+ // In other browsers it only includes elements with position absolute, relative or
17993
+ // fixed, not elements with overflow set to auto or scroll.
17994
+ // if (UA.ie && ieMode < 8) {
17995
+ // return element.offsetParent;
17996
+ // }
17997
+ // 统一的 offsetParent 方法
17998
+ var doc = __WEBPACK_IMPORTED_MODULE_0__utils__["a" /* default */].getDocument(element);
17999
+ var body = doc.body;
18000
+ var parent = void 0;
18001
+ var positionStyle = __WEBPACK_IMPORTED_MODULE_0__utils__["a" /* default */].css(element, 'position');
18002
+ var skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';
18003
+
18004
+ if (!skipStatic) {
18005
+ return element.nodeName.toLowerCase() === 'html' ? null : element.parentNode;
18006
+ }
18007
+
18008
+ for (parent = element.parentNode; parent && parent !== body; parent = parent.parentNode) {
18009
+ positionStyle = __WEBPACK_IMPORTED_MODULE_0__utils__["a" /* default */].css(parent, 'position');
18010
+ if (positionStyle !== 'static') {
18011
+ return parent;
18012
+ }
18013
+ }
18014
+ return null;
18015
+ }
18016
+
18017
+ /* harmony default export */ __webpack_exports__["a"] = (getOffsetParent);
18018
+
18019
+ /***/ }),
18020
+ /* 295 */
18021
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
18022
+
18023
+ "use strict";
18024
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(17);
18025
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__);
18026
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_defineProperty__ = __webpack_require__(772);
18027
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_defineProperty___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_defineProperty__);
18028
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck__ = __webpack_require__(8);
18029
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck__);
18030
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass__ = __webpack_require__(10);
18031
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass__);
18032
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(12);
18033
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn__);
18034
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits__ = __webpack_require__(13);
18035
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits__);
18036
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react__ = __webpack_require__(2);
18037
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react__);
18038
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_prop_types__ = __webpack_require__(0);
18039
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_prop_types__);
18040
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__ = __webpack_require__(773);
18041
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__AnimateChild__ = __webpack_require__(774);
18042
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__util__ = __webpack_require__(297);
18043
+
18044
+
18045
+
18046
+
18047
+
18048
+
18049
+
18050
+
18051
+
18052
+
18053
+ var defaultKey = 'rc_animate_' + Date.now();
18054
+
18055
+
18056
+ function getChildrenFromProps(props) {
18057
+ var children = props.children;
18058
+ if (__WEBPACK_IMPORTED_MODULE_6_react___default.a.isValidElement(children)) {
18059
+ if (!children.key) {
18060
+ return __WEBPACK_IMPORTED_MODULE_6_react___default.a.cloneElement(children, {
18061
+ key: defaultKey
18062
+ });
18063
+ }
18064
+ }
18065
+ return children;
18066
+ }
18067
+
18068
+ function noop() {}
18069
+
18070
+ var Animate = function (_React$Component) {
18071
+ __WEBPACK_IMPORTED_MODULE_5_babel_runtime_helpers_inherits___default()(Animate, _React$Component);
18072
+
18073
+ // eslint-disable-line
18074
+
18075
+ function Animate(props) {
18076
+ __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default()(this, Animate);
18077
+
18078
+ var _this = __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_possibleConstructorReturn___default()(this, (Animate.__proto__ || Object.getPrototypeOf(Animate)).call(this, props));
18079
+
18080
+ _initialiseProps.call(_this);
18081
+
18082
+ _this.currentlyAnimatingKeys = {};
18083
+ _this.keysToEnter = [];
18084
+ _this.keysToLeave = [];
18085
+
18086
+ _this.state = {
18087
+ children: Object(__WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__["e" /* toArrayChildren */])(getChildrenFromProps(props))
18088
+ };
18089
+
18090
+ _this.childrenRefs = {};
18091
+ return _this;
18092
+ }
18093
+
18094
+ __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_createClass___default()(Animate, [{
18095
+ key: 'componentDidMount',
18096
+ value: function componentDidMount() {
18097
+ var _this2 = this;
18098
+
18099
+ var showProp = this.props.showProp;
18100
+ var children = this.state.children;
18101
+ if (showProp) {
18102
+ children = children.filter(function (child) {
18103
+ return !!child.props[showProp];
18104
+ });
18105
+ }
18106
+ children.forEach(function (child) {
18107
+ if (child) {
18108
+ _this2.performAppear(child.key);
18109
+ }
18110
+ });
18111
+ }
18112
+ }, {
18113
+ key: 'componentWillReceiveProps',
18114
+ value: function componentWillReceiveProps(nextProps) {
18115
+ var _this3 = this;
18116
+
18117
+ this.nextProps = nextProps;
18118
+ var nextChildren = Object(__WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__["e" /* toArrayChildren */])(getChildrenFromProps(nextProps));
18119
+ var props = this.props;
18120
+ // exclusive needs immediate response
18121
+ if (props.exclusive) {
18122
+ Object.keys(this.currentlyAnimatingKeys).forEach(function (key) {
18123
+ _this3.stop(key);
18124
+ });
18125
+ }
18126
+ var showProp = props.showProp;
18127
+ var currentlyAnimatingKeys = this.currentlyAnimatingKeys;
18128
+ // last props children if exclusive
18129
+ var currentChildren = props.exclusive ? Object(__WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__["e" /* toArrayChildren */])(getChildrenFromProps(props)) : this.state.children;
18130
+ // in case destroy in showProp mode
18131
+ var newChildren = [];
18132
+ if (showProp) {
18133
+ currentChildren.forEach(function (currentChild) {
18134
+ var nextChild = currentChild && Object(__WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__["a" /* findChildInChildrenByKey */])(nextChildren, currentChild.key);
18135
+ var newChild = void 0;
18136
+ if ((!nextChild || !nextChild.props[showProp]) && currentChild.props[showProp]) {
18137
+ newChild = __WEBPACK_IMPORTED_MODULE_6_react___default.a.cloneElement(nextChild || currentChild, __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_defineProperty___default()({}, showProp, true));
18138
+ } else {
18139
+ newChild = nextChild;
18140
+ }
18141
+ if (newChild) {
18142
+ newChildren.push(newChild);
18143
+ }
18144
+ });
18145
+ nextChildren.forEach(function (nextChild) {
18146
+ if (!nextChild || !Object(__WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__["a" /* findChildInChildrenByKey */])(currentChildren, nextChild.key)) {
18147
+ newChildren.push(nextChild);
18148
+ }
18149
+ });
18150
+ } else {
18151
+ newChildren = Object(__WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__["d" /* mergeChildren */])(currentChildren, nextChildren);
18152
+ }
18153
+
18154
+ // need render to avoid update
18155
+ this.setState({
18156
+ children: newChildren
18157
+ });
18158
+
18159
+ nextChildren.forEach(function (child) {
18160
+ var key = child && child.key;
18161
+ if (child && currentlyAnimatingKeys[key]) {
18162
+ return;
18163
+ }
18164
+ var hasPrev = child && Object(__WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__["a" /* findChildInChildrenByKey */])(currentChildren, key);
18165
+ if (showProp) {
18166
+ var showInNext = child.props[showProp];
18167
+ if (hasPrev) {
18168
+ var showInNow = Object(__WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__["b" /* findShownChildInChildrenByKey */])(currentChildren, key, showProp);
18169
+ if (!showInNow && showInNext) {
18170
+ _this3.keysToEnter.push(key);
18171
+ }
18172
+ } else if (showInNext) {
18173
+ _this3.keysToEnter.push(key);
18174
+ }
18175
+ } else if (!hasPrev) {
18176
+ _this3.keysToEnter.push(key);
18177
+ }
18178
+ });
18179
+
18180
+ currentChildren.forEach(function (child) {
18181
+ var key = child && child.key;
18182
+ if (child && currentlyAnimatingKeys[key]) {
18183
+ return;
18184
+ }
18185
+ var hasNext = child && Object(__WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__["a" /* findChildInChildrenByKey */])(nextChildren, key);
18186
+ if (showProp) {
18187
+ var showInNow = child.props[showProp];
18188
+ if (hasNext) {
18189
+ var showInNext = Object(__WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__["b" /* findShownChildInChildrenByKey */])(nextChildren, key, showProp);
18190
+ if (!showInNext && showInNow) {
18191
+ _this3.keysToLeave.push(key);
18192
+ }
18193
+ } else if (showInNow) {
18194
+ _this3.keysToLeave.push(key);
18195
+ }
18196
+ } else if (!hasNext) {
18197
+ _this3.keysToLeave.push(key);
18198
+ }
18199
+ });
18200
+ }
18201
+ }, {
18202
+ key: 'componentDidUpdate',
18203
+ value: function componentDidUpdate() {
18204
+ var keysToEnter = this.keysToEnter;
18205
+ this.keysToEnter = [];
18206
+ keysToEnter.forEach(this.performEnter);
18207
+ var keysToLeave = this.keysToLeave;
18208
+ this.keysToLeave = [];
18209
+ keysToLeave.forEach(this.performLeave);
18210
+ }
18211
+ }, {
18212
+ key: 'isValidChildByKey',
18213
+ value: function isValidChildByKey(currentChildren, key) {
18214
+ var showProp = this.props.showProp;
18215
+ if (showProp) {
18216
+ return Object(__WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__["b" /* findShownChildInChildrenByKey */])(currentChildren, key, showProp);
18217
+ }
18218
+ return Object(__WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__["a" /* findChildInChildrenByKey */])(currentChildren, key);
18219
+ }
18220
+ }, {
18221
+ key: 'stop',
18222
+ value: function stop(key) {
18223
+ delete this.currentlyAnimatingKeys[key];
18224
+ var component = this.childrenRefs[key];
18225
+ if (component) {
18226
+ component.stop();
18227
+ }
18228
+ }
18229
+ }, {
18230
+ key: 'render',
18231
+ value: function render() {
18232
+ var _this4 = this;
18233
+
18234
+ var props = this.props;
18235
+ this.nextProps = props;
18236
+ var stateChildren = this.state.children;
18237
+ var children = null;
18238
+ if (stateChildren) {
18239
+ children = stateChildren.map(function (child) {
18240
+ if (child === null || child === undefined) {
18241
+ return child;
18242
+ }
18243
+ if (!child.key) {
18244
+ throw new Error('must set key for <rc-animate> children');
18245
+ }
18246
+ return __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement(
18247
+ __WEBPACK_IMPORTED_MODULE_9__AnimateChild__["a" /* default */],
18248
+ {
18249
+ key: child.key,
18250
+ ref: function ref(node) {
18251
+ return _this4.childrenRefs[child.key] = node;
18252
+ },
18253
+ animation: props.animation,
18254
+ transitionName: props.transitionName,
18255
+ transitionEnter: props.transitionEnter,
18256
+ transitionAppear: props.transitionAppear,
18257
+ transitionLeave: props.transitionLeave
18258
+ },
18259
+ child
18260
+ );
18261
+ });
18262
+ }
18263
+ var Component = props.component;
18264
+ if (Component) {
18265
+ var passedProps = props;
18266
+ if (typeof Component === 'string') {
18267
+ passedProps = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({
18268
+ className: props.className,
18269
+ style: props.style
18270
+ }, props.componentProps);
18271
+ }
18272
+ return __WEBPACK_IMPORTED_MODULE_6_react___default.a.createElement(
18273
+ Component,
18274
+ passedProps,
18275
+ children
18276
+ );
18277
+ }
18278
+ return children[0] || null;
18279
+ }
18280
+ }]);
18281
+
18282
+ return Animate;
18283
+ }(__WEBPACK_IMPORTED_MODULE_6_react___default.a.Component);
18284
+
18285
+ Animate.isAnimate = true;
18286
+ Animate.propTypes = {
18287
+ component: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.any,
18288
+ componentProps: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.object,
18289
+ animation: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.object,
18290
+ transitionName: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.oneOfType([__WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.string, __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.object]),
18291
+ transitionEnter: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.bool,
18292
+ transitionAppear: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.bool,
18293
+ exclusive: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.bool,
18294
+ transitionLeave: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.bool,
18295
+ onEnd: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.func,
18296
+ onEnter: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.func,
18297
+ onLeave: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.func,
18298
+ onAppear: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.func,
18299
+ showProp: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.string
18300
+ };
18301
+ Animate.defaultProps = {
18302
+ animation: {},
18303
+ component: 'span',
18304
+ componentProps: {},
18305
+ transitionEnter: true,
18306
+ transitionLeave: true,
18307
+ transitionAppear: false,
18308
+ onEnd: noop,
18309
+ onEnter: noop,
18310
+ onLeave: noop,
18311
+ onAppear: noop
18312
+ };
18313
+
18314
+ var _initialiseProps = function _initialiseProps() {
18315
+ var _this5 = this;
18316
+
18317
+ this.performEnter = function (key) {
18318
+ // may already remove by exclusive
18319
+ if (_this5.childrenRefs[key]) {
18320
+ _this5.currentlyAnimatingKeys[key] = true;
18321
+ _this5.childrenRefs[key].componentWillEnter(_this5.handleDoneAdding.bind(_this5, key, 'enter'));
18322
+ }
18323
+ };
18324
+
18325
+ this.performAppear = function (key) {
18326
+ if (_this5.childrenRefs[key]) {
18327
+ _this5.currentlyAnimatingKeys[key] = true;
18328
+ _this5.childrenRefs[key].componentWillAppear(_this5.handleDoneAdding.bind(_this5, key, 'appear'));
18329
+ }
18330
+ };
18331
+
18332
+ this.handleDoneAdding = function (key, type) {
18333
+ var props = _this5.props;
18334
+ delete _this5.currentlyAnimatingKeys[key];
18335
+ // if update on exclusive mode, skip check
18336
+ if (props.exclusive && props !== _this5.nextProps) {
18337
+ return;
18338
+ }
18339
+ var currentChildren = Object(__WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__["e" /* toArrayChildren */])(getChildrenFromProps(props));
18340
+ if (!_this5.isValidChildByKey(currentChildren, key)) {
18341
+ // exclusive will not need this
18342
+ _this5.performLeave(key);
18343
+ } else {
18344
+ if (type === 'appear') {
18345
+ if (__WEBPACK_IMPORTED_MODULE_10__util__["a" /* default */].allowAppearCallback(props)) {
18346
+ props.onAppear(key);
18347
+ props.onEnd(key, true);
18348
+ }
18349
+ } else {
18350
+ if (__WEBPACK_IMPORTED_MODULE_10__util__["a" /* default */].allowEnterCallback(props)) {
18351
+ props.onEnter(key);
18352
+ props.onEnd(key, true);
18353
+ }
18354
+ }
18355
+ }
18356
+ };
18357
+
18358
+ this.performLeave = function (key) {
18359
+ // may already remove by exclusive
18360
+ if (_this5.childrenRefs[key]) {
18361
+ _this5.currentlyAnimatingKeys[key] = true;
18362
+ _this5.childrenRefs[key].componentWillLeave(_this5.handleDoneLeaving.bind(_this5, key));
18363
+ }
18364
+ };
18365
+
18366
+ this.handleDoneLeaving = function (key) {
18367
+ var props = _this5.props;
18368
+ delete _this5.currentlyAnimatingKeys[key];
18369
+ // if update on exclusive mode, skip check
18370
+ if (props.exclusive && props !== _this5.nextProps) {
18371
+ return;
18372
+ }
18373
+ var currentChildren = Object(__WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__["e" /* toArrayChildren */])(getChildrenFromProps(props));
18374
+ // in case state change is too fast
18375
+ if (_this5.isValidChildByKey(currentChildren, key)) {
18376
+ _this5.performEnter(key);
18377
+ } else {
18378
+ var end = function end() {
18379
+ if (__WEBPACK_IMPORTED_MODULE_10__util__["a" /* default */].allowLeaveCallback(props)) {
18380
+ props.onLeave(key);
18381
+ props.onEnd(key, false);
18382
+ }
18383
+ };
18384
+ if (!Object(__WEBPACK_IMPORTED_MODULE_8__ChildrenUtils__["c" /* isSameChildren */])(_this5.state.children, currentChildren, props.showProp)) {
18385
+ _this5.setState({
18386
+ children: currentChildren
18387
+ }, end);
18388
+ } else {
18389
+ end();
18390
+ }
18391
+ }
18392
+ };
18393
+ };
18394
+
18395
+ /* harmony default export */ __webpack_exports__["a"] = (Animate);
18396
+
18397
+ /***/ }),
18398
+ /* 296 */
18399
+ /***/ (function(module, exports) {
18400
+
18401
+ module.exports = function(arr, obj){
18402
+ if (arr.indexOf) return arr.indexOf(obj);
18403
+ for (var i = 0; i < arr.length; ++i) {
18404
+ if (arr[i] === obj) return i;
18405
+ }
18406
+ return -1;
18407
+ };
18408
+
18409
+ /***/ }),
18410
+ /* 297 */
18411
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
18412
+
18413
+ "use strict";
18414
+ var util = {
18415
+ isAppearSupported: function isAppearSupported(props) {
18416
+ return props.transitionName && props.transitionAppear || props.animation.appear;
18417
+ },
18418
+ isEnterSupported: function isEnterSupported(props) {
18419
+ return props.transitionName && props.transitionEnter || props.animation.enter;
18420
+ },
18421
+ isLeaveSupported: function isLeaveSupported(props) {
18422
+ return props.transitionName && props.transitionLeave || props.animation.leave;
18423
+ },
18424
+ allowAppearCallback: function allowAppearCallback(props) {
18425
+ return props.transitionAppear || props.animation.appear;
18426
+ },
18427
+ allowEnterCallback: function allowEnterCallback(props) {
18428
+ return props.transitionEnter || props.animation.enter;
18429
+ },
18430
+ allowLeaveCallback: function allowLeaveCallback(props) {
18431
+ return props.transitionLeave || props.animation.leave;
18432
+ }
18433
+ };
18434
+ /* harmony default export */ __webpack_exports__["a"] = (util);
18435
+
18436
+ /***/ }),
18437
+ /* 298 */
18438
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
18439
+
18440
+ "use strict";
18441
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_objectWithoutProperties__ = __webpack_require__(116);
18442
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_objectWithoutProperties___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_objectWithoutProperties__);
18443
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(8);
18444
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);
18445
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(12);
18446
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__);
18447
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__ = __webpack_require__(13);
18448
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__);
18449
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react__ = __webpack_require__(2);
18450
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_react__);
18451
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_prop_types__ = __webpack_require__(0);
18452
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_prop_types__);
18453
+
18454
+
18455
+
18456
+
18457
+
18458
+
18459
+
18460
+ var LazyRenderBox = function (_Component) {
18461
+ __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(LazyRenderBox, _Component);
18462
+
18463
+ function LazyRenderBox() {
18464
+ __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, LazyRenderBox);
18465
+
18466
+ return __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _Component.apply(this, arguments));
18467
+ }
18468
+
18469
+ LazyRenderBox.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {
18470
+ return nextProps.hiddenClassName || nextProps.visible;
18471
+ };
18472
+
18473
+ LazyRenderBox.prototype.render = function render() {
18474
+ var _props = this.props,
18475
+ hiddenClassName = _props.hiddenClassName,
18476
+ visible = _props.visible,
18477
+ props = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_objectWithoutProperties___default()(_props, ['hiddenClassName', 'visible']);
18478
+
18479
+ if (hiddenClassName || __WEBPACK_IMPORTED_MODULE_4_react___default.a.Children.count(props.children) > 1) {
18480
+ if (!visible && hiddenClassName) {
18481
+ props.className += ' ' + hiddenClassName;
18482
+ }
18483
+ return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement('div', props);
18484
+ }
18485
+
18486
+ return __WEBPACK_IMPORTED_MODULE_4_react___default.a.Children.only(props.children);
18487
+ };
18488
+
18489
+ return LazyRenderBox;
18490
+ }(__WEBPACK_IMPORTED_MODULE_4_react__["Component"]);
18491
+
18492
+ LazyRenderBox.propTypes = {
18493
+ children: __WEBPACK_IMPORTED_MODULE_5_prop_types___default.a.any,
18494
+ className: __WEBPACK_IMPORTED_MODULE_5_prop_types___default.a.string,
18495
+ visible: __WEBPACK_IMPORTED_MODULE_5_prop_types___default.a.bool,
18496
+ hiddenClassName: __WEBPACK_IMPORTED_MODULE_5_prop_types___default.a.string
18497
+ };
18498
+
18499
+
18500
+ /* harmony default export */ __webpack_exports__["a"] = (LazyRenderBox);
18501
+
18502
+ /***/ }),
18503
+ /* 299 */
18504
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
18505
+
18506
+ "use strict";
18507
+ /* harmony export (immutable) */ __webpack_exports__["a"] = getAlignFromPlacement;
18508
+ /* harmony export (immutable) */ __webpack_exports__["b"] = getPopupClassNameFromAlign;
18509
+ /* harmony export (immutable) */ __webpack_exports__["c"] = saveRef;
18510
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(17);
18511
+ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__);
18512
+
18513
+ function isPointsEq(a1, a2) {
18514
+ return a1[0] === a2[0] && a1[1] === a2[1];
18515
+ }
18516
+
18517
+ function getAlignFromPlacement(builtinPlacements, placementStr, align) {
18518
+ var baseAlign = builtinPlacements[placementStr] || {};
18519
+ return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({}, baseAlign, align);
18520
+ }
18521
+
18522
+ function getPopupClassNameFromAlign(builtinPlacements, prefixCls, align) {
18523
+ var points = align.points;
18524
+ for (var placement in builtinPlacements) {
18525
+ if (builtinPlacements.hasOwnProperty(placement)) {
18526
+ if (isPointsEq(builtinPlacements[placement].points, points)) {
18527
+ return prefixCls + '-placement-' + placement;
18528
+ }
18529
+ }
18530
+ }
18531
+ return '';
18532
+ }
18533
+
18534
+ function saveRef(name, component) {
18535
+ this[name] = component;
18536
+ }
18537
+
18538
+ /***/ }),
18539
+ /* 300 */
18540
+ /***/ (function(module, exports, __webpack_require__) {
18541
+
18542
+ // style-loader: Adds some css to the DOM by adding a <style> tag
18543
+
18544
+ // load the styles
18545
+ var content = __webpack_require__(788);
18546
+ if(typeof content === 'string') content = [[module.i, content, '']];
18547
+ // Prepare cssTransformation
18548
+ var transform;
18549
+
18550
+ var options = {"hmr":true}
18551
+ options.transform = transform
18552
+ // add the styles to the DOM
18553
+ var update = __webpack_require__(33)(content, options);
18554
+ if(content.locals) module.exports = content.locals;
18555
+ // Hot Module Replacement
18556
+ if(false) {
18557
+ // When the styles change, update the <style> tags
18558
+ if(!content.locals) {
18559
+ module.hot.accept("!!../../css-loader/index.js?modules&-autoprefixer&importLoaders=1&localIdentName=[local]!../../sass-loader/lib/loader.js!./balloon.scss", function() {
18560
+ var newContent = require("!!../../css-loader/index.js?modules&-autoprefixer&importLoaders=1&localIdentName=[local]!../../sass-loader/lib/loader.js!./balloon.scss");
18561
+ if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
18562
+ update(newContent);
18563
+ });
18564
+ }
18565
+ // When the module is disposed, remove the <style> tags
18566
+ module.hot.dispose(function() { update(); });
18567
+ }
18568
+
18569
+ /***/ }),
18570
+ /* 301 */
18571
+ /***/ (function(module, exports, __webpack_require__) {
18572
+
18573
+ "use strict";
18574
+
18575
+
18576
+ Object.defineProperty(exports, "__esModule", {
18577
+ value: true
18578
+ });
18579
+ /**
18580
+ * Define all CF7 Tags & CF7 Skins Items.
18581
+ *
18582
+ * @since 0.4.0
18583
+ */
18584
+ var cf7sItems = exports.cf7sItems = [
18585
+
18586
+ /** CF7 Tags **/
18587
+ {
18588
+ cf7sType: 'acceptance',
18589
+ cf7sSelectLabel: 'Acceptance (confirm)',
18590
+ cf7sSelectGroup: 'cf7Tag',
18591
+ cf7Name: 'acceptance',
18592
+ cf7sLabel: '',
18593
+ cf7Required: false,
18594
+ cf7TagOptions: [{
18595
+ cf7Option: 'default_on',
18596
+ isChecked: false,
18597
+ optionLabel: 'Make this checkbox checked by default',
18598
+ optionType: 'checkbox'
18599
+ }, {
18600
+ cf7Option: 'invert',
18601
+ isChecked: false,
18602
+ optionLabel: 'Make this work inversely',
18603
+ optionType: 'checkbox'
18604
+ }],
18605
+ cf7DefaultOn: false,
18606
+ cf7Invert: false,
18607
+ cf7Content: '', // for condition field, not the same as paragraph cf7sContent @since 0.6.0
18608
+ cf7IdAttribute: '',
18609
+ cf7ClassAttribute: '',
18610
+ cf7sIcon: 'typcn typcn-thumbs-ok',
18611
+ noChildren: true
18612
+ }, {
18613
+ cf7sType: 'checkbox',
18614
+ cf7sSelectLabel: 'Checkbox (option)',
18615
+ cf7sSelectGroup: 'cf7Tag',
18616
+ cf7Name: 'checkbox',
18617
+ cf7sLabel: '',
18618
+ cf7Required: false,
18619
+ cf7TagOptions: [{
18620
+ cf7Option: 'label_first',
18621
+ isChecked: false,
18622
+ optionLabel: 'Put a label first, a checkbox last',
18623
+ optionType: 'checkbox'
18624
+ }, {
18625
+ cf7Option: 'use_label_element',
18626
+ isChecked: false,
18627
+ optionLabel: 'Wrap each item with label element',
18628
+ optionType: 'checkbox'
18629
+ }, {
18630
+ cf7Option: 'exclusive',
18631
+ isChecked: false,
18632
+ optionLabel: 'Make checkboxes exclusive',
18633
+ optionType: 'checkbox'
18634
+ }],
18635
+ cf7Options: [// Option Checked +
18636
+ {
18637
+ value: 'Option 1',
18638
+ isChecked: true
18639
+ }, {
18640
+ value: 'Option 2',
18641
+ isChecked: false
18642
+ }],
18643
+ cf7LabelFirst: false,
18644
+ cf7UseLabelElement: false,
18645
+ cf7Exclusive: false,
18646
+ cf7IdAttribute: '',
18647
+ cf7ClassAttribute: '',
18648
+ cf7sIcon: 'typcn typcn-input-checked',
18649
+ noChildren: true
18650
+ }, {
18651
+ cf7sType: 'date',
18652
+ cf7sSelectLabel: 'Date',
18653
+ cf7sSelectGroup: 'cf7Tag',
18654
+ cf7Name: 'date',
18655
+ cf7sLabel: '',
18656
+ cf7Required: false,
18657
+ cf7TagOptions: [{
18658
+ cf7Option: '',
18659
+ optionLabel: 'Default value',
18660
+ optionType: 'input'
18661
+ }, {
18662
+ cf7Option: 'placeholder',
18663
+ isChecked: false,
18664
+ optionLabel: 'Use this text as the placeholder of the field',
18665
+ optionType: 'checkbox'
18666
+ }, {
18667
+ cf7Option: '',
18668
+ optionLabel: 'Range - min',
18669
+ optionType: 'input'
18670
+ }, {
18671
+ cf7Option: '',
18672
+ optionLabel: 'Range - max',
18673
+ optionType: 'input'
18674
+ }],
18675
+ cf7Values: '',
18676
+ cf7Placeholder: false,
18677
+ cf7Min: '',
18678
+ cf7Max: '',
18679
+ cf7IdAttribute: '',
18680
+ cf7ClassAttribute: '',
18681
+ cf7sIcon: 'typcn typcn-calendar',
18682
+ noChildren: true
18683
+ }, {
18684
+ cf7sType: 'email',
18685
+ cf7sSelectLabel: 'Email',
18686
+ cf7sSelectGroup: 'cf7Tag',
18687
+ cf7Name: 'email',
18688
+ cf7sLabel: '',
18689
+ cf7Required: false,
18690
+ cf7TagOptions: [{
18691
+ cf7Option: '',
18692
+ optionLabel: 'Default value',
18693
+ optionType: 'input'
18694
+ }, {
18695
+ cf7Option: 'placeholder',
18696
+ isChecked: false,
18697
+ optionLabel: 'Use this text as the placeholder of the field',
18698
+ optionType: 'checkbox'
18699
+ }, {
18700
+ cf7Option: 'akismet_author_email',
18701
+ isChecked: false,
18702
+ optionLabel: "Akismet - this field requires author's email address",
18703
+ optionType: 'checkbox'
18704
+ }],
18705
+ cf7Values: '',
18706
+ cf7Placeholder: false,
18707
+ cf7AkismetAuthorEmail: false,
18708
+ cf7IdAttribute: '',
18709
+ cf7ClassAttribute: '',
18710
+ cf7sIcon: 'typcn typcn-mail',
18711
+ noChildren: true
18712
+ }, {
18713
+ cf7sType: 'file',
18714
+ cf7sSelectLabel: 'File (upload)',
18715
+ cf7sSelectGroup: 'cf7Tag',
18716
+ cf7Name: 'file',
18717
+ cf7sLabel: '',
18718
+ cf7Required: false,
18719
+ cf7TagOptions: [{
18720
+ cf7Option: 'limit',
18721
+ optionLabel: 'File size limit (bytes)',
18722
+ optionType: 'input'
18723
+ }, {
18724
+ cf7Option: '',
18725
+ optionLabel: 'Acceptable file types',
18726
+ optionType: 'select'
18727
+ }],
18728
+ cf7Limit: '',
18729
+ cf7FileTypes: '',
18730
+ cf7IdAttribute: '',
18731
+ cf7ClassAttribute: '',
18732
+ cf7sIcon: 'typcn typcn-attachment',
18733
+ noChildren: true
18734
+ }, {
18735
+ cf7sType: 'number',
18736
+ cf7sSelectLabel: 'Number',
18737
+ cf7sSelectGroup: 'cf7Tag',
18738
+ cf7Name: 'number',
18739
+ cf7sLabel: '',
18740
+ cf7Required: false,
18741
+ cf7TagOptions: [{
18742
+ cf7Option: '',
18743
+ optionLabel: 'Field Type', // Spinbox, Slider
18744
+ optionType: 'select'
18745
+ }, {
18746
+ cf7Option: '',
18747
+ optionLabel: 'Default value',
18748
+ optionType: 'input'
18749
+ }, {
18750
+ cf7Option: 'placeholder',
18751
+ isChecked: false,
18752
+ optionLabel: 'Use this text as the placeholder of the field',
18753
+ optionType: 'checkbox'
18754
+ }, {
18755
+ cf7Option: '',
18756
+ optionLabel: 'Range - min',
18757
+ optionType: 'input'
18758
+ }, {
18759
+ cf7Option: '',
18760
+ optionLabel: 'Range - max',
18761
+ optionType: 'input'
18762
+ }],
18763
+ cf7TagType: 'number', // number: Spinbox, range: Slider
18764
+ cf7Values: '',
18765
+ cf7Placeholder: '',
18766
+ cf7Min: '',
18767
+ cf7Max: '',
18768
+ cf7IdAttribute: '',
18769
+ cf7ClassAttribute: '',
18770
+ cf7sIcon: 'typcn typcn-sort-alphabetically',
18771
+ noChildren: true
18772
+ }, {
18773
+ cf7sType: 'quiz',
18774
+ cf7sSelectLabel: 'Quiz',
18775
+ cf7sSelectGroup: 'cf7Tag',
18776
+ cf7Name: 'quiz',
18777
+ cf7sLabel: '',
18778
+ cf7Required: false,
18779
+ cf7Options: [// Question Answer +
18780
+ {
18781
+ question: 'Question 1',
18782
+ answer: 'Answer 1'
18783
+ }, {
18784
+ question: 'Question 2',
18785
+ answer: 'Answer 2'
18786
+ }],
18787
+ cf7IdAttribute: '',
18788
+ cf7ClassAttribute: '',
18789
+ cf7sIcon: 'typcn typcn-lightbulb',
18790
+ noChildren: true
18791
+ }, {
18792
+ cf7sType: 'radio',
18793
+ cf7sSelectLabel: 'Radio Button (option)',
18794
+ cf7sSelectGroup: 'cf7Tag',
18795
+ cf7Name: 'radio',
18796
+ cf7sLabel: '',
18797
+ cf7Required: false,
18798
+ cf7TagOptions: [{
18799
+ cf7Option: 'label_first',
18800
+ isChecked: false,
18801
+ optionLabel: 'Put a label first, a checkbox last',
18802
+ optionType: 'checkbox'
18803
+ }, {
18804
+ cf7Option: 'use_label_element',
18805
+ isChecked: false,
18806
+ optionLabel: 'Wrap each item with label element',
18807
+ optionType: 'checkbox'
18808
+ }],
18809
+ cf7Options: [// Option Default +
18810
+ {
18811
+ value: 'Option 1', // default: 1
18812
+ isChecked: true // radio-button
18813
+ }, {
18814
+ value: 'Option 2',
18815
+ isChecked: false
18816
+ }],
18817
+ cf7LabelFirst: false,
18818
+ cf7UseLabelElement: false,
18819
+ cf7IdAttribute: '',
18820
+ cf7ClassAttribute: '',
18821
+ cf7sIcon: 'typcn typcn-media-record-outline',
18822
+ noChildren: true
18823
+ }, {
18824
+ cf7sType: 'select',
18825
+ cf7sSelectLabel: 'Select (dropdown)',
18826
+ cf7sSelectGroup: 'cf7Tag',
18827
+ cf7Name: 'select',
18828
+ cf7sLabel: '',
18829
+ cf7Required: false,
18830
+ cf7TagOptions: [{
18831
+ cf7Option: '',
18832
+ isChecked: false,
18833
+ optionLabel: 'Allow multiple selections',
18834
+ optionType: 'checkbox'
18835
+ }, {
18836
+ cf7Option: '',
18837
+ isChecked: false,
18838
+ optionLabel: 'Insert a blank item as the first option',
18839
+ optionType: 'checkbox'
18840
+ }],
18841
+ cf7Options: [// Option Checked +
18842
+ {
18843
+ value: 'Option 1',
18844
+ isChecked: true
18845
+ }, {
18846
+ value: 'Option 2',
18847
+ isChecked: false
18848
+ }],
18849
+ cf7Multiple: false,
18850
+ cf7IncludeBlank: false,
18851
+ cf7IdAttribute: '',
18852
+ cf7ClassAttribute: '',
18853
+ cf7sIcon: 'typcn typcn-th-menu',
18854
+ noChildren: true
18855
+ }, {
18856
+ cf7sType: 'submit',
18857
+ cf7sSelectLabel: 'Submit',
18858
+ cf7sSelectGroup: 'cf7Tag',
18859
+ cf7Name: 'submit',
18860
+ cf7sLabel: 'Submit', // used as submit value
18861
+ cf7Values: '',
18862
+ cf7Required: false,
18863
+ cf7IdAttribute: '',
18864
+ cf7ClassAttribute: '',
18865
+ cf7sIcon: 'typcn typcn-mail',
18866
+ noChildren: true
18867
+ }, {
18868
+ cf7sType: 'tel',
18869
+ cf7sSelectLabel: 'Telephone',
18870
+ cf7sSelectGroup: 'cf7Tag',
18871
+ cf7Name: 'tel',
18872
+ cf7sLabel: '',
18873
+ cf7Required: false,
18874
+ cf7TagOptions: [{
18875
+ cf7Option: '',
18876
+ optionLabel: 'Default value',
18877
+ optionType: 'input'
18878
+ }, {
18879
+ cf7Option: 'placeholder',
18880
+ isChecked: false,
18881
+ optionLabel: 'Use this text as the placeholder of the field',
18882
+ optionType: 'checkbox'
18883
+ }],
18884
+ cf7Values: '',
18885
+ cf7Placeholder: false,
18886
+ cf7IdAttribute: '',
18887
+ cf7ClassAttribute: '',
18888
+ cf7sIcon: 'typcn typcn-phone',
18889
+ noChildren: true
18890
+ }, {
18891
+ cf7sType: 'text',
18892
+ cf7sSelectLabel: 'Text (short text)',
18893
+ cf7sSelectGroup: 'cf7Tag',
18894
+ cf7Name: 'text',
18895
+ cf7sLabel: '',
18896
+ cf7Required: false,
18897
+ cf7TagOptions: [{
18898
+ cf7Option: '',
18899
+ optionLabel: 'Default value',
18900
+ optionType: 'input'
18901
+ }, {
18902
+ cf7Option: 'placeholder',
18903
+ isChecked: false,
18904
+ optionLabel: 'Use this text as the placeholder of the field',
18905
+ optionType: 'checkbox'
18906
+ }, {
18907
+ cf7Option: 'akismet_author_email',
18908
+ isChecked: false,
18909
+ optionLabel: "Akismet - this field requires author's email address",
18910
+ optionType: 'checkbox'
18911
+ }],
18912
+ cf7Values: '',
18913
+ cf7Placeholder: false,
18914
+ cf7AkismetAuthor: false,
18915
+ cf7IdAttribute: '',
18916
+ cf7ClassAttribute: '',
18917
+ cf7sIcon: 'typcn typcn-sort-alphabetically',
18918
+ noChildren: true
18919
+ }, {
18920
+ cf7sType: 'textarea',
18921
+ cf7sSelectLabel: 'Textarea (long text)',
18922
+ cf7sSelectGroup: 'cf7Tag',
18923
+ cf7Name: 'textarea',
18924
+ cf7sLabel: '',
18925
+ cf7Required: false,
18926
+ cf7TagOptions: [{
18927
+ cf7Option: '',
18928
+ optionLabel: 'Default value',
18929
+ optionType: 'input'
18930
+ }, {
18931
+ cf7Option: 'placeholder',
18932
+ isChecked: false,
18933
+ optionLabel: 'Use this text as the placeholder of the field',
18934
+ optionType: 'checkbox'
18935
+ }],
18936
+ cf7Values: '',
18937
+ cf7Placeholder: false,
18938
+ cf7IdAttribute: '',
18939
+ cf7ClassAttribute: '',
18940
+ cf7sIcon: 'typcn typcn-document-text',
18941
+ noChildren: true
18942
+ }, {
18943
+ cf7sType: 'url',
18944
+ cf7sSelectLabel: 'URL (website link)',
18945
+ cf7sSelectGroup: 'cf7Tag',
18946
+ cf7Name: 'url',
18947
+ cf7sLabel: '',
18948
+ cf7Required: false,
18949
+ cf7TagOptions: [{
18950
+ cf7Option: '',
18951
+ optionLabel: 'Default value',
18952
+ optionType: 'input'
18953
+ }, {
18954
+ cf7Option: 'placeholder',
18955
+ isChecked: false,
18956
+ optionLabel: 'Use this text as the placeholder of the field',
18957
+ optionType: 'checkbox'
18958
+ }, {
18959
+ cf7Option: 'akismet_author_email',
18960
+ isChecked: false,
18961
+ optionLabel: "Akismet - this field requires author's email address",
18962
+ optionType: 'checkbox'
18963
+ }],
18964
+ cf7Values: '',
18965
+ cf7Placeholder: false,
18966
+ cf7AkismetAuthorUrl: false,
18967
+ cf7IdAttribute: '',
18968
+ cf7ClassAttribute: '',
18969
+ cf7sIcon: 'typcn typcn-link',
18970
+ noChildren: true
18971
+ }, {
18972
+ cf7sType: 'recaptcha', // @since 0.5.4
18973
+ cf7sSelectLabel: 'reCAPTCHA',
18974
+ cf7sSelectGroup: 'cf7Tag',
18975
+ cf7Name: 'recaptcha',
18976
+ cf7sLabel: '',
18977
+ cf7IdAttribute: '',
18978
+ cf7Size: '',
18979
+ cf7Theme: '',
18980
+ cf7ClassAttribute: '',
18981
+ cf7sIcon: 'dashicons dashicons-update',
18982
+ noChildren: true
18983
+ },
18984
+
18985
+ /** CF7 Skins Items **/
18986
+ {
18987
+ cf7sType: 'fieldset',
18988
+ cf7sSelectLabel: 'Fieldset (with legend)',
18989
+ cf7sSelectGroup: 'cf7sItem',
18990
+ cf7Name: 'fieldset',
18991
+ cf7sLabel: 'Legend ..', // used as legend - has default value
18992
+ cf7sIcon: 'typcn typcn-folder'
18993
+ }, {
18994
+ cf7sType: 'list-ol',
18995
+ cf7sSelectLabel: 'List - ol',
18996
+ cf7sSelectGroup: 'cf7sItem',
18997
+ cf7Name: 'listol',
18998
+ cf7sLabel: '', // not displayed at this stage - consider allowing user to add this
18999
+ cf7sIcon: 'dashicons dashicons-editor-ol',
19000
+ noChildren: false
19001
+ }, {
19002
+ cf7sType: 'list-li',
19003
+ cf7sSelectLabel: 'List Item - li',
19004
+ cf7sSelectGroup: 'cf7sItem',
19005
+ cf7Name: 'listli',
19006
+ cf7sLabel: '', // not displayed at this stage - consider allowing user to add this
19007
+ cf7sIcon: 'dashicons dashicons-editor-ul',
19008
+ noChildren: false
19009
+ }, {
19010
+ cf7sType: 'paragraph',
19011
+ cf7sSelectLabel: 'Paragraph - p',
19012
+ cf7sSelectGroup: 'cf7sItem',
19013
+ cf7Name: 'paragraph',
19014
+ cf7sContent: '', // @previous: paragraph. Permitted content: https://developer.mozilla.org/en-US/docs/Web/HTML/Content_categories#Phrasing_content
19015
+ cf7sIcon: 'dashicons dashicons-editor-paragraph',
19016
+ noChildren: true
19017
+ }];
19018
+
19019
+ /***/ }),
19020
+ /* 302 */
19021
+ /***/ (function(module, exports, __webpack_require__) {
19022
+
19023
+ "use strict";
19024
+
19025
+
19026
+ Object.defineProperty(exports, "__esModule", {
19027
+ value: true
19028
+ });
19029
+
19030
+ 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; }; /**
19031
+ * CF7 Skins Visual Utility Functions
19032
+ *
19033
+ * @since 0.6.1
19034
+ */
19035
+
19036
+
19037
+ exports.randomizeName = randomizeName;
19038
+ exports.mergeDefault = mergeDefault;
19039
+
19040
+ var _ = __webpack_require__(194);
19041
+
19042
+ /**
19043
+ * Add tag name numbering using random number.
19044
+ *
19045
+ * Adds random number to cf7sType e.g. text-777
19046
+ * Generates unique CF7 Form-tag Name when field is added to form
19047
+ * Can be used while dragging, clicking, duplicating (single or nested) item
19048
+ *
19049
+ * @param {Object} node tag << NEEDS BETTER DESCRIPTION
19050
+ * @return {Object} node
19051
+ *
19052
+ * @since 0.4.0
19053
+ */
19054
+ function randomizeName(node) {
19055
+ var min = 100,
19056
+ max = 999;
19057
+ var rand = Math.floor(Math.random() * (max - min) + min);
19058
+ node.cf7Name = node.cf7sType + '-' + rand;
19059
+
19060
+ if (!!node.children) {
19061
+ // loop children
19062
+ var _iteratorNormalCompletion = true;
19063
+ var _didIteratorError = false;
19064
+ var _iteratorError = undefined;
19065
+
19066
+ try {
19067
+ for (var _iterator = node.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
19068
+ var child = _step.value;
19069
+
19070
+ randomizeName(child);
19071
+ }
19072
+ } catch (err) {
19073
+ _didIteratorError = true;
19074
+ _iteratorError = err;
19075
+ } finally {
19076
+ try {
19077
+ if (!_iteratorNormalCompletion && _iterator.return) {
19078
+ _iterator.return();
19079
+ }
19080
+ } finally {
19081
+ if (_didIteratorError) {
19082
+ throw _iteratorError;
19083
+ }
19084
+ }
19085
+ }
19086
+ }
19087
+
19088
+ return node;
19089
+ }
19090
+
19091
+ /**
19092
+ * Merge node with default properties from cf7sItems.js such as cf7sIcon, cf7sSelectGroup etc.
19093
+ *
19094
+ * This can be used to merge with cf7sItems after selecting template
19095
+ *
19096
+ * @param {Array} node node item with minimal property
19097
+ *
19098
+ * @return {Array} merging nodes with full cf7sItems property
19099
+ *
19100
+ * @since 0.4.0
19101
+ */
19102
+ function mergeDefault(node) {
19103
+ var _loop = function _loop(i) {
19104
+ // plain object is not iterable using 'for ...of' loop
19105
+ var item = _.cf7sItems.filter(function (obj) {
19106
+ // get default item properties
19107
+ return obj.cf7sType === node[i].cf7sType;
19108
+ })[0];
19109
+
19110
+ node[i] = _extends({}, item, node[i]); // merge objects with spread operator
19111
+
19112
+ if (!!node[i].children) {
19113
+ // loop children
19114
+ mergeDefault(node[i].children); // recursive
19115
+ }
19116
+ };
19117
+
19118
+ for (var i in node) {
19119
+ _loop(i);
19120
+ }
19121
+
19122
+ return node;
19123
+ }
19124
+
19125
+ /***/ }),
19126
+ /* 303 */
19127
+ /***/ (function(module, exports, __webpack_require__) {
19128
+
19129
+ __webpack_require__(304);
19130
+ module.exports = __webpack_require__(506);
19131
+
19132
+
19133
+ /***/ }),
19134
+ /* 304 */
19135
+ /***/ (function(module, exports, __webpack_require__) {
19136
+
19137
+ "use strict";
19138
+ /* WEBPACK VAR INJECTION */(function(global) {
19139
+
19140
+ __webpack_require__(305);
19141
+
19142
+ __webpack_require__(502);
19143
+
19144
+ __webpack_require__(503);
19145
+
19146
+ if (global._babelPolyfill) {
19147
+ throw new Error("only one instance of babel-polyfill is allowed");
19148
+ }
19149
+ global._babelPolyfill = true;
19150
+
19151
+ var DEFINE_PROPERTY = "defineProperty";
19152
+ function define(O, key, value) {
19153
+ O[key] || Object[DEFINE_PROPERTY](O, key, {
19154
+ writable: true,
19155
+ configurable: true,
19156
+ value: value
19157
+ });
19158
+ }
19159
+
19160
+ define(String.prototype, "padLeft", "".padStart);
19161
+ define(String.prototype, "padRight", "".padEnd);
19162
+
19163
+ "pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach(function (key) {
19164
+ [][key] && define(Array, key, Function.call.bind([][key]));
19165
+ });
19166
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(34)))
19167
+
19168
+ /***/ }),
19169
+ /* 305 */
19170
+ /***/ (function(module, exports, __webpack_require__) {
19171
+
19172
+ __webpack_require__(306);
19173
+ __webpack_require__(308);
19174
+ __webpack_require__(309);
19175
+ __webpack_require__(310);
19176
+ __webpack_require__(311);
19177
+ __webpack_require__(312);
19178
+ __webpack_require__(313);
19179
+ __webpack_require__(314);
19180
+ __webpack_require__(315);
19181
+ __webpack_require__(316);
19182
+ __webpack_require__(317);
19183
+ __webpack_require__(318);
19184
+ __webpack_require__(319);
19185
+ __webpack_require__(320);
19186
+ __webpack_require__(321);
19187
+ __webpack_require__(322);
19188
+ __webpack_require__(324);
19189
+ __webpack_require__(325);
19190
+ __webpack_require__(326);
19191
+ __webpack_require__(327);
19192
+ __webpack_require__(328);
19193
+ __webpack_require__(329);
19194
+ __webpack_require__(330);
19195
+ __webpack_require__(331);
19196
+ __webpack_require__(332);
19197
+ __webpack_require__(333);
19198
+ __webpack_require__(334);
19199
+ __webpack_require__(335);
19200
+ __webpack_require__(336);
19201
+ __webpack_require__(337);
19202
+ __webpack_require__(338);
19203
+ __webpack_require__(339);
19204
+ __webpack_require__(340);
19205
+ __webpack_require__(341);
19206
+ __webpack_require__(342);
19207
+ __webpack_require__(343);
19208
+ __webpack_require__(344);
19209
+ __webpack_require__(345);
19210
+ __webpack_require__(346);
19211
+ __webpack_require__(347);
19212
+ __webpack_require__(348);
19213
+ __webpack_require__(349);
19214
+ __webpack_require__(350);
19215
+ __webpack_require__(351);
19216
+ __webpack_require__(352);
19217
+ __webpack_require__(353);
19218
+ __webpack_require__(354);
19219
+ __webpack_require__(355);
19220
+ __webpack_require__(356);
19221
+ __webpack_require__(357);
19222
+ __webpack_require__(358);
19223
+ __webpack_require__(359);
19224
+ __webpack_require__(360);
19225
+ __webpack_require__(361);
19226
+ __webpack_require__(362);
19227
+ __webpack_require__(363);
19228
+ __webpack_require__(364);
19229
+ __webpack_require__(365);
19230
+ __webpack_require__(366);
19231
+ __webpack_require__(367);
19232
+ __webpack_require__(368);
19233
+ __webpack_require__(369);
19234
+ __webpack_require__(370);
19235
+ __webpack_require__(371);
19236
+ __webpack_require__(372);
19237
+ __webpack_require__(373);
19238
+ __webpack_require__(374);
19239
+ __webpack_require__(375);
19240
+ __webpack_require__(376);
19241
+ __webpack_require__(377);
19242
+ __webpack_require__(378);
19243
+ __webpack_require__(379);
19244
+ __webpack_require__(380);
19245
+ __webpack_require__(381);
19246
+ __webpack_require__(382);
19247
+ __webpack_require__(383);
19248
+ __webpack_require__(384);
19249
+ __webpack_require__(386);
19250
+ __webpack_require__(387);
19251
+ __webpack_require__(389);
19252
+ __webpack_require__(390);
19253
+ __webpack_require__(391);
19254
+ __webpack_require__(392);
19255
+ __webpack_require__(393);
19256
+ __webpack_require__(394);
19257
+ __webpack_require__(395);
19258
+ __webpack_require__(397);
19259
+ __webpack_require__(398);
19260
+ __webpack_require__(399);
19261
+ __webpack_require__(400);
19262
+ __webpack_require__(401);
19263
+ __webpack_require__(402);
19264
+ __webpack_require__(403);
19265
+ __webpack_require__(404);
19266
+ __webpack_require__(405);
19267
+ __webpack_require__(406);
19268
+ __webpack_require__(407);
19269
+ __webpack_require__(408);
19270
+ __webpack_require__(409);
19271
+ __webpack_require__(150);
19272
+ __webpack_require__(410);
19273
+ __webpack_require__(411);
19274
+ __webpack_require__(213);
19275
+ __webpack_require__(412);
19276
+ __webpack_require__(413);
19277
+ __webpack_require__(414);
19278
+ __webpack_require__(415);
19279
+ __webpack_require__(416);
19280
+ __webpack_require__(216);
19281
+ __webpack_require__(218);
19282
+ __webpack_require__(219);
19283
+ __webpack_require__(417);
19284
+ __webpack_require__(418);
19285
+ __webpack_require__(419);
19286
+ __webpack_require__(420);
19287
+ __webpack_require__(421);
19288
+ __webpack_require__(422);
19289
+ __webpack_require__(423);
19290
+ __webpack_require__(424);
19291
+ __webpack_require__(425);
19292
+ __webpack_require__(426);
19293
+ __webpack_require__(427);
19294
+ __webpack_require__(428);
19295
+ __webpack_require__(429);
19296
+ __webpack_require__(430);
19297
+ __webpack_require__(431);
19298
+ __webpack_require__(432);
19299
+ __webpack_require__(433);
19300
+ __webpack_require__(434);
19301
+ __webpack_require__(435);
19302
+ __webpack_require__(436);
19303
+ __webpack_require__(437);
19304
+ __webpack_require__(438);
19305
+ __webpack_require__(439);
19306
+ __webpack_require__(440);
19307
+ __webpack_require__(441);
19308
+ __webpack_require__(442);
19309
+ __webpack_require__(443);
19310
+ __webpack_require__(444);
19311
+ __webpack_require__(445);
19312
+ __webpack_require__(446);
19313
+ __webpack_require__(447);
19314
+ __webpack_require__(448);
19315
+ __webpack_require__(449);
19316
+ __webpack_require__(450);
19317
+ __webpack_require__(451);
19318
+ __webpack_require__(452);
19319
+ __webpack_require__(453);
19320
+ __webpack_require__(454);
19321
+ __webpack_require__(455);
19322
+ __webpack_require__(456);
19323
+ __webpack_require__(457);
19324
+ __webpack_require__(458);
19325
+ __webpack_require__(459);
19326
+ __webpack_require__(460);
19327
+ __webpack_require__(461);
19328
+ __webpack_require__(462);
19329
+ __webpack_require__(463);
19330
+ __webpack_require__(464);
19331
+ __webpack_require__(465);
19332
+ __webpack_require__(466);
19333
+ __webpack_require__(467);
19334
+ __webpack_require__(468);
19335
+ __webpack_require__(469);
19336
+ __webpack_require__(470);
19337
+ __webpack_require__(471);
19338
+ __webpack_require__(472);
19339
+ __webpack_require__(473);
19340
+ __webpack_require__(474);
19341
+ __webpack_require__(475);
19342
+ __webpack_require__(476);
19343
+ __webpack_require__(477);
19344
+ __webpack_require__(478);
19345
+ __webpack_require__(479);
19346
+ __webpack_require__(480);
19347
+ __webpack_require__(481);
19348
+ __webpack_require__(482);
19349
+ __webpack_require__(483);
19350
+ __webpack_require__(484);
19351
+ __webpack_require__(485);
19352
+ __webpack_require__(486);
19353
+ __webpack_require__(487);
19354
+ __webpack_require__(488);
19355
+ __webpack_require__(489);
19356
+ __webpack_require__(490);
19357
+ __webpack_require__(491);
19358
+ __webpack_require__(492);
19359
+ __webpack_require__(493);
19360
+ __webpack_require__(494);
19361
+ __webpack_require__(495);
19362
+ __webpack_require__(496);
19363
+ __webpack_require__(497);
19364
+ __webpack_require__(498);
19365
+ __webpack_require__(499);
19366
+ __webpack_require__(500);
19367
+ __webpack_require__(501);
19368
+ module.exports = __webpack_require__(38);
19369
+
19370
+
19371
+ /***/ }),
19372
+ /* 306 */
19373
+ /***/ (function(module, exports, __webpack_require__) {
19374
+
19375
+ "use strict";
19376
+
19377
+ // ECMAScript 6 symbols shim
19378
+ var global = __webpack_require__(4);
19379
+ var has = __webpack_require__(24);
19380
+ var DESCRIPTORS = __webpack_require__(14);
19381
+ var $export = __webpack_require__(1);
19382
+ var redefine = __webpack_require__(26);
19383
+ var META = __webpack_require__(48).KEY;
19384
+ var $fails = __webpack_require__(5);
19385
+ var shared = __webpack_require__(97);
19386
+ var setToStringTag = __webpack_require__(72);
19387
+ var uid = __webpack_require__(54);
19388
+ var wks = __webpack_require__(9);
19389
+ var wksExt = __webpack_require__(196);
19390
+ var wksDefine = __webpack_require__(130);
19391
+ var enumKeys = __webpack_require__(307);
19392
+ var isArray = __webpack_require__(100);
19393
+ var anObject = __webpack_require__(3);
19394
+ var isObject = __webpack_require__(6);
19395
+ var toIObject = __webpack_require__(29);
19396
+ var toPrimitive = __webpack_require__(39);
19397
+ var createDesc = __webpack_require__(53);
19398
+ var _create = __webpack_require__(58);
19399
+ var gOPNExt = __webpack_require__(199);
19400
+ var $GOPD = __webpack_require__(30);
19401
+ var $DP = __webpack_require__(15);
19402
+ var $keys = __webpack_require__(56);
19403
+ var gOPD = $GOPD.f;
19404
+ var dP = $DP.f;
19405
+ var gOPN = gOPNExt.f;
19406
+ var $Symbol = global.Symbol;
19407
+ var $JSON = global.JSON;
19408
+ var _stringify = $JSON && $JSON.stringify;
19409
+ var PROTOTYPE = 'prototype';
19410
+ var HIDDEN = wks('_hidden');
19411
+ var TO_PRIMITIVE = wks('toPrimitive');
19412
+ var isEnum = {}.propertyIsEnumerable;
19413
+ var SymbolRegistry = shared('symbol-registry');
19414
+ var AllSymbols = shared('symbols');
19415
+ var OPSymbols = shared('op-symbols');
19416
+ var ObjectProto = Object[PROTOTYPE];
19417
+ var USE_NATIVE = typeof $Symbol == 'function';
19418
+ var QObject = global.QObject;
19419
+ // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
19420
+ var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
19421
+
19422
+ // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
19423
+ var setSymbolDesc = DESCRIPTORS && $fails(function () {
19424
+ return _create(dP({}, 'a', {
19425
+ get: function () { return dP(this, 'a', { value: 7 }).a; }
19426
+ })).a != 7;
19427
+ }) ? function (it, key, D) {
19428
+ var protoDesc = gOPD(ObjectProto, key);
19429
+ if (protoDesc) delete ObjectProto[key];
19430
+ dP(it, key, D);
19431
+ if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
19432
+ } : dP;
19433
+
19434
+ var wrap = function (tag) {
19435
+ var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
19436
+ sym._k = tag;
19437
+ return sym;
19438
+ };
19439
+
19440
+ var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
19441
+ return typeof it == 'symbol';
19442
+ } : function (it) {
19443
+ return it instanceof $Symbol;
19444
+ };
19445
+
19446
+ var $defineProperty = function defineProperty(it, key, D) {
19447
+ if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
19448
+ anObject(it);
19449
+ key = toPrimitive(key, true);
19450
+ anObject(D);
19451
+ if (has(AllSymbols, key)) {
19452
+ if (!D.enumerable) {
19453
+ if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
19454
+ it[HIDDEN][key] = true;
19455
+ } else {
19456
+ if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
19457
+ D = _create(D, { enumerable: createDesc(0, false) });
19458
+ } return setSymbolDesc(it, key, D);
19459
+ } return dP(it, key, D);
19460
+ };
19461
+ var $defineProperties = function defineProperties(it, P) {
19462
+ anObject(it);
19463
+ var keys = enumKeys(P = toIObject(P));
19464
+ var i = 0;
19465
+ var l = keys.length;
19466
+ var key;
19467
+ while (l > i) $defineProperty(it, key = keys[i++], P[key]);
19468
+ return it;
19469
+ };
19470
+ var $create = function create(it, P) {
19471
+ return P === undefined ? _create(it) : $defineProperties(_create(it), P);
19472
+ };
19473
+ var $propertyIsEnumerable = function propertyIsEnumerable(key) {
19474
+ var E = isEnum.call(this, key = toPrimitive(key, true));
19475
+ if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
19476
+ return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
19477
+ };
19478
+ var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
19479
+ it = toIObject(it);
19480
+ key = toPrimitive(key, true);
19481
+ if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
19482
+ var D = gOPD(it, key);
19483
+ if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
19484
+ return D;
19485
+ };
19486
+ var $getOwnPropertyNames = function getOwnPropertyNames(it) {
19487
+ var names = gOPN(toIObject(it));
19488
+ var result = [];
19489
+ var i = 0;
19490
+ var key;
19491
+ while (names.length > i) {
19492
+ if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
19493
+ } return result;
19494
+ };
19495
+ var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
19496
+ var IS_OP = it === ObjectProto;
19497
+ var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
19498
+ var result = [];
19499
+ var i = 0;
19500
+ var key;
19501
+ while (names.length > i) {
19502
+ if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
19503
+ } return result;
19504
+ };
19505
+
19506
+ // 19.4.1.1 Symbol([description])
19507
+ if (!USE_NATIVE) {
19508
+ $Symbol = function Symbol() {
19509
+ if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
19510
+ var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
19511
+ var $set = function (value) {
19512
+ if (this === ObjectProto) $set.call(OPSymbols, value);
19513
+ if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
19514
+ setSymbolDesc(this, tag, createDesc(1, value));
19515
+ };
19516
+ if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
19517
+ return wrap(tag);
19518
+ };
19519
+ redefine($Symbol[PROTOTYPE], 'toString', function toString() {
19520
+ return this._k;
19521
+ });
19522
+
19523
+ $GOPD.f = $getOwnPropertyDescriptor;
19524
+ $DP.f = $defineProperty;
19525
+ __webpack_require__(59).f = gOPNExt.f = $getOwnPropertyNames;
19526
+ __webpack_require__(85).f = $propertyIsEnumerable;
19527
+ __webpack_require__(99).f = $getOwnPropertySymbols;
19528
+
19529
+ if (DESCRIPTORS && !__webpack_require__(55)) {
19530
+ redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
19531
+ }
19532
+
19533
+ wksExt.f = function (name) {
19534
+ return wrap(wks(name));
19535
+ };
19536
+ }
19537
+
19538
+ $export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });
19539
+
19540
+ for (var es6Symbols = (
19541
+ // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
19542
+ 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
19543
+ ).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);
19544
+
19545
+ for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);
19546
+
19547
+ $export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
19548
+ // 19.4.2.1 Symbol.for(key)
19549
+ 'for': function (key) {
19550
+ return has(SymbolRegistry, key += '')
19551
+ ? SymbolRegistry[key]
19552
+ : SymbolRegistry[key] = $Symbol(key);
19553
+ },
19554
+ // 19.4.2.5 Symbol.keyFor(sym)
19555
+ keyFor: function keyFor(sym) {
19556
+ if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
19557
+ for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
19558
+ },
19559
+ useSetter: function () { setter = true; },
19560
+ useSimple: function () { setter = false; }
19561
+ });
19562
+
19563
+ $export($export.S + $export.F * !USE_NATIVE, 'Object', {
19564
+ // 19.1.2.2 Object.create(O [, Properties])
19565
+ create: $create,
19566
+ // 19.1.2.4 Object.defineProperty(O, P, Attributes)
19567
+ defineProperty: $defineProperty,
19568
+ // 19.1.2.3 Object.defineProperties(O, Properties)
19569
+ defineProperties: $defineProperties,
19570
+ // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
19571
+ getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
19572
+ // 19.1.2.7 Object.getOwnPropertyNames(O)
19573
+ getOwnPropertyNames: $getOwnPropertyNames,
19574
+ // 19.1.2.8 Object.getOwnPropertySymbols(O)
19575
+ getOwnPropertySymbols: $getOwnPropertySymbols
19576
+ });
19577
+
19578
+ // 24.3.2 JSON.stringify(value [, replacer [, space]])
19579
+ $JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
19580
+ var S = $Symbol();
19581
+ // MS Edge converts symbol values to JSON as {}
19582
+ // WebKit converts symbol values to JSON as null
19583
+ // V8 throws on boxed symbols
19584
+ return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
19585
+ })), 'JSON', {
19586
+ stringify: function stringify(it) {
19587
+ var args = [it];
19588
+ var i = 1;
19589
+ var replacer, $replacer;
19590
+ while (arguments.length > i) args.push(arguments[i++]);
19591
+ $replacer = replacer = args[1];
19592
+ if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
19593
+ if (!isArray(replacer)) replacer = function (key, value) {
19594
+ if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
19595
+ if (!isSymbol(value)) return value;
19596
+ };
19597
+ args[1] = replacer;
19598
+ return _stringify.apply($JSON, args);
19599
+ }
19600
+ });
19601
+
19602
+ // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
19603
+ $Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(25)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
19604
+ // 19.4.3.5 Symbol.prototype[@@toStringTag]
19605
+ setToStringTag($Symbol, 'Symbol');
19606
+ // 20.2.1.9 Math[@@toStringTag]
19607
+ setToStringTag(Math, 'Math', true);
19608
+ // 24.3.3 JSON[@@toStringTag]
19609
+ setToStringTag(global.JSON, 'JSON', true);
19610
+
19611
+
19612
+ /***/ }),
19613
+ /* 307 */
19614
+ /***/ (function(module, exports, __webpack_require__) {
19615
+
19616
+ // all enumerable object keys, includes symbols
19617
+ var getKeys = __webpack_require__(56);
19618
+ var gOPS = __webpack_require__(99);
19619
+ var pIE = __webpack_require__(85);
19620
+ module.exports = function (it) {
19621
+ var result = getKeys(it);
19622
+ var getSymbols = gOPS.f;
19623
+ if (getSymbols) {
19624
+ var symbols = getSymbols(it);
19625
+ var isEnum = pIE.f;
19626
+ var i = 0;
19627
+ var key;
19628
+ while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
19629
+ } return result;
19630
+ };
19631
+
19632
+
19633
+ /***/ }),
19634
+ /* 308 */
19635
+ /***/ (function(module, exports, __webpack_require__) {
19636
+
19637
+ var $export = __webpack_require__(1);
19638
+ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
19639
+ $export($export.S, 'Object', { create: __webpack_require__(58) });
19640
+
19641
+
19642
+ /***/ }),
19643
+ /* 309 */
19644
+ /***/ (function(module, exports, __webpack_require__) {
19645
+
19646
+ var $export = __webpack_require__(1);
19647
+ // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
19648
+ $export($export.S + $export.F * !__webpack_require__(14), 'Object', { defineProperty: __webpack_require__(15).f });
19649
+
19650
+
19651
+ /***/ }),
19652
+ /* 310 */
19653
+ /***/ (function(module, exports, __webpack_require__) {
19654
+
19655
+ var $export = __webpack_require__(1);
19656
+ // 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
19657
+ $export($export.S + $export.F * !__webpack_require__(14), 'Object', { defineProperties: __webpack_require__(198) });
19658
+
19659
+
19660
+ /***/ }),
19661
+ /* 311 */
19662
+ /***/ (function(module, exports, __webpack_require__) {
19663
+
19664
+ // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
19665
+ var toIObject = __webpack_require__(29);
19666
+ var $getOwnPropertyDescriptor = __webpack_require__(30).f;
19667
+
19668
+ __webpack_require__(42)('getOwnPropertyDescriptor', function () {
19669
+ return function getOwnPropertyDescriptor(it, key) {
19670
+ return $getOwnPropertyDescriptor(toIObject(it), key);
19671
+ };
19672
+ });
19673
+
19674
+
19675
+ /***/ }),
19676
+ /* 312 */
19677
+ /***/ (function(module, exports, __webpack_require__) {
19678
+
19679
+ // 19.1.2.9 Object.getPrototypeOf(O)
19680
+ var toObject = __webpack_require__(18);
19681
+ var $getPrototypeOf = __webpack_require__(31);
19682
+
19683
+ __webpack_require__(42)('getPrototypeOf', function () {
19684
+ return function getPrototypeOf(it) {
19685
+ return $getPrototypeOf(toObject(it));
19686
+ };
19687
+ });
19688
+
19689
+
19690
+ /***/ }),
19691
+ /* 313 */
19692
+ /***/ (function(module, exports, __webpack_require__) {
19693
+
19694
+ // 19.1.2.14 Object.keys(O)
19695
+ var toObject = __webpack_require__(18);
19696
+ var $keys = __webpack_require__(56);
19697
+
19698
+ __webpack_require__(42)('keys', function () {
19699
+ return function keys(it) {
19700
+ return $keys(toObject(it));
19701
+ };
19702
+ });
19703
+
19704
+
19705
+ /***/ }),
19706
+ /* 314 */
19707
+ /***/ (function(module, exports, __webpack_require__) {
19708
+
19709
+ // 19.1.2.7 Object.getOwnPropertyNames(O)
19710
+ __webpack_require__(42)('getOwnPropertyNames', function () {
19711
+ return __webpack_require__(199).f;
19712
+ });
19713
+
19714
+
19715
+ /***/ }),
19716
+ /* 315 */
19717
+ /***/ (function(module, exports, __webpack_require__) {
19718
+
19719
+ // 19.1.2.5 Object.freeze(O)
19720
+ var isObject = __webpack_require__(6);
19721
+ var meta = __webpack_require__(48).onFreeze;
19722
+
19723
+ __webpack_require__(42)('freeze', function ($freeze) {
19724
+ return function freeze(it) {
19725
+ return $freeze && isObject(it) ? $freeze(meta(it)) : it;
19726
+ };
19727
+ });
19728
+
19729
+
19730
+ /***/ }),
19731
+ /* 316 */
19732
+ /***/ (function(module, exports, __webpack_require__) {
19733
+
19734
+ // 19.1.2.17 Object.seal(O)
19735
+ var isObject = __webpack_require__(6);
19736
+ var meta = __webpack_require__(48).onFreeze;
19737
+
19738
+ __webpack_require__(42)('seal', function ($seal) {
19739
+ return function seal(it) {
19740
+ return $seal && isObject(it) ? $seal(meta(it)) : it;
19741
+ };
19742
+ });
19743
+
19744
+
19745
+ /***/ }),
19746
+ /* 317 */
19747
+ /***/ (function(module, exports, __webpack_require__) {
19748
+
19749
+ // 19.1.2.15 Object.preventExtensions(O)
19750
+ var isObject = __webpack_require__(6);
19751
+ var meta = __webpack_require__(48).onFreeze;
19752
+
19753
+ __webpack_require__(42)('preventExtensions', function ($preventExtensions) {
19754
+ return function preventExtensions(it) {
19755
+ return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;
19756
+ };
19757
+ });
19758
+
19759
+
19760
+ /***/ }),
19761
+ /* 318 */
19762
+ /***/ (function(module, exports, __webpack_require__) {
19763
+
19764
+ // 19.1.2.12 Object.isFrozen(O)
19765
+ var isObject = __webpack_require__(6);
19766
+
19767
+ __webpack_require__(42)('isFrozen', function ($isFrozen) {
19768
+ return function isFrozen(it) {
19769
+ return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;
19770
+ };
19771
+ });
19772
+
19773
+
19774
+ /***/ }),
19775
+ /* 319 */
19776
+ /***/ (function(module, exports, __webpack_require__) {
19777
+
19778
+ // 19.1.2.13 Object.isSealed(O)
19779
+ var isObject = __webpack_require__(6);
19780
+
19781
+ __webpack_require__(42)('isSealed', function ($isSealed) {
19782
+ return function isSealed(it) {
19783
+ return isObject(it) ? $isSealed ? $isSealed(it) : false : true;
19784
+ };
19785
+ });
19786
+
19787
+
19788
+ /***/ }),
19789
+ /* 320 */
19790
+ /***/ (function(module, exports, __webpack_require__) {
19791
+
19792
+ // 19.1.2.11 Object.isExtensible(O)
19793
+ var isObject = __webpack_require__(6);
19794
+
19795
+ __webpack_require__(42)('isExtensible', function ($isExtensible) {
19796
+ return function isExtensible(it) {
19797
+ return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;
19798
+ };
19799
+ });
19800
+
19801
+
19802
+ /***/ }),
19803
+ /* 321 */
19804
+ /***/ (function(module, exports, __webpack_require__) {
19805
+
19806
+ // 19.1.3.1 Object.assign(target, source)
19807
+ var $export = __webpack_require__(1);
19808
+
19809
+ $export($export.S + $export.F, 'Object', { assign: __webpack_require__(200) });
19810
+
19811
+
19812
+ /***/ }),
19813
+ /* 322 */
19814
+ /***/ (function(module, exports, __webpack_require__) {
19815
+
19816
+ // 19.1.3.10 Object.is(value1, value2)
19817
+ var $export = __webpack_require__(1);
19818
+ $export($export.S, 'Object', { is: __webpack_require__(323) });
19819
+
19820
+
19821
+ /***/ }),
19822
+ /* 323 */
19823
+ /***/ (function(module, exports) {
19824
+
19825
+ // 7.2.9 SameValue(x, y)
19826
+ module.exports = Object.is || function is(x, y) {
19827
+ // eslint-disable-next-line no-self-compare
19828
+ return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
19829
+ };
19830
+
19831
+
19832
+ /***/ }),
19833
+ /* 324 */
19834
+ /***/ (function(module, exports, __webpack_require__) {
19835
+
19836
+ // 19.1.3.19 Object.setPrototypeOf(O, proto)
19837
+ var $export = __webpack_require__(1);
19838
+ $export($export.S, 'Object', { setPrototypeOf: __webpack_require__(134).set });
19839
+
19840
+
19841
+ /***/ }),
19842
+ /* 325 */
19843
+ /***/ (function(module, exports, __webpack_require__) {
19844
+
19845
+ "use strict";
19846
+
19847
+ // 19.1.3.6 Object.prototype.toString()
19848
+ var classof = __webpack_require__(86);
19849
+ var test = {};
19850
+ test[__webpack_require__(9)('toStringTag')] = 'z';
19851
+ if (test + '' != '[object z]') {
19852
+ __webpack_require__(26)(Object.prototype, 'toString', function toString() {
19853
+ return '[object ' + classof(this) + ']';
19854
+ }, true);
19855
+ }
19856
+
19857
+
19858
+ /***/ }),
19859
+ /* 326 */
19860
+ /***/ (function(module, exports, __webpack_require__) {
19861
+
19862
+ // 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)
19863
+ var $export = __webpack_require__(1);
19864
+
19865
+ $export($export.P, 'Function', { bind: __webpack_require__(201) });
19866
+
19867
+
19868
+ /***/ }),
19869
+ /* 327 */
19870
+ /***/ (function(module, exports, __webpack_require__) {
19871
+
19872
+ var dP = __webpack_require__(15).f;
19873
+ var FProto = Function.prototype;
19874
+ var nameRE = /^\s*function ([^ (]*)/;
19875
+ var NAME = 'name';
19876
+
19877
+ // 19.2.4.2 name
19878
+ NAME in FProto || __webpack_require__(14) && dP(FProto, NAME, {
19879
+ configurable: true,
19880
+ get: function () {
19881
+ try {
19882
+ return ('' + this).match(nameRE)[1];
19883
+ } catch (e) {
19884
+ return '';
19885
+ }
19886
+ }
19887
+ });
19888
+
19889
+
19890
+ /***/ }),
19891
+ /* 328 */
19892
+ /***/ (function(module, exports, __webpack_require__) {
19893
+
19894
+ "use strict";
19895
+
19896
+ var isObject = __webpack_require__(6);
19897
+ var getPrototypeOf = __webpack_require__(31);
19898
+ var HAS_INSTANCE = __webpack_require__(9)('hasInstance');
19899
+ var FunctionProto = Function.prototype;
19900
+ // 19.2.3.6 Function.prototype[@@hasInstance](V)
19901
+ if (!(HAS_INSTANCE in FunctionProto)) __webpack_require__(15).f(FunctionProto, HAS_INSTANCE, { value: function (O) {
19902
+ if (typeof this != 'function' || !isObject(O)) return false;
19903
+ if (!isObject(this.prototype)) return O instanceof this;
19904
+ // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
19905
+ while (O = getPrototypeOf(O)) if (this.prototype === O) return true;
19906
+ return false;
19907
+ } });
19908
+
19909
+
19910
+ /***/ }),
19911
+ /* 329 */
19912
+ /***/ (function(module, exports, __webpack_require__) {
19913
+
19914
+ var $export = __webpack_require__(1);
19915
+ var $parseInt = __webpack_require__(203);
19916
+ // 18.2.5 parseInt(string, radix)
19917
+ $export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });
19918
+
19919
+
19920
+ /***/ }),
19921
+ /* 330 */
19922
+ /***/ (function(module, exports, __webpack_require__) {
19923
+
19924
+ var $export = __webpack_require__(1);
19925
+ var $parseFloat = __webpack_require__(204);
19926
+ // 18.2.4 parseFloat(string)
19927
+ $export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });
19928
+
19929
+
19930
+ /***/ }),
19931
+ /* 331 */
19932
+ /***/ (function(module, exports, __webpack_require__) {
19933
+
19934
+ "use strict";
19935
+
19936
+ var global = __webpack_require__(4);
19937
+ var has = __webpack_require__(24);
19938
+ var cof = __webpack_require__(36);
19939
+ var inheritIfRequired = __webpack_require__(136);
19940
+ var toPrimitive = __webpack_require__(39);
19941
+ var fails = __webpack_require__(5);
19942
+ var gOPN = __webpack_require__(59).f;
19943
+ var gOPD = __webpack_require__(30).f;
19944
+ var dP = __webpack_require__(15).f;
19945
+ var $trim = __webpack_require__(73).trim;
19946
+ var NUMBER = 'Number';
19947
+ var $Number = global[NUMBER];
19948
+ var Base = $Number;
19949
+ var proto = $Number.prototype;
19950
+ // Opera ~12 has broken Object#toString
19951
+ var BROKEN_COF = cof(__webpack_require__(58)(proto)) == NUMBER;
19952
+ var TRIM = 'trim' in String.prototype;
19953
+
19954
+ // 7.1.3 ToNumber(argument)
19955
+ var toNumber = function (argument) {
19956
+ var it = toPrimitive(argument, false);
19957
+ if (typeof it == 'string' && it.length > 2) {
19958
+ it = TRIM ? it.trim() : $trim(it, 3);
19959
+ var first = it.charCodeAt(0);
19960
+ var third, radix, maxCode;
19961
+ if (first === 43 || first === 45) {
19962
+ third = it.charCodeAt(2);
19963
+ if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
19964
+ } else if (first === 48) {
19965
+ switch (it.charCodeAt(1)) {
19966
+ case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i
19967
+ case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i
19968
+ default: return +it;
19969
+ }
19970
+ for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {
19971
+ code = digits.charCodeAt(i);
19972
+ // parseInt parses a string to a first unavailable symbol
19973
+ // but ToNumber should return NaN if a string contains unavailable symbols
19974
+ if (code < 48 || code > maxCode) return NaN;
19975
+ } return parseInt(digits, radix);
19976
+ }
19977
+ } return +it;
19978
+ };
19979
+
19980
+ if (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {
19981
+ $Number = function Number(value) {
19982
+ var it = arguments.length < 1 ? 0 : value;
19983
+ var that = this;
19984
+ return that instanceof $Number
19985
+ // check on 1..constructor(foo) case
19986
+ && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)
19987
+ ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);
19988
+ };
19989
+ for (var keys = __webpack_require__(14) ? gOPN(Base) : (
19990
+ // ES3:
19991
+ 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
19992
+ // ES6 (in case, if modules with ES6 Number statics required before):
19993
+ 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
19994
+ 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
19995
+ ).split(','), j = 0, key; keys.length > j; j++) {
19996
+ if (has(Base, key = keys[j]) && !has($Number, key)) {
19997
+ dP($Number, key, gOPD(Base, key));
19998
+ }
19999
+ }
20000
+ $Number.prototype = proto;
20001
+ proto.constructor = $Number;
20002
+ __webpack_require__(26)(global, NUMBER, $Number);
20003
+ }
20004
+
20005
+
20006
+ /***/ }),
20007
+ /* 332 */
20008
+ /***/ (function(module, exports, __webpack_require__) {
20009
+
20010
+ "use strict";
20011
+
20012
+ var $export = __webpack_require__(1);
20013
+ var toInteger = __webpack_require__(41);
20014
+ var aNumberValue = __webpack_require__(205);
20015
+ var repeat = __webpack_require__(137);
20016
+ var $toFixed = 1.0.toFixed;
20017
+ var floor = Math.floor;
20018
+ var data = [0, 0, 0, 0, 0, 0];
20019
+ var ERROR = 'Number.toFixed: incorrect invocation!';
20020
+ var ZERO = '0';
20021
+
20022
+ var multiply = function (n, c) {
20023
+ var i = -1;
20024
+ var c2 = c;
20025
+ while (++i < 6) {
20026
+ c2 += n * data[i];
20027
+ data[i] = c2 % 1e7;
20028
+ c2 = floor(c2 / 1e7);
20029
+ }
20030
+ };
20031
+ var divide = function (n) {
20032
+ var i = 6;
20033
+ var c = 0;
20034
+ while (--i >= 0) {
20035
+ c += data[i];
20036
+ data[i] = floor(c / n);
20037
+ c = (c % n) * 1e7;
20038
+ }
20039
+ };
20040
+ var numToString = function () {
20041
+ var i = 6;
20042
+ var s = '';
20043
+ while (--i >= 0) {
20044
+ if (s !== '' || i === 0 || data[i] !== 0) {
20045
+ var t = String(data[i]);
20046
+ s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;
20047
+ }
20048
+ } return s;
20049
+ };
20050
+ var pow = function (x, n, acc) {
20051
+ return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
20052
+ };
20053
+ var log = function (x) {
20054
+ var n = 0;
20055
+ var x2 = x;
20056
+ while (x2 >= 4096) {
20057
+ n += 12;
20058
+ x2 /= 4096;
20059
+ }
20060
+ while (x2 >= 2) {
20061
+ n += 1;
20062
+ x2 /= 2;
20063
+ } return n;
20064
+ };
20065
+
20066
+ $export($export.P + $export.F * (!!$toFixed && (
20067
+ 0.00008.toFixed(3) !== '0.000' ||
20068
+ 0.9.toFixed(0) !== '1' ||
20069
+ 1.255.toFixed(2) !== '1.25' ||
20070
+ 1000000000000000128.0.toFixed(0) !== '1000000000000000128'
20071
+ ) || !__webpack_require__(5)(function () {
20072
+ // V8 ~ Android 4.3-
20073
+ $toFixed.call({});
20074
+ })), 'Number', {
20075
+ toFixed: function toFixed(fractionDigits) {
20076
+ var x = aNumberValue(this, ERROR);
20077
+ var f = toInteger(fractionDigits);
20078
+ var s = '';
20079
+ var m = ZERO;
20080
+ var e, z, j, k;
20081
+ if (f < 0 || f > 20) throw RangeError(ERROR);
20082
+ // eslint-disable-next-line no-self-compare
20083
+ if (x != x) return 'NaN';
20084
+ if (x <= -1e21 || x >= 1e21) return String(x);
20085
+ if (x < 0) {
20086
+ s = '-';
20087
+ x = -x;
20088
+ }
20089
+ if (x > 1e-21) {
20090
+ e = log(x * pow(2, 69, 1)) - 69;
20091
+ z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);
20092
+ z *= 0x10000000000000;
20093
+ e = 52 - e;
20094
+ if (e > 0) {
20095
+ multiply(0, z);
20096
+ j = f;
20097
+ while (j >= 7) {
20098
+ multiply(1e7, 0);
20099
+ j -= 7;
20100
+ }
20101
+ multiply(pow(10, j, 1), 0);
20102
+ j = e - 1;
20103
+ while (j >= 23) {
20104
+ divide(1 << 23);
20105
+ j -= 23;
20106
+ }
20107
+ divide(1 << j);
20108
+ multiply(1, 1);
20109
+ divide(2);
20110
+ m = numToString();
20111
+ } else {
20112
+ multiply(0, z);
20113
+ multiply(1 << -e, 0);
20114
+ m = numToString() + repeat.call(ZERO, f);
20115
+ }
20116
+ }
20117
+ if (f > 0) {
20118
+ k = m.length;
20119
+ m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));
20120
+ } else {
20121
+ m = s + m;
20122
+ } return m;
20123
+ }
20124
+ });
20125
+
20126
+
20127
+ /***/ }),
20128
+ /* 333 */
20129
+ /***/ (function(module, exports, __webpack_require__) {
20130
+
20131
+ "use strict";
20132
+
20133
+ var $export = __webpack_require__(1);
20134
+ var $fails = __webpack_require__(5);
20135
+ var aNumberValue = __webpack_require__(205);
20136
+ var $toPrecision = 1.0.toPrecision;
20137
+
20138
+ $export($export.P + $export.F * ($fails(function () {
20139
+ // IE7-
20140
+ return $toPrecision.call(1, undefined) !== '1';
20141
+ }) || !$fails(function () {
20142
+ // V8 ~ Android 4.3-
20143
+ $toPrecision.call({});
20144
+ })), 'Number', {
20145
+ toPrecision: function toPrecision(precision) {
20146
+ var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');
20147
+ return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);
20148
+ }
20149
+ });
20150
+
20151
+
20152
+ /***/ }),
20153
+ /* 334 */
20154
+ /***/ (function(module, exports, __webpack_require__) {
20155
+
20156
+ // 20.1.2.1 Number.EPSILON
20157
+ var $export = __webpack_require__(1);
20158
+
20159
+ $export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });
20160
+
20161
+
20162
+ /***/ }),
20163
+ /* 335 */
20164
+ /***/ (function(module, exports, __webpack_require__) {
20165
+
20166
+ // 20.1.2.2 Number.isFinite(number)
20167
+ var $export = __webpack_require__(1);
20168
+ var _isFinite = __webpack_require__(4).isFinite;
20169
+
20170
+ $export($export.S, 'Number', {
20171
+ isFinite: function isFinite(it) {
20172
+ return typeof it == 'number' && _isFinite(it);
20173
+ }
20174
+ });
20175
+
20176
+
20177
+ /***/ }),
20178
+ /* 336 */
20179
+ /***/ (function(module, exports, __webpack_require__) {
20180
+
20181
+ // 20.1.2.3 Number.isInteger(number)
20182
+ var $export = __webpack_require__(1);
20183
+
20184
+ $export($export.S, 'Number', { isInteger: __webpack_require__(206) });
20185
+
20186
+
20187
+ /***/ }),
20188
+ /* 337 */
20189
+ /***/ (function(module, exports, __webpack_require__) {
20190
+
20191
+ // 20.1.2.4 Number.isNaN(number)
20192
+ var $export = __webpack_require__(1);
20193
+
20194
+ $export($export.S, 'Number', {
20195
+ isNaN: function isNaN(number) {
20196
+ // eslint-disable-next-line no-self-compare
20197
+ return number != number;
20198
+ }
20199
+ });
20200
+
20201
+
20202
+ /***/ }),
20203
+ /* 338 */
20204
+ /***/ (function(module, exports, __webpack_require__) {
20205
+
20206
+ // 20.1.2.5 Number.isSafeInteger(number)
20207
+ var $export = __webpack_require__(1);
20208
+ var isInteger = __webpack_require__(206);
20209
+ var abs = Math.abs;
20210
+
20211
+ $export($export.S, 'Number', {
20212
+ isSafeInteger: function isSafeInteger(number) {
20213
+ return isInteger(number) && abs(number) <= 0x1fffffffffffff;
20214
+ }
20215
+ });
20216
+
20217
+
20218
+ /***/ }),
20219
+ /* 339 */
20220
+ /***/ (function(module, exports, __webpack_require__) {
20221
+
20222
+ // 20.1.2.6 Number.MAX_SAFE_INTEGER
20223
+ var $export = __webpack_require__(1);
20224
+
20225
+ $export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });
20226
+
20227
+
20228
+ /***/ }),
20229
+ /* 340 */
20230
+ /***/ (function(module, exports, __webpack_require__) {
20231
+
20232
+ // 20.1.2.10 Number.MIN_SAFE_INTEGER
20233
+ var $export = __webpack_require__(1);
20234
+
20235
+ $export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });
20236
+
20237
+
20238
+ /***/ }),
20239
+ /* 341 */
20240
+ /***/ (function(module, exports, __webpack_require__) {
20241
+
20242
+ var $export = __webpack_require__(1);
20243
+ var $parseFloat = __webpack_require__(204);
20244
+ // 20.1.2.12 Number.parseFloat(string)
20245
+ $export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });
20246
+
20247
+
20248
+ /***/ }),
20249
+ /* 342 */
20250
+ /***/ (function(module, exports, __webpack_require__) {
20251
+
20252
+ var $export = __webpack_require__(1);
20253
+ var $parseInt = __webpack_require__(203);
20254
+ // 20.1.2.13 Number.parseInt(string, radix)
20255
+ $export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });
20256
+
20257
+
20258
+ /***/ }),
20259
+ /* 343 */
20260
+ /***/ (function(module, exports, __webpack_require__) {
20261
+
20262
+ // 20.2.2.3 Math.acosh(x)
20263
+ var $export = __webpack_require__(1);
20264
+ var log1p = __webpack_require__(207);
20265
+ var sqrt = Math.sqrt;
20266
+ var $acosh = Math.acosh;
20267
+
20268
+ $export($export.S + $export.F * !($acosh
20269
+ // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509
20270
+ && Math.floor($acosh(Number.MAX_VALUE)) == 710
20271
+ // Tor Browser bug: Math.acosh(Infinity) -> NaN
20272
+ && $acosh(Infinity) == Infinity
20273
+ ), 'Math', {
20274
+ acosh: function acosh(x) {
20275
+ return (x = +x) < 1 ? NaN : x > 94906265.62425156
20276
+ ? Math.log(x) + Math.LN2
20277
+ : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));
20278
+ }
20279
+ });
20280
+
20281
+
20282
+ /***/ }),
20283
+ /* 344 */
20284
+ /***/ (function(module, exports, __webpack_require__) {
20285
+
20286
+ // 20.2.2.5 Math.asinh(x)
20287
+ var $export = __webpack_require__(1);
20288
+ var $asinh = Math.asinh;
20289
+
20290
+ function asinh(x) {
20291
+ return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));
20292
+ }
20293
+
20294
+ // Tor Browser bug: Math.asinh(0) -> -0
20295
+ $export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });
20296
+
20297
+
20298
+ /***/ }),
20299
+ /* 345 */
20300
+ /***/ (function(module, exports, __webpack_require__) {
20301
+
20302
+ // 20.2.2.7 Math.atanh(x)
20303
+ var $export = __webpack_require__(1);
20304
+ var $atanh = Math.atanh;
20305
+
20306
+ // Tor Browser bug: Math.atanh(-0) -> 0
20307
+ $export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {
20308
+ atanh: function atanh(x) {
20309
+ return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;
20310
+ }
20311
+ });
20312
+
20313
+
20314
+ /***/ }),
20315
+ /* 346 */
20316
+ /***/ (function(module, exports, __webpack_require__) {
20317
+
20318
+ // 20.2.2.9 Math.cbrt(x)
20319
+ var $export = __webpack_require__(1);
20320
+ var sign = __webpack_require__(138);
20321
+
20322
+ $export($export.S, 'Math', {
20323
+ cbrt: function cbrt(x) {
20324
+ return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);
20325
+ }
20326
+ });
20327
+
20328
+
20329
+ /***/ }),
20330
+ /* 347 */
20331
+ /***/ (function(module, exports, __webpack_require__) {
20332
+
20333
+ // 20.2.2.11 Math.clz32(x)
20334
+ var $export = __webpack_require__(1);
20335
+
20336
+ $export($export.S, 'Math', {
20337
+ clz32: function clz32(x) {
20338
+ return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;
20339
+ }
20340
+ });
20341
+
20342
+
20343
+ /***/ }),
20344
+ /* 348 */
20345
+ /***/ (function(module, exports, __webpack_require__) {
20346
+
20347
+ // 20.2.2.12 Math.cosh(x)
20348
+ var $export = __webpack_require__(1);
20349
+ var exp = Math.exp;
20350
+
20351
+ $export($export.S, 'Math', {
20352
+ cosh: function cosh(x) {
20353
+ return (exp(x = +x) + exp(-x)) / 2;
20354
+ }
20355
+ });
20356
+
20357
+
20358
+ /***/ }),
20359
+ /* 349 */
20360
+ /***/ (function(module, exports, __webpack_require__) {
20361
+
20362
+ // 20.2.2.14 Math.expm1(x)
20363
+ var $export = __webpack_require__(1);
20364
+ var $expm1 = __webpack_require__(139);
20365
+
20366
+ $export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });
20367
+
20368
+
20369
+ /***/ }),
20370
+ /* 350 */
20371
+ /***/ (function(module, exports, __webpack_require__) {
20372
+
20373
+ // 20.2.2.16 Math.fround(x)
20374
+ var $export = __webpack_require__(1);
20375
+
20376
+ $export($export.S, 'Math', { fround: __webpack_require__(208) });
20377
+
20378
+
20379
+ /***/ }),
20380
+ /* 351 */
20381
+ /***/ (function(module, exports, __webpack_require__) {
20382
+
20383
+ // 20.2.2.17 Math.hypot([value1[, value2[, … ]]])
20384
+ var $export = __webpack_require__(1);
20385
+ var abs = Math.abs;
20386
+
20387
+ $export($export.S, 'Math', {
20388
+ hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars
20389
+ var sum = 0;
20390
+ var i = 0;
20391
+ var aLen = arguments.length;
20392
+ var larg = 0;
20393
+ var arg, div;
20394
+ while (i < aLen) {
20395
+ arg = abs(arguments[i++]);
20396
+ if (larg < arg) {
20397
+ div = larg / arg;
20398
+ sum = sum * div * div + 1;
20399
+ larg = arg;
20400
+ } else if (arg > 0) {
20401
+ div = arg / larg;
20402
+ sum += div * div;
20403
+ } else sum += arg;
20404
+ }
20405
+ return larg === Infinity ? Infinity : larg * Math.sqrt(sum);
20406
+ }
20407
+ });
20408
+
20409
+
20410
+ /***/ }),
20411
+ /* 352 */
20412
+ /***/ (function(module, exports, __webpack_require__) {
20413
+
20414
+ // 20.2.2.18 Math.imul(x, y)
20415
+ var $export = __webpack_require__(1);
20416
+ var $imul = Math.imul;
20417
+
20418
+ // some WebKit versions fails with big numbers, some has wrong arity
20419
+ $export($export.S + $export.F * __webpack_require__(5)(function () {
20420
+ return $imul(0xffffffff, 5) != -5 || $imul.length != 2;
20421
+ }), 'Math', {
20422
+ imul: function imul(x, y) {
20423
+ var UINT16 = 0xffff;
20424
+ var xn = +x;
20425
+ var yn = +y;
20426
+ var xl = UINT16 & xn;
20427
+ var yl = UINT16 & yn;
20428
+ return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
20429
+ }
20430
+ });
20431
+
20432
+
20433
+ /***/ }),
20434
+ /* 353 */
20435
+ /***/ (function(module, exports, __webpack_require__) {
20436
+
20437
+ // 20.2.2.21 Math.log10(x)
20438
+ var $export = __webpack_require__(1);
20439
+
20440
+ $export($export.S, 'Math', {
20441
+ log10: function log10(x) {
20442
+ return Math.log(x) * Math.LOG10E;
20443
+ }
20444
+ });
20445
+
20446
+
20447
+ /***/ }),
20448
+ /* 354 */
20449
+ /***/ (function(module, exports, __webpack_require__) {
20450
+
20451
+ // 20.2.2.20 Math.log1p(x)
20452
+ var $export = __webpack_require__(1);
20453
+
20454
+ $export($export.S, 'Math', { log1p: __webpack_require__(207) });
20455
+
20456
+
20457
+ /***/ }),
20458
+ /* 355 */
20459
+ /***/ (function(module, exports, __webpack_require__) {
20460
+
20461
+ // 20.2.2.22 Math.log2(x)
20462
+ var $export = __webpack_require__(1);
20463
+
20464
+ $export($export.S, 'Math', {
20465
+ log2: function log2(x) {
20466
+ return Math.log(x) / Math.LN2;
20467
+ }
20468
+ });
20469
+
20470
+
20471
+ /***/ }),
20472
+ /* 356 */
20473
+ /***/ (function(module, exports, __webpack_require__) {
20474
+
20475
+ // 20.2.2.28 Math.sign(x)
20476
+ var $export = __webpack_require__(1);
20477
+
20478
+ $export($export.S, 'Math', { sign: __webpack_require__(138) });
20479
+
20480
+
20481
+ /***/ }),
20482
+ /* 357 */
20483
+ /***/ (function(module, exports, __webpack_require__) {
20484
+
20485
+ // 20.2.2.30 Math.sinh(x)
20486
+ var $export = __webpack_require__(1);
20487
+ var expm1 = __webpack_require__(139);
20488
+ var exp = Math.exp;
20489
+
20490
+ // V8 near Chromium 38 has a problem with very small numbers
20491
+ $export($export.S + $export.F * __webpack_require__(5)(function () {
20492
+ return !Math.sinh(-2e-17) != -2e-17;
20493
+ }), 'Math', {
20494
+ sinh: function sinh(x) {
20495
+ return Math.abs(x = +x) < 1
20496
+ ? (expm1(x) - expm1(-x)) / 2
20497
+ : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);
20498
+ }
20499
+ });
20500
+
20501
+
20502
+ /***/ }),
20503
+ /* 358 */
20504
+ /***/ (function(module, exports, __webpack_require__) {
20505
+
20506
+ // 20.2.2.33 Math.tanh(x)
20507
+ var $export = __webpack_require__(1);
20508
+ var expm1 = __webpack_require__(139);
20509
+ var exp = Math.exp;
20510
+
20511
+ $export($export.S, 'Math', {
20512
+ tanh: function tanh(x) {
20513
+ var a = expm1(x = +x);
20514
+ var b = expm1(-x);
20515
+ return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
20516
+ }
20517
+ });
20518
+
20519
+
20520
+ /***/ }),
20521
+ /* 359 */
20522
+ /***/ (function(module, exports, __webpack_require__) {
20523
+
20524
+ // 20.2.2.34 Math.trunc(x)
20525
+ var $export = __webpack_require__(1);
20526
+
20527
+ $export($export.S, 'Math', {
20528
+ trunc: function trunc(it) {
20529
+ return (it > 0 ? Math.floor : Math.ceil)(it);
20530
+ }
20531
+ });
20532
+
20533
+
20534
+ /***/ }),
20535
+ /* 360 */
20536
+ /***/ (function(module, exports, __webpack_require__) {
20537
+
20538
+ var $export = __webpack_require__(1);
20539
+ var toAbsoluteIndex = __webpack_require__(57);
20540
+ var fromCharCode = String.fromCharCode;
20541
+ var $fromCodePoint = String.fromCodePoint;
20542
+
20543
+ // length should be 1, old FF problem
20544
+ $export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
20545
+ // 21.1.2.2 String.fromCodePoint(...codePoints)
20546
+ fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars
20547
+ var res = [];
20548
+ var aLen = arguments.length;
20549
+ var i = 0;
20550
+ var code;
20551
+ while (aLen > i) {
20552
+ code = +arguments[i++];
20553
+ if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');
20554
+ res.push(code < 0x10000
20555
+ ? fromCharCode(code)
20556
+ : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
20557
+ );
20558
+ } return res.join('');
20559
+ }
20560
+ });
20561
+
20562
+
20563
+ /***/ }),
20564
+ /* 361 */
20565
+ /***/ (function(module, exports, __webpack_require__) {
20566
+
20567
+ var $export = __webpack_require__(1);
20568
+ var toIObject = __webpack_require__(29);
20569
+ var toLength = __webpack_require__(16);
20570
+
20571
+ $export($export.S, 'String', {
20572
+ // 21.1.2.4 String.raw(callSite, ...substitutions)
20573
+ raw: function raw(callSite) {
20574
+ var tpl = toIObject(callSite.raw);
20575
+ var len = toLength(tpl.length);
20576
+ var aLen = arguments.length;
20577
+ var res = [];
20578
+ var i = 0;
20579
+ while (len > i) {
20580
+ res.push(String(tpl[i++]));
20581
+ if (i < aLen) res.push(String(arguments[i]));
20582
+ } return res.join('');
20583
+ }
20584
+ });
20585
+
20586
+
20587
+ /***/ }),
20588
+ /* 362 */
20589
+ /***/ (function(module, exports, __webpack_require__) {
20590
+
20591
+ "use strict";
20592
+
20593
+ // 21.1.3.25 String.prototype.trim()
20594
+ __webpack_require__(73)('trim', function ($trim) {
20595
+ return function trim() {
20596
+ return $trim(this, 3);
20597
+ };
20598
+ });
20599
+
20600
+
20601
+ /***/ }),
20602
+ /* 363 */
20603
+ /***/ (function(module, exports, __webpack_require__) {
20604
+
20605
+ "use strict";
20606
+
20607
+ var $at = __webpack_require__(140)(true);
20608
+
20609
+ // 21.1.3.27 String.prototype[@@iterator]()
20610
+ __webpack_require__(141)(String, 'String', function (iterated) {
20611
+ this._t = String(iterated); // target
20612
+ this._i = 0; // next index
20613
+ // 21.1.5.2.1 %StringIteratorPrototype%.next()
20614
+ }, function () {
20615
+ var O = this._t;
20616
+ var index = this._i;
20617
+ var point;
20618
+ if (index >= O.length) return { value: undefined, done: true };
20619
+ point = $at(O, index);
20620
+ this._i += point.length;
20621
+ return { value: point, done: false };
20622
+ });
20623
+
20624
+
20625
+ /***/ }),
20626
+ /* 364 */
20627
+ /***/ (function(module, exports, __webpack_require__) {
20628
+
20629
+ "use strict";
20630
+
20631
+ var $export = __webpack_require__(1);
20632
+ var $at = __webpack_require__(140)(false);
20633
+ $export($export.P, 'String', {
20634
+ // 21.1.3.3 String.prototype.codePointAt(pos)
20635
+ codePointAt: function codePointAt(pos) {
20636
+ return $at(this, pos);
20637
+ }
20638
+ });
20639
+
20640
+
20641
+ /***/ }),
20642
+ /* 365 */
20643
+ /***/ (function(module, exports, __webpack_require__) {
20644
+
20645
+ "use strict";
20646
+ // 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])
20647
+
20648
+ var $export = __webpack_require__(1);
20649
+ var toLength = __webpack_require__(16);
20650
+ var context = __webpack_require__(143);
20651
+ var ENDS_WITH = 'endsWith';
20652
+ var $endsWith = ''[ENDS_WITH];
20653
+
20654
+ $export($export.P + $export.F * __webpack_require__(144)(ENDS_WITH), 'String', {
20655
+ endsWith: function endsWith(searchString /* , endPosition = @length */) {
20656
+ var that = context(this, searchString, ENDS_WITH);
20657
+ var endPosition = arguments.length > 1 ? arguments[1] : undefined;
20658
+ var len = toLength(that.length);
20659
+ var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);
20660
+ var search = String(searchString);
20661
+ return $endsWith
20662
+ ? $endsWith.call(that, search, end)
20663
+ : that.slice(end - search.length, end) === search;
20664
+ }
20665
+ });
20666
+
20667
+
20668
+ /***/ }),
20669
+ /* 366 */
20670
+ /***/ (function(module, exports, __webpack_require__) {
20671
+
20672
+ "use strict";
20673
+ // 21.1.3.7 String.prototype.includes(searchString, position = 0)
20674
+
20675
+ var $export = __webpack_require__(1);
20676
+ var context = __webpack_require__(143);
20677
+ var INCLUDES = 'includes';
20678
+
20679
+ $export($export.P + $export.F * __webpack_require__(144)(INCLUDES), 'String', {
20680
+ includes: function includes(searchString /* , position = 0 */) {
20681
+ return !!~context(this, searchString, INCLUDES)
20682
+ .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
20683
+ }
20684
+ });
20685
+
20686
+
20687
+ /***/ }),
20688
+ /* 367 */
20689
+ /***/ (function(module, exports, __webpack_require__) {
20690
+
20691
+ var $export = __webpack_require__(1);
20692
+
20693
+ $export($export.P, 'String', {
20694
+ // 21.1.3.13 String.prototype.repeat(count)
20695
+ repeat: __webpack_require__(137)
20696
+ });
20697
+
20698
+
20699
+ /***/ }),
20700
+ /* 368 */
20701
+ /***/ (function(module, exports, __webpack_require__) {
20702
+
20703
+ "use strict";
20704
+ // 21.1.3.18 String.prototype.startsWith(searchString [, position ])
20705
+
20706
+ var $export = __webpack_require__(1);
20707
+ var toLength = __webpack_require__(16);
20708
+ var context = __webpack_require__(143);
20709
+ var STARTS_WITH = 'startsWith';
20710
+ var $startsWith = ''[STARTS_WITH];
20711
+
20712
+ $export($export.P + $export.F * __webpack_require__(144)(STARTS_WITH), 'String', {
20713
+ startsWith: function startsWith(searchString /* , position = 0 */) {
20714
+ var that = context(this, searchString, STARTS_WITH);
20715
+ var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));
20716
+ var search = String(searchString);
20717
+ return $startsWith
20718
+ ? $startsWith.call(that, search, index)
20719
+ : that.slice(index, index + search.length) === search;
20720
+ }
20721
+ });
20722
+
20723
+
20724
+ /***/ }),
20725
+ /* 369 */
20726
+ /***/ (function(module, exports, __webpack_require__) {
20727
+
20728
+ "use strict";
20729
+
20730
+ // B.2.3.2 String.prototype.anchor(name)
20731
+ __webpack_require__(27)('anchor', function (createHTML) {
20732
+ return function anchor(name) {
20733
+ return createHTML(this, 'a', 'name', name);
20734
+ };
20735
+ });
20736
+
20737
+
20738
+ /***/ }),
20739
+ /* 370 */
20740
+ /***/ (function(module, exports, __webpack_require__) {
20741
+
20742
+ "use strict";
20743
+
20744
+ // B.2.3.3 String.prototype.big()
20745
+ __webpack_require__(27)('big', function (createHTML) {
20746
+ return function big() {
20747
+ return createHTML(this, 'big', '', '');
20748
+ };
20749
+ });
20750
+
20751
+
20752
+ /***/ }),
20753
+ /* 371 */
20754
+ /***/ (function(module, exports, __webpack_require__) {
20755
+
20756
+ "use strict";
20757
+
20758
+ // B.2.3.4 String.prototype.blink()
20759
+ __webpack_require__(27)('blink', function (createHTML) {
20760
+ return function blink() {
20761
+ return createHTML(this, 'blink', '', '');
20762
+ };
20763
+ });
20764
+
20765
+
20766
+ /***/ }),
20767
+ /* 372 */
20768
+ /***/ (function(module, exports, __webpack_require__) {
20769
+
20770
+ "use strict";
20771
+
20772
+ // B.2.3.5 String.prototype.bold()
20773
+ __webpack_require__(27)('bold', function (createHTML) {
20774
+ return function bold() {
20775
+ return createHTML(this, 'b', '', '');
20776
+ };
20777
+ });
20778
+
20779
+
20780
+ /***/ }),
20781
+ /* 373 */
20782
+ /***/ (function(module, exports, __webpack_require__) {
20783
+
20784
+ "use strict";
20785
+
20786
+ // B.2.3.6 String.prototype.fixed()
20787
+ __webpack_require__(27)('fixed', function (createHTML) {
20788
+ return function fixed() {
20789
+ return createHTML(this, 'tt', '', '');
20790
+ };
20791
+ });
20792
+
20793
+
20794
+ /***/ }),
20795
+ /* 374 */
20796
+ /***/ (function(module, exports, __webpack_require__) {
20797
+
20798
+ "use strict";
20799
+
20800
+ // B.2.3.7 String.prototype.fontcolor(color)
20801
+ __webpack_require__(27)('fontcolor', function (createHTML) {
20802
+ return function fontcolor(color) {
20803
+ return createHTML(this, 'font', 'color', color);
20804
+ };
20805
+ });
20806
+
20807
+
20808
+ /***/ }),
20809
+ /* 375 */
20810
+ /***/ (function(module, exports, __webpack_require__) {
20811
+
20812
+ "use strict";
20813
+
20814
+ // B.2.3.8 String.prototype.fontsize(size)
20815
+ __webpack_require__(27)('fontsize', function (createHTML) {
20816
+ return function fontsize(size) {
20817
+ return createHTML(this, 'font', 'size', size);
20818
+ };
20819
+ });
20820
+
20821
+
20822
+ /***/ }),
20823
+ /* 376 */
20824
+ /***/ (function(module, exports, __webpack_require__) {
20825
+
20826
+ "use strict";
20827
+
20828
+ // B.2.3.9 String.prototype.italics()
20829
+ __webpack_require__(27)('italics', function (createHTML) {
20830
+ return function italics() {
20831
+ return createHTML(this, 'i', '', '');
20832
+ };
20833
+ });
20834
+
20835
+
20836
+ /***/ }),
20837
+ /* 377 */
20838
+ /***/ (function(module, exports, __webpack_require__) {
20839
+
20840
+ "use strict";
20841
+
20842
+ // B.2.3.10 String.prototype.link(url)
20843
+ __webpack_require__(27)('link', function (createHTML) {
20844
+ return function link(url) {
20845
+ return createHTML(this, 'a', 'href', url);
20846
+ };
20847
+ });
20848
+
20849
+
20850
+ /***/ }),
20851
+ /* 378 */
20852
+ /***/ (function(module, exports, __webpack_require__) {
20853
+
20854
+ "use strict";
20855
+
20856
+ // B.2.3.11 String.prototype.small()
20857
+ __webpack_require__(27)('small', function (createHTML) {
20858
+ return function small() {
20859
+ return createHTML(this, 'small', '', '');
20860
+ };
20861
+ });
20862
+
20863
+
20864
+ /***/ }),
20865
+ /* 379 */
20866
+ /***/ (function(module, exports, __webpack_require__) {
20867
+
20868
+ "use strict";
20869
+
20870
+ // B.2.3.12 String.prototype.strike()
20871
+ __webpack_require__(27)('strike', function (createHTML) {
20872
+ return function strike() {
20873
+ return createHTML(this, 'strike', '', '');
20874
+ };
20875
+ });
20876
+
20877
+
20878
+ /***/ }),
20879
+ /* 380 */
20880
+ /***/ (function(module, exports, __webpack_require__) {
20881
+
20882
+ "use strict";
20883
+
20884
+ // B.2.3.13 String.prototype.sub()
20885
+ __webpack_require__(27)('sub', function (createHTML) {
20886
+ return function sub() {
20887
+ return createHTML(this, 'sub', '', '');
20888
+ };
20889
+ });
20890
+
20891
+
20892
+ /***/ }),
20893
+ /* 381 */
20894
+ /***/ (function(module, exports, __webpack_require__) {
20895
+
20896
+ "use strict";
20897
+
20898
+ // B.2.3.14 String.prototype.sup()
20899
+ __webpack_require__(27)('sup', function (createHTML) {
20900
+ return function sup() {
20901
+ return createHTML(this, 'sup', '', '');
20902
+ };
20903
+ });
20904
+
20905
+
20906
+ /***/ }),
20907
+ /* 382 */
20908
+ /***/ (function(module, exports, __webpack_require__) {
20909
+
20910
+ // 20.3.3.1 / 15.9.4.4 Date.now()
20911
+ var $export = __webpack_require__(1);
20912
+
20913
+ $export($export.S, 'Date', { now: function () { return new Date().getTime(); } });
20914
+
20915
+
20916
+ /***/ }),
20917
+ /* 383 */
20918
+ /***/ (function(module, exports, __webpack_require__) {
20919
+
20920
+ "use strict";
20921
+
20922
+ var $export = __webpack_require__(1);
20923
+ var toObject = __webpack_require__(18);
20924
+ var toPrimitive = __webpack_require__(39);
20925
+
20926
+ $export($export.P + $export.F * __webpack_require__(5)(function () {
20927
+ return new Date(NaN).toJSON() !== null
20928
+ || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;
20929
+ }), 'Date', {
20930
+ // eslint-disable-next-line no-unused-vars
20931
+ toJSON: function toJSON(key) {
20932
+ var O = toObject(this);
20933
+ var pv = toPrimitive(O);
20934
+ return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
20935
+ }
20936
+ });
20937
+
20938
+
20939
+ /***/ }),
20940
+ /* 384 */
20941
+ /***/ (function(module, exports, __webpack_require__) {
20942
+
20943
+ // 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
20944
+ var $export = __webpack_require__(1);
20945
+ var toISOString = __webpack_require__(385);
20946
+
20947
+ // PhantomJS / old WebKit has a broken implementations
20948
+ $export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {
20949
+ toISOString: toISOString
20950
+ });
20951
+
20952
+
20953
+ /***/ }),
20954
+ /* 385 */
20955
+ /***/ (function(module, exports, __webpack_require__) {
20956
+
20957
+ "use strict";
20958
+
20959
+ // 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
20960
+ var fails = __webpack_require__(5);
20961
+ var getTime = Date.prototype.getTime;
20962
+ var $toISOString = Date.prototype.toISOString;
20963
+
20964
+ var lz = function (num) {
20965
+ return num > 9 ? num : '0' + num;
20966
+ };
20967
+
20968
+ // PhantomJS / old WebKit has a broken implementations
20969
+ module.exports = (fails(function () {
20970
+ return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';
20971
+ }) || !fails(function () {
20972
+ $toISOString.call(new Date(NaN));
20973
+ })) ? function toISOString() {
20974
+ if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');
20975
+ var d = this;
20976
+ var y = d.getUTCFullYear();
20977
+ var m = d.getUTCMilliseconds();
20978
+ var s = y < 0 ? '-' : y > 9999 ? '+' : '';
20979
+ return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +
20980
+ '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +
20981
+ 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +
20982
+ ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';
20983
+ } : $toISOString;
20984
+
20985
+
20986
+ /***/ }),
20987
+ /* 386 */
20988
+ /***/ (function(module, exports, __webpack_require__) {
20989
+
20990
+ var DateProto = Date.prototype;
20991
+ var INVALID_DATE = 'Invalid Date';
20992
+ var TO_STRING = 'toString';
20993
+ var $toString = DateProto[TO_STRING];
20994
+ var getTime = DateProto.getTime;
20995
+ if (new Date(NaN) + '' != INVALID_DATE) {
20996
+ __webpack_require__(26)(DateProto, TO_STRING, function toString() {
20997
+ var value = getTime.call(this);
20998
+ // eslint-disable-next-line no-self-compare
20999
+ return value === value ? $toString.call(this) : INVALID_DATE;
21000
+ });
21001
+ }
21002
+
21003
+
21004
+ /***/ }),
21005
+ /* 387 */
21006
+ /***/ (function(module, exports, __webpack_require__) {
21007
+
21008
+ var TO_PRIMITIVE = __webpack_require__(9)('toPrimitive');
21009
+ var proto = Date.prototype;
21010
+
21011
+ if (!(TO_PRIMITIVE in proto)) __webpack_require__(25)(proto, TO_PRIMITIVE, __webpack_require__(388));
21012
+
21013
+
21014
+ /***/ }),
21015
+ /* 388 */
21016
+ /***/ (function(module, exports, __webpack_require__) {
21017
+
21018
+ "use strict";
21019
+
21020
+ var anObject = __webpack_require__(3);
21021
+ var toPrimitive = __webpack_require__(39);
21022
+ var NUMBER = 'number';
21023
+
21024
+ module.exports = function (hint) {
21025
+ if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');
21026
+ return toPrimitive(anObject(this), hint != NUMBER);
21027
+ };
21028
+
21029
+
21030
+ /***/ }),
21031
+ /* 389 */
21032
+ /***/ (function(module, exports, __webpack_require__) {
21033
+
21034
+ // 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
21035
+ var $export = __webpack_require__(1);
21036
+
21037
+ $export($export.S, 'Array', { isArray: __webpack_require__(100) });
21038
+
21039
+
21040
+ /***/ }),
21041
+ /* 390 */
21042
+ /***/ (function(module, exports, __webpack_require__) {
21043
+
21044
+ "use strict";
21045
+
21046
+ var ctx = __webpack_require__(35);
21047
+ var $export = __webpack_require__(1);
21048
+ var toObject = __webpack_require__(18);
21049
+ var call = __webpack_require__(209);
21050
+ var isArrayIter = __webpack_require__(145);
21051
+ var toLength = __webpack_require__(16);
21052
+ var createProperty = __webpack_require__(146);
21053
+ var getIterFn = __webpack_require__(147);
21054
+
21055
+ $export($export.S + $export.F * !__webpack_require__(102)(function (iter) { Array.from(iter); }), 'Array', {
21056
+ // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
21057
+ from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
21058
+ var O = toObject(arrayLike);
21059
+ var C = typeof this == 'function' ? this : Array;
21060
+ var aLen = arguments.length;
21061
+ var mapfn = aLen > 1 ? arguments[1] : undefined;
21062
+ var mapping = mapfn !== undefined;
21063
+ var index = 0;
21064
+ var iterFn = getIterFn(O);
21065
+ var length, result, step, iterator;
21066
+ if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
21067
+ // if object isn't iterable or it's array with default iterator - use simple case
21068
+ if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
21069
+ for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
21070
+ createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
21071
+ }
21072
+ } else {
21073
+ length = toLength(O.length);
21074
+ for (result = new C(length); length > index; index++) {
21075
+ createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
21076
+ }
21077
+ }
21078
+ result.length = index;
21079
+ return result;
21080
+ }
21081
+ });
21082
+
21083
+
21084
+ /***/ }),
21085
+ /* 391 */
21086
+ /***/ (function(module, exports, __webpack_require__) {
21087
+
21088
+ "use strict";
21089
+
21090
+ var $export = __webpack_require__(1);
21091
+ var createProperty = __webpack_require__(146);
21092
+
21093
+ // WebKit Array.of isn't generic
21094
+ $export($export.S + $export.F * __webpack_require__(5)(function () {
21095
+ function F() { /* empty */ }
21096
+ return !(Array.of.call(F) instanceof F);
21097
+ }), 'Array', {
21098
+ // 22.1.2.3 Array.of( ...items)
21099
+ of: function of(/* ...args */) {
21100
+ var index = 0;
21101
+ var aLen = arguments.length;
21102
+ var result = new (typeof this == 'function' ? this : Array)(aLen);
21103
+ while (aLen > index) createProperty(result, index, arguments[index++]);
21104
+ result.length = aLen;
21105
+ return result;
21106
+ }
21107
+ });
21108
+
21109
+
21110
+ /***/ }),
21111
+ /* 392 */
21112
+ /***/ (function(module, exports, __webpack_require__) {
21113
+
21114
+ "use strict";
21115
+
21116
+ // 22.1.3.13 Array.prototype.join(separator)
21117
+ var $export = __webpack_require__(1);
21118
+ var toIObject = __webpack_require__(29);
21119
+ var arrayJoin = [].join;
21120
+
21121
+ // fallback for not array-like strings
21122
+ $export($export.P + $export.F * (__webpack_require__(84) != Object || !__webpack_require__(37)(arrayJoin)), 'Array', {
21123
+ join: function join(separator) {
21124
+ return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);
21125
+ }
21126
+ });
21127
+
21128
+
21129
+ /***/ }),
21130
+ /* 393 */
21131
+ /***/ (function(module, exports, __webpack_require__) {
21132
+
21133
+ "use strict";
21134
+
21135
+ var $export = __webpack_require__(1);
21136
+ var html = __webpack_require__(133);
21137
+ var cof = __webpack_require__(36);
21138
+ var toAbsoluteIndex = __webpack_require__(57);
21139
+ var toLength = __webpack_require__(16);
21140
+ var arraySlice = [].slice;
21141
+
21142
+ // fallback for not array-like ES3 strings and DOM objects
21143
+ $export($export.P + $export.F * __webpack_require__(5)(function () {
21144
+ if (html) arraySlice.call(html);
21145
+ }), 'Array', {
21146
+ slice: function slice(begin, end) {
21147
+ var len = toLength(this.length);
21148
+ var klass = cof(this);
21149
+ end = end === undefined ? len : end;
21150
+ if (klass == 'Array') return arraySlice.call(this, begin, end);
21151
+ var start = toAbsoluteIndex(begin, len);
21152
+ var upTo = toAbsoluteIndex(end, len);
21153
+ var size = toLength(upTo - start);
21154
+ var cloned = new Array(size);
21155
+ var i = 0;
21156
+ for (; i < size; i++) cloned[i] = klass == 'String'
21157
+ ? this.charAt(start + i)
21158
+ : this[start + i];
21159
+ return cloned;
21160
+ }
21161
+ });
21162
+
21163
+
21164
+ /***/ }),
21165
+ /* 394 */
21166
+ /***/ (function(module, exports, __webpack_require__) {
21167
+
21168
+ "use strict";
21169
+
21170
+ var $export = __webpack_require__(1);
21171
+ var aFunction = __webpack_require__(20);
21172
+ var toObject = __webpack_require__(18);
21173
+ var fails = __webpack_require__(5);
21174
+ var $sort = [].sort;
21175
+ var test = [1, 2, 3];
21176
+
21177
+ $export($export.P + $export.F * (fails(function () {
21178
+ // IE8-
21179
+ test.sort(undefined);
21180
+ }) || !fails(function () {
21181
+ // V8 bug
21182
+ test.sort(null);
21183
+ // Old WebKit
21184
+ }) || !__webpack_require__(37)($sort)), 'Array', {
21185
+ // 22.1.3.25 Array.prototype.sort(comparefn)
21186
+ sort: function sort(comparefn) {
21187
+ return comparefn === undefined
21188
+ ? $sort.call(toObject(this))
21189
+ : $sort.call(toObject(this), aFunction(comparefn));
21190
+ }
21191
+ });
21192
+
21193
+
21194
+ /***/ }),
21195
+ /* 395 */
21196
+ /***/ (function(module, exports, __webpack_require__) {
21197
+
21198
+ "use strict";
21199
+
21200
+ var $export = __webpack_require__(1);
21201
+ var $forEach = __webpack_require__(43)(0);
21202
+ var STRICT = __webpack_require__(37)([].forEach, true);
21203
+
21204
+ $export($export.P + $export.F * !STRICT, 'Array', {
21205
+ // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])
21206
+ forEach: function forEach(callbackfn /* , thisArg */) {
21207
+ return $forEach(this, callbackfn, arguments[1]);
21208
+ }
21209
+ });
21210
+
21211
+
21212
+ /***/ }),
21213
+ /* 396 */
21214
+ /***/ (function(module, exports, __webpack_require__) {
21215
+
21216
+ var isObject = __webpack_require__(6);
21217
+ var isArray = __webpack_require__(100);
21218
+ var SPECIES = __webpack_require__(9)('species');
21219
+
21220
+ module.exports = function (original) {
21221
+ var C;
21222
+ if (isArray(original)) {
21223
+ C = original.constructor;
21224
+ // cross-realm fallback
21225
+ if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
21226
+ if (isObject(C)) {
21227
+ C = C[SPECIES];
21228
+ if (C === null) C = undefined;
21229
+ }
21230
+ } return C === undefined ? Array : C;
21231
+ };
21232
+
21233
+
21234
+ /***/ }),
21235
+ /* 397 */
21236
+ /***/ (function(module, exports, __webpack_require__) {
21237
+
21238
+ "use strict";
21239
+
21240
+ var $export = __webpack_require__(1);
21241
+ var $map = __webpack_require__(43)(1);
21242
+
21243
+ $export($export.P + $export.F * !__webpack_require__(37)([].map, true), 'Array', {
21244
+ // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
21245
+ map: function map(callbackfn /* , thisArg */) {
21246
+ return $map(this, callbackfn, arguments[1]);
21247
+ }
21248
+ });
21249
+
21250
+
21251
+ /***/ }),
21252
+ /* 398 */
21253
+ /***/ (function(module, exports, __webpack_require__) {
21254
+
21255
+ "use strict";
21256
+
21257
+ var $export = __webpack_require__(1);
21258
+ var $filter = __webpack_require__(43)(2);
21259
+
21260
+ $export($export.P + $export.F * !__webpack_require__(37)([].filter, true), 'Array', {
21261
+ // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
21262
+ filter: function filter(callbackfn /* , thisArg */) {
21263
+ return $filter(this, callbackfn, arguments[1]);
21264
+ }
21265
+ });
21266
+
21267
+
21268
+ /***/ }),
21269
+ /* 399 */
21270
+ /***/ (function(module, exports, __webpack_require__) {
21271
+
21272
+ "use strict";
21273
+
21274
+ var $export = __webpack_require__(1);
21275
+ var $some = __webpack_require__(43)(3);
21276
+
21277
+ $export($export.P + $export.F * !__webpack_require__(37)([].some, true), 'Array', {
21278
+ // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])
21279
+ some: function some(callbackfn /* , thisArg */) {
21280
+ return $some(this, callbackfn, arguments[1]);
21281
+ }
21282
+ });
21283
+
21284
+
21285
+ /***/ }),
21286
+ /* 400 */
21287
+ /***/ (function(module, exports, __webpack_require__) {
21288
+
21289
+ "use strict";
21290
+
21291
+ var $export = __webpack_require__(1);
21292
+ var $every = __webpack_require__(43)(4);
21293
+
21294
+ $export($export.P + $export.F * !__webpack_require__(37)([].every, true), 'Array', {
21295
+ // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])
21296
+ every: function every(callbackfn /* , thisArg */) {
21297
+ return $every(this, callbackfn, arguments[1]);
21298
+ }
21299
+ });
21300
+
21301
+
21302
+ /***/ }),
21303
+ /* 401 */
21304
+ /***/ (function(module, exports, __webpack_require__) {
21305
+
21306
+ "use strict";
21307
+
21308
+ var $export = __webpack_require__(1);
21309
+ var $reduce = __webpack_require__(210);
21310
+
21311
+ $export($export.P + $export.F * !__webpack_require__(37)([].reduce, true), 'Array', {
21312
+ // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])
21313
+ reduce: function reduce(callbackfn /* , initialValue */) {
21314
+ return $reduce(this, callbackfn, arguments.length, arguments[1], false);
21315
+ }
21316
+ });
21317
+
21318
+
21319
+ /***/ }),
21320
+ /* 402 */
21321
+ /***/ (function(module, exports, __webpack_require__) {
21322
+
21323
+ "use strict";
21324
+
21325
+ var $export = __webpack_require__(1);
21326
+ var $reduce = __webpack_require__(210);
21327
+
21328
+ $export($export.P + $export.F * !__webpack_require__(37)([].reduceRight, true), 'Array', {
21329
+ // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])
21330
+ reduceRight: function reduceRight(callbackfn /* , initialValue */) {
21331
+ return $reduce(this, callbackfn, arguments.length, arguments[1], true);
21332
+ }
21333
+ });
21334
+
21335
+
21336
+ /***/ }),
21337
+ /* 403 */
21338
+ /***/ (function(module, exports, __webpack_require__) {
21339
+
21340
+ "use strict";
21341
+
21342
+ var $export = __webpack_require__(1);
21343
+ var $indexOf = __webpack_require__(98)(false);
21344
+ var $native = [].indexOf;
21345
+ var NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;
21346
+
21347
+ $export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(37)($native)), 'Array', {
21348
+ // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])
21349
+ indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {
21350
+ return NEGATIVE_ZERO
21351
+ // convert -0 to +0
21352
+ ? $native.apply(this, arguments) || 0
21353
+ : $indexOf(this, searchElement, arguments[1]);
21354
+ }
21355
+ });
21356
+
21357
+
21358
+ /***/ }),
21359
+ /* 404 */
21360
+ /***/ (function(module, exports, __webpack_require__) {
21361
+
21362
+ "use strict";
21363
+
21364
+ var $export = __webpack_require__(1);
21365
+ var toIObject = __webpack_require__(29);
21366
+ var toInteger = __webpack_require__(41);
21367
+ var toLength = __webpack_require__(16);
21368
+ var $native = [].lastIndexOf;
21369
+ var NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;
21370
+
21371
+ $export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(37)($native)), 'Array', {
21372
+ // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])
21373
+ lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {
21374
+ // convert -0 to +0
21375
+ if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;
21376
+ var O = toIObject(this);
21377
+ var length = toLength(O.length);
21378
+ var index = length - 1;
21379
+ if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));
21380
+ if (index < 0) index = length + index;
21381
+ for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;
21382
+ return -1;
21383
+ }
21384
+ });
21385
+
21386
+
21387
+ /***/ }),
21388
+ /* 405 */
21389
+ /***/ (function(module, exports, __webpack_require__) {
21390
+
21391
+ // 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
21392
+ var $export = __webpack_require__(1);
21393
+
21394
+ $export($export.P, 'Array', { copyWithin: __webpack_require__(211) });
21395
+
21396
+ __webpack_require__(49)('copyWithin');
21397
+
21398
+
21399
+ /***/ }),
21400
+ /* 406 */
21401
+ /***/ (function(module, exports, __webpack_require__) {
21402
+
21403
+ // 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
21404
+ var $export = __webpack_require__(1);
21405
+
21406
+ $export($export.P, 'Array', { fill: __webpack_require__(149) });
21407
+
21408
+ __webpack_require__(49)('fill');
21409
+
21410
+
21411
+ /***/ }),
21412
+ /* 407 */
21413
+ /***/ (function(module, exports, __webpack_require__) {
21414
+
21415
+ "use strict";
21416
+
21417
+ // 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
21418
+ var $export = __webpack_require__(1);
21419
+ var $find = __webpack_require__(43)(5);
21420
+ var KEY = 'find';
21421
+ var forced = true;
21422
+ // Shouldn't skip holes
21423
+ if (KEY in []) Array(1)[KEY](function () { forced = false; });
21424
+ $export($export.P + $export.F * forced, 'Array', {
21425
+ find: function find(callbackfn /* , that = undefined */) {
21426
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
21427
+ }
21428
+ });
21429
+ __webpack_require__(49)(KEY);
21430
+
21431
+
21432
+ /***/ }),
21433
+ /* 408 */
21434
+ /***/ (function(module, exports, __webpack_require__) {
21435
+
21436
+ "use strict";
21437
+
21438
+ // 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
21439
+ var $export = __webpack_require__(1);
21440
+ var $find = __webpack_require__(43)(6);
21441
+ var KEY = 'findIndex';
21442
+ var forced = true;
21443
+ // Shouldn't skip holes
21444
+ if (KEY in []) Array(1)[KEY](function () { forced = false; });
21445
+ $export($export.P + $export.F * forced, 'Array', {
21446
+ findIndex: function findIndex(callbackfn /* , that = undefined */) {
21447
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
21448
+ }
21449
+ });
21450
+ __webpack_require__(49)(KEY);
21451
+
21452
+
21453
+ /***/ }),
21454
+ /* 409 */
21455
+ /***/ (function(module, exports, __webpack_require__) {
21456
+
21457
+ __webpack_require__(60)('Array');
21458
+
21459
+
21460
+ /***/ }),
21461
+ /* 410 */
21462
+ /***/ (function(module, exports, __webpack_require__) {
21463
+
21464
+ var global = __webpack_require__(4);
21465
+ var inheritIfRequired = __webpack_require__(136);
21466
+ var dP = __webpack_require__(15).f;
21467
+ var gOPN = __webpack_require__(59).f;
21468
+ var isRegExp = __webpack_require__(101);
21469
+ var $flags = __webpack_require__(103);
21470
+ var $RegExp = global.RegExp;
21471
+ var Base = $RegExp;
21472
+ var proto = $RegExp.prototype;
21473
+ var re1 = /a/g;
21474
+ var re2 = /a/g;
21475
+ // "new" creates a new object, old webkit buggy here
21476
+ var CORRECT_NEW = new $RegExp(re1) !== re1;
21477
+
21478
+ if (__webpack_require__(14) && (!CORRECT_NEW || __webpack_require__(5)(function () {
21479
+ re2[__webpack_require__(9)('match')] = false;
21480
+ // RegExp constructor can alter flags and IsRegExp works correct with @@match
21481
+ return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
21482
+ }))) {
21483
+ $RegExp = function RegExp(p, f) {
21484
+ var tiRE = this instanceof $RegExp;
21485
+ var piRE = isRegExp(p);
21486
+ var fiU = f === undefined;
21487
+ return !tiRE && piRE && p.constructor === $RegExp && fiU ? p
21488
+ : inheritIfRequired(CORRECT_NEW
21489
+ ? new Base(piRE && !fiU ? p.source : p, f)
21490
+ : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)
21491
+ , tiRE ? this : proto, $RegExp);
21492
+ };
21493
+ var proxy = function (key) {
21494
+ key in $RegExp || dP($RegExp, key, {
21495
+ configurable: true,
21496
+ get: function () { return Base[key]; },
21497
+ set: function (it) { Base[key] = it; }
21498
+ });
21499
+ };
21500
+ for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);
21501
+ proto.constructor = $RegExp;
21502
+ $RegExp.prototype = proto;
21503
+ __webpack_require__(26)(global, 'RegExp', $RegExp);
21504
+ }
21505
+
21506
+ __webpack_require__(60)('RegExp');
21507
+
21508
+
21509
+ /***/ }),
21510
+ /* 411 */
21511
+ /***/ (function(module, exports, __webpack_require__) {
21512
+
21513
+ "use strict";
21514
+
21515
+ __webpack_require__(213);
21516
+ var anObject = __webpack_require__(3);
21517
+ var $flags = __webpack_require__(103);
21518
+ var DESCRIPTORS = __webpack_require__(14);
21519
+ var TO_STRING = 'toString';
21520
+ var $toString = /./[TO_STRING];
21521
+
21522
+ var define = function (fn) {
21523
+ __webpack_require__(26)(RegExp.prototype, TO_STRING, fn, true);
21524
+ };
21525
+
21526
+ // 21.2.5.14 RegExp.prototype.toString()
21527
+ if (__webpack_require__(5)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {
21528
+ define(function toString() {
21529
+ var R = anObject(this);
21530
+ return '/'.concat(R.source, '/',
21531
+ 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
21532
+ });
21533
+ // FF44- RegExp#toString has a wrong name
21534
+ } else if ($toString.name != TO_STRING) {
21535
+ define(function toString() {
21536
+ return $toString.call(this);
21537
+ });
21538
+ }
21539
+
21540
+
21541
+ /***/ }),
21542
+ /* 412 */
21543
+ /***/ (function(module, exports, __webpack_require__) {
21544
+
21545
+ // @@match logic
21546
+ __webpack_require__(104)('match', 1, function (defined, MATCH, $match) {
21547
+ // 21.1.3.11 String.prototype.match(regexp)
21548
+ return [function match(regexp) {
21549
+ 'use strict';
21550
+ var O = defined(this);
21551
+ var fn = regexp == undefined ? undefined : regexp[MATCH];
21552
+ return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
21553
+ }, $match];
21554
+ });
21555
+
21556
+
21557
+ /***/ }),
21558
+ /* 413 */
21559
+ /***/ (function(module, exports, __webpack_require__) {
21560
+
21561
+ // @@replace logic
21562
+ __webpack_require__(104)('replace', 2, function (defined, REPLACE, $replace) {
21563
+ // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)
21564
+ return [function replace(searchValue, replaceValue) {
21565
+ 'use strict';
21566
+ var O = defined(this);
21567
+ var fn = searchValue == undefined ? undefined : searchValue[REPLACE];
21568
+ return fn !== undefined
21569
+ ? fn.call(searchValue, O, replaceValue)
21570
+ : $replace.call(String(O), searchValue, replaceValue);
21571
+ }, $replace];
21572
+ });
21573
+
21574
+
21575
+ /***/ }),
21576
+ /* 414 */
21577
+ /***/ (function(module, exports, __webpack_require__) {
21578
+
21579
+ // @@search logic
21580
+ __webpack_require__(104)('search', 1, function (defined, SEARCH, $search) {
21581
+ // 21.1.3.15 String.prototype.search(regexp)
21582
+ return [function search(regexp) {
21583
+ 'use strict';
21584
+ var O = defined(this);
21585
+ var fn = regexp == undefined ? undefined : regexp[SEARCH];
21586
+ return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
21587
+ }, $search];
21588
+ });
21589
+
21590
+
21591
+ /***/ }),
21592
+ /* 415 */
21593
+ /***/ (function(module, exports, __webpack_require__) {
21594
+
21595
+ // @@split logic
21596
+ __webpack_require__(104)('split', 2, function (defined, SPLIT, $split) {
21597
+ 'use strict';
21598
+ var isRegExp = __webpack_require__(101);
21599
+ var _split = $split;
21600
+ var $push = [].push;
21601
+ var $SPLIT = 'split';
21602
+ var LENGTH = 'length';
21603
+ var LAST_INDEX = 'lastIndex';
21604
+ if (
21605
+ 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
21606
+ 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
21607
+ 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
21608
+ '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
21609
+ '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
21610
+ ''[$SPLIT](/.?/)[LENGTH]
21611
+ ) {
21612
+ var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group
21613
+ // based on es5-shim implementation, need to rework it
21614
+ $split = function (separator, limit) {
21615
+ var string = String(this);
21616
+ if (separator === undefined && limit === 0) return [];
21617
+ // If `separator` is not a regex, use native split
21618
+ if (!isRegExp(separator)) return _split.call(string, separator, limit);
21619
+ var output = [];
21620
+ var flags = (separator.ignoreCase ? 'i' : '') +
21621
+ (separator.multiline ? 'm' : '') +
21622
+ (separator.unicode ? 'u' : '') +
21623
+ (separator.sticky ? 'y' : '');
21624
+ var lastLastIndex = 0;
21625
+ var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;
21626
+ // Make `global` and avoid `lastIndex` issues by working with a copy
21627
+ var separatorCopy = new RegExp(separator.source, flags + 'g');
21628
+ var separator2, match, lastIndex, lastLength, i;
21629
+ // Doesn't need flags gy, but they don't hurt
21630
+ if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\s)', flags);
21631
+ while (match = separatorCopy.exec(string)) {
21632
+ // `separatorCopy.lastIndex` is not reliable cross-browser
21633
+ lastIndex = match.index + match[0][LENGTH];
21634
+ if (lastIndex > lastLastIndex) {
21635
+ output.push(string.slice(lastLastIndex, match.index));
21636
+ // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG
21637
+ // eslint-disable-next-line no-loop-func
21638
+ if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {
21639
+ for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;
21640
+ });
21641
+ if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));
21642
+ lastLength = match[0][LENGTH];
21643
+ lastLastIndex = lastIndex;
21644
+ if (output[LENGTH] >= splitLimit) break;
21645
+ }
21646
+ if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
21647
+ }
21648
+ if (lastLastIndex === string[LENGTH]) {
21649
+ if (lastLength || !separatorCopy.test('')) output.push('');
21650
+ } else output.push(string.slice(lastLastIndex));
21651
+ return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
21652
+ };
21653
+ // Chakra, V8
21654
+ } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {
21655
+ $split = function (separator, limit) {
21656
+ return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);
21657
+ };
21658
+ }
21659
+ // 21.1.3.17 String.prototype.split(separator, limit)
21660
+ return [function split(separator, limit) {
21661
+ var O = defined(this);
21662
+ var fn = separator == undefined ? undefined : separator[SPLIT];
21663
+ return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);
21664
+ }, $split];
21665
+ });
21666
+
21667
+
21668
+ /***/ }),
21669
+ /* 416 */
21670
+ /***/ (function(module, exports, __webpack_require__) {
21671
+
21672
+ "use strict";
21673
+
21674
+ var LIBRARY = __webpack_require__(55);
21675
+ var global = __webpack_require__(4);
21676
+ var ctx = __webpack_require__(35);
21677
+ var classof = __webpack_require__(86);
21678
+ var $export = __webpack_require__(1);
21679
+ var isObject = __webpack_require__(6);
21680
+ var aFunction = __webpack_require__(20);
21681
+ var anInstance = __webpack_require__(61);
21682
+ var forOf = __webpack_require__(62);
21683
+ var speciesConstructor = __webpack_require__(105);
21684
+ var task = __webpack_require__(151).set;
21685
+ var microtask = __webpack_require__(152)();
21686
+ var newPromiseCapabilityModule = __webpack_require__(153);
21687
+ var perform = __webpack_require__(214);
21688
+ var promiseResolve = __webpack_require__(215);
21689
+ var PROMISE = 'Promise';
21690
+ var TypeError = global.TypeError;
21691
+ var process = global.process;
21692
+ var $Promise = global[PROMISE];
21693
+ var isNode = classof(process) == 'process';
21694
+ var empty = function () { /* empty */ };
21695
+ var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
21696
+ var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;
21697
+
21698
+ var USE_NATIVE = !!function () {
21699
+ try {
21700
+ // correct subclassing with @@species support
21701
+ var promise = $Promise.resolve(1);
21702
+ var FakePromise = (promise.constructor = {})[__webpack_require__(9)('species')] = function (exec) {
21703
+ exec(empty, empty);
21704
+ };
21705
+ // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
21706
+ return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;
21707
+ } catch (e) { /* empty */ }
21708
+ }();
21709
+
21710
+ // helpers
21711
+ var isThenable = function (it) {
21712
+ var then;
21713
+ return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
21714
+ };
21715
+ var notify = function (promise, isReject) {
21716
+ if (promise._n) return;
21717
+ promise._n = true;
21718
+ var chain = promise._c;
21719
+ microtask(function () {
21720
+ var value = promise._v;
21721
+ var ok = promise._s == 1;
21722
+ var i = 0;
21723
+ var run = function (reaction) {
21724
+ var handler = ok ? reaction.ok : reaction.fail;
21725
+ var resolve = reaction.resolve;
21726
+ var reject = reaction.reject;
21727
+ var domain = reaction.domain;
21728
+ var result, then;
21729
+ try {
21730
+ if (handler) {
21731
+ if (!ok) {
21732
+ if (promise._h == 2) onHandleUnhandled(promise);
21733
+ promise._h = 1;
21734
+ }
21735
+ if (handler === true) result = value;
21736
+ else {
21737
+ if (domain) domain.enter();
21738
+ result = handler(value);
21739
+ if (domain) domain.exit();
21740
+ }
21741
+ if (result === reaction.promise) {
21742
+ reject(TypeError('Promise-chain cycle'));
21743
+ } else if (then = isThenable(result)) {
21744
+ then.call(result, resolve, reject);
21745
+ } else resolve(result);
21746
+ } else reject(value);
21747
+ } catch (e) {
21748
+ reject(e);
21749
+ }
21750
+ };
21751
+ while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
21752
+ promise._c = [];
21753
+ promise._n = false;
21754
+ if (isReject && !promise._h) onUnhandled(promise);
21755
+ });
21756
+ };
21757
+ var onUnhandled = function (promise) {
21758
+ task.call(global, function () {
21759
+ var value = promise._v;
21760
+ var unhandled = isUnhandled(promise);
21761
+ var result, handler, console;
21762
+ if (unhandled) {
21763
+ result = perform(function () {
21764
+ if (isNode) {
21765
+ process.emit('unhandledRejection', value, promise);
21766
+ } else if (handler = global.onunhandledrejection) {
21767
+ handler({ promise: promise, reason: value });
21768
+ } else if ((console = global.console) && console.error) {
21769
+ console.error('Unhandled promise rejection', value);
21770
+ }
21771
+ });
21772
+ // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
21773
+ promise._h = isNode || isUnhandled(promise) ? 2 : 1;
21774
+ } promise._a = undefined;
21775
+ if (unhandled && result.e) throw result.v;
21776
+ });
21777
+ };
21778
+ var isUnhandled = function (promise) {
21779
+ return promise._h !== 1 && (promise._a || promise._c).length === 0;
21780
+ };
21781
+ var onHandleUnhandled = function (promise) {
21782
+ task.call(global, function () {
21783
+ var handler;
21784
+ if (isNode) {
21785
+ process.emit('rejectionHandled', promise);
21786
+ } else if (handler = global.onrejectionhandled) {
21787
+ handler({ promise: promise, reason: promise._v });
21788
+ }
21789
+ });
21790
+ };
21791
+ var $reject = function (value) {
21792
+ var promise = this;
21793
+ if (promise._d) return;
21794
+ promise._d = true;
21795
+ promise = promise._w || promise; // unwrap
21796
+ promise._v = value;
21797
+ promise._s = 2;
21798
+ if (!promise._a) promise._a = promise._c.slice();
21799
+ notify(promise, true);
21800
+ };
21801
+ var $resolve = function (value) {
21802
+ var promise = this;
21803
+ var then;
21804
+ if (promise._d) return;
21805
+ promise._d = true;
21806
+ promise = promise._w || promise; // unwrap
21807
+ try {
21808
+ if (promise === value) throw TypeError("Promise can't be resolved itself");
21809
+ if (then = isThenable(value)) {
21810
+ microtask(function () {
21811
+ var wrapper = { _w: promise, _d: false }; // wrap
21812
+ try {
21813
+ then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
21814
+ } catch (e) {
21815
+ $reject.call(wrapper, e);
21816
+ }
21817
+ });
21818
+ } else {
21819
+ promise._v = value;
21820
+ promise._s = 1;
21821
+ notify(promise, false);
21822
+ }
21823
+ } catch (e) {
21824
+ $reject.call({ _w: promise, _d: false }, e); // wrap
21825
+ }
21826
+ };
21827
+
21828
+ // constructor polyfill
21829
+ if (!USE_NATIVE) {
21830
+ // 25.4.3.1 Promise(executor)
21831
+ $Promise = function Promise(executor) {
21832
+ anInstance(this, $Promise, PROMISE, '_h');
21833
+ aFunction(executor);
21834
+ Internal.call(this);
21835
+ try {
21836
+ executor(ctx($resolve, this, 1), ctx($reject, this, 1));
21837
+ } catch (err) {
21838
+ $reject.call(this, err);
21839
+ }
21840
+ };
21841
+ // eslint-disable-next-line no-unused-vars
21842
+ Internal = function Promise(executor) {
21843
+ this._c = []; // <- awaiting reactions
21844
+ this._a = undefined; // <- checked in isUnhandled reactions
21845
+ this._s = 0; // <- state
21846
+ this._d = false; // <- done
21847
+ this._v = undefined; // <- value
21848
+ this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
21849
+ this._n = false; // <- notify
21850
+ };
21851
+ Internal.prototype = __webpack_require__(63)($Promise.prototype, {
21852
+ // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
21853
+ then: function then(onFulfilled, onRejected) {
21854
+ var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
21855
+ reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
21856
+ reaction.fail = typeof onRejected == 'function' && onRejected;
21857
+ reaction.domain = isNode ? process.domain : undefined;
21858
+ this._c.push(reaction);
21859
+ if (this._a) this._a.push(reaction);
21860
+ if (this._s) notify(this, false);
21861
+ return reaction.promise;
21862
+ },
21863
+ // 25.4.5.1 Promise.prototype.catch(onRejected)
21864
+ 'catch': function (onRejected) {
21865
+ return this.then(undefined, onRejected);
21866
+ }
21867
+ });
21868
+ OwnPromiseCapability = function () {
21869
+ var promise = new Internal();
21870
+ this.promise = promise;
21871
+ this.resolve = ctx($resolve, promise, 1);
21872
+ this.reject = ctx($reject, promise, 1);
21873
+ };
21874
+ newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
21875
+ return C === $Promise || C === Wrapper
21876
+ ? new OwnPromiseCapability(C)
21877
+ : newGenericPromiseCapability(C);
21878
+ };
21879
+ }
21880
+
21881
+ $export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
21882
+ __webpack_require__(72)($Promise, PROMISE);
21883
+ __webpack_require__(60)(PROMISE);
21884
+ Wrapper = __webpack_require__(38)[PROMISE];
21885
+
21886
+ // statics
21887
+ $export($export.S + $export.F * !USE_NATIVE, PROMISE, {
21888
+ // 25.4.4.5 Promise.reject(r)
21889
+ reject: function reject(r) {
21890
+ var capability = newPromiseCapability(this);
21891
+ var $$reject = capability.reject;
21892
+ $$reject(r);
21893
+ return capability.promise;
21894
+ }
21895
+ });
21896
+ $export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
21897
+ // 25.4.4.6 Promise.resolve(x)
21898
+ resolve: function resolve(x) {
21899
+ return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
21900
+ }
21901
+ });
21902
+ $export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(102)(function (iter) {
21903
+ $Promise.all(iter)['catch'](empty);
21904
+ })), PROMISE, {
21905
+ // 25.4.4.1 Promise.all(iterable)
21906
+ all: function all(iterable) {
21907
+ var C = this;
21908
+ var capability = newPromiseCapability(C);
21909
+ var resolve = capability.resolve;
21910
+ var reject = capability.reject;
21911
+ var result = perform(function () {
21912
+ var values = [];
21913
+ var index = 0;
21914
+ var remaining = 1;
21915
+ forOf(iterable, false, function (promise) {
21916
+ var $index = index++;
21917
+ var alreadyCalled = false;
21918
+ values.push(undefined);
21919
+ remaining++;
21920
+ C.resolve(promise).then(function (value) {
21921
+ if (alreadyCalled) return;
21922
+ alreadyCalled = true;
21923
+ values[$index] = value;
21924
+ --remaining || resolve(values);
21925
+ }, reject);
21926
+ });
21927
+ --remaining || resolve(values);
21928
+ });
21929
+ if (result.e) reject(result.v);
21930
+ return capability.promise;
21931
+ },
21932
+ // 25.4.4.4 Promise.race(iterable)
21933
+ race: function race(iterable) {
21934
+ var C = this;
21935
+ var capability = newPromiseCapability(C);
21936
+ var reject = capability.reject;
21937
+ var result = perform(function () {
21938
+ forOf(iterable, false, function (promise) {
21939
+ C.resolve(promise).then(capability.resolve, reject);
21940
+ });
21941
+ });
21942
+ if (result.e) reject(result.v);
21943
+ return capability.promise;
21944
+ }
21945
+ });
21946
+
21947
+
21948
+ /***/ }),
21949
+ /* 417 */
21950
+ /***/ (function(module, exports, __webpack_require__) {
21951
+
21952
+ "use strict";
21953
+
21954
+ var weak = __webpack_require__(220);
21955
+ var validate = __webpack_require__(75);
21956
+ var WEAK_SET = 'WeakSet';
21957
+
21958
+ // 23.4 WeakSet Objects
21959
+ __webpack_require__(106)(WEAK_SET, function (get) {
21960
+ return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
21961
+ }, {
21962
+ // 23.4.3.1 WeakSet.prototype.add(value)
21963
+ add: function add(value) {
21964
+ return weak.def(validate(this, WEAK_SET), value, true);
21965
+ }
21966
+ }, weak, false, true);
21967
+
21968
+
21969
+ /***/ }),
21970
+ /* 418 */
21971
+ /***/ (function(module, exports, __webpack_require__) {
21972
+
21973
+ "use strict";
21974
+
21975
+ var $export = __webpack_require__(1);
21976
+ var $typed = __webpack_require__(107);
21977
+ var buffer = __webpack_require__(154);
21978
+ var anObject = __webpack_require__(3);
21979
+ var toAbsoluteIndex = __webpack_require__(57);
21980
+ var toLength = __webpack_require__(16);
21981
+ var isObject = __webpack_require__(6);
21982
+ var ArrayBuffer = __webpack_require__(4).ArrayBuffer;
21983
+ var speciesConstructor = __webpack_require__(105);
21984
+ var $ArrayBuffer = buffer.ArrayBuffer;
21985
+ var $DataView = buffer.DataView;
21986
+ var $isView = $typed.ABV && ArrayBuffer.isView;
21987
+ var $slice = $ArrayBuffer.prototype.slice;
21988
+ var VIEW = $typed.VIEW;
21989
+ var ARRAY_BUFFER = 'ArrayBuffer';
21990
+
21991
+ $export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });
21992
+
21993
+ $export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {
21994
+ // 24.1.3.1 ArrayBuffer.isView(arg)
21995
+ isView: function isView(it) {
21996
+ return $isView && $isView(it) || isObject(it) && VIEW in it;
21997
+ }
21998
+ });
21999
+
22000
+ $export($export.P + $export.U + $export.F * __webpack_require__(5)(function () {
22001
+ return !new $ArrayBuffer(2).slice(1, undefined).byteLength;
22002
+ }), ARRAY_BUFFER, {
22003
+ // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)
22004
+ slice: function slice(start, end) {
22005
+ if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix
22006
+ var len = anObject(this).byteLength;
22007
+ var first = toAbsoluteIndex(start, len);
22008
+ var final = toAbsoluteIndex(end === undefined ? len : end, len);
22009
+ var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first));
22010
+ var viewS = new $DataView(this);
22011
+ var viewT = new $DataView(result);
22012
+ var index = 0;
22013
+ while (first < final) {
22014
+ viewT.setUint8(index++, viewS.getUint8(first++));
22015
+ } return result;
22016
+ }
22017
+ });
22018
+
22019
+ __webpack_require__(60)(ARRAY_BUFFER);
22020
+
22021
+
22022
+ /***/ }),
22023
+ /* 419 */
22024
+ /***/ (function(module, exports, __webpack_require__) {
22025
+
22026
+ var $export = __webpack_require__(1);
22027
+ $export($export.G + $export.W + $export.F * !__webpack_require__(107).ABV, {
22028
+ DataView: __webpack_require__(154).DataView
22029
+ });
22030
+
22031
+
22032
+ /***/ }),
22033
+ /* 420 */
22034
+ /***/ (function(module, exports, __webpack_require__) {
22035
+
22036
+ __webpack_require__(44)('Int8', 1, function (init) {
22037
+ return function Int8Array(data, byteOffset, length) {
22038
+ return init(this, data, byteOffset, length);
22039
+ };
22040
+ });
22041
+
22042
+
22043
+ /***/ }),
22044
+ /* 421 */
22045
+ /***/ (function(module, exports, __webpack_require__) {
22046
+
22047
+ __webpack_require__(44)('Uint8', 1, function (init) {
22048
+ return function Uint8Array(data, byteOffset, length) {
22049
+ return init(this, data, byteOffset, length);
22050
+ };
22051
+ });
22052
+
22053
+
22054
+ /***/ }),
22055
+ /* 422 */
22056
+ /***/ (function(module, exports, __webpack_require__) {
22057
+
22058
+ __webpack_require__(44)('Uint8', 1, function (init) {
22059
+ return function Uint8ClampedArray(data, byteOffset, length) {
22060
+ return init(this, data, byteOffset, length);
22061
+ };
22062
+ }, true);
22063
+
22064
+
22065
+ /***/ }),
22066
+ /* 423 */
22067
+ /***/ (function(module, exports, __webpack_require__) {
22068
+
22069
+ __webpack_require__(44)('Int16', 2, function (init) {
22070
+ return function Int16Array(data, byteOffset, length) {
22071
+ return init(this, data, byteOffset, length);
22072
+ };
22073
+ });
22074
+
22075
+
22076
+ /***/ }),
22077
+ /* 424 */
22078
+ /***/ (function(module, exports, __webpack_require__) {
22079
+
22080
+ __webpack_require__(44)('Uint16', 2, function (init) {
22081
+ return function Uint16Array(data, byteOffset, length) {
22082
+ return init(this, data, byteOffset, length);
22083
+ };
22084
+ });
22085
+
22086
+
22087
+ /***/ }),
22088
+ /* 425 */
22089
+ /***/ (function(module, exports, __webpack_require__) {
22090
+
22091
+ __webpack_require__(44)('Int32', 4, function (init) {
22092
+ return function Int32Array(data, byteOffset, length) {
22093
+ return init(this, data, byteOffset, length);
22094
+ };
22095
+ });
22096
+
22097
+
22098
+ /***/ }),
22099
+ /* 426 */
22100
+ /***/ (function(module, exports, __webpack_require__) {
22101
+
22102
+ __webpack_require__(44)('Uint32', 4, function (init) {
22103
+ return function Uint32Array(data, byteOffset, length) {
22104
+ return init(this, data, byteOffset, length);
22105
+ };
22106
+ });
22107
+
22108
+
22109
+ /***/ }),
22110
+ /* 427 */
22111
+ /***/ (function(module, exports, __webpack_require__) {
22112
+
22113
+ __webpack_require__(44)('Float32', 4, function (init) {
22114
+ return function Float32Array(data, byteOffset, length) {
22115
+ return init(this, data, byteOffset, length);
22116
+ };
22117
+ });
22118
+
22119
+
22120
+ /***/ }),
22121
+ /* 428 */
22122
+ /***/ (function(module, exports, __webpack_require__) {
22123
+
22124
+ __webpack_require__(44)('Float64', 8, function (init) {
22125
+ return function Float64Array(data, byteOffset, length) {
22126
+ return init(this, data, byteOffset, length);
22127
+ };
22128
+ });
22129
+
22130
+
22131
+ /***/ }),
22132
+ /* 429 */
22133
+ /***/ (function(module, exports, __webpack_require__) {
22134
+
22135
+ // 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
22136
+ var $export = __webpack_require__(1);
22137
+ var aFunction = __webpack_require__(20);
22138
+ var anObject = __webpack_require__(3);
22139
+ var rApply = (__webpack_require__(4).Reflect || {}).apply;
22140
+ var fApply = Function.apply;
22141
+ // MS Edge argumentsList argument is optional
22142
+ $export($export.S + $export.F * !__webpack_require__(5)(function () {
22143
+ rApply(function () { /* empty */ });
22144
+ }), 'Reflect', {
22145
+ apply: function apply(target, thisArgument, argumentsList) {
22146
+ var T = aFunction(target);
22147
+ var L = anObject(argumentsList);
22148
+ return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);
22149
+ }
22150
+ });
22151
+
22152
+
22153
+ /***/ }),
22154
+ /* 430 */
22155
+ /***/ (function(module, exports, __webpack_require__) {
22156
+
22157
+ // 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
22158
+ var $export = __webpack_require__(1);
22159
+ var create = __webpack_require__(58);
22160
+ var aFunction = __webpack_require__(20);
22161
+ var anObject = __webpack_require__(3);
22162
+ var isObject = __webpack_require__(6);
22163
+ var fails = __webpack_require__(5);
22164
+ var bind = __webpack_require__(201);
22165
+ var rConstruct = (__webpack_require__(4).Reflect || {}).construct;
22166
+
22167
+ // MS Edge supports only 2 arguments and argumentsList argument is optional
22168
+ // FF Nightly sets third argument as `new.target`, but does not create `this` from it
22169
+ var NEW_TARGET_BUG = fails(function () {
22170
+ function F() { /* empty */ }
22171
+ return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);
22172
+ });
22173
+ var ARGS_BUG = !fails(function () {
22174
+ rConstruct(function () { /* empty */ });
22175
+ });
22176
+
22177
+ $export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
22178
+ construct: function construct(Target, args /* , newTarget */) {
22179
+ aFunction(Target);
22180
+ anObject(args);
22181
+ var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
22182
+ if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);
22183
+ if (Target == newTarget) {
22184
+ // w/o altered newTarget, optimization for 0-4 arguments
22185
+ switch (args.length) {
22186
+ case 0: return new Target();
22187
+ case 1: return new Target(args[0]);
22188
+ case 2: return new Target(args[0], args[1]);
22189
+ case 3: return new Target(args[0], args[1], args[2]);
22190
+ case 4: return new Target(args[0], args[1], args[2], args[3]);
22191
+ }
22192
+ // w/o altered newTarget, lot of arguments case
22193
+ var $args = [null];
22194
+ $args.push.apply($args, args);
22195
+ return new (bind.apply(Target, $args))();
22196
+ }
22197
+ // with altered newTarget, not support built-in constructors
22198
+ var proto = newTarget.prototype;
22199
+ var instance = create(isObject(proto) ? proto : Object.prototype);
22200
+ var result = Function.apply.call(Target, instance, args);
22201
+ return isObject(result) ? result : instance;
22202
+ }
22203
+ });
22204
+
22205
+
22206
+ /***/ }),
22207
+ /* 431 */
22208
+ /***/ (function(module, exports, __webpack_require__) {
22209
+
22210
+ // 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
22211
+ var dP = __webpack_require__(15);
22212
+ var $export = __webpack_require__(1);
22213
+ var anObject = __webpack_require__(3);
22214
+ var toPrimitive = __webpack_require__(39);
22215
+
22216
+ // MS Edge has broken Reflect.defineProperty - throwing instead of returning false
22217
+ $export($export.S + $export.F * __webpack_require__(5)(function () {
22218
+ // eslint-disable-next-line no-undef
22219
+ Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });
22220
+ }), 'Reflect', {
22221
+ defineProperty: function defineProperty(target, propertyKey, attributes) {
22222
+ anObject(target);
22223
+ propertyKey = toPrimitive(propertyKey, true);
22224
+ anObject(attributes);
22225
+ try {
22226
+ dP.f(target, propertyKey, attributes);
22227
+ return true;
22228
+ } catch (e) {
22229
+ return false;
22230
+ }
22231
+ }
22232
+ });
22233
+
22234
+
22235
+ /***/ }),
22236
+ /* 432 */
22237
+ /***/ (function(module, exports, __webpack_require__) {
22238
+
22239
+ // 26.1.4 Reflect.deleteProperty(target, propertyKey)
22240
+ var $export = __webpack_require__(1);
22241
+ var gOPD = __webpack_require__(30).f;
22242
+ var anObject = __webpack_require__(3);
22243
+
22244
+ $export($export.S, 'Reflect', {
22245
+ deleteProperty: function deleteProperty(target, propertyKey) {
22246
+ var desc = gOPD(anObject(target), propertyKey);
22247
+ return desc && !desc.configurable ? false : delete target[propertyKey];
22248
+ }
22249
+ });
22250
+
22251
+
22252
+ /***/ }),
22253
+ /* 433 */
22254
+ /***/ (function(module, exports, __webpack_require__) {
22255
+
22256
+ "use strict";
22257
+
22258
+ // 26.1.5 Reflect.enumerate(target)
22259
+ var $export = __webpack_require__(1);
22260
+ var anObject = __webpack_require__(3);
22261
+ var Enumerate = function (iterated) {
22262
+ this._t = anObject(iterated); // target
22263
+ this._i = 0; // next index
22264
+ var keys = this._k = []; // keys
22265
+ var key;
22266
+ for (key in iterated) keys.push(key);
22267
+ };
22268
+ __webpack_require__(142)(Enumerate, 'Object', function () {
22269
+ var that = this;
22270
+ var keys = that._k;
22271
+ var key;
22272
+ do {
22273
+ if (that._i >= keys.length) return { value: undefined, done: true };
22274
+ } while (!((key = keys[that._i++]) in that._t));
22275
+ return { value: key, done: false };
22276
+ });
22277
+
22278
+ $export($export.S, 'Reflect', {
22279
+ enumerate: function enumerate(target) {
22280
+ return new Enumerate(target);
22281
+ }
22282
+ });
22283
+
22284
+
22285
+ /***/ }),
22286
+ /* 434 */
22287
+ /***/ (function(module, exports, __webpack_require__) {
22288
+
22289
+ // 26.1.6 Reflect.get(target, propertyKey [, receiver])
22290
+ var gOPD = __webpack_require__(30);
22291
+ var getPrototypeOf = __webpack_require__(31);
22292
+ var has = __webpack_require__(24);
22293
+ var $export = __webpack_require__(1);
22294
+ var isObject = __webpack_require__(6);
22295
+ var anObject = __webpack_require__(3);
22296
+
22297
+ function get(target, propertyKey /* , receiver */) {
22298
+ var receiver = arguments.length < 3 ? target : arguments[2];
22299
+ var desc, proto;
22300
+ if (anObject(target) === receiver) return target[propertyKey];
22301
+ if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')
22302
+ ? desc.value
22303
+ : desc.get !== undefined
22304
+ ? desc.get.call(receiver)
22305
+ : undefined;
22306
+ if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);
22307
+ }
22308
+
22309
+ $export($export.S, 'Reflect', { get: get });
22310
+
22311
+
22312
+ /***/ }),
22313
+ /* 435 */
22314
+ /***/ (function(module, exports, __webpack_require__) {
22315
+
22316
+ // 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)
22317
+ var gOPD = __webpack_require__(30);
22318
+ var $export = __webpack_require__(1);
22319
+ var anObject = __webpack_require__(3);
22320
+
22321
+ $export($export.S, 'Reflect', {
22322
+ getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {
22323
+ return gOPD.f(anObject(target), propertyKey);
22324
+ }
22325
+ });
22326
+
22327
+
22328
+ /***/ }),
22329
+ /* 436 */
22330
+ /***/ (function(module, exports, __webpack_require__) {
22331
+
22332
+ // 26.1.8 Reflect.getPrototypeOf(target)
22333
+ var $export = __webpack_require__(1);
22334
+ var getProto = __webpack_require__(31);
22335
+ var anObject = __webpack_require__(3);
22336
+
22337
+ $export($export.S, 'Reflect', {
22338
+ getPrototypeOf: function getPrototypeOf(target) {
22339
+ return getProto(anObject(target));
22340
+ }
22341
+ });
22342
+
22343
+
22344
+ /***/ }),
22345
+ /* 437 */
22346
+ /***/ (function(module, exports, __webpack_require__) {
22347
+
22348
+ // 26.1.9 Reflect.has(target, propertyKey)
22349
+ var $export = __webpack_require__(1);
22350
+
22351
+ $export($export.S, 'Reflect', {
22352
+ has: function has(target, propertyKey) {
22353
+ return propertyKey in target;
22354
+ }
22355
+ });
22356
+
22357
+
22358
+ /***/ }),
22359
+ /* 438 */
22360
+ /***/ (function(module, exports, __webpack_require__) {
22361
+
22362
+ // 26.1.10 Reflect.isExtensible(target)
22363
+ var $export = __webpack_require__(1);
22364
+ var anObject = __webpack_require__(3);
22365
+ var $isExtensible = Object.isExtensible;
22366
+
22367
+ $export($export.S, 'Reflect', {
22368
+ isExtensible: function isExtensible(target) {
22369
+ anObject(target);
22370
+ return $isExtensible ? $isExtensible(target) : true;
22371
+ }
22372
+ });
22373
+
22374
+
22375
+ /***/ }),
22376
+ /* 439 */
22377
+ /***/ (function(module, exports, __webpack_require__) {
22378
+
22379
+ // 26.1.11 Reflect.ownKeys(target)
22380
+ var $export = __webpack_require__(1);
22381
+
22382
+ $export($export.S, 'Reflect', { ownKeys: __webpack_require__(222) });
22383
+
22384
+
22385
+ /***/ }),
22386
+ /* 440 */
22387
+ /***/ (function(module, exports, __webpack_require__) {
22388
+
22389
+ // 26.1.12 Reflect.preventExtensions(target)
22390
+ var $export = __webpack_require__(1);
22391
+ var anObject = __webpack_require__(3);
22392
+ var $preventExtensions = Object.preventExtensions;
22393
+
22394
+ $export($export.S, 'Reflect', {
22395
+ preventExtensions: function preventExtensions(target) {
22396
+ anObject(target);
22397
+ try {
22398
+ if ($preventExtensions) $preventExtensions(target);
22399
+ return true;
22400
+ } catch (e) {
22401
+ return false;
22402
+ }
22403
+ }
22404
+ });
22405
+
22406
+
22407
+ /***/ }),
22408
+ /* 441 */
22409
+ /***/ (function(module, exports, __webpack_require__) {
22410
+
22411
+ // 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
22412
+ var dP = __webpack_require__(15);
22413
+ var gOPD = __webpack_require__(30);
22414
+ var getPrototypeOf = __webpack_require__(31);
22415
+ var has = __webpack_require__(24);
22416
+ var $export = __webpack_require__(1);
22417
+ var createDesc = __webpack_require__(53);
22418
+ var anObject = __webpack_require__(3);
22419
+ var isObject = __webpack_require__(6);
22420
+
22421
+ function set(target, propertyKey, V /* , receiver */) {
22422
+ var receiver = arguments.length < 4 ? target : arguments[3];
22423
+ var ownDesc = gOPD.f(anObject(target), propertyKey);
22424
+ var existingDescriptor, proto;
22425
+ if (!ownDesc) {
22426
+ if (isObject(proto = getPrototypeOf(target))) {
22427
+ return set(proto, propertyKey, V, receiver);
22428
+ }
22429
+ ownDesc = createDesc(0);
22430
+ }
22431
+ if (has(ownDesc, 'value')) {
22432
+ if (ownDesc.writable === false || !isObject(receiver)) return false;
22433
+ existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);
22434
+ existingDescriptor.value = V;
22435
+ dP.f(receiver, propertyKey, existingDescriptor);
22436
+ return true;
22437
+ }
22438
+ return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);
22439
+ }
22440
+
22441
+ $export($export.S, 'Reflect', { set: set });
22442
+
22443
+
22444
+ /***/ }),
22445
+ /* 442 */
22446
+ /***/ (function(module, exports, __webpack_require__) {
22447
+
22448
+ // 26.1.14 Reflect.setPrototypeOf(target, proto)
22449
+ var $export = __webpack_require__(1);
22450
+ var setProto = __webpack_require__(134);
22451
+
22452
+ if (setProto) $export($export.S, 'Reflect', {
22453
+ setPrototypeOf: function setPrototypeOf(target, proto) {
22454
+ setProto.check(target, proto);
22455
+ try {
22456
+ setProto.set(target, proto);
22457
+ return true;
22458
+ } catch (e) {
22459
+ return false;
22460
+ }
22461
+ }
22462
+ });
22463
+
22464
+
22465
+ /***/ }),
22466
+ /* 443 */
22467
+ /***/ (function(module, exports, __webpack_require__) {
22468
+
22469
+ "use strict";
22470
+
22471
+ // https://github.com/tc39/Array.prototype.includes
22472
+ var $export = __webpack_require__(1);
22473
+ var $includes = __webpack_require__(98)(true);
22474
+
22475
+ $export($export.P, 'Array', {
22476
+ includes: function includes(el /* , fromIndex = 0 */) {
22477
+ return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
22478
+ }
22479
+ });
22480
+
22481
+ __webpack_require__(49)('includes');
22482
+
22483
+
22484
+ /***/ }),
22485
+ /* 444 */
22486
+ /***/ (function(module, exports, __webpack_require__) {
22487
+
22488
+ "use strict";
22489
+
22490
+ // https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap
22491
+ var $export = __webpack_require__(1);
22492
+ var flattenIntoArray = __webpack_require__(223);
22493
+ var toObject = __webpack_require__(18);
22494
+ var toLength = __webpack_require__(16);
22495
+ var aFunction = __webpack_require__(20);
22496
+ var arraySpeciesCreate = __webpack_require__(148);
22497
+
22498
+ $export($export.P, 'Array', {
22499
+ flatMap: function flatMap(callbackfn /* , thisArg */) {
22500
+ var O = toObject(this);
22501
+ var sourceLen, A;
22502
+ aFunction(callbackfn);
22503
+ sourceLen = toLength(O.length);
22504
+ A = arraySpeciesCreate(O, 0);
22505
+ flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);
22506
+ return A;
22507
+ }
22508
+ });
22509
+
22510
+ __webpack_require__(49)('flatMap');
22511
+
22512
+
22513
+ /***/ }),
22514
+ /* 445 */
22515
+ /***/ (function(module, exports, __webpack_require__) {
22516
+
22517
+ "use strict";
22518
+
22519
+ // https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatten
22520
+ var $export = __webpack_require__(1);
22521
+ var flattenIntoArray = __webpack_require__(223);
22522
+ var toObject = __webpack_require__(18);
22523
+ var toLength = __webpack_require__(16);
22524
+ var toInteger = __webpack_require__(41);
22525
+ var arraySpeciesCreate = __webpack_require__(148);
22526
+
22527
+ $export($export.P, 'Array', {
22528
+ flatten: function flatten(/* depthArg = 1 */) {
22529
+ var depthArg = arguments[0];
22530
+ var O = toObject(this);
22531
+ var sourceLen = toLength(O.length);
22532
+ var A = arraySpeciesCreate(O, 0);
22533
+ flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));
22534
+ return A;
22535
+ }
22536
+ });
22537
+
22538
+ __webpack_require__(49)('flatten');
22539
+
22540
+
22541
+ /***/ }),
22542
+ /* 446 */
22543
+ /***/ (function(module, exports, __webpack_require__) {
22544
+
22545
+ "use strict";
22546
+
22547
+ // https://github.com/mathiasbynens/String.prototype.at
22548
+ var $export = __webpack_require__(1);
22549
+ var $at = __webpack_require__(140)(true);
22550
+
22551
+ $export($export.P, 'String', {
22552
+ at: function at(pos) {
22553
+ return $at(this, pos);
22554
+ }
22555
+ });
22556
+
22557
+
22558
+ /***/ }),
22559
+ /* 447 */
22560
+ /***/ (function(module, exports, __webpack_require__) {
22561
+
22562
+ "use strict";
22563
+
22564
+ // https://github.com/tc39/proposal-string-pad-start-end
22565
+ var $export = __webpack_require__(1);
22566
+ var $pad = __webpack_require__(224);
22567
+ var userAgent = __webpack_require__(155);
22568
+
22569
+ // https://github.com/zloirock/core-js/issues/280
22570
+ $export($export.P + $export.F * /Version\/10\.\d+(\.\d+)? Safari\//.test(userAgent), 'String', {
22571
+ padStart: function padStart(maxLength /* , fillString = ' ' */) {
22572
+ return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
22573
+ }
22574
+ });
22575
+
22576
+
22577
+ /***/ }),
22578
+ /* 448 */
22579
+ /***/ (function(module, exports, __webpack_require__) {
22580
+
22581
+ "use strict";
22582
+
22583
+ // https://github.com/tc39/proposal-string-pad-start-end
22584
+ var $export = __webpack_require__(1);
22585
+ var $pad = __webpack_require__(224);
22586
+ var userAgent = __webpack_require__(155);
22587
+
22588
+ // https://github.com/zloirock/core-js/issues/280
22589
+ $export($export.P + $export.F * /Version\/10\.\d+(\.\d+)? Safari\//.test(userAgent), 'String', {
22590
+ padEnd: function padEnd(maxLength /* , fillString = ' ' */) {
22591
+ return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
22592
+ }
22593
+ });
22594
+
22595
+
22596
+ /***/ }),
22597
+ /* 449 */
22598
+ /***/ (function(module, exports, __webpack_require__) {
22599
+
22600
+ "use strict";
22601
+
22602
+ // https://github.com/sebmarkbage/ecmascript-string-left-right-trim
22603
+ __webpack_require__(73)('trimLeft', function ($trim) {
22604
+ return function trimLeft() {
22605
+ return $trim(this, 1);
22606
+ };
22607
+ }, 'trimStart');
22608
+
22609
+
22610
+ /***/ }),
22611
+ /* 450 */
22612
+ /***/ (function(module, exports, __webpack_require__) {
22613
+
22614
+ "use strict";
22615
+
22616
+ // https://github.com/sebmarkbage/ecmascript-string-left-right-trim
22617
+ __webpack_require__(73)('trimRight', function ($trim) {
22618
+ return function trimRight() {
22619
+ return $trim(this, 2);
22620
+ };
22621
+ }, 'trimEnd');
22622
+
22623
+
22624
+ /***/ }),
22625
+ /* 451 */
22626
+ /***/ (function(module, exports, __webpack_require__) {
22627
+
22628
+ "use strict";
22629
+
22630
+ // https://tc39.github.io/String.prototype.matchAll/
22631
+ var $export = __webpack_require__(1);
22632
+ var defined = __webpack_require__(40);
22633
+ var toLength = __webpack_require__(16);
22634
+ var isRegExp = __webpack_require__(101);
22635
+ var getFlags = __webpack_require__(103);
22636
+ var RegExpProto = RegExp.prototype;
22637
+
22638
+ var $RegExpStringIterator = function (regexp, string) {
22639
+ this._r = regexp;
22640
+ this._s = string;
22641
+ };
22642
+
22643
+ __webpack_require__(142)($RegExpStringIterator, 'RegExp String', function next() {
22644
+ var match = this._r.exec(this._s);
22645
+ return { value: match, done: match === null };
22646
+ });
22647
+
22648
+ $export($export.P, 'String', {
22649
+ matchAll: function matchAll(regexp) {
22650
+ defined(this);
22651
+ if (!isRegExp(regexp)) throw TypeError(regexp + ' is not a regexp!');
22652
+ var S = String(this);
22653
+ var flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp);
22654
+ var rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);
22655
+ rx.lastIndex = toLength(regexp.lastIndex);
22656
+ return new $RegExpStringIterator(rx, S);
22657
+ }
22658
+ });
22659
+
22660
+
22661
+ /***/ }),
22662
+ /* 452 */
22663
+ /***/ (function(module, exports, __webpack_require__) {
22664
+
22665
+ __webpack_require__(130)('asyncIterator');
22666
+
22667
+
22668
+ /***/ }),
22669
+ /* 453 */
22670
+ /***/ (function(module, exports, __webpack_require__) {
22671
+
22672
+ __webpack_require__(130)('observable');
22673
+
22674
+
22675
+ /***/ }),
22676
+ /* 454 */
22677
+ /***/ (function(module, exports, __webpack_require__) {
22678
+
22679
+ // https://github.com/tc39/proposal-object-getownpropertydescriptors
22680
+ var $export = __webpack_require__(1);
22681
+ var ownKeys = __webpack_require__(222);
22682
+ var toIObject = __webpack_require__(29);
22683
+ var gOPD = __webpack_require__(30);
22684
+ var createProperty = __webpack_require__(146);
22685
+
22686
+ $export($export.S, 'Object', {
22687
+ getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
22688
+ var O = toIObject(object);
22689
+ var getDesc = gOPD.f;
22690
+ var keys = ownKeys(O);
22691
+ var result = {};
22692
+ var i = 0;
22693
+ var key, desc;
22694
+ while (keys.length > i) {
22695
+ desc = getDesc(O, key = keys[i++]);
22696
+ if (desc !== undefined) createProperty(result, key, desc);
22697
+ }
22698
+ return result;
22699
+ }
22700
+ });
22701
+
22702
+
22703
+ /***/ }),
22704
+ /* 455 */
22705
+ /***/ (function(module, exports, __webpack_require__) {
22706
+
22707
+ // https://github.com/tc39/proposal-object-values-entries
22708
+ var $export = __webpack_require__(1);
22709
+ var $values = __webpack_require__(225)(false);
22710
+
22711
+ $export($export.S, 'Object', {
22712
+ values: function values(it) {
22713
+ return $values(it);
22714
+ }
22715
+ });
22716
+
22717
+
22718
+ /***/ }),
22719
+ /* 456 */
22720
+ /***/ (function(module, exports, __webpack_require__) {
22721
+
22722
+ // https://github.com/tc39/proposal-object-values-entries
22723
+ var $export = __webpack_require__(1);
22724
+ var $entries = __webpack_require__(225)(true);
22725
+
22726
+ $export($export.S, 'Object', {
22727
+ entries: function entries(it) {
22728
+ return $entries(it);
22729
+ }
22730
+ });
22731
+
22732
+
22733
+ /***/ }),
22734
+ /* 457 */
22735
+ /***/ (function(module, exports, __webpack_require__) {
22736
+
22737
+ "use strict";
22738
+
22739
+ var $export = __webpack_require__(1);
22740
+ var toObject = __webpack_require__(18);
22741
+ var aFunction = __webpack_require__(20);
22742
+ var $defineProperty = __webpack_require__(15);
22743
+
22744
+ // B.2.2.2 Object.prototype.__defineGetter__(P, getter)
22745
+ __webpack_require__(14) && $export($export.P + __webpack_require__(108), 'Object', {
22746
+ __defineGetter__: function __defineGetter__(P, getter) {
22747
+ $defineProperty.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });
22748
+ }
22749
+ });
22750
+
22751
+
22752
+ /***/ }),
22753
+ /* 458 */
22754
+ /***/ (function(module, exports, __webpack_require__) {
22755
+
22756
+ "use strict";
22757
+
22758
+ var $export = __webpack_require__(1);
22759
+ var toObject = __webpack_require__(18);
22760
+ var aFunction = __webpack_require__(20);
22761
+ var $defineProperty = __webpack_require__(15);
22762
+
22763
+ // B.2.2.3 Object.prototype.__defineSetter__(P, setter)
22764
+ __webpack_require__(14) && $export($export.P + __webpack_require__(108), 'Object', {
22765
+ __defineSetter__: function __defineSetter__(P, setter) {
22766
+ $defineProperty.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });
22767
+ }
22768
+ });
22769
+
22770
+
22771
+ /***/ }),
22772
+ /* 459 */
22773
+ /***/ (function(module, exports, __webpack_require__) {
22774
+
22775
+ "use strict";
22776
+
22777
+ var $export = __webpack_require__(1);
22778
+ var toObject = __webpack_require__(18);
22779
+ var toPrimitive = __webpack_require__(39);
22780
+ var getPrototypeOf = __webpack_require__(31);
22781
+ var getOwnPropertyDescriptor = __webpack_require__(30).f;
22782
+
22783
+ // B.2.2.4 Object.prototype.__lookupGetter__(P)
22784
+ __webpack_require__(14) && $export($export.P + __webpack_require__(108), 'Object', {
22785
+ __lookupGetter__: function __lookupGetter__(P) {
22786
+ var O = toObject(this);
22787
+ var K = toPrimitive(P, true);
22788
+ var D;
22789
+ do {
22790
+ if (D = getOwnPropertyDescriptor(O, K)) return D.get;
22791
+ } while (O = getPrototypeOf(O));
22792
+ }
22793
+ });
22794
+
22795
+
22796
+ /***/ }),
22797
+ /* 460 */
22798
+ /***/ (function(module, exports, __webpack_require__) {
22799
+
22800
+ "use strict";
22801
+
22802
+ var $export = __webpack_require__(1);
22803
+ var toObject = __webpack_require__(18);
22804
+ var toPrimitive = __webpack_require__(39);
22805
+ var getPrototypeOf = __webpack_require__(31);
22806
+ var getOwnPropertyDescriptor = __webpack_require__(30).f;
22807
+
22808
+ // B.2.2.5 Object.prototype.__lookupSetter__(P)
22809
+ __webpack_require__(14) && $export($export.P + __webpack_require__(108), 'Object', {
22810
+ __lookupSetter__: function __lookupSetter__(P) {
22811
+ var O = toObject(this);
22812
+ var K = toPrimitive(P, true);
22813
+ var D;
22814
+ do {
22815
+ if (D = getOwnPropertyDescriptor(O, K)) return D.set;
22816
+ } while (O = getPrototypeOf(O));
22817
+ }
22818
+ });
22819
+
22820
+
22821
+ /***/ }),
22822
+ /* 461 */
22823
+ /***/ (function(module, exports, __webpack_require__) {
22824
+
22825
+ // https://github.com/DavidBruant/Map-Set.prototype.toJSON
22826
+ var $export = __webpack_require__(1);
22827
+
22828
+ $export($export.P + $export.R, 'Map', { toJSON: __webpack_require__(226)('Map') });
22829
+
22830
+
22831
+ /***/ }),
22832
+ /* 462 */
22833
+ /***/ (function(module, exports, __webpack_require__) {
22834
+
22835
+ // https://github.com/DavidBruant/Map-Set.prototype.toJSON
22836
+ var $export = __webpack_require__(1);
22837
+
22838
+ $export($export.P + $export.R, 'Set', { toJSON: __webpack_require__(226)('Set') });
22839
+
22840
+
22841
+ /***/ }),
22842
+ /* 463 */
22843
+ /***/ (function(module, exports, __webpack_require__) {
22844
+
22845
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-map.of
22846
+ __webpack_require__(109)('Map');
22847
+
22848
+
22849
+ /***/ }),
22850
+ /* 464 */
22851
+ /***/ (function(module, exports, __webpack_require__) {
22852
+
22853
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-set.of
22854
+ __webpack_require__(109)('Set');
22855
+
22856
+
22857
+ /***/ }),
22858
+ /* 465 */
22859
+ /***/ (function(module, exports, __webpack_require__) {
22860
+
22861
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of
22862
+ __webpack_require__(109)('WeakMap');
22863
+
22864
+
22865
+ /***/ }),
22866
+ /* 466 */
22867
+ /***/ (function(module, exports, __webpack_require__) {
22868
+
22869
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of
22870
+ __webpack_require__(109)('WeakSet');
22871
+
22872
+
22873
+ /***/ }),
22874
+ /* 467 */
22875
+ /***/ (function(module, exports, __webpack_require__) {
22876
+
22877
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-map.from
22878
+ __webpack_require__(110)('Map');
22879
+
22880
+
22881
+ /***/ }),
22882
+ /* 468 */
22883
+ /***/ (function(module, exports, __webpack_require__) {
22884
+
22885
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-set.from
22886
+ __webpack_require__(110)('Set');
22887
+
22888
+
22889
+ /***/ }),
22890
+ /* 469 */
22891
+ /***/ (function(module, exports, __webpack_require__) {
22892
+
22893
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from
22894
+ __webpack_require__(110)('WeakMap');
22895
+
22896
+
22897
+ /***/ }),
22898
+ /* 470 */
22899
+ /***/ (function(module, exports, __webpack_require__) {
22900
+
22901
+ // https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from
22902
+ __webpack_require__(110)('WeakSet');
22903
+
22904
+
22905
+ /***/ }),
22906
+ /* 471 */
22907
+ /***/ (function(module, exports, __webpack_require__) {
22908
+
22909
+ // https://github.com/tc39/proposal-global
22910
+ var $export = __webpack_require__(1);
22911
+
22912
+ $export($export.G, { global: __webpack_require__(4) });
22913
+
22914
+
22915
+ /***/ }),
22916
+ /* 472 */
22917
+ /***/ (function(module, exports, __webpack_require__) {
22918
+
22919
+ // https://github.com/tc39/proposal-global
22920
+ var $export = __webpack_require__(1);
22921
+
22922
+ $export($export.S, 'System', { global: __webpack_require__(4) });
22923
+
22924
+
22925
+ /***/ }),
22926
+ /* 473 */
22927
+ /***/ (function(module, exports, __webpack_require__) {
22928
+
22929
+ // https://github.com/ljharb/proposal-is-error
22930
+ var $export = __webpack_require__(1);
22931
+ var cof = __webpack_require__(36);
22932
+
22933
+ $export($export.S, 'Error', {
22934
+ isError: function isError(it) {
22935
+ return cof(it) === 'Error';
22936
+ }
22937
+ });
22938
+
22939
+
22940
+ /***/ }),
22941
+ /* 474 */
22942
+ /***/ (function(module, exports, __webpack_require__) {
22943
+
22944
+ // https://rwaldron.github.io/proposal-math-extensions/
22945
+ var $export = __webpack_require__(1);
22946
+
22947
+ $export($export.S, 'Math', {
22948
+ clamp: function clamp(x, lower, upper) {
22949
+ return Math.min(upper, Math.max(lower, x));
22950
+ }
22951
+ });
22952
+
22953
+
22954
+ /***/ }),
22955
+ /* 475 */
22956
+ /***/ (function(module, exports, __webpack_require__) {
22957
+
22958
+ // https://rwaldron.github.io/proposal-math-extensions/
22959
+ var $export = __webpack_require__(1);
22960
+
22961
+ $export($export.S, 'Math', { DEG_PER_RAD: Math.PI / 180 });
22962
+
22963
+
22964
+ /***/ }),
22965
+ /* 476 */
22966
+ /***/ (function(module, exports, __webpack_require__) {
22967
+
22968
+ // https://rwaldron.github.io/proposal-math-extensions/
22969
+ var $export = __webpack_require__(1);
22970
+ var RAD_PER_DEG = 180 / Math.PI;
22971
+
22972
+ $export($export.S, 'Math', {
22973
+ degrees: function degrees(radians) {
22974
+ return radians * RAD_PER_DEG;
22975
+ }
22976
+ });
22977
+
22978
+
22979
+ /***/ }),
22980
+ /* 477 */
22981
+ /***/ (function(module, exports, __webpack_require__) {
22982
+
22983
+ // https://rwaldron.github.io/proposal-math-extensions/
22984
+ var $export = __webpack_require__(1);
22985
+ var scale = __webpack_require__(228);
22986
+ var fround = __webpack_require__(208);
22987
+
22988
+ $export($export.S, 'Math', {
22989
+ fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {
22990
+ return fround(scale(x, inLow, inHigh, outLow, outHigh));
22991
+ }
22992
+ });
22993
+
22994
+
22995
+ /***/ }),
22996
+ /* 478 */
22997
+ /***/ (function(module, exports, __webpack_require__) {
22998
+
22999
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
23000
+ var $export = __webpack_require__(1);
23001
+
23002
+ $export($export.S, 'Math', {
23003
+ iaddh: function iaddh(x0, x1, y0, y1) {
23004
+ var $x0 = x0 >>> 0;
23005
+ var $x1 = x1 >>> 0;
23006
+ var $y0 = y0 >>> 0;
23007
+ return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;
23008
+ }
23009
+ });
23010
+
23011
+
23012
+ /***/ }),
23013
+ /* 479 */
23014
+ /***/ (function(module, exports, __webpack_require__) {
23015
+
23016
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
23017
+ var $export = __webpack_require__(1);
23018
+
23019
+ $export($export.S, 'Math', {
23020
+ isubh: function isubh(x0, x1, y0, y1) {
23021
+ var $x0 = x0 >>> 0;
23022
+ var $x1 = x1 >>> 0;
23023
+ var $y0 = y0 >>> 0;
23024
+ return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;
23025
+ }
23026
+ });
23027
+
23028
+
23029
+ /***/ }),
23030
+ /* 480 */
23031
+ /***/ (function(module, exports, __webpack_require__) {
23032
+
23033
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
23034
+ var $export = __webpack_require__(1);
23035
+
23036
+ $export($export.S, 'Math', {
23037
+ imulh: function imulh(u, v) {
23038
+ var UINT16 = 0xffff;
23039
+ var $u = +u;
23040
+ var $v = +v;
23041
+ var u0 = $u & UINT16;
23042
+ var v0 = $v & UINT16;
23043
+ var u1 = $u >> 16;
23044
+ var v1 = $v >> 16;
23045
+ var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
23046
+ return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);
23047
+ }
23048
+ });
23049
+
23050
+
23051
+ /***/ }),
23052
+ /* 481 */
23053
+ /***/ (function(module, exports, __webpack_require__) {
23054
+
23055
+ // https://rwaldron.github.io/proposal-math-extensions/
23056
+ var $export = __webpack_require__(1);
23057
+
23058
+ $export($export.S, 'Math', { RAD_PER_DEG: 180 / Math.PI });
23059
+
23060
+
23061
+ /***/ }),
23062
+ /* 482 */
23063
+ /***/ (function(module, exports, __webpack_require__) {
23064
+
23065
+ // https://rwaldron.github.io/proposal-math-extensions/
23066
+ var $export = __webpack_require__(1);
23067
+ var DEG_PER_RAD = Math.PI / 180;
23068
+
23069
+ $export($export.S, 'Math', {
23070
+ radians: function radians(degrees) {
23071
+ return degrees * DEG_PER_RAD;
23072
+ }
23073
+ });
23074
+
23075
+
23076
+ /***/ }),
23077
+ /* 483 */
23078
+ /***/ (function(module, exports, __webpack_require__) {
23079
+
23080
+ // https://rwaldron.github.io/proposal-math-extensions/
23081
+ var $export = __webpack_require__(1);
23082
+
23083
+ $export($export.S, 'Math', { scale: __webpack_require__(228) });
23084
+
23085
+
23086
+ /***/ }),
23087
+ /* 484 */
23088
+ /***/ (function(module, exports, __webpack_require__) {
23089
+
23090
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
23091
+ var $export = __webpack_require__(1);
23092
+
23093
+ $export($export.S, 'Math', {
23094
+ umulh: function umulh(u, v) {
23095
+ var UINT16 = 0xffff;
23096
+ var $u = +u;
23097
+ var $v = +v;
23098
+ var u0 = $u & UINT16;
23099
+ var v0 = $v & UINT16;
23100
+ var u1 = $u >>> 16;
23101
+ var v1 = $v >>> 16;
23102
+ var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
23103
+ return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);
23104
+ }
23105
+ });
23106
+
23107
+
23108
+ /***/ }),
23109
+ /* 485 */
23110
+ /***/ (function(module, exports, __webpack_require__) {
23111
+
23112
+ // http://jfbastien.github.io/papers/Math.signbit.html
23113
+ var $export = __webpack_require__(1);
23114
+
23115
+ $export($export.S, 'Math', { signbit: function signbit(x) {
23116
+ // eslint-disable-next-line no-self-compare
23117
+ return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0;
23118
+ } });
23119
+
23120
+
23121
+ /***/ }),
23122
+ /* 486 */
23123
+ /***/ (function(module, exports, __webpack_require__) {
23124
+
23125
+ "use strict";
23126
+ // https://github.com/tc39/proposal-promise-finally
23127
+
23128
+ var $export = __webpack_require__(1);
23129
+ var core = __webpack_require__(38);
23130
+ var global = __webpack_require__(4);
23131
+ var speciesConstructor = __webpack_require__(105);
23132
+ var promiseResolve = __webpack_require__(215);
23133
+
23134
+ $export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
23135
+ var C = speciesConstructor(this, core.Promise || global.Promise);
23136
+ var isFunction = typeof onFinally == 'function';
23137
+ return this.then(
23138
+ isFunction ? function (x) {
23139
+ return promiseResolve(C, onFinally()).then(function () { return x; });
23140
+ } : onFinally,
23141
+ isFunction ? function (e) {
23142
+ return promiseResolve(C, onFinally()).then(function () { throw e; });
23143
+ } : onFinally
23144
+ );
23145
+ } });
23146
+
23147
+
23148
+ /***/ }),
23149
+ /* 487 */
23150
+ /***/ (function(module, exports, __webpack_require__) {
23151
+
23152
+ "use strict";
23153
+
23154
+ // https://github.com/tc39/proposal-promise-try
23155
+ var $export = __webpack_require__(1);
23156
+ var newPromiseCapability = __webpack_require__(153);
23157
+ var perform = __webpack_require__(214);
23158
+
23159
+ $export($export.S, 'Promise', { 'try': function (callbackfn) {
23160
+ var promiseCapability = newPromiseCapability.f(this);
23161
+ var result = perform(callbackfn);
23162
+ (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
23163
+ return promiseCapability.promise;
23164
+ } });
23165
+
23166
+
23167
+ /***/ }),
23168
+ /* 488 */
23169
+ /***/ (function(module, exports, __webpack_require__) {
23170
+
23171
+ var metadata = __webpack_require__(45);
23172
+ var anObject = __webpack_require__(3);
23173
+ var toMetaKey = metadata.key;
23174
+ var ordinaryDefineOwnMetadata = metadata.set;
23175
+
23176
+ metadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {
23177
+ ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));
23178
+ } });
23179
+
23180
+
23181
+ /***/ }),
23182
+ /* 489 */
23183
+ /***/ (function(module, exports, __webpack_require__) {
23184
+
23185
+ var metadata = __webpack_require__(45);
23186
+ var anObject = __webpack_require__(3);
23187
+ var toMetaKey = metadata.key;
23188
+ var getOrCreateMetadataMap = metadata.map;
23189
+ var store = metadata.store;
23190
+
23191
+ metadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {
23192
+ var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);
23193
+ var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);
23194
+ if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;
23195
+ if (metadataMap.size) return true;
23196
+ var targetMetadata = store.get(target);
23197
+ targetMetadata['delete'](targetKey);
23198
+ return !!targetMetadata.size || store['delete'](target);
23199
+ } });
23200
+
23201
+
23202
+ /***/ }),
23203
+ /* 490 */
23204
+ /***/ (function(module, exports, __webpack_require__) {
23205
+
23206
+ var metadata = __webpack_require__(45);
23207
+ var anObject = __webpack_require__(3);
23208
+ var getPrototypeOf = __webpack_require__(31);
23209
+ var ordinaryHasOwnMetadata = metadata.has;
23210
+ var ordinaryGetOwnMetadata = metadata.get;
23211
+ var toMetaKey = metadata.key;
23212
+
23213
+ var ordinaryGetMetadata = function (MetadataKey, O, P) {
23214
+ var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
23215
+ if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);
23216
+ var parent = getPrototypeOf(O);
23217
+ return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;
23218
+ };
23219
+
23220
+ metadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {
23221
+ return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
23222
+ } });
23223
+
23224
+
23225
+ /***/ }),
23226
+ /* 491 */
23227
+ /***/ (function(module, exports, __webpack_require__) {
23228
+
23229
+ var Set = __webpack_require__(218);
23230
+ var from = __webpack_require__(227);
23231
+ var metadata = __webpack_require__(45);
23232
+ var anObject = __webpack_require__(3);
23233
+ var getPrototypeOf = __webpack_require__(31);
23234
+ var ordinaryOwnMetadataKeys = metadata.keys;
23235
+ var toMetaKey = metadata.key;
23236
+
23237
+ var ordinaryMetadataKeys = function (O, P) {
23238
+ var oKeys = ordinaryOwnMetadataKeys(O, P);
23239
+ var parent = getPrototypeOf(O);
23240
+ if (parent === null) return oKeys;
23241
+ var pKeys = ordinaryMetadataKeys(parent, P);
23242
+ return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;
23243
+ };
23244
+
23245
+ metadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {
23246
+ return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
23247
+ } });
23248
+
23249
+
23250
+ /***/ }),
23251
+ /* 492 */
23252
+ /***/ (function(module, exports, __webpack_require__) {
23253
+
23254
+ var metadata = __webpack_require__(45);
23255
+ var anObject = __webpack_require__(3);
23256
+ var ordinaryGetOwnMetadata = metadata.get;
23257
+ var toMetaKey = metadata.key;
23258
+
23259
+ metadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {
23260
+ return ordinaryGetOwnMetadata(metadataKey, anObject(target)
23261
+ , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
23262
+ } });
23263
+
23264
+
23265
+ /***/ }),
23266
+ /* 493 */
23267
+ /***/ (function(module, exports, __webpack_require__) {
23268
+
23269
+ var metadata = __webpack_require__(45);
23270
+ var anObject = __webpack_require__(3);
23271
+ var ordinaryOwnMetadataKeys = metadata.keys;
23272
+ var toMetaKey = metadata.key;
23273
+
23274
+ metadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {
23275
+ return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
23276
+ } });
23277
+
23278
+
23279
+ /***/ }),
23280
+ /* 494 */
23281
+ /***/ (function(module, exports, __webpack_require__) {
23282
+
23283
+ var metadata = __webpack_require__(45);
23284
+ var anObject = __webpack_require__(3);
23285
+ var getPrototypeOf = __webpack_require__(31);
23286
+ var ordinaryHasOwnMetadata = metadata.has;
23287
+ var toMetaKey = metadata.key;
23288
+
23289
+ var ordinaryHasMetadata = function (MetadataKey, O, P) {
23290
+ var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
23291
+ if (hasOwn) return true;
23292
+ var parent = getPrototypeOf(O);
23293
+ return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;
23294
+ };
23295
+
23296
+ metadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {
23297
+ return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
23298
+ } });
23299
+
23300
+
23301
+ /***/ }),
23302
+ /* 495 */
23303
+ /***/ (function(module, exports, __webpack_require__) {
23304
+
23305
+ var metadata = __webpack_require__(45);
23306
+ var anObject = __webpack_require__(3);
23307
+ var ordinaryHasOwnMetadata = metadata.has;
23308
+ var toMetaKey = metadata.key;
23309
+
23310
+ metadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {
23311
+ return ordinaryHasOwnMetadata(metadataKey, anObject(target)
23312
+ , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
23313
+ } });
23314
+
23315
+
23316
+ /***/ }),
23317
+ /* 496 */
23318
+ /***/ (function(module, exports, __webpack_require__) {
23319
+
23320
+ var $metadata = __webpack_require__(45);
23321
+ var anObject = __webpack_require__(3);
23322
+ var aFunction = __webpack_require__(20);
23323
+ var toMetaKey = $metadata.key;
23324
+ var ordinaryDefineOwnMetadata = $metadata.set;
23325
+
23326
+ $metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {
23327
+ return function decorator(target, targetKey) {
23328
+ ordinaryDefineOwnMetadata(
23329
+ metadataKey, metadataValue,
23330
+ (targetKey !== undefined ? anObject : aFunction)(target),
23331
+ toMetaKey(targetKey)
23332
+ );
23333
+ };
23334
+ } });
23335
+
23336
+
23337
+ /***/ }),
23338
+ /* 497 */
23339
+ /***/ (function(module, exports, __webpack_require__) {
23340
+
23341
+ // https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask
23342
+ var $export = __webpack_require__(1);
23343
+ var microtask = __webpack_require__(152)();
23344
+ var process = __webpack_require__(4).process;
23345
+ var isNode = __webpack_require__(36)(process) == 'process';
23346
+
23347
+ $export($export.G, {
23348
+ asap: function asap(fn) {
23349
+ var domain = isNode && process.domain;
23350
+ microtask(domain ? domain.bind(fn) : fn);
23351
+ }
23352
+ });
23353
+
23354
+
23355
+ /***/ }),
23356
+ /* 498 */
23357
+ /***/ (function(module, exports, __webpack_require__) {
23358
+
23359
+ "use strict";
23360
+
23361
+ // https://github.com/zenparsing/es-observable
23362
+ var $export = __webpack_require__(1);
23363
+ var global = __webpack_require__(4);
23364
+ var core = __webpack_require__(38);
23365
+ var microtask = __webpack_require__(152)();
23366
+ var OBSERVABLE = __webpack_require__(9)('observable');
23367
+ var aFunction = __webpack_require__(20);
23368
+ var anObject = __webpack_require__(3);
23369
+ var anInstance = __webpack_require__(61);
23370
+ var redefineAll = __webpack_require__(63);
23371
+ var hide = __webpack_require__(25);
23372
+ var forOf = __webpack_require__(62);
23373
+ var RETURN = forOf.RETURN;
23374
+
23375
+ var getMethod = function (fn) {
23376
+ return fn == null ? undefined : aFunction(fn);
23377
+ };
23378
+
23379
+ var cleanupSubscription = function (subscription) {
23380
+ var cleanup = subscription._c;
23381
+ if (cleanup) {
23382
+ subscription._c = undefined;
23383
+ cleanup();
23384
+ }
23385
+ };
23386
+
23387
+ var subscriptionClosed = function (subscription) {
23388
+ return subscription._o === undefined;
23389
+ };
23390
+
23391
+ var closeSubscription = function (subscription) {
23392
+ if (!subscriptionClosed(subscription)) {
23393
+ subscription._o = undefined;
23394
+ cleanupSubscription(subscription);
23395
+ }
23396
+ };
23397
+
23398
+ var Subscription = function (observer, subscriber) {
23399
+ anObject(observer);
23400
+ this._c = undefined;
23401
+ this._o = observer;
23402
+ observer = new SubscriptionObserver(this);
23403
+ try {
23404
+ var cleanup = subscriber(observer);
23405
+ var subscription = cleanup;
23406
+ if (cleanup != null) {
23407
+ if (typeof cleanup.unsubscribe === 'function') cleanup = function () { subscription.unsubscribe(); };
23408
+ else aFunction(cleanup);
23409
+ this._c = cleanup;
23410
+ }
23411
+ } catch (e) {
23412
+ observer.error(e);
23413
+ return;
23414
+ } if (subscriptionClosed(this)) cleanupSubscription(this);
23415
+ };
23416
+
23417
+ Subscription.prototype = redefineAll({}, {
23418
+ unsubscribe: function unsubscribe() { closeSubscription(this); }
23419
+ });
23420
+
23421
+ var SubscriptionObserver = function (subscription) {
23422
+ this._s = subscription;
23423
+ };
23424
+
23425
+ SubscriptionObserver.prototype = redefineAll({}, {
23426
+ next: function next(value) {
23427
+ var subscription = this._s;
23428
+ if (!subscriptionClosed(subscription)) {
23429
+ var observer = subscription._o;
23430
+ try {
23431
+ var m = getMethod(observer.next);
23432
+ if (m) return m.call(observer, value);
23433
+ } catch (e) {
23434
+ try {
23435
+ closeSubscription(subscription);
23436
+ } finally {
23437
+ throw e;
23438
+ }
23439
+ }
23440
+ }
23441
+ },
23442
+ error: function error(value) {
23443
+ var subscription = this._s;
23444
+ if (subscriptionClosed(subscription)) throw value;
23445
+ var observer = subscription._o;
23446
+ subscription._o = undefined;
23447
+ try {
23448
+ var m = getMethod(observer.error);
23449
+ if (!m) throw value;
23450
+ value = m.call(observer, value);
23451
+ } catch (e) {
23452
+ try {
23453
+ cleanupSubscription(subscription);
23454
+ } finally {
23455
+ throw e;
23456
+ }
23457
+ } cleanupSubscription(subscription);
23458
+ return value;
23459
+ },
23460
+ complete: function complete(value) {
23461
+ var subscription = this._s;
23462
+ if (!subscriptionClosed(subscription)) {
23463
+ var observer = subscription._o;
23464
+ subscription._o = undefined;
23465
+ try {
23466
+ var m = getMethod(observer.complete);
23467
+ value = m ? m.call(observer, value) : undefined;
23468
+ } catch (e) {
23469
+ try {
23470
+ cleanupSubscription(subscription);
23471
+ } finally {
23472
+ throw e;
23473
+ }
23474
+ } cleanupSubscription(subscription);
23475
+ return value;
23476
+ }
23477
+ }
23478
+ });
23479
+
23480
+ var $Observable = function Observable(subscriber) {
23481
+ anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber);
23482
+ };
23483
+
23484
+ redefineAll($Observable.prototype, {
23485
+ subscribe: function subscribe(observer) {
23486
+ return new Subscription(observer, this._f);
23487
+ },
23488
+ forEach: function forEach(fn) {
23489
+ var that = this;
23490
+ return new (core.Promise || global.Promise)(function (resolve, reject) {
23491
+ aFunction(fn);
23492
+ var subscription = that.subscribe({
23493
+ next: function (value) {
23494
+ try {
23495
+ return fn(value);
23496
+ } catch (e) {
23497
+ reject(e);
23498
+ subscription.unsubscribe();
23499
+ }
23500
+ },
23501
+ error: reject,
23502
+ complete: resolve
23503
+ });
23504
+ });
23505
+ }
23506
+ });
23507
+
23508
+ redefineAll($Observable, {
23509
+ from: function from(x) {
23510
+ var C = typeof this === 'function' ? this : $Observable;
23511
+ var method = getMethod(anObject(x)[OBSERVABLE]);
23512
+ if (method) {
23513
+ var observable = anObject(method.call(x));
23514
+ return observable.constructor === C ? observable : new C(function (observer) {
23515
+ return observable.subscribe(observer);
23516
+ });
23517
+ }
23518
+ return new C(function (observer) {
23519
+ var done = false;
23520
+ microtask(function () {
23521
+ if (!done) {
23522
+ try {
23523
+ if (forOf(x, false, function (it) {
23524
+ observer.next(it);
23525
+ if (done) return RETURN;
23526
+ }) === RETURN) return;
23527
+ } catch (e) {
23528
+ if (done) throw e;
23529
+ observer.error(e);
23530
+ return;
23531
+ } observer.complete();
23532
+ }
23533
+ });
23534
+ return function () { done = true; };
23535
+ });
23536
+ },
23537
+ of: function of() {
23538
+ for (var i = 0, l = arguments.length, items = new Array(l); i < l;) items[i] = arguments[i++];
23539
+ return new (typeof this === 'function' ? this : $Observable)(function (observer) {
23540
+ var done = false;
23541
+ microtask(function () {
23542
+ if (!done) {
23543
+ for (var j = 0; j < items.length; ++j) {
23544
+ observer.next(items[j]);
23545
+ if (done) return;
23546
+ } observer.complete();
23547
+ }
23548
+ });
23549
+ return function () { done = true; };
23550
+ });
23551
+ }
23552
+ });
23553
+
23554
+ hide($Observable.prototype, OBSERVABLE, function () { return this; });
23555
+
23556
+ $export($export.G, { Observable: $Observable });
23557
+
23558
+ __webpack_require__(60)('Observable');
23559
+
23560
+
23561
+ /***/ }),
23562
+ /* 499 */
23563
+ /***/ (function(module, exports, __webpack_require__) {
23564
+
23565
+ // ie9- setTimeout & setInterval additional parameters fix
23566
+ var global = __webpack_require__(4);
23567
+ var $export = __webpack_require__(1);
23568
+ var userAgent = __webpack_require__(155);
23569
+ var slice = [].slice;
23570
+ var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check
23571
+ var wrap = function (set) {
23572
+ return function (fn, time /* , ...args */) {
23573
+ var boundArgs = arguments.length > 2;
23574
+ var args = boundArgs ? slice.call(arguments, 2) : false;
23575
+ return set(boundArgs ? function () {
23576
+ // eslint-disable-next-line no-new-func
23577
+ (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);
23578
+ } : fn, time);
23579
+ };
23580
+ };
23581
+ $export($export.G + $export.B + $export.F * MSIE, {
23582
+ setTimeout: wrap(global.setTimeout),
23583
+ setInterval: wrap(global.setInterval)
23584
+ });
23585
+
23586
+
23587
+ /***/ }),
23588
+ /* 500 */
23589
+ /***/ (function(module, exports, __webpack_require__) {
23590
+
23591
+ var $export = __webpack_require__(1);
23592
+ var $task = __webpack_require__(151);
23593
+ $export($export.G + $export.B, {
23594
+ setImmediate: $task.set,
23595
+ clearImmediate: $task.clear
23596
+ });
23597
+
23598
+
23599
+ /***/ }),
23600
+ /* 501 */
23601
+ /***/ (function(module, exports, __webpack_require__) {
23602
+
23603
+ var $iterators = __webpack_require__(150);
23604
+ var getKeys = __webpack_require__(56);
23605
+ var redefine = __webpack_require__(26);
23606
+ var global = __webpack_require__(4);
23607
+ var hide = __webpack_require__(25);
23608
+ var Iterators = __webpack_require__(74);
23609
+ var wks = __webpack_require__(9);
23610
+ var ITERATOR = wks('iterator');
23611
+ var TO_STRING_TAG = wks('toStringTag');
23612
+ var ArrayValues = Iterators.Array;
23613
+
23614
+ var DOMIterables = {
23615
+ CSSRuleList: true, // TODO: Not spec compliant, should be false.
23616
+ CSSStyleDeclaration: false,
23617
+ CSSValueList: false,
23618
+ ClientRectList: false,
23619
+ DOMRectList: false,
23620
+ DOMStringList: false,
23621
+ DOMTokenList: true,
23622
+ DataTransferItemList: false,
23623
+ FileList: false,
23624
+ HTMLAllCollection: false,
23625
+ HTMLCollection: false,
23626
+ HTMLFormElement: false,
23627
+ HTMLSelectElement: false,
23628
+ MediaList: true, // TODO: Not spec compliant, should be false.
23629
+ MimeTypeArray: false,
23630
+ NamedNodeMap: false,
23631
+ NodeList: true,
23632
+ PaintRequestList: false,
23633
+ Plugin: false,
23634
+ PluginArray: false,
23635
+ SVGLengthList: false,
23636
+ SVGNumberList: false,
23637
+ SVGPathSegList: false,
23638
+ SVGPointList: false,
23639
+ SVGStringList: false,
23640
+ SVGTransformList: false,
23641
+ SourceBufferList: false,
23642
+ StyleSheetList: true, // TODO: Not spec compliant, should be false.
23643
+ TextTrackCueList: false,
23644
+ TextTrackList: false,
23645
+ TouchList: false
23646
+ };
23647
+
23648
+ for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
23649
+ var NAME = collections[i];
23650
+ var explicit = DOMIterables[NAME];
23651
+ var Collection = global[NAME];
23652
+ var proto = Collection && Collection.prototype;
23653
+ var key;
23654
+ if (proto) {
23655
+ if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
23656
+ if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
23657
+ Iterators[NAME] = ArrayValues;
23658
+ if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);
23659
+ }
23660
+ }
23661
+
23662
+
23663
+ /***/ }),
23664
+ /* 502 */
23665
+ /***/ (function(module, exports, __webpack_require__) {
23666
+
23667
+ /* WEBPACK VAR INJECTION */(function(global) {/**
23668
+ * Copyright (c) 2014, Facebook, Inc.
23669
+ * All rights reserved.
23670
+ *
23671
+ * This source code is licensed under the BSD-style license found in the
23672
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
23673
+ * additional grant of patent rights can be found in the PATENTS file in
23674
+ * the same directory.
23675
+ */
23676
+
23677
+ !(function(global) {
23678
+ "use strict";
23679
+
23680
+ var Op = Object.prototype;
23681
+ var hasOwn = Op.hasOwnProperty;
23682
+ var undefined; // More compressible than void 0.
23683
+ var $Symbol = typeof Symbol === "function" ? Symbol : {};
23684
+ var iteratorSymbol = $Symbol.iterator || "@@iterator";
23685
+ var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
23686
+ var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
23687
+
23688
+ var inModule = typeof module === "object";
23689
+ var runtime = global.regeneratorRuntime;
23690
+ if (runtime) {
23691
+ if (inModule) {
23692
+ // If regeneratorRuntime is defined globally and we're in a module,
23693
+ // make the exports object identical to regeneratorRuntime.
23694
+ module.exports = runtime;
23695
+ }
23696
+ // Don't bother evaluating the rest of this file if the runtime was
23697
+ // already defined globally.
23698
+ return;
23699
+ }
23700
+
23701
+ // Define the runtime globally (as expected by generated code) as either
23702
+ // module.exports (if we're in a module) or a new, empty object.
23703
+ runtime = global.regeneratorRuntime = inModule ? module.exports : {};
23704
+
23705
+ function wrap(innerFn, outerFn, self, tryLocsList) {
23706
+ // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
23707
+ var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
23708
+ var generator = Object.create(protoGenerator.prototype);
23709
+ var context = new Context(tryLocsList || []);
23710
+
23711
+ // The ._invoke method unifies the implementations of the .next,
23712
+ // .throw, and .return methods.
23713
+ generator._invoke = makeInvokeMethod(innerFn, self, context);
23714
+
23715
+ return generator;
23716
+ }
23717
+ runtime.wrap = wrap;
23718
+
23719
+ // Try/catch helper to minimize deoptimizations. Returns a completion
23720
+ // record like context.tryEntries[i].completion. This interface could
23721
+ // have been (and was previously) designed to take a closure to be
23722
+ // invoked without arguments, but in all the cases we care about we
23723
+ // already have an existing method we want to call, so there's no need
23724
+ // to create a new function object. We can even get away with assuming
23725
+ // the method takes exactly one argument, since that happens to be true
23726
+ // in every case, so we don't have to touch the arguments object. The
23727
+ // only additional allocation required is the completion record, which
23728
+ // has a stable shape and so hopefully should be cheap to allocate.
23729
+ function tryCatch(fn, obj, arg) {
23730
+ try {
23731
+ return { type: "normal", arg: fn.call(obj, arg) };
23732
+ } catch (err) {
23733
+ return { type: "throw", arg: err };
23734
+ }
23735
+ }
23736
+
23737
+ var GenStateSuspendedStart = "suspendedStart";
23738
+ var GenStateSuspendedYield = "suspendedYield";
23739
+ var GenStateExecuting = "executing";
23740
+ var GenStateCompleted = "completed";
23741
+
23742
+ // Returning this object from the innerFn has the same effect as
23743
+ // breaking out of the dispatch switch statement.
23744
+ var ContinueSentinel = {};
23745
+
23746
+ // Dummy constructor functions that we use as the .constructor and
23747
+ // .constructor.prototype properties for functions that return Generator
23748
+ // objects. For full spec compliance, you may wish to configure your
23749
+ // minifier not to mangle the names of these two functions.
23750
+ function Generator() {}
23751
+ function GeneratorFunction() {}
23752
+ function GeneratorFunctionPrototype() {}
23753
+
23754
+ // This is a polyfill for %IteratorPrototype% for environments that
23755
+ // don't natively support it.
23756
+ var IteratorPrototype = {};
23757
+ IteratorPrototype[iteratorSymbol] = function () {
23758
+ return this;
23759
+ };
23760
+
23761
+ var getProto = Object.getPrototypeOf;
23762
+ var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
23763
+ if (NativeIteratorPrototype &&
23764
+ NativeIteratorPrototype !== Op &&
23765
+ hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
23766
+ // This environment has a native %IteratorPrototype%; use it instead
23767
+ // of the polyfill.
23768
+ IteratorPrototype = NativeIteratorPrototype;
23769
+ }
23770
+
23771
+ var Gp = GeneratorFunctionPrototype.prototype =
23772
+ Generator.prototype = Object.create(IteratorPrototype);
23773
+ GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
23774
+ GeneratorFunctionPrototype.constructor = GeneratorFunction;
23775
+ GeneratorFunctionPrototype[toStringTagSymbol] =
23776
+ GeneratorFunction.displayName = "GeneratorFunction";
23777
+
23778
+ // Helper for defining the .next, .throw, and .return methods of the
23779
+ // Iterator interface in terms of a single ._invoke method.
23780
+ function defineIteratorMethods(prototype) {
23781
+ ["next", "throw", "return"].forEach(function(method) {
23782
+ prototype[method] = function(arg) {
23783
+ return this._invoke(method, arg);
23784
+ };
23785
+ });
23786
+ }
23787
+
23788
+ runtime.isGeneratorFunction = function(genFun) {
23789
+ var ctor = typeof genFun === "function" && genFun.constructor;
23790
+ return ctor
23791
+ ? ctor === GeneratorFunction ||
23792
+ // F