Orbit Fox by ThemeIsle - Version 2.6.2

Version Description

  • 2018-10-29
Download this release

Release Info

Developer codeinwp
Plugin Icon 128x128 Orbit Fox by ThemeIsle
Version 2.6.2
Comparing to
See all releases

Code changes from version 2.6.1 to 2.6.2

CHANGELOG.md CHANGED
@@ -1,4 +1,9 @@
1
 
 
 
 
 
 
2
  ### v2.6.1 - 2018-10-10
3
  **Changes:**
4
  * Added backward compatibility for Font Awesome 4
1
 
2
+ ### v2.6.2 - 2018-10-29
3
+ **Changes:**
4
+ * Adds Image Optimization and CDN module available for everyone.
5
+ * Small improvements to the Gutenberg module.
6
+
7
  ### v2.6.1 - 2018-10-10
8
  **Changes:**
9
  * Added backward compatibility for Font Awesome 4
core/app/class-orbit-fox-global-settings.php CHANGED
@@ -62,6 +62,7 @@ class Orbit_Fox_Global_Settings {
62
  'obfx_modules',
63
  array(
64
  'social-sharing',
 
65
  'uptime-monitor',
66
  'google-analytics',
67
  'gutenberg-blocks',
@@ -73,7 +74,6 @@ class Orbit_Fox_Global_Settings {
73
  'policy-notice',
74
  'beaver-widgets',
75
  'safe-updates',
76
- 'image-cdn',
77
  )
78
  );
79
  }// End if().
62
  'obfx_modules',
63
  array(
64
  'social-sharing',
65
+ 'image-cdn',
66
  'uptime-monitor',
67
  'google-analytics',
68
  'gutenberg-blocks',
74
  'policy-notice',
75
  'beaver-widgets',
76
  'safe-updates',
 
77
  )
78
  );
79
  }// End if().
core/app/views/partials/module-tile-tpl.php CHANGED
@@ -48,7 +48,7 @@ if ( ! empty( $confirm_intent ) ) {
48
  $noance = wp_create_nonce( 'obfx_activate_mod_' . $slug );
49
 
50
  ?>
51
- <div class="tile">
52
  <div class="tile-icon">
53
  <div class="example-tile-icon">
54
  <i class="dashicons dashicons-admin-plugins centered"></i>
@@ -74,8 +74,9 @@ $noance = wp_create_nonce( 'obfx_activate_mod_' . $slug );
74
  echo wp_kses_post( $modal );
75
  }
76
  ?>
 
77
  </div>
78
  </div>
79
-
80
  </div>
81
 
48
  $noance = wp_create_nonce( 'obfx_activate_mod_' . $slug );
49
 
50
  ?>
51
+ <div class="tile <?php echo 'obfx-tile-' . esc_attr( $slug ); ?>" >
52
  <div class="tile-icon">
53
  <div class="example-tile-icon">
54
  <i class="dashicons dashicons-admin-plugins centered"></i>
74
  echo wp_kses_post( $modal );
75
  }
76
  ?>
77
+ <?php do_action( 'obfx_activate_btn_before', $slug, $checked === 'checked' ); ?>
78
  </div>
79
  </div>
80
+ <?php do_action( 'obfx_module_tile_after', $slug, $checked === 'checked' ); ?>
81
  </div>
82
 
core/assets/css/orbit-fox-admin.css CHANGED
@@ -8,7 +8,7 @@
8
  * Extends Spectre.css Library
9
  */
10
  /*
11
- Version: 2.6.1
12
  */
13
 
14
  /* Document
@@ -3054,7 +3054,7 @@ html {
3054
  display: flex;
3055
  display: -ms-flexbox;
3056
  display: -webkit-flex;
3057
-
3058
  -webkit-align-content: space-between;
3059
  align-content: space-between;
3060
  -webkit-align-items: flex-start;
@@ -3725,7 +3725,31 @@ html {
3725
  line-height: 1.8rem;
3726
  text-align: center;
3727
  }
3728
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3729
  .obfx-img-logout {
3730
  position: relative;
3731
  top: -15px;
8
  * Extends Spectre.css Library
9
  */
10
  /*
11
+ Version: 2.6.2
12
  */
13
 
14
  /* Document
3054
  display: flex;
3055
  display: -ms-flexbox;
3056
  display: -webkit-flex;
3057
+ position: relative;
3058
  -webkit-align-content: space-between;
3059
  align-content: space-between;
3060
  -webkit-align-items: flex-start;
3725
  line-height: 1.8rem;
3726
  text-align: center;
3727
  }
3728
+ a.obfx-no-link:hover,
3729
+ a.obfx-no-link{
3730
+ color:#bbc1cd;
3731
+ }
3732
+ .obfx-tryout-message{
3733
+ right: -15px;
3734
+ font-size: 90%;
3735
+ top: -9px;
3736
+ position: absolute;
3737
+ background: #5764c6;
3738
+ padding: 5px;
3739
+ border-bottom-left-radius: 10px;
3740
+ }
3741
+ .obfx-tile-image-cdn .tile-action{
3742
+ margin-top: 35px;
3743
+ }
3744
+ .obfx-tryout-message a:hover,
3745
+ .obfx-tryout-message a{
3746
+ color: #fff;
3747
+ text-decoration: none;
3748
+ }
3749
+ .obfx-title-new{
3750
+ color:#2faa3f;
3751
+ font-weight: bold;
3752
+ }
3753
  .obfx-img-logout {
3754
  position: relative;
3755
  top: -15px;
core/includes/class-orbit-fox.php CHANGED
@@ -69,7 +69,7 @@ class Orbit_Fox {
69
 
70
  $this->plugin_name = 'orbit-fox';
71
 
72
- $this->version = '2.6.1';
73
 
74
  $this->load_dependencies();
75
  $this->set_locale();
69
 
70
  $this->plugin_name = 'orbit-fox';
71
 
72
+ $this->version = '2.6.2';
73
 
74
  $this->load_dependencies();
75
  $this->set_locale();
obfx_modules/gutenberg-blocks/Readme.md DELETED
@@ -1,10 +0,0 @@
1
- OrbitFox Gutenberg Blocks
2
- ---------------------
3
-
4
- General structure of this module should be as the following:
5
-
6
- * Load the transpiled code from the `build` dir, aka the "dist" folder.
7
- * The functionality for each block should be isolated in it's own folder inside the `blocks` dir.
8
- * If a block needs server side rendering than it should have an extension class of the `/OrbitFox/Gutenberg_Block` class.
9
- * Common components, like a placeholder, can easily stand inside the `components` dir.
10
- * Any server side data handling should happen in the `store`.
 
 
 
 
 
 
 
 
 
 
obfx_modules/gutenberg-blocks/blocks/chart/index.js DELETED
@@ -1,224 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { Chart } from "react-google-charts";
5
-
6
- import { HotTable } from '@handsontable/react';
7
-
8
- import 'handsontable/dist/handsontable.full.css';
9
-
10
- /**
11
- * WordPress dependencies.
12
- */
13
- const { __ } = wp.i18n;
14
-
15
- const { registerBlockType } = wp.blocks;
16
-
17
- const {
18
- Button,
19
- Dashicon,
20
- FormToggle,
21
- PanelBody,
22
- PanelRow,
23
- TextControl,
24
- Toolbar,
25
- Tooltip,
26
- } = wp.components;
27
-
28
- const {
29
- compose,
30
- withState,
31
- } = wp.compose;
32
-
33
- const { withSelect } = wp.data;
34
-
35
- const {
36
- BlockControls,
37
- InspectorControls,
38
- } = wp.editor;
39
-
40
- const { Fragment } = wp.element;
41
-
42
- /**
43
- * Internal dependencies
44
- */
45
- import './editor.scss';
46
-
47
- registerBlockType( 'orbitfox/chart-pie', {
48
- title: __( 'Pie Chart' ),
49
- description: __( 'Display a beautiful Pie Chart on your blog post with Pie Chart block.' ),
50
- icon: 'chart-pie',
51
- category: 'orbitfox',
52
- keywords: [
53
- __( 'pie' ),
54
- __( 'chart' ),
55
- __( 'orbitfox' ),
56
- ],
57
- attributes: {
58
- data: {
59
- type: 'string',
60
- default: '[["Label","Data"],["Dogs",40],["Cats",30],["Racoons",20],["Monkeys",10]]',
61
- },
62
- options: {
63
- type: 'object',
64
- default: {
65
- title: 'Animals',
66
- is3D: true,
67
- },
68
- },
69
- id: {
70
- type: 'string',
71
- default: '',
72
- }
73
- },
74
-
75
- supports: {
76
- align: true,
77
- },
78
-
79
- edit: compose( [
80
-
81
- withSelect( ( select, props ) => {
82
- return {
83
- props,
84
- };
85
- } ),
86
-
87
- withState( {
88
- isOpen: false,
89
- } )
90
-
91
- ] )( ( { isOpen, setState, props, className } ) => {
92
-
93
- const updateData = ( value, source ) => {
94
- if ( value !== null ) {
95
- const options = JSON.parse( [ props.attributes.data ] );
96
- value.forEach( item => {
97
- options[ item[0] ][ item[1] ] = item[3];
98
- });
99
- props.setAttributes( { data: JSON.stringify( options ) } );
100
- }
101
- };
102
-
103
- const addRow = () => {
104
- const options = JSON.parse( [ props.attributes.data ] );
105
- options.push( [ "", "" ] );
106
- props.setAttributes( { data: JSON.stringify( options ) } );
107
- };
108
-
109
- const changeChartTitle = value => {
110
- const options = { ...props.attributes.options };
111
- options['title'] = value;
112
- props.setAttributes( { options } );
113
- };
114
-
115
- const toggle3d = () => {
116
- const options = { ...props.attributes.options };
117
- options['is3D'] = !props.attributes.options.is3D;
118
- props.setAttributes( { options } );
119
- };
120
-
121
- if ( props.clientId && props.attributes.id === '' ) {
122
- const id = props.clientId;
123
- props.setAttributes( { id } );
124
- }
125
-
126
- return [
127
- <BlockControls key="toolbar-controls">
128
- <Toolbar
129
- className='components-toolbar'
130
- >
131
- <Tooltip text={ __( 'Edit Chart' ) }>
132
- <Button
133
- className="components-icon-button components-toolbar__control edit-pie-chart"
134
- onClick={ () => setState( { isOpen: ! isOpen } ) }
135
- >
136
- <Dashicon icon={ isOpen ? 'yes' : 'edit' } />
137
- </Button>
138
- </Tooltip>
139
- </Toolbar>
140
- </BlockControls>,
141
-
142
- <InspectorControls>
143
- <PanelBody
144
- title={ __( 'Chart Settings' ) }
145
- >
146
- <TextControl
147
- label={ __( 'Chart Title' ) }
148
- value={ props.attributes.options.title }
149
- onChange={ changeChartTitle }
150
- />
151
- <PanelRow>
152
- <label
153
- htmlFor="is-3d-form-toggle"
154
- >
155
- { __( 'Is chart 3d?' ) }
156
- </label>
157
- <FormToggle
158
- id="is-3d-form-toggle"
159
- label={ __( 'Is chart 3rd? ' ) }
160
- checked={ props.attributes.options.is3D }
161
- onChange={ toggle3d }
162
- />
163
- </PanelRow>
164
- </PanelBody>
165
- </InspectorControls>,
166
-
167
- <div className={ className }>
168
- { isOpen ?
169
- <Fragment>
170
- <HotTable
171
- data={ JSON.parse( props.attributes.data ) }
172
- allowInsertRow={ true }
173
- cell={ [
174
- {
175
- row: 0,
176
- col: 0,
177
- readOnly: true
178
- },
179
- {
180
- row: 0,
181
- col: 1,
182
- readOnly: true
183
- }
184
- ] }
185
- columns={ [
186
- {
187
- type: 'text',
188
- },
189
- {
190
- type: 'numeric',
191
- }
192
- ] }
193
- contextMenu={ true }
194
- className="htLeft"
195
- height="200"
196
- rowHeaders={ true }
197
- stretchH="all"
198
- onAfterChange={ ( value, source ) => updateData( value, source ) }
199
- />
200
- <Button
201
- onClick={ addRow }
202
- isPrimary
203
- >
204
- { __( 'Add another row' ) }
205
- </Button>
206
- </Fragment>
207
- :
208
- <Chart
209
- chartType="PieChart"
210
- data={ JSON.parse( props.attributes.data ) }
211
- options={ props.attributes.options }
212
- width="100%"
213
- height="400px"
214
- legendToggle
215
- />
216
- }
217
- </div>
218
- ];
219
- } ),
220
-
221
- save: () => {
222
- return null;
223
- },
224
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
obfx_modules/gutenberg-blocks/blocks/font-awesome-icons/style.scss DELETED
@@ -1,3 +0,0 @@
1
- .wp-block-orbitfox-font-awesome-icons {
2
- text-align: center;
3
- }
 
 
 
obfx_modules/gutenberg-blocks/build/block.js DELETED
@@ -1,4964 +0,0 @@
1
- /******/ (function(modules) { // webpackBootstrap
2
- /******/ // The module cache
3
- /******/ var installedModules = {};
4
- /******/
5
- /******/ // The require function
6
- /******/ function __webpack_require__(moduleId) {
7
- /******/
8
- /******/ // Check if module is in cache
9
- /******/ if(installedModules[moduleId]) {
10
- /******/ return installedModules[moduleId].exports;
11
- /******/ }
12
- /******/ // Create a new module (and put it into the cache)
13
- /******/ var module = installedModules[moduleId] = {
14
- /******/ i: moduleId,
15
- /******/ l: false,
16
- /******/ exports: {}
17
- /******/ };
18
- /******/
19
- /******/ // Execute the module function
20
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
- /******/
22
- /******/ // Flag the module as loaded
23
- /******/ module.l = true;
24
- /******/
25
- /******/ // Return the exports of the module
26
- /******/ return module.exports;
27
- /******/ }
28
- /******/
29
- /******/
30
- /******/ // expose the modules object (__webpack_modules__)
31
- /******/ __webpack_require__.m = modules;
32
- /******/
33
- /******/ // expose the module cache
34
- /******/ __webpack_require__.c = installedModules;
35
- /******/
36
- /******/ // define getter function for harmony exports
37
- /******/ __webpack_require__.d = function(exports, name, getter) {
38
- /******/ if(!__webpack_require__.o(exports, name)) {
39
- /******/ Object.defineProperty(exports, name, {
40
- /******/ configurable: false,
41
- /******/ enumerable: true,
42
- /******/ get: getter
43
- /******/ });
44
- /******/ }
45
- /******/ };
46
- /******/
47
- /******/ // define __esModule on exports
48
- /******/ __webpack_require__.r = function(exports) {
49
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
50
- /******/ };
51
- /******/
52
- /******/ // getDefaultExport function for compatibility with non-harmony modules
53
- /******/ __webpack_require__.n = function(module) {
54
- /******/ var getter = module && module.__esModule ?
55
- /******/ function getDefault() { return module['default']; } :
56
- /******/ function getModuleExports() { return module; };
57
- /******/ __webpack_require__.d(getter, 'a', getter);
58
- /******/ return getter;
59
- /******/ };
60
- /******/
61
- /******/ // Object.prototype.hasOwnProperty.call
62
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
63
- /******/
64
- /******/ // __webpack_public_path__
65
- /******/ __webpack_require__.p = "";
66
- /******/
67
- /******/
68
- /******/ // Load entry module and return exports
69
- /******/ return __webpack_require__(__webpack_require__.s = 0);
70
- /******/ })
71
- /************************************************************************/
72
- /******/ ({
73
-
74
- /***/ "./blocks/about-author/editor.scss":
75
- /*!*****************************************!*\
76
- !*** ./blocks/about-author/editor.scss ***!
77
- \*****************************************/
78
- /*! no static exports found */
79
- /***/ (function(module, exports) {
80
-
81
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/about-author/editor.scss?");
82
-
83
- /***/ }),
84
-
85
- /***/ "./blocks/about-author/index.js":
86
- /*!**************************************!*\
87
- !*** ./blocks/about-author/index.js ***!
88
- \**************************************/
89
- /*! no exports provided */
90
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
91
-
92
- "use strict";
93
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./editor.scss */ \"./blocks/about-author/editor.scss\");\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor_scss__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./style.scss */ \"./blocks/about-author/style.scss\");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_1__);\n/**\r\n * WordPress dependencies...\r\n */\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$compose = wp.compose,\n compose = _wp$compose.compose,\n withState = _wp$compose.withState;\nvar Spinner = wp.components.Spinner;\nvar withSelect = wp.data.withSelect;\n\n/**\r\n * Internal dependencies\r\n */\n\n\n\n\nregisterBlockType('orbitfox/about-author', {\n\ttitle: __('About Author'),\n\tdescription: __('About Author block is the easiest way to add a author bio below your posts.'),\n\ticon: 'admin-users',\n\tcategory: 'orbitfox',\n\tkeywords: ['about', 'author', 'profile'],\n\tattributes: {\n\t\tid: {\n\t\t\ttype: 'number'\n\t\t}\n\t},\n\n\tsupports: {\n\t\thtml: false\n\t},\n\n\tedit: compose([withSelect(function (select, props) {\n\t\treturn {\n\t\t\tpostAuthor: select('core/editor').getEditedPostAttribute('author'),\n\t\t\tauthors: select('core').getAuthors(),\n\t\t\tprops: props\n\t\t};\n\t}), withState({\n\t\tstatus: 0,\n\t\tauthor_details: {}\n\t})])(function (_ref) {\n\t\tvar postAuthor = _ref.postAuthor,\n\t\t authors = _ref.authors,\n\t\t status = _ref.status,\n\t\t author_details = _ref.author_details,\n\t\t setState = _ref.setState,\n\t\t props = _ref.props,\n\t\t className = _ref.className;\n\n\n\t\tif (status === 0 && postAuthor && authors && postAuthor !== props.attributes.id) {\n\t\t\tauthors.find(function (o) {\n\t\t\t\tif (o.id === postAuthor) {\n\t\t\t\t\tprops.setAttributes({ id: o.id });\n\t\t\t\t\tsetState({\n\t\t\t\t\t\tauthor_details: o,\n\t\t\t\t\t\tstatus: 1\n\t\t\t\t\t});\n\t\t\t\t\treturn o.id === postAuthor;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn status === 1 && postAuthor && authors ? wp.element.createElement(\n\t\t\t'section',\n\t\t\t{ className: className },\n\t\t\twp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'obfx-author-image' },\n\t\t\t\twp.element.createElement('img', { className: 'author-image', src: author_details.avatar_urls['96'], alt: author_details.name })\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'obfx-author-data' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'h4',\n\t\t\t\t\tnull,\n\t\t\t\t\tauthor_details.name\n\t\t\t\t),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'p',\n\t\t\t\t\tnull,\n\t\t\t\t\tauthor_details.description\n\t\t\t\t)\n\t\t\t)\n\t\t) : wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ key: 'loading', className: 'wp-block-embed is-loading' },\n\t\t\twp.element.createElement(Spinner, null),\n\t\t\twp.element.createElement(\n\t\t\t\t'p',\n\t\t\t\tnull,\n\t\t\t\t__('Loading…')\n\t\t\t)\n\t\t);\n\t}),\n\n\tsave: function save() {\n\t\treturn null;\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/about-author/index.js?");
94
-
95
- /***/ }),
96
-
97
- /***/ "./blocks/about-author/style.scss":
98
- /*!****************************************!*\
99
- !*** ./blocks/about-author/style.scss ***!
100
- \****************************************/
101
- /*! no static exports found */
102
- /***/ (function(module, exports) {
103
-
104
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/about-author/style.scss?");
105
-
106
- /***/ }),
107
-
108
- /***/ "./blocks/accordion-box/accordion-area.js":
109
- /*!************************************************!*\
110
- !*** ./blocks/accordion-box/accordion-area.js ***!
111
- \************************************************/
112
- /*! no static exports found */
113
- /***/ (function(module, exports) {
114
-
115
- eval("/**\r\n * WordPress dependencies...\r\n */\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar InnerBlocks = wp.editor.InnerBlocks;\n\n\nregisterBlockType('orbitfox/accordion-area', {\n\ttitle: __('Accordion'),\n\tdescription: __('Accordion block allows you to add beautiful accordions in your posts.'),\n\ticon: 'menu',\n\tcategory: 'orbitfox',\n\tkeywords: ['accordion', 'collapsible', 'orbitfox'],\n\n\tedit: function edit(props) {\n\t\tvar ALLOWED_BLOCKS = ['orbitfox/accordion-block'];\n\t\tvar TEMPLATE = [['orbitfox/accordion-block'], ['orbitfox/accordion-block'], ['orbitfox/accordion-block']];\n\t\treturn wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: props.className },\n\t\t\twp.element.createElement(\n\t\t\t\t'ul',\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(InnerBlocks, {\n\t\t\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t\t\ttemplate: TEMPLATE\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\t},\n\n\tsave: function save() {\n\t\treturn wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: 'wp-block-orbitfox-accordion-box' },\n\t\t\twp.element.createElement(\n\t\t\t\t'ul',\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(InnerBlocks.Content, null)\n\t\t\t)\n\t\t);\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/accordion-box/accordion-area.js?");
116
-
117
- /***/ }),
118
-
119
- /***/ "./blocks/accordion-box/accordion-block.js":
120
- /*!*************************************************!*\
121
- !*** ./blocks/accordion-box/accordion-block.js ***!
122
- \*************************************************/
123
- /*! no static exports found */
124
- /***/ (function(module, exports) {
125
-
126
- eval("/**\n * WordPress dependencies...\n */\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$editor = wp.editor,\n RichText = _wp$editor.RichText,\n InnerBlocks = _wp$editor.InnerBlocks;\n\n\nregisterBlockType('orbitfox/accordion-block', {\n\ttitle: __('Accordion Item'),\n\tdescription: __('Accordion block allows you to add beautiful accordions in your posts.'),\n\tparent: ['orbitfox/accordion-area'],\n\ticon: 'menu',\n\tcategory: 'orbitfox',\n\tkeywords: ['accordion', 'collapsible', 'orbitfox'],\n\n\tattributes: {\n\t\theading: {\n\t\t\ttype: 'array',\n\t\t\tsource: 'children',\n\t\t\tselector: '.accordion-heading'\n\t\t}\n\t},\n\n\tedit: function edit(props) {\n\n\t\tvar CONTENT = [['core/paragraph', {\n\t\t\tcontent: __('What is the point of being alive if you don’t at least try to do something remarkable?'),\n\t\t\tclassName: 'accordion-content'\n\t\t}]];\n\n\t\treturn wp.element.createElement(\n\t\t\t'li',\n\t\t\t{ className: props.className },\n\t\t\twp.element.createElement(RichText, {\n\t\t\t\ttagName: 'h4',\n\t\t\t\tclassName: 'accordion-heading',\n\t\t\t\tvalue: props.attributes.heading,\n\t\t\t\tplaceholder: 'Section Title',\n\t\t\t\tonChange: function onChange(heading) {\n\t\t\t\t\treturn props.setAttributes({ heading: heading });\n\t\t\t\t}\n\t\t\t}),\n\t\t\twp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'accordion-content' },\n\t\t\t\twp.element.createElement(InnerBlocks, {\n\t\t\t\t\ttemplate: CONTENT,\n\t\t\t\t\tid: 'accordion-content'\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\t},\n\n\tsave: function save(props) {\n\t\treturn wp.element.createElement(\n\t\t\t'li',\n\t\t\tnull,\n\t\t\twp.element.createElement('input', { type: 'checkbox', checked: true }),\n\t\t\twp.element.createElement('i', null),\n\t\t\twp.element.createElement(RichText.Content, {\n\t\t\t\ttagName: 'h4',\n\t\t\t\tclassName: 'accordion-heading',\n\t\t\t\tvalue: props.attributes.heading\n\t\t\t}),\n\t\t\twp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'accordion-content' },\n\t\t\t\twp.element.createElement(InnerBlocks.Content, null)\n\t\t\t)\n\t\t);\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/accordion-box/accordion-block.js?");
127
-
128
- /***/ }),
129
-
130
- /***/ "./blocks/accordion-box/editor.scss":
131
- /*!******************************************!*\
132
- !*** ./blocks/accordion-box/editor.scss ***!
133
- \******************************************/
134
- /*! no static exports found */
135
- /***/ (function(module, exports) {
136
-
137
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/accordion-box/editor.scss?");
138
-
139
- /***/ }),
140
-
141
- /***/ "./blocks/accordion-box/index.js":
142
- /*!***************************************!*\
143
- !*** ./blocks/accordion-box/index.js ***!
144
- \***************************************/
145
- /*! no exports provided */
146
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
147
-
148
- "use strict";
149
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./style.scss */ \"./blocks/accordion-box/style.scss\");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editor.scss */ \"./blocks/accordion-box/editor.scss\");\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_editor_scss__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _accordion_area_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./accordion-area.js */ \"./blocks/accordion-box/accordion-area.js\");\n/* harmony import */ var _accordion_area_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_accordion_area_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _accordion_block_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./accordion-block.js */ \"./blocks/accordion-box/accordion-block.js\");\n/* harmony import */ var _accordion_block_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_accordion_block_js__WEBPACK_IMPORTED_MODULE_3__);\n/**\n * Accordion Block\n */\n\n\n\n\n\n//# sourceURL=webpack:///./blocks/accordion-box/index.js?");
150
-
151
- /***/ }),
152
-
153
- /***/ "./blocks/accordion-box/style.scss":
154
- /*!*****************************************!*\
155
- !*** ./blocks/accordion-box/style.scss ***!
156
- \*****************************************/
157
- /*! no static exports found */
158
- /***/ (function(module, exports) {
159
-
160
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/accordion-box/style.scss?");
161
-
162
- /***/ }),
163
-
164
- /***/ "./blocks/chart/editor.scss":
165
- /*!**********************************!*\
166
- !*** ./blocks/chart/editor.scss ***!
167
- \**********************************/
168
- /*! no static exports found */
169
- /***/ (function(module, exports) {
170
-
171
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/chart/editor.scss?");
172
-
173
- /***/ }),
174
-
175
- /***/ "./blocks/chart/index.js":
176
- /*!*******************************!*\
177
- !*** ./blocks/chart/index.js ***!
178
- \*******************************/
179
- /*! no exports provided */
180
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
181
-
182
- "use strict";
183
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babel-runtime/helpers/extends */ \"./node_modules/babel-runtime/helpers/extends.js\");\n/* harmony import */ var babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var babel_runtime_core_js_json_stringify__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"./node_modules/babel-runtime/core-js/json/stringify.js\");\n/* harmony import */ var babel_runtime_core_js_json_stringify__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_core_js_json_stringify__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_google_charts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-google-charts */ \"./node_modules/react-google-charts/dist/index.esm.js\");\n/* harmony import */ var _handsontable_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @handsontable/react */ \"./node_modules/@handsontable/react/dist/react-handsontable.js\");\n/* harmony import */ var _handsontable_react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_handsontable_react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var handsontable_dist_handsontable_full_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! handsontable/dist/handsontable.full.css */ \"./node_modules/handsontable/dist/handsontable.full.css\");\n/* harmony import */ var handsontable_dist_handsontable_full_css__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(handsontable_dist_handsontable_full_css__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./editor.scss */ \"./blocks/chart/editor.scss\");\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_editor_scss__WEBPACK_IMPORTED_MODULE_5__);\n\n\n/**\r\n * External dependencies\r\n */\n\n\n\n\n\n\n/**\r\n * WordPress dependencies.\r\n */\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$components = wp.components,\n Button = _wp$components.Button,\n Dashicon = _wp$components.Dashicon,\n FormToggle = _wp$components.FormToggle,\n PanelBody = _wp$components.PanelBody,\n PanelRow = _wp$components.PanelRow,\n TextControl = _wp$components.TextControl,\n Toolbar = _wp$components.Toolbar,\n Tooltip = _wp$components.Tooltip;\nvar _wp$compose = wp.compose,\n compose = _wp$compose.compose,\n withState = _wp$compose.withState;\nvar withSelect = wp.data.withSelect;\nvar _wp$editor = wp.editor,\n BlockControls = _wp$editor.BlockControls,\n InspectorControls = _wp$editor.InspectorControls;\nvar Fragment = wp.element.Fragment;\n\n/**\r\n * Internal dependencies\r\n */\n\n\n\nregisterBlockType('orbitfox/chart-pie', {\n\ttitle: __('Pie Chart'),\n\tdescription: __('Display a beautiful Pie Chart on your blog post with Pie Chart block.'),\n\ticon: 'chart-pie',\n\tcategory: 'orbitfox',\n\tkeywords: [__('pie'), __('chart'), __('orbitfox')],\n\tattributes: {\n\t\tdata: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '[[\"Label\",\"Data\"],[\"Dogs\",40],[\"Cats\",30],[\"Racoons\",20],[\"Monkeys\",10]]'\n\t\t},\n\t\toptions: {\n\t\t\ttype: 'object',\n\t\t\tdefault: {\n\t\t\t\ttitle: 'Animals',\n\t\t\t\tis3D: true\n\t\t\t}\n\t\t},\n\t\tid: {\n\t\t\ttype: 'string',\n\t\t\tdefault: ''\n\t\t}\n\t},\n\n\tsupports: {\n\t\talign: true\n\t},\n\n\tedit: compose([withSelect(function (select, props) {\n\t\treturn {\n\t\t\tprops: props\n\t\t};\n\t}), withState({\n\t\tisOpen: false\n\t})])(function (_ref) {\n\t\tvar isOpen = _ref.isOpen,\n\t\t setState = _ref.setState,\n\t\t props = _ref.props,\n\t\t className = _ref.className;\n\n\n\t\tvar updateData = function updateData(value, source) {\n\t\t\tif (value !== null) {\n\t\t\t\tvar options = JSON.parse([props.attributes.data]);\n\t\t\t\tvalue.forEach(function (item) {\n\t\t\t\t\toptions[item[0]][item[1]] = item[3];\n\t\t\t\t});\n\t\t\t\tprops.setAttributes({ data: babel_runtime_core_js_json_stringify__WEBPACK_IMPORTED_MODULE_1___default()(options) });\n\t\t\t}\n\t\t};\n\n\t\tvar addRow = function addRow() {\n\t\t\tvar options = JSON.parse([props.attributes.data]);\n\t\t\toptions.push([\"\", \"\"]);\n\t\t\tprops.setAttributes({ data: babel_runtime_core_js_json_stringify__WEBPACK_IMPORTED_MODULE_1___default()(options) });\n\t\t};\n\n\t\tvar changeChartTitle = function changeChartTitle(value) {\n\t\t\tvar options = babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({}, props.attributes.options);\n\t\t\toptions['title'] = value;\n\t\t\tprops.setAttributes({ options: options });\n\t\t};\n\n\t\tvar toggle3d = function toggle3d() {\n\t\t\tvar options = babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({}, props.attributes.options);\n\t\t\toptions['is3D'] = !props.attributes.options.is3D;\n\t\t\tprops.setAttributes({ options: options });\n\t\t};\n\n\t\tif (props.clientId && props.attributes.id === '') {\n\t\t\tvar id = props.clientId;\n\t\t\tprops.setAttributes({ id: id });\n\t\t}\n\n\t\treturn [wp.element.createElement(\n\t\t\tBlockControls,\n\t\t\t{ key: 'toolbar-controls' },\n\t\t\twp.element.createElement(\n\t\t\t\tToolbar,\n\t\t\t\t{\n\t\t\t\t\tclassName: 'components-toolbar'\n\t\t\t\t},\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tTooltip,\n\t\t\t\t\t{ text: __('Edit Chart') },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tButton,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tclassName: 'components-icon-button components-toolbar__control edit-pie-chart',\n\t\t\t\t\t\t\tonClick: function onClick() {\n\t\t\t\t\t\t\t\treturn setState({ isOpen: !isOpen });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\twp.element.createElement(Dashicon, { icon: isOpen ? 'yes' : 'edit' })\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t), wp.element.createElement(\n\t\t\tInspectorControls,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tPanelBody,\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Chart Settings')\n\t\t\t\t},\n\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\tlabel: __('Chart Title'),\n\t\t\t\t\tvalue: props.attributes.options.title,\n\t\t\t\t\tonChange: changeChartTitle\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tPanelRow,\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'label',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\thtmlFor: 'is-3d-form-toggle'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t__('Is chart 3d?')\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(FormToggle, {\n\t\t\t\t\t\tid: 'is-3d-form-toggle',\n\t\t\t\t\t\tlabel: __('Is chart 3rd? '),\n\t\t\t\t\t\tchecked: props.attributes.options.is3D,\n\t\t\t\t\t\tonChange: toggle3d\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t)\n\t\t), wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: className },\n\t\t\tisOpen ? wp.element.createElement(\n\t\t\t\tFragment,\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(_handsontable_react__WEBPACK_IMPORTED_MODULE_3__[\"HotTable\"], {\n\t\t\t\t\tdata: JSON.parse(props.attributes.data),\n\t\t\t\t\tallowInsertRow: true,\n\t\t\t\t\tcell: [{\n\t\t\t\t\t\trow: 0,\n\t\t\t\t\t\tcol: 0,\n\t\t\t\t\t\treadOnly: true\n\t\t\t\t\t}, {\n\t\t\t\t\t\trow: 0,\n\t\t\t\t\t\tcol: 1,\n\t\t\t\t\t\treadOnly: true\n\t\t\t\t\t}],\n\t\t\t\t\tcolumns: [{\n\t\t\t\t\t\ttype: 'text'\n\t\t\t\t\t}, {\n\t\t\t\t\t\ttype: 'numeric'\n\t\t\t\t\t}],\n\t\t\t\t\tcontextMenu: true,\n\t\t\t\t\tclassName: 'htLeft',\n\t\t\t\t\theight: '200',\n\t\t\t\t\trowHeaders: true,\n\t\t\t\t\tstretchH: 'all',\n\t\t\t\t\tonAfterChange: function onAfterChange(value, source) {\n\t\t\t\t\t\treturn updateData(value, source);\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tButton,\n\t\t\t\t\t{\n\t\t\t\t\t\tonClick: addRow,\n\t\t\t\t\t\tisPrimary: true\n\t\t\t\t\t},\n\t\t\t\t\t__('Add another row')\n\t\t\t\t)\n\t\t\t) : wp.element.createElement(react_google_charts__WEBPACK_IMPORTED_MODULE_2__[\"Chart\"], {\n\t\t\t\tchartType: 'PieChart',\n\t\t\t\tdata: JSON.parse(props.attributes.data),\n\t\t\t\toptions: props.attributes.options,\n\t\t\t\twidth: '100%',\n\t\t\t\theight: '400px',\n\t\t\t\tlegendToggle: true\n\t\t\t})\n\t\t)];\n\t}),\n\n\tsave: function save() {\n\t\treturn null;\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/chart/index.js?");
184
-
185
- /***/ }),
186
-
187
- /***/ "./blocks/font-awesome-icons/editor.scss":
188
- /*!***********************************************!*\
189
- !*** ./blocks/font-awesome-icons/editor.scss ***!
190
- \***********************************************/
191
- /*! no static exports found */
192
- /***/ (function(module, exports) {
193
-
194
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/font-awesome-icons/editor.scss?");
195
-
196
- /***/ }),
197
-
198
- /***/ "./blocks/font-awesome-icons/index.js":
199
- /*!********************************************!*\
200
- !*** ./blocks/font-awesome-icons/index.js ***!
201
- \********************************************/
202
- /*! no exports provided */
203
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
204
-
205
- "use strict";
206
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./style.scss */ \"./blocks/font-awesome-icons/style.scss\");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editor.scss */ \"./blocks/font-awesome-icons/editor.scss\");\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_editor_scss__WEBPACK_IMPORTED_MODULE_1__);\n/**\r\n * WordPress dependencies...\r\n */\n\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$components = wp.components,\n Autocomplete = _wp$components.Autocomplete,\n PanelBody = _wp$components.PanelBody,\n Spinner = _wp$components.Spinner,\n Placeholder = _wp$components.Placeholder,\n RangeControl = _wp$components.RangeControl;\nvar withSelect = wp.data.withSelect;\nvar _wp$editor = wp.editor,\n ContrastChecker = _wp$editor.ContrastChecker,\n InspectorControls = _wp$editor.InspectorControls,\n PanelColorSettings = _wp$editor.PanelColorSettings;\n\n/**\r\n * Internal dependencies\r\n */\n\n\n\n\nregisterBlockType('orbitfox/font-awesome-icons', {\n\ttitle: __('Font Awesome Icons'),\n\tdescription: __('Share buttons for your website visitors to share content on any social sharing service.'),\n\ticon: 'smiley',\n\tcategory: 'orbitfox',\n\tkeywords: ['font awesome', 'dashicons', 'icons'],\n\tattributes: {\n\t\tprefix: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'fab'\n\t\t},\n\t\ticon: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'themeisle'\n\t\t},\n\t\tfontSize: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 16\n\t\t},\n\t\tpadding: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 5\n\t\t},\n\t\tmargin: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 5\n\t\t},\n\t\tbackgroundColor: {\n\t\t\ttype: 'string'\n\t\t},\n\t\ttextColor: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tborderColor: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tborderSize: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 0\n\t\t},\n\t\tborderRadius: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 0\n\t\t}\n\t},\n\n\tsupports: {\n\t\talign: ['left', 'center', 'right']\n\t},\n\n\tedit: withSelect(function (select, props) {\n\t\tvar iconsList = select('obfx/blocks').getFaIconsList();\n\t\treturn {\n\t\t\ticonsList: iconsList,\n\t\t\tprops: props\n\t\t};\n\t})(function (_ref) {\n\t\tvar iconsList = _ref.iconsList,\n\t\t props = _ref.props;\n\n\n\t\tvar autocompleters = [{\n\t\t\tname: 'font-awesome',\n\t\t\ttriggerPrefix: '',\n\t\t\toptions: iconsList,\n\t\t\tgetOptionLabel: function getOptionLabel(option) {\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t'span',\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement('i', { className: option.prefix + ' fa-fw fa-' + option.name }),\n\t\t\t\t\t' ',\n\t\t\t\t\toption.name\n\t\t\t\t);\n\t\t\t},\n\t\t\tgetOptionKeywords: function getOptionKeywords(option) {\n\t\t\t\treturn [option.name];\n\t\t\t},\n\t\t\tgetOptionCompletion: function getOptionCompletion(option) {\n\t\t\t\tprops.setAttributes({\n\t\t\t\t\tprefix: option.prefix,\n\t\t\t\t\ticon: option.name\n\t\t\t\t});\n\t\t\t\treturn option.name;\n\t\t\t}\n\t\t}];\n\n\t\tvar changeFontSize = function changeFontSize(value) {\n\t\t\tprops.setAttributes({ fontSize: value });\n\t\t};\n\n\t\tvar changePadding = function changePadding(value) {\n\t\t\tprops.setAttributes({ padding: value });\n\t\t};\n\n\t\tvar changeMargin = function changeMargin(value) {\n\t\t\tprops.setAttributes({ margin: value });\n\t\t};\n\n\t\tvar changeBackgroundColor = function changeBackgroundColor(value) {\n\t\t\tprops.setAttributes({ backgroundColor: value });\n\t\t};\n\n\t\tvar changeTextColor = function changeTextColor(value) {\n\t\t\tprops.setAttributes({ textColor: value });\n\t\t};\n\n\t\tvar changeBorderColor = function changeBorderColor(value) {\n\t\t\tprops.setAttributes({ borderColor: value });\n\t\t};\n\n\t\tvar changeBorderSize = function changeBorderSize(value) {\n\t\t\tprops.setAttributes({ borderSize: value });\n\t\t};\n\n\t\tvar changeBorderRadius = function changeBorderRadius(value) {\n\t\t\tprops.setAttributes({ borderRadius: value });\n\t\t};\n\n\t\tvar iconStyle = {\n\t\t\tborderRadius: props.attributes.borderRadius + '%',\n\t\t\tfontSize: props.attributes.fontSize + 'px',\n\t\t\tpadding: props.attributes.padding + 'px'\n\t\t};\n\n\t\tvar containerStyle = {\n\t\t\tcolor: props.attributes.textColor,\n\t\t\tbackgroundColor: props.attributes.backgroundColor,\n\t\t\tborderColor: props.attributes.borderColor,\n\t\t\tborderRadius: props.attributes.borderRadius + '%',\n\t\t\tborderStyle: 'solid',\n\t\t\tborderWidth: props.attributes.borderSize + 'px',\n\t\t\tdisplay: 'inline-block',\n\t\t\tmargin: props.attributes.margin + 'px'\n\t\t};\n\n\t\treturn [wp.element.createElement(\n\t\t\tInspectorControls,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tPanelBody,\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Icon Settings')\n\t\t\t\t},\n\t\t\t\ticonsList !== undefined && iconsList.length > 0 ? wp.element.createElement(\n\t\t\t\t\tAutocomplete,\n\t\t\t\t\t{ completers: autocompleters },\n\t\t\t\t\tfunction (_ref2) {\n\t\t\t\t\t\tvar isExpanded = _ref2.isExpanded,\n\t\t\t\t\t\t listBoxId = _ref2.listBoxId,\n\t\t\t\t\t\t activeId = _ref2.activeId;\n\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclassName: 'font-awesome-auto-complete'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'label',\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\twp.element.createElement('i', { className: props.attributes.prefix + ' fa-' + props.attributes.icon })\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tclassName: 'icon-complete',\n\t\t\t\t\t\t\t\t\tcontentEditable: true,\n\t\t\t\t\t\t\t\t\tsuppressContentEditableWarning: true,\n\t\t\t\t\t\t\t\t\t'aria-autocomplete': 'list',\n\t\t\t\t\t\t\t\t\t'aria-expanded': isExpanded,\n\t\t\t\t\t\t\t\t\t'aria-owns': listBoxId,\n\t\t\t\t\t\t\t\t\t'aria-activedescendant': activeId\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tprops.attributes.icon\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t) : wp.element.createElement(\n\t\t\t\t\tPlaceholder,\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(Spinner, null)\n\t\t\t\t)\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\tPanelBody,\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Icon Sizes'),\n\t\t\t\t\tclassName: 'blocks-font-size',\n\t\t\t\t\tinitialOpen: false\n\t\t\t\t},\n\t\t\t\twp.element.createElement(RangeControl, {\n\t\t\t\t\tlabel: __('Text Size'),\n\t\t\t\t\tvalue: props.attributes.fontSize || '',\n\t\t\t\t\tinitialPosition: 16,\n\t\t\t\t\tonChange: changeFontSize,\n\t\t\t\t\tmin: 12,\n\t\t\t\t\tmax: 140,\n\t\t\t\t\tbeforeIcon: 'editor-textcolor',\n\t\t\t\t\tafterIcon: 'editor-textcolor'\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(RangeControl, {\n\t\t\t\t\tlabel: __('Inner Space'),\n\t\t\t\t\tvalue: props.attributes.padding || '',\n\t\t\t\t\tinitialPosition: 5,\n\t\t\t\t\tonChange: changePadding,\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 100,\n\t\t\t\t\tbeforeIcon: 'minus',\n\t\t\t\t\tafterIcon: 'plus'\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(RangeControl, {\n\t\t\t\t\tlabel: __('Outer Space'),\n\t\t\t\t\tvalue: props.attributes.margin || '',\n\t\t\t\t\tinitialPosition: 5,\n\t\t\t\t\tonChange: changeMargin,\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 100,\n\t\t\t\t\tbeforeIcon: 'minus',\n\t\t\t\t\tafterIcon: 'plus'\n\t\t\t\t})\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\tPanelColorSettings,\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Color Settings'),\n\t\t\t\t\tinitialOpen: false,\n\t\t\t\t\tcolorSettings: [{\n\t\t\t\t\t\tvalue: props.attributes.backgroundColor,\n\t\t\t\t\t\tonChange: changeBackgroundColor,\n\t\t\t\t\t\tlabel: __('Background Color')\n\t\t\t\t\t}, {\n\t\t\t\t\t\tvalue: props.attributes.textColor,\n\t\t\t\t\t\tonChange: changeTextColor,\n\t\t\t\t\t\tlabel: __('Text Color')\n\t\t\t\t\t}, {\n\t\t\t\t\t\tvalue: props.attributes.borderColor,\n\t\t\t\t\t\tonChange: changeBorderColor,\n\t\t\t\t\t\tlabel: __('Border Color')\n\t\t\t\t\t}]\n\t\t\t\t},\n\t\t\t\twp.element.createElement(ContrastChecker, {\n\t\t\t\t\ttextColor: props.attributes.textColor,\n\t\t\t\t\tbackgroundColor: props.attributes.backgroundColor\n\t\t\t\t})\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\tPanelBody,\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Border Settings'),\n\t\t\t\t\tinitialOpen: false\n\t\t\t\t},\n\t\t\t\twp.element.createElement(RangeControl, {\n\t\t\t\t\tlabel: __('Border Size'),\n\t\t\t\t\tvalue: props.attributes.borderSize,\n\t\t\t\t\tonChange: changeBorderSize,\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 120,\n\t\t\t\t\tbeforeIcon: 'minus',\n\t\t\t\t\tafterIcon: 'plus'\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(RangeControl, {\n\t\t\t\t\tlabel: __('Border Radius'),\n\t\t\t\t\tvalue: props.attributes.borderRadius,\n\t\t\t\t\tonChange: changeBorderRadius,\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 100,\n\t\t\t\t\tbeforeIcon: 'grid-view',\n\t\t\t\t\tafterIcon: 'marker'\n\t\t\t\t})\n\t\t\t)\n\t\t), wp.element.createElement(\n\t\t\t'p',\n\t\t\t{ className: props.className },\n\t\t\twp.element.createElement(\n\t\t\t\t'span',\n\t\t\t\t{\n\t\t\t\t\tclassName: props.className + '-container',\n\t\t\t\t\tstyle: containerStyle\n\t\t\t\t},\n\t\t\t\twp.element.createElement('i', {\n\t\t\t\t\tclassName: props.attributes.prefix + ' fa-' + props.attributes.icon,\n\t\t\t\t\tstyle: iconStyle\n\t\t\t\t})\n\t\t\t)\n\t\t)];\n\t}),\n\n\tsave: function save(props) {\n\t\tvar iconStyle = {\n\t\t\tborderRadius: props.attributes.borderRadius + '%',\n\t\t\tfontSize: props.attributes.fontSize + 'px',\n\t\t\tpadding: props.attributes.padding + 'px'\n\t\t};\n\n\t\tvar containerStyle = {\n\t\t\tcolor: props.attributes.textColor,\n\t\t\tbackgroundColor: props.attributes.backgroundColor,\n\t\t\tborderColor: props.attributes.borderColor,\n\t\t\tborderRadius: props.attributes.borderRadius + '%',\n\t\t\tborderStyle: 'solid',\n\t\t\tborderWidth: props.attributes.borderSize + 'px',\n\t\t\tdisplay: 'inline-block',\n\t\t\tmargin: props.attributes.margin + 'px'\n\t\t};\n\n\t\treturn wp.element.createElement(\n\t\t\t'p',\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\t'span',\n\t\t\t\t{ style: containerStyle },\n\t\t\t\twp.element.createElement('i', {\n\t\t\t\t\tclassName: props.attributes.prefix + ' fa-' + props.attributes.icon,\n\t\t\t\t\tstyle: iconStyle\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/font-awesome-icons/index.js?");
207
-
208
- /***/ }),
209
-
210
- /***/ "./blocks/font-awesome-icons/style.scss":
211
- /*!**********************************************!*\
212
- !*** ./blocks/font-awesome-icons/style.scss ***!
213
- \**********************************************/
214
- /*! no static exports found */
215
- /***/ (function(module, exports) {
216
-
217
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/font-awesome-icons/style.scss?");
218
-
219
- /***/ }),
220
-
221
- /***/ "./blocks/google-map/editor.scss":
222
- /*!***************************************!*\
223
- !*** ./blocks/google-map/editor.scss ***!
224
- \***************************************/
225
- /*! no static exports found */
226
- /***/ (function(module, exports) {
227
-
228
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/google-map/editor.scss?");
229
-
230
- /***/ }),
231
-
232
- /***/ "./blocks/google-map/index.js":
233
- /*!************************************!*\
234
- !*** ./blocks/google-map/index.js ***!
235
- \************************************/
236
- /*! no exports provided */
237
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
238
-
239
- "use strict";
240
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./editor.scss */ \"./blocks/google-map/editor.scss\");\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor_scss__WEBPACK_IMPORTED_MODULE_0__);\n/**\r\n * WordPress dependencies...\r\n */\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$components = wp.components,\n Button = _wp$components.Button,\n PanelBody = _wp$components.PanelBody,\n Placeholder = _wp$components.Placeholder,\n RangeControl = _wp$components.RangeControl,\n SelectControl = _wp$components.SelectControl,\n Spinner = _wp$components.Spinner,\n TextControl = _wp$components.TextControl;\nvar _wp$compose = wp.compose,\n compose = _wp$compose.compose,\n withState = _wp$compose.withState;\nvar withSelect = wp.data.withSelect;\nvar InspectorControls = wp.editor.InspectorControls;\n\n/**\r\n * Internal dependencies\r\n */\n\n\n\nregisterBlockType('orbitfox/google-map', {\n\ttitle: __('Google Map'),\n\tdescription: __('Display a Google Map on your website with Google Map block.'),\n\ticon: 'admin-site',\n\tcategory: 'orbitfox',\n\tkeywords: ['map', 'google', 'orbitfox'],\n\tattributes: {\n\t\tlocation: {\n\t\t\ttype: 'string'\n\t\t},\n\t\ttype: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'roadmap'\n\t\t},\n\t\tzoom: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 10\n\t\t},\n\t\theight: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '400px'\n\t\t}\n\t},\n\n\tsupports: {\n\t\thtml: false\n\t},\n\n\tedit: compose([withSelect(function (select, props) {\n\t\treturn {\n\t\t\tprops: props\n\t\t};\n\t}), withState({\n\t\tapi: '',\n\t\tisAPILoaded: false,\n\t\tisAPISaved: false,\n\t\tisSaving: false\n\t})])(function (_ref) {\n\t\tvar props = _ref.props,\n\t\t className = _ref.className,\n\t\t api = _ref.api,\n\t\t isAPILoaded = _ref.isAPILoaded,\n\t\t isAPISaved = _ref.isAPISaved,\n\t\t isSaving = _ref.isSaving,\n\t\t setState = _ref.setState;\n\n\n\t\tvar settings = void 0;\n\n\t\twp.api.loadPromise.then(function () {\n\t\t\tsettings = new wp.api.models.Settings();\n\t\t});\n\n\t\tif (isAPILoaded === false) {\n\t\t\tsettings.fetch().then(function (response) {\n\t\t\t\tsetState({\n\t\t\t\t\tapi: response.orbitfox_google_map_block_api_key,\n\t\t\t\t\tisAPILoaded: true\n\t\t\t\t});\n\n\t\t\t\tif (response.orbitfox_google_map_block_api_key !== '') {\n\t\t\t\t\tsetState({\n\t\t\t\t\t\tisAPISaved: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar changeAPI = function changeAPI(value) {\n\t\t\tsetState({\n\t\t\t\tapi: value\n\t\t\t});\n\t\t};\n\n\t\tvar saveAPIKey = function saveAPIKey() {\n\n\t\t\tsetState({\n\t\t\t\tisSaving: true\n\t\t\t});\n\n\t\t\tvar model = new wp.api.models.Settings({\n\t\t\t\torbitfox_google_map_block_api_key: api\n\t\t\t});\n\n\t\t\tmodel.save().then(function (response) {\n\t\t\t\tsettings.fetch();\n\t\t\t\tsetState({\n\t\t\t\t\tisSaving: false,\n\t\t\t\t\tisAPISaved: true\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\tvar changeLocation = function changeLocation(value) {\n\t\t\tprops.setAttributes({ location: value });\n\t\t};\n\n\t\tvar changeMapType = function changeMapType(value) {\n\t\t\tprops.setAttributes({ type: value });\n\t\t};\n\n\t\tvar changeZoom = function changeZoom(value) {\n\t\t\tprops.setAttributes({ zoom: value });\n\t\t};\n\n\t\tvar changeHeight = function changeHeight(value) {\n\t\t\tprops.setAttributes({ height: value });\n\t\t};\n\n\t\tif (!isAPILoaded) {\n\t\t\treturn wp.element.createElement(\n\t\t\t\tPlaceholder,\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(Spinner, null),\n\t\t\t\t__('Loading…')\n\t\t\t);\n\t\t}\n\n\t\tif (!isAPISaved) {\n\t\t\treturn wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: className },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tPlaceholder,\n\t\t\t\t\t{\n\t\t\t\t\t\ticon: 'admin-site',\n\t\t\t\t\t\tlabel: __('Google Maps'),\n\t\t\t\t\t\tinstructions: __('A Google Maps API key is required, please enter one below.')\n\t\t\t\t\t},\n\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\tplaceholder: __('Google Maps API Key'),\n\t\t\t\t\t\tvalue: api,\n\t\t\t\t\t\tclassName: 'components-placeholder__input',\n\t\t\t\t\t\tonChange: changeAPI\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tButton,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\ttype: 'submit',\n\t\t\t\t\t\t\tonClick: saveAPIKey,\n\t\t\t\t\t\t\tisBusy: isSaving,\n\t\t\t\t\t\t\tdisabled: api === ''\n\t\t\t\t\t\t},\n\t\t\t\t\t\t__('Save API Key')\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ 'class': 'components-placeholder__instructions' },\n\t\t\t\t\t\t__('Need an API key? Get one'),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t{ target: '_blank', href: 'https://console.developers.google.com/flows/enableapi?apiid=maps_backend,static_maps_backend,maps_embed_backend&keyType=CLIENT_SIDE&reusekey=true' },\n\t\t\t\t\t\t\t__(' here.')\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn [wp.element.createElement(\n\t\t\tInspectorControls,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tPanelBody,\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Map Settings')\n\t\t\t\t},\n\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\tlabel: __('Map Type'),\n\t\t\t\t\tvalue: props.attributes.type,\n\t\t\t\t\toptions: [{ label: __('Road Map'), value: 'roadmap' }, { label: __('Satellite View'), value: 'satellite' }],\n\t\t\t\t\tonChange: changeMapType\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(RangeControl, {\n\t\t\t\t\tlabel: __('Map Zoom Level'),\n\t\t\t\t\tvalue: props.attributes.zoom,\n\t\t\t\t\tonChange: changeZoom,\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: 21\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\tlabel: __('Map Height'),\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tvalue: props.attributes.height,\n\t\t\t\t\tonChange: changeHeight\n\t\t\t\t})\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\tPanelBody,\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Global Settings'),\n\t\t\t\t\tinitialOpen: false\n\t\t\t\t},\n\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\tlabel: __('Google Maps API Key'),\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tplaceholder: __('Google Maps API Key'),\n\t\t\t\t\tvalue: api,\n\t\t\t\t\tclassName: 'components-placeholder__input',\n\t\t\t\t\tonChange: changeAPI,\n\t\t\t\t\thelp: __('Changing the API key effects all Google Map Embed blocks.')\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tButton,\n\t\t\t\t\t{\n\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\ttype: 'submit',\n\t\t\t\t\t\tonClick: saveAPIKey,\n\t\t\t\t\t\tisBusy: isSaving,\n\t\t\t\t\t\tdisabled: api === ''\n\t\t\t\t\t},\n\t\t\t\t\t__('Save API Key')\n\t\t\t\t)\n\t\t\t)\n\t\t), wp.element.createElement(TextControl, {\n\t\t\ttype: 'text',\n\t\t\tplaceholder: __('Enter a location…'),\n\t\t\tvalue: props.attributes.location,\n\t\t\tonChange: changeLocation\n\t\t}), props.attributes.location && wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: className + ' interactive' },\n\t\t\twp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'map' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'iframe',\n\t\t\t\t\t{\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\tframeBorder: '0',\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\t\theight: props.attributes.height\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsrc: 'https://www.google.com/maps/embed/v1/place?key=' + api + '&q=' + props.attributes.location + '&maptype=' + props.attributes.type + '&zoom=' + props.attributes.zoom,\n\t\t\t\t\t\tallowFullScreen: true },\n\t\t\t\t\t'>'\n\t\t\t\t)\n\t\t\t)\n\t\t)];\n\t}),\n\n\tsave: function save() {\n\t\treturn null;\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/google-map/index.js?");
241
-
242
- /***/ }),
243
-
244
- /***/ "./blocks/notice/editor.scss":
245
- /*!***********************************!*\
246
- !*** ./blocks/notice/editor.scss ***!
247
- \***********************************/
248
- /*! no static exports found */
249
- /***/ (function(module, exports) {
250
-
251
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/notice/editor.scss?");
252
-
253
- /***/ }),
254
-
255
- /***/ "./blocks/notice/index.js":
256
- /*!********************************!*\
257
- !*** ./blocks/notice/index.js ***!
258
- \********************************/
259
- /*! no exports provided */
260
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
261
-
262
- "use strict";
263
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./style.scss */ \"./blocks/notice/style.scss\");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editor.scss */ \"./blocks/notice/editor.scss\");\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_editor_scss__WEBPACK_IMPORTED_MODULE_1__);\n/**\r\n * WordPress dependencies...\r\n */\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar RichText = wp.editor.RichText;\nvar Notice = wp.components.Notice;\n\n/**\r\n * Internal dependencies\r\n */\n\n\n\n\nregisterBlockType('orbitfox/notice', {\n\ttitle: __('Notice'),\n\tdescription: __('Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.'),\n\ticon: 'info',\n\tcategory: 'orbitfox',\n\tkeywords: ['notice', 'info'],\n\tattributes: {\n\t\tcontent: {\n\t\t\ttype: 'array',\n\t\t\tsource: 'children',\n\t\t\tselector: '.components-notice__content'\n\t\t}\n\t},\n\n\tsupports: {\n\t\talign: ['wide', 'full']\n\t},\n\n\tstyles: [{ name: 'sucess', label: __('Success'), isDefault: true }, { name: 'info', label: __('Info') }, { name: 'warning', label: __('Warning') }, { name: 'error', label: __('Error') }],\n\n\tedit: function edit(props) {\n\t\tvar status = \"success\";\n\t\tif (props.attributes.className && props.attributes.className.includes('is-style-info')) {\n\t\t\tstatus = \"\";\n\t\t} else if (props.attributes.className && props.attributes.className.includes('is-style-warning')) {\n\t\t\tstatus = \"warning\";\n\t\t} else if (props.attributes.className && props.attributes.className.includes('is-style-error')) {\n\t\t\tstatus = \"error\";\n\t\t}\n\t\treturn wp.element.createElement(\n\t\t\tNotice,\n\t\t\t{\n\t\t\t\tclassName: props.className,\n\t\t\t\tisDismissible: false,\n\t\t\t\tstatus: status\n\t\t\t},\n\t\t\twp.element.createElement(RichText, {\n\t\t\t\ttagName: 'p',\n\t\t\t\tplaceholder: __('Lorem ipsum dolor sit amet, consectetur adipiscing elit.'),\n\t\t\t\tvalue: props.attributes.content,\n\t\t\t\tclassName: 'components-notice__content',\n\t\t\t\tonChange: function onChange(content) {\n\t\t\t\t\treturn props.setAttributes({ content: content });\n\t\t\t\t},\n\t\t\t\tkeepPlaceholderOnFocus: 'true'\n\t\t\t})\n\t\t);\n\t},\n\tsave: function save(props) {\n\t\tvar status = \"success\";\n\t\tif (props.attributes.className && props.attributes.className.includes('is-style-info')) {\n\t\t\tstatus = \"\";\n\t\t} else if (props.attributes.className && props.attributes.className.includes('is-style-warning')) {\n\t\t\tstatus = \"warning\";\n\t\t} else if (props.attributes.className && props.attributes.className.includes('is-style-error')) {\n\t\t\tstatus = \"error\";\n\t\t}\n\t\treturn wp.element.createElement(\n\t\t\tNotice,\n\t\t\t{\n\t\t\t\tclassName: 'obfx-block-notice',\n\t\t\t\tisDismissible: false,\n\t\t\t\tstatus: status\n\t\t\t},\n\t\t\twp.element.createElement(RichText.Content, {\n\t\t\t\ttagName: 'p',\n\t\t\t\tclassName: 'components-notice__content',\n\t\t\t\tvalue: props.attributes.content\n\t\t\t})\n\t\t);\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/notice/index.js?");
264
-
265
- /***/ }),
266
-
267
- /***/ "./blocks/notice/style.scss":
268
- /*!**********************************!*\
269
- !*** ./blocks/notice/style.scss ***!
270
- \**********************************/
271
- /*! no static exports found */
272
- /***/ (function(module, exports) {
273
-
274
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/notice/style.scss?");
275
-
276
- /***/ }),
277
-
278
- /***/ "./blocks/plugin-card/editor.scss":
279
- /*!****************************************!*\
280
- !*** ./blocks/plugin-card/editor.scss ***!
281
- \****************************************/
282
- /*! no static exports found */
283
- /***/ (function(module, exports) {
284
-
285
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/plugin-card/editor.scss?");
286
-
287
- /***/ }),
288
-
289
- /***/ "./blocks/plugin-card/index.js":
290
- /*!*************************************!*\
291
- !*** ./blocks/plugin-card/index.js ***!
292
- \*************************************/
293
- /*! no exports provided */
294
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
295
-
296
- "use strict";
297
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var babel_runtime_core_js_object_keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babel-runtime/core-js/object/keys */ \"./node_modules/babel-runtime/core-js/object/keys.js\");\n/* harmony import */ var babel_runtime_core_js_object_keys__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_core_js_object_keys__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editor.scss */ \"./blocks/plugin-card/editor.scss\");\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_editor_scss__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./style.scss */ \"./blocks/plugin-card/style.scss\");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_2__);\n\n/**\n * WordPress dependencies...\n */\n\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$components = wp.components,\n Placeholder = _wp$components.Placeholder,\n Dashicon = _wp$components.Dashicon,\n TextControl = _wp$components.TextControl,\n Spinner = _wp$components.Spinner,\n Button = _wp$components.Button,\n Toolbar = _wp$components.Toolbar,\n Tooltip = _wp$components.Tooltip;\nvar _wp$compose = wp.compose,\n compose = _wp$compose.compose,\n withState = _wp$compose.withState;\nvar BlockControls = wp.editor.BlockControls;\nvar withSelect = wp.data.withSelect;\nvar ENTER = wp.keycodes.ENTER;\n\n\nvar starRating = function starRating(stars) {\n\tvar rating = Math.floor(stars / 10) / 2;\n\tvar fullStars = Math.floor(rating);\n\tvar halfStars = Math.ceil(rating - fullStars);\n\tvar emptyStars = 5 - fullStars - halfStars;\n\tvar ratings = '<span class=\"star-full\"></span>'.repeat(fullStars) + '<span class=\"star-half\"></span>'.repeat(halfStars) + '<span class=\"star-empty\"></span>'.repeat(emptyStars);\n\treturn ratings;\n};\n\nvar unescapeHTML = function unescapeHTML(value) {\n\tvar htmlNode = document.createElement('div');\n\thtmlNode.innerHTML = value;\n\tif (htmlNode.innerText !== undefined) {\n\t\treturn htmlNode.innerText;\n\t}\n\treturn htmlNode.textContent;\n};\n\n/**\n * Internal dependencies\n */\n\n\n\nregisterBlockType('orbitfox/plugin-cards', {\n\ttitle: __('Plugin Card'),\n\tdescription: __('Plugin Card block lets you display plugins data in your blog posts.'),\n\ticon: 'admin-plugins',\n\tcategory: 'orbitfox',\n\tkeywords: ['plugin', 'card', 'orbitfox'],\n\tattributes: {\n\t\tslug: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tplugin_icon: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tplugin_name: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tplugin_author: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tplugin_rating: {\n\t\t\ttype: 'number'\n\t\t},\n\t\tplugin_description: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tplugin_installs: {\n\t\t\ttype: 'number'\n\t\t},\n\t\tplugin_version: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tplugin_tested: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tplugin_link: {\n\t\t\ttype: 'string'\n\t\t}\n\t},\n\n\tsupports: {\n\t\thtml: false,\n\t\talign: ['left', 'center', 'right']\n\t},\n\n\tedit: compose([withSelect(function (select, props) {\n\t\treturn {\n\t\t\tprops: props\n\t\t};\n\t}), withState({\n\t\tstatus: 0,\n\t\tresults: {}\n\t})])(function (_ref) {\n\t\tvar props = _ref.props,\n\t\t className = _ref.className,\n\t\t status = _ref.status,\n\t\t results = _ref.results,\n\t\t setState = _ref.setState;\n\n\n\t\tvar changeSlug = function changeSlug(value) {\n\t\t\tprops.setAttributes({ slug: value });\n\t\t};\n\n\t\tvar searchPlugins = function searchPlugins(search) {\n\t\t\tsetState({ status: 1 });\n\t\t\twp.apiFetch({ path: 'obfx-plugin-card/v1/search?search=\\'' + encodeURIComponent(search) }).then(function (payload) {\n\t\t\t\tvar data = payload.data.plugins;\n\t\t\t\tsetState({\n\t\t\t\t\tstatus: 0,\n\t\t\t\t\tresults: data\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\n\t\tvar selectPlugin = function selectPlugin(data) {\n\t\t\tvar icon = void 0;\n\t\t\tif (data.icons['svg']) {\n\t\t\t\ticon = data.icons['svg'];\n\t\t\t}if (data.icons['2x']) {\n\t\t\t\ticon = data.icons['2x'];\n\t\t\t}if (data.icons['1x']) {\n\t\t\t\ticon = data.icons['1x'];\n\t\t\t}if (data.icons['default']) {\n\t\t\t\ticon = data.icons['default'];\n\t\t\t}\n\t\t\tprops.setAttributes({\n\t\t\t\tslug: data.slug,\n\t\t\t\tplugin_icon: icon,\n\t\t\t\tplugin_name: data.name,\n\t\t\t\tplugin_author: data.author,\n\t\t\t\tplugin_rating: data.rating,\n\t\t\t\tplugin_description: data.short_description,\n\t\t\t\tplugin_installs: data.active_installs,\n\t\t\t\tplugin_version: data.version,\n\t\t\t\tplugin_tested: data.tested,\n\t\t\t\tplugin_link: data.download_link\n\t\t\t});\n\t\t\tsetState({\n\t\t\t\tresults: {}\n\t\t\t});\n\t\t};\n\n\t\treturn [props.attributes.plugin_name && wp.element.createElement(\n\t\t\tBlockControls,\n\t\t\t{ key: 'toolbar-controls' },\n\t\t\twp.element.createElement(\n\t\t\t\tToolbar,\n\t\t\t\t{\n\t\t\t\t\tclassName: 'components-toolbar'\n\t\t\t\t},\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tTooltip,\n\t\t\t\t\t{ text: __('Edit Plugin Card') },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tButton,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tclassName: 'components-icon-button components-toolbar__control edit-plugin-card',\n\t\t\t\t\t\t\tonClick: function onClick() {\n\t\t\t\t\t\t\t\tprops.setAttributes({\n\t\t\t\t\t\t\t\t\tplugin_icon: '',\n\t\t\t\t\t\t\t\t\tplugin_name: '',\n\t\t\t\t\t\t\t\t\tplugin_author: '',\n\t\t\t\t\t\t\t\t\tplugin_rating: '',\n\t\t\t\t\t\t\t\t\tplugin_description: '',\n\t\t\t\t\t\t\t\t\tplugin_installs: '',\n\t\t\t\t\t\t\t\t\tplugin_version: '',\n\t\t\t\t\t\t\t\t\tplugin_tested: '',\n\t\t\t\t\t\t\t\t\tplugin_link: ''\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\twp.element.createElement(Dashicon, { icon: 'edit' })\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t), wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: '' + className },\n\t\t\tprops.attributes.plugin_name ? wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ 'class': 'obfx-plugin-card' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ 'class': 'card-header' },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ 'class': 'card-main' },\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ 'class': 'card-logo' },\n\t\t\t\t\t\t\twp.element.createElement('img', { src: props.attributes.plugin_icon, alt: unescapeHTML(props.attributes.plugin_name), title: unescapeHTML(props.attributes.plugin_name) })\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ 'class': 'card-info' },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'h4',\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tunescapeHTML(props.attributes.plugin_name)\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement('h5', { dangerouslySetInnerHTML: { __html: _.unescape(props.attributes.plugin_author) } })\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement('div', { 'class': 'card-ratings', dangerouslySetInnerHTML: { __html: _.unescape(starRating(props.attributes.plugin_rating)) } })\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ 'class': 'card-details' },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ 'class': 'card-description' },\n\t\t\t\t\t\tunescapeHTML(props.attributes.plugin_description)\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ 'class': 'card-stats' },\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'h5',\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t__('Plugin Stats')\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ 'class': 'card-stats-list' },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t{ 'class': 'card-stat' },\n\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t'span',\n\t\t\t\t\t\t\t\t\t{ 'class': 'card-text-large' },\n\t\t\t\t\t\t\t\t\tprops.attributes.plugin_installs.toLocaleString(),\n\t\t\t\t\t\t\t\t\t'+'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t__('active installs')\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t{ 'class': 'card-stat' },\n\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t'span',\n\t\t\t\t\t\t\t\t\t{ 'class': 'card-text-large' },\n\t\t\t\t\t\t\t\t\tprops.attributes.plugin_version\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t__('version')\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t{ 'class': 'card-stat' },\n\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t'span',\n\t\t\t\t\t\t\t\t\t{ 'class': 'card-text-large' },\n\t\t\t\t\t\t\t\t\tprops.attributes.plugin_tested\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t__('tested up to')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ 'class': 'card-download' },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'a',\n\t\t\t\t\t\t{ href: props.attributes.plugin_link },\n\t\t\t\t\t\t__('Download')\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t) : wp.element.createElement(\n\t\t\t\tPlaceholder,\n\t\t\t\t{\n\t\t\t\t\ticon: 'admin-plugins',\n\t\t\t\t\tlabel: __('Plugin Card')\n\t\t\t\t},\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'search-plugin-field' },\n\t\t\t\t\twp.element.createElement(Dashicon, { icon: 'search' }),\n\t\t\t\t\tstatus === 1 && wp.element.createElement(Spinner, null),\n\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\tplaceholder: __('Search for plugin…'),\n\t\t\t\t\t\tvalue: props.attributes.slug,\n\t\t\t\t\t\tonChange: changeSlug,\n\t\t\t\t\t\tonKeyDown: function onKeyDown(event) {\n\t\t\t\t\t\t\tif (event.keyCode === ENTER) {\n\t\t\t\t\t\t\t\tsearchPlugins(event.target.value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tresults && wp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'plugin-card-search-results' },\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tbabel_runtime_core_js_object_keys__WEBPACK_IMPORTED_MODULE_0___default()(results).map(function (i, j) {\n\t\t\t\t\t\t\t\tvar plugin_data = results[i];\n\t\t\t\t\t\t\t\tvar icon = void 0;\n\t\t\t\t\t\t\t\tif (plugin_data.icons['svg']) {\n\t\t\t\t\t\t\t\t\ticon = plugin_data.icons['svg'];\n\t\t\t\t\t\t\t\t}if (plugin_data.icons['2x']) {\n\t\t\t\t\t\t\t\t\ticon = plugin_data.icons['2x'];\n\t\t\t\t\t\t\t\t}if (plugin_data.icons['1x']) {\n\t\t\t\t\t\t\t\t\ticon = plugin_data.icons['1x'];\n\t\t\t\t\t\t\t\t}if (plugin_data.icons['default']) {\n\t\t\t\t\t\t\t\t\ticon = plugin_data.icons['default'];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t{ className: 'plugin-card-list-item', key: i, onClick: function onClick(e) {\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\tselectPlugin(plugin_data);\n\t\t\t\t\t\t\t\t\t\t} },\n\t\t\t\t\t\t\t\t\twp.element.createElement('img', { src: icon }),\n\t\t\t\t\t\t\t\t\twp.element.createElement('span', { dangerouslySetInnerHTML: { __html: _.unescape(plugin_data.name) } })\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t)];\n\t}),\n\n\tsave: function save() {\n\t\treturn null;\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/plugin-card/index.js?");
298
-
299
- /***/ }),
300
-
301
- /***/ "./blocks/plugin-card/style.scss":
302
- /*!***************************************!*\
303
- !*** ./blocks/plugin-card/style.scss ***!
304
- \***************************************/
305
- /*! no static exports found */
306
- /***/ (function(module, exports) {
307
-
308
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/plugin-card/style.scss?");
309
-
310
- /***/ }),
311
-
312
- /***/ "./blocks/post-grid/Thumbnail.js":
313
- /*!***************************************!*\
314
- !*** ./blocks/post-grid/Thumbnail.js ***!
315
- \***************************************/
316
- /*! exports provided: default */
317
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
318
-
319
- "use strict";
320
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var babel_runtime_core_js_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n/* harmony import */ var babel_runtime_core_js_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_core_js_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n/* harmony import */ var babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n/* harmony import */ var babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n/* harmony import */ var babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n/**\n * WordPress Dependencies\n */\nvar Spinner = wp.components.Spinner;\nvar withSelect = wp.data.withSelect;\nvar Component = wp.element.Component;\n\nvar Thumbnail = function (_Component) {\n\tbabel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(Thumbnail, _Component);\n\n\tfunction Thumbnail() {\n\t\tbabel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, Thumbnail);\n\n\t\treturn babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, (Thumbnail.__proto__ || babel_runtime_core_js_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_0___default()(Thumbnail)).apply(this, arguments));\n\t}\n\n\tbabel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(Thumbnail, [{\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar _props = this.props,\n\t\t\t alt = _props.alt,\n\t\t\t id = _props.id,\n\t\t\t thumbnail = _props.thumbnail,\n\t\t\t link = _props.link;\n\n\n\t\t\tvar img = thumbnail ? wp.element.createElement('img', { src: thumbnail, alt: alt, 'data-id': id }) : wp.element.createElement(Spinner, null);\n\n\t\t\treturn wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'post-thumbnail' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'a',\n\t\t\t\t\t{ href: link },\n\t\t\t\t\timg\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn Thumbnail;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (withSelect(function (select, ownProps) {\n\tvar id = ownProps.id;\n\n\tvar image = id ? select('core').getMedia(id) : undefined;\n\tvar size = 'medium';\n\tvar thumbnail = image ? image.media_details.sizes[size].source_url : null;\n\n\treturn image ? {\n\t\tthumbnail: thumbnail,\n\t\talt: image.alt_text\n\t} : {\n\t\talt: null\n\t};\n})(Thumbnail));\n\n//# sourceURL=webpack:///./blocks/post-grid/Thumbnail.js?");
321
-
322
- /***/ }),
323
-
324
- /***/ "./blocks/post-grid/editor.scss":
325
- /*!**************************************!*\
326
- !*** ./blocks/post-grid/editor.scss ***!
327
- \**************************************/
328
- /*! no static exports found */
329
- /***/ (function(module, exports) {
330
-
331
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/post-grid/editor.scss?");
332
-
333
- /***/ }),
334
-
335
- /***/ "./blocks/post-grid/index.js":
336
- /*!***********************************!*\
337
- !*** ./blocks/post-grid/index.js ***!
338
- \***********************************/
339
- /*! no exports provided */
340
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
341
-
342
- "use strict";
343
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babel-runtime/helpers/extends */ \"./node_modules/babel-runtime/helpers/extends.js\");\n/* harmony import */ var babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Thumbnail_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Thumbnail.js */ \"./blocks/post-grid/Thumbnail.js\");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./style.scss */ \"./blocks/post-grid/style.scss\");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./editor.scss */ \"./blocks/post-grid/editor.scss\");\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_editor_scss__WEBPACK_IMPORTED_MODULE_4__);\n\n/**\r\n * External dependencies\r\n */\n\n\n\n\n/**\r\n * WordPress dependencies...\r\n */\n\nvar _lodash = lodash,\n isUndefined = _lodash.isUndefined,\n pickBy = _lodash.pickBy;\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$components = wp.components,\n Button = _wp$components.Button,\n Dashicon = _wp$components.Dashicon,\n PanelBody = _wp$components.PanelBody,\n QueryControls = _wp$components.QueryControls,\n RangeControl = _wp$components.RangeControl,\n Spinner = _wp$components.Spinner,\n TextControl = _wp$components.TextControl,\n ToggleControl = _wp$components.ToggleControl,\n Toolbar = _wp$components.Toolbar,\n Tooltip = _wp$components.Tooltip;\nvar withSelect = wp.data.withSelect;\nvar _wp$editor = wp.editor,\n BlockControls = _wp$editor.BlockControls,\n InspectorControls = _wp$editor.InspectorControls;\n\n\nvar unescapeHTML = function unescapeHTML(value) {\n\tvar htmlNode = document.createElement('div');\n\thtmlNode.innerHTML = value;\n\tif (htmlNode.innerText !== undefined) {\n\t\treturn htmlNode.innerText;\n\t}\n\treturn htmlNode.textContent;\n};\n\nvar formatDate = function formatDate(date) {\n\tvar monthNames = [__('January'), __('February'), __('March'), __('April'), __('May'), __('June'), __('July'), __('August'), __('September'), __('October'), __('November'), __('December')];\n\tvar weekNames = [__('Sunday'), __('Monday'), __('Tuesday'), __('Wednesday'), __('Thursday'), __('Friday'), __('Saturday')];\n\tdate = new Date(date);\n\tvar day = date.getDate();\n\tvar monthIndex = date.getMonth();\n\tvar year = date.getFullYear();\n\treturn day + ' ' + monthNames[monthIndex] + ', ' + year;\n};\n\n\n\n\nregisterBlockType('orbitfox/posts-grid', {\n\ttitle: __('Posts Grid'),\n\tdescription: __('Display a list of your most recent posts in a beautiful grid.'),\n\ticon: 'screenoptions',\n\tcategory: 'orbitfox',\n\tkeywords: ['posts', 'grid', 'orbitfox'],\n\tattributes: {\n\t\tgrid: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false\n\t\t},\n\t\tcolumns: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 3\n\t\t},\n\t\tcategories: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tpostsToShow: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 5\n\t\t},\n\t\torder: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'desc'\n\t\t},\n\t\torderBy: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'date'\n\t\t},\n\t\tdisplayFeaturedImage: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true\n\t\t},\n\t\tdisplayCategory: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true\n\t\t},\n\t\tdisplayDate: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true\n\t\t},\n\t\tdisplayAuthor: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true\n\t\t},\n\t\texcerptLength: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 200\n\t\t}\n\t},\n\n\tedit: withSelect(function (select, props) {\n\t\tvar _props$attributes = props.attributes,\n\t\t categories = _props$attributes.categories,\n\t\t order = _props$attributes.order,\n\t\t orderBy = _props$attributes.orderBy,\n\t\t postsToShow = _props$attributes.postsToShow;\n\n\t\tvar latestPostsQuery = pickBy({\n\t\t\tcategories: categories,\n\t\t\torder: order,\n\t\t\torderby: orderBy,\n\t\t\tper_page: postsToShow\n\t\t}, function (value) {\n\t\t\treturn !isUndefined(value);\n\t\t});\n\t\treturn {\n\t\t\tposts: select('core').getEntityRecords('postType', 'post', latestPostsQuery),\n\t\t\tcategoriesList: select('core').getEntityRecords('taxonomy', 'category', { per_page: 100 }),\n\t\t\tauthors: select('core').getAuthors(),\n\t\t\tprops: props\n\t\t};\n\t})(function (_ref) {\n\t\tvar posts = _ref.posts,\n\t\t categoriesList = _ref.categoriesList,\n\t\t authors = _ref.authors,\n\t\t className = _ref.className,\n\t\t setAttributes = _ref.setAttributes,\n\t\t props = _ref.props;\n\n\t\tif (!posts) {\n\t\t\treturn wp.element.createElement(\n\t\t\t\t'p',\n\t\t\t\t{ className: className },\n\t\t\t\twp.element.createElement(Spinner, null),\n\t\t\t\t__('Loading Posts')\n\t\t\t);\n\t\t}\n\t\tif (0 === posts.length) {\n\t\t\treturn wp.element.createElement(\n\t\t\t\t'p',\n\t\t\t\tnull,\n\t\t\t\t__('No Posts')\n\t\t\t);\n\t\t}\n\n\t\tvar _props$attributes2 = props.attributes,\n\t\t grid = _props$attributes2.grid,\n\t\t columns = _props$attributes2.columns,\n\t\t order = _props$attributes2.order,\n\t\t orderBy = _props$attributes2.orderBy,\n\t\t categories = _props$attributes2.categories,\n\t\t postsToShow = _props$attributes2.postsToShow,\n\t\t displayFeaturedImage = _props$attributes2.displayFeaturedImage,\n\t\t displayCategory = _props$attributes2.displayCategory,\n\t\t displayDate = _props$attributes2.displayDate,\n\t\t displayAuthor = _props$attributes2.displayAuthor,\n\t\t excerptLength = _props$attributes2.excerptLength;\n\n\n\t\tvar toggleLayout = function toggleLayout() {\n\t\t\tprops.setAttributes({ grid: !grid });\n\t\t};\n\n\t\tvar changeColumns = function changeColumns(value) {\n\t\t\tprops.setAttributes({ columns: value });\n\t\t};\n\n\t\tvar toggleFeaturedImage = function toggleFeaturedImage() {\n\t\t\tprops.setAttributes({ displayFeaturedImage: !displayFeaturedImage });\n\t\t};\n\n\t\tvar toggleDisplayCategory = function toggleDisplayCategory() {\n\t\t\tprops.setAttributes({ displayCategory: !displayCategory });\n\t\t};\n\n\t\tvar toggleDisplayDate = function toggleDisplayDate() {\n\t\t\tprops.setAttributes({ displayDate: !displayDate });\n\t\t};\n\n\t\tvar toggleDisplayAuthor = function toggleDisplayAuthor() {\n\t\t\tprops.setAttributes({ displayAuthor: !displayAuthor });\n\t\t};\n\n\t\tvar onExcerptLength = function onExcerptLength(value) {\n\t\t\tprops.setAttributes({ excerptLength: value });\n\t\t};\n\n\t\treturn [wp.element.createElement(\n\t\t\tBlockControls,\n\t\t\t{ key: 'toolbar-controls' },\n\t\t\twp.element.createElement(\n\t\t\t\tToolbar,\n\t\t\t\t{\n\t\t\t\t\tclassName: 'components-toolbar'\n\t\t\t\t},\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tTooltip,\n\t\t\t\t\t{ text: __('List Layout') },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tButton,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tclassName: classnames__WEBPACK_IMPORTED_MODULE_1___default()('components-icon-button', 'components-toolbar__control', { 'is-active': !grid }),\n\t\t\t\t\t\t\tonClick: toggleLayout\n\t\t\t\t\t\t},\n\t\t\t\t\t\twp.element.createElement(Dashicon, { icon: 'list-view' })\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tTooltip,\n\t\t\t\t\t{ text: __('Grid Layout') },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tButton,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tclassName: classnames__WEBPACK_IMPORTED_MODULE_1___default()('components-icon-button', 'components-toolbar__control', { 'is-active': grid }),\n\t\t\t\t\t\t\tonClick: toggleLayout\n\t\t\t\t\t\t},\n\t\t\t\t\t\twp.element.createElement(Dashicon, { icon: 'grid-view' })\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t), wp.element.createElement(\n\t\t\tInspectorControls,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tPanelBody,\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Posts Grid Settings')\n\t\t\t\t},\n\t\t\t\tgrid && wp.element.createElement(RangeControl, {\n\t\t\t\t\tlabel: __('Columns'),\n\t\t\t\t\tvalue: columns,\n\t\t\t\t\tonChange: changeColumns,\n\t\t\t\t\tmin: 1,\n\t\t\t\t\tmax: 5\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(QueryControls, babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({ order: order, orderBy: orderBy }, {\n\t\t\t\t\tnumberOfItems: postsToShow,\n\t\t\t\t\tcategoriesList: categoriesList,\n\t\t\t\t\tselectedCategoryId: categories,\n\t\t\t\t\tonOrderChange: function onOrderChange(value) {\n\t\t\t\t\t\treturn setAttributes({ order: value });\n\t\t\t\t\t},\n\t\t\t\t\tonOrderByChange: function onOrderByChange(value) {\n\t\t\t\t\t\treturn setAttributes({ orderBy: value });\n\t\t\t\t\t},\n\t\t\t\t\tonCategoryChange: function onCategoryChange(value) {\n\t\t\t\t\t\treturn setAttributes({ categories: '' !== value ? value : undefined });\n\t\t\t\t\t},\n\t\t\t\t\tonNumberOfItemsChange: function onNumberOfItemsChange(value) {\n\t\t\t\t\t\treturn setAttributes({ postsToShow: value });\n\t\t\t\t\t}\n\t\t\t\t})),\n\t\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\t\tlabel: __('Display Featured Image?'),\n\t\t\t\t\tchecked: displayFeaturedImage,\n\t\t\t\t\tonChange: toggleFeaturedImage\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\t\tlabel: __('Display Post Category?'),\n\t\t\t\t\tchecked: displayCategory,\n\t\t\t\t\tonChange: toggleDisplayCategory\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\t\tlabel: __('Display Post Date?'),\n\t\t\t\t\tchecked: displayDate,\n\t\t\t\t\tonChange: toggleDisplayDate\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\t\tlabel: __('Display Post Author?'),\n\t\t\t\t\tchecked: displayAuthor,\n\t\t\t\t\tonChange: toggleDisplayAuthor\n\t\t\t\t}),\n\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\tlabel: __('Description Character Limit'),\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tvalue: excerptLength,\n\t\t\t\t\tonChange: onExcerptLength\n\t\t\t\t})\n\t\t\t)\n\t\t), wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(className, { 'is-grid': grid }) },\n\t\t\tposts.map(function (post) {\n\t\t\t\tvar category = void 0,\n\t\t\t\t author = void 0;\n\t\t\t\tif (categoriesList) {\n\t\t\t\t\tcategory = categoriesList.find(function (item) {\n\t\t\t\t\t\treturn item.id === post.categories[0];\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (authors) {\n\t\t\t\t\tauthor = authors.find(function (item) {\n\t\t\t\t\t\treturn item.id === post.author;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ className: 'grid-post grid-' + columns },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'grid-post-row' },\n\t\t\t\t\t\tpost.featured_media !== 0 && displayFeaturedImage && wp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'grid-image-area' },\n\t\t\t\t\t\t\twp.element.createElement(_Thumbnail_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"], { id: post.featured_media, link: post.link })\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'grid-content-area ' + (!displayFeaturedImage && 'full') },\n\t\t\t\t\t\t\tdisplayCategory && categoriesList && wp.element.createElement(\n\t\t\t\t\t\t\t\t'h6',\n\t\t\t\t\t\t\t\t{ className: 'grid-content-category' },\n\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t\t{ href: category.link },\n\t\t\t\t\t\t\t\t\tcategory.name\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'h3',\n\t\t\t\t\t\t\t\t{ className: 'grid-content-title' },\n\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t\t{ href: post.link },\n\t\t\t\t\t\t\t\t\tpost.title.rendered\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t(displayDate || displayAuthor) && wp.element.createElement(\n\t\t\t\t\t\t\t\t'p',\n\t\t\t\t\t\t\t\t{ className: 'grid-content-meta' },\n\t\t\t\t\t\t\t\tdisplayDate && [__('on '), wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'time',\n\t\t\t\t\t\t\t\t\t{ datetime: post.date },\n\t\t\t\t\t\t\t\t\tformatDate(post.date)\n\t\t\t\t\t\t\t\t), ' '],\n\t\t\t\t\t\t\t\tdisplayAuthor && authors && [__('by '), wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t\t{ href: author.link },\n\t\t\t\t\t\t\t\t\tauthor.name\n\t\t\t\t\t\t\t\t)]\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\texcerptLength > 0 && wp.element.createElement(\n\t\t\t\t\t\t\t\t'p',\n\t\t\t\t\t\t\t\t{ className: 'grid-content-excerpt' },\n\t\t\t\t\t\t\t\tunescapeHTML(post.excerpt.rendered).substring(0, excerptLength) + '…'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t})\n\t\t)];\n\t}),\n\n\tsave: function save() {\n\t\treturn null;\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/post-grid/index.js?");
344
-
345
- /***/ }),
346
-
347
- /***/ "./blocks/post-grid/style.scss":
348
- /*!*************************************!*\
349
- !*** ./blocks/post-grid/style.scss ***!
350
- \*************************************/
351
- /*! no static exports found */
352
- /***/ (function(module, exports) {
353
-
354
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/post-grid/style.scss?");
355
-
356
- /***/ }),
357
-
358
- /***/ "./blocks/pricing-table/editor.scss":
359
- /*!******************************************!*\
360
- !*** ./blocks/pricing-table/editor.scss ***!
361
- \******************************************/
362
- /*! no static exports found */
363
- /***/ (function(module, exports) {
364
-
365
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/pricing-table/editor.scss?");
366
-
367
- /***/ }),
368
-
369
- /***/ "./blocks/pricing-table/index.js":
370
- /*!***************************************!*\
371
- !*** ./blocks/pricing-table/index.js ***!
372
- \***************************************/
373
- /*! no exports provided */
374
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
375
-
376
- "use strict";
377
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./style.scss */ \"./blocks/pricing-table/style.scss\");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editor.scss */ \"./blocks/pricing-table/editor.scss\");\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_editor_scss__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _pricing_table__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pricing-table */ \"./blocks/pricing-table/pricing-table.js\");\n/* harmony import */ var _pricing_block__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pricing-block */ \"./blocks/pricing-table/pricing-block.js\");\n/**\r\n * Pricing Table Block\r\n */\n\n\n\n\n\n//# sourceURL=webpack:///./blocks/pricing-table/index.js?");
378
-
379
- /***/ }),
380
-
381
- /***/ "./blocks/pricing-table/pricing-block.js":
382
- /*!***********************************************!*\
383
- !*** ./blocks/pricing-table/pricing-block.js ***!
384
- \***********************************************/
385
- /*! no exports provided */
386
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
387
-
388
- "use strict";
389
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_0__);\n/**\n * WordPress dependencies...\n */\n\n\n\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$editor = wp.editor,\n InnerBlocks = _wp$editor.InnerBlocks,\n BlockControls = _wp$editor.BlockControls,\n InspectorControls = _wp$editor.InspectorControls,\n PanelColorSettings = _wp$editor.PanelColorSettings;\nvar _wp$components = wp.components,\n Dashicon = _wp$components.Dashicon,\n Toolbar = _wp$components.Toolbar,\n Button = _wp$components.Button,\n Tooltip = _wp$components.Tooltip;\n\n/**\n * Internal dependencies\n */\n\nregisterBlockType('orbitfox/pricing-block', {\n\ttitle: __('Pricing Block'),\n\tdescription: __('Pricing tables are a critical part in showcasing your services, prices and overall offerings.'),\n\tparent: ['orbitfox/pricing-table'],\n\ticon: 'slides',\n\tcategory: 'orbitfox',\n\tkeywords: ['pricing', 'table', 'orbitfox'],\n\tattributes: {\n\t\tfeatured: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false\n\t\t},\n\t\tbackgroundColor: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#ffffff'\n\t\t}\n\t},\n\n\tedit: function edit(props) {\n\t\tvar toggleFeatured = function toggleFeatured() {\n\t\t\tprops.setAttributes({ featured: !props.attributes.featured });\n\t\t};\n\t\tvar setBackgroundColor = function setBackgroundColor(value) {\n\t\t\tprops.setAttributes({ backgroundColor: value });\n\t\t};\n\t\tvar TEMPLATE = [['core/heading', {\n\t\t\tcontent: __('Basic'),\n\t\t\tclassName: 'pricing-title',\n\t\t\talign: 'center',\n\t\t\tlevel: 5\n\t\t}], ['core/paragraph', {\n\t\t\tcontent: __('$9.99'),\n\t\t\talign: 'center',\n\t\t\tcustomFontSize: 36\n\t\t}], ['core/paragraph', {\n\t\t\tcontent: __('Per Month'),\n\t\t\talign: 'center',\n\t\t\tcustomFontSize: 12\n\t\t}], ['core/separator', {}], ['core/paragraph', {\n\t\t\tcontent: __('First Feature'),\n\t\t\talign: 'center',\n\t\t\tfontSize: 'small'\n\t\t}], ['core/separator', {}], ['core/paragraph', {\n\t\t\tcontent: __('Second Feature'),\n\t\t\talign: 'center',\n\t\t\tfontSize: 'small'\n\t\t}], ['core/separator', {}], ['core/paragraph', {\n\t\t\tcontent: __('Last Feature'),\n\t\t\talign: 'center',\n\t\t\tfontSize: 'small'\n\t\t}], ['core/separator', {}], ['core/button', {\n\t\t\ttext: __('Buy Now'),\n\t\t\tclassName: 'pricing-button',\n\t\t\talign: 'center'\n\t\t}]];\n\n\t\treturn [wp.element.createElement(\n\t\t\tBlockControls,\n\t\t\t{ key: 'toolbar-controls' },\n\t\t\twp.element.createElement(\n\t\t\t\tToolbar,\n\t\t\t\t{\n\t\t\t\t\tclassName: 'components-toolbar'\n\t\t\t\t},\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tTooltip,\n\t\t\t\t\t{ text: __('Feature Table') },\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tButton,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tclassName: classnames__WEBPACK_IMPORTED_MODULE_0___default()('components-icon-button', 'components-toolbar__control', { 'is-active': props.attributes.featured }),\n\t\t\t\t\t\t\tonClick: toggleFeatured\n\t\t\t\t\t\t},\n\t\t\t\t\t\twp.element.createElement(Dashicon, { icon: 'star-empty' })\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t), wp.element.createElement(\n\t\t\tInspectorControls,\n\t\t\tnull,\n\t\t\twp.element.createElement(PanelColorSettings, {\n\t\t\t\ttitle: __('Color Settings'),\n\t\t\t\tinitialOpen: true,\n\t\t\t\tcolorSettings: [{\n\t\t\t\t\tvalue: props.attributes.backgroundColor,\n\t\t\t\t\tonChange: setBackgroundColor,\n\t\t\t\t\tlabel: __('Background Color')\n\t\t\t\t}]\n\t\t\t})\n\t\t), wp.element.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: classnames__WEBPACK_IMPORTED_MODULE_0___default()('wp-block-column', { 'raised': props.attributes.featured }),\n\t\t\t\tstyle: {\n\t\t\t\t\tbackgroundColor: props.attributes.backgroundColor\n\t\t\t\t}\n\t\t\t},\n\t\t\twp.element.createElement(InnerBlocks, {\n\t\t\t\ttemplate: TEMPLATE\n\t\t\t})\n\t\t)];\n\t},\n\n\tsave: function save(props) {\n\t\treturn wp.element.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: classnames__WEBPACK_IMPORTED_MODULE_0___default()('wp-block-column', { 'raised': props.attributes.featured }),\n\t\t\t\tstyle: {\n\t\t\t\t\tbackgroundColor: props.attributes.backgroundColor\n\t\t\t\t}\n\t\t\t},\n\t\t\twp.element.createElement(InnerBlocks.Content, null)\n\t\t);\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/pricing-table/pricing-block.js?");
390
-
391
- /***/ }),
392
-
393
- /***/ "./blocks/pricing-table/pricing-table.js":
394
- /*!***********************************************!*\
395
- !*** ./blocks/pricing-table/pricing-table.js ***!
396
- \***********************************************/
397
- /*! no exports provided */
398
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
399
-
400
- "use strict";
401
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_0__);\n/**\n * External dependencies\n */\n\n\n/**\n * WordPress dependencies...\n */\n\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$editor = wp.editor,\n ColorPalette = _wp$editor.ColorPalette,\n InnerBlocks = _wp$editor.InnerBlocks,\n InspectorControls = _wp$editor.InspectorControls,\n MediaPlaceholder = _wp$editor.MediaPlaceholder;\nvar _wp$components = wp.components,\n Button = _wp$components.Button,\n ToggleControl = _wp$components.ToggleControl,\n SelectControl = _wp$components.SelectControl,\n PanelBody = _wp$components.PanelBody;\nvar Fragment = wp.element.Fragment;\n\n\nregisterBlockType('orbitfox/pricing-table', {\n\ttitle: __('Pricing Table'),\n\tdescription: __('Pricing tables are a critical part in showcasing your services, prices and overall offerings.'),\n\ticon: 'slides',\n\tcategory: 'orbitfox',\n\tkeywords: ['pricing', 'table', 'orbitfox'],\n\tattributes: {\n\t\tbackgroundType: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'color'\n\t\t},\n\t\tbackgroundColor: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#ffffff'\n\t\t},\n\t\tbackgroundImageID: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tbackgroundImageURL: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tbackgroundDimmed: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true\n\t\t},\n\t\tbackgroundParallax: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false\n\t\t}\n\t},\n\n\tsupports: {\n\t\talign: ['wide', 'full']\n\t},\n\n\tedit: function edit(props) {\n\t\tvar ALLOWED_BLOCKS = ['orbitfox/pricing-block'];\n\t\tvar ALLOWED_MEDIA_TYPES = ['image'];\n\t\tvar TEMPLATE = [['orbitfox/pricing-block'], ['orbitfox/pricing-block'], ['orbitfox/pricing-block']];\n\t\tvar changeType = function changeType(value) {\n\t\t\tprops.setAttributes({ backgroundType: value });\n\t\t};\n\t\tvar changeColor = function changeColor(value) {\n\t\t\tprops.setAttributes({ backgroundColor: value });\n\t\t};\n\t\tvar changeBackground = function changeBackground(value) {\n\t\t\tprops.setAttributes({\n\t\t\t\tbackgroundImageID: value.id,\n\t\t\t\tbackgroundImageURL: value.url\n\t\t\t});\n\t\t};\n\t\tvar removeBackground = function removeBackground() {\n\t\t\tprops.setAttributes({\n\t\t\t\tbackgroundImageID: '',\n\t\t\t\tbackgroundImageURL: ''\n\t\t\t});\n\t\t};\n\t\tvar toggleDimming = function toggleDimming() {\n\t\t\tprops.setAttributes({ backgroundDimmed: !props.attributes.backgroundDimmed });\n\t\t};\n\t\tvar toggleParallax = function toggleParallax() {\n\t\t\tprops.setAttributes({ backgroundParallax: !props.attributes.backgroundParallax });\n\t\t};\n\t\tvar style = {\n\t\t\tbackground: props.attributes.backgroundType === 'color' ? props.attributes.backgroundColor : 'url(\\' ' + props.attributes.backgroundImageURL + ' \\')'\n\t\t};\n\t\treturn [wp.element.createElement(\n\t\t\tInspectorControls,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tPanelBody,\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Background')\n\t\t\t\t},\n\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\tlabel: __('Background Type'),\n\t\t\t\t\tvalue: props.attributes.backgroundType,\n\t\t\t\t\toptions: [{ label: 'Color', value: 'color' }, { label: 'Image', value: 'image' }],\n\t\t\t\t\tonChange: changeType\n\t\t\t\t}),\n\t\t\t\tprops.attributes.backgroundType === 'color' ? wp.element.createElement(ColorPalette, {\n\t\t\t\t\tlabel: __('Background Color'),\n\t\t\t\t\tvalue: props.attributes.backgroundColor,\n\t\t\t\t\tonChange: changeColor\n\t\t\t\t}) : props.attributes.backgroundImageURL ? wp.element.createElement(\n\t\t\t\t\tFragment,\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\t\t\tlabel: __('Dimmed Background'),\n\t\t\t\t\t\tchecked: props.attributes.backgroundDimmed,\n\t\t\t\t\t\tonChange: toggleDimming\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\t\t\tlabel: __('Parallax Background'),\n\t\t\t\t\t\tchecked: props.attributes.backgroundParallax,\n\t\t\t\t\t\tonChange: toggleParallax\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement('img', {\n\t\t\t\t\t\tsrc: props.attributes.backgroundImageURL\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tButton,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\tonClick: removeBackground,\n\t\t\t\t\t\t\tstyle: { marginTop: '10px' }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t__('Change or Remove Image')\n\t\t\t\t\t)\n\t\t\t\t) : wp.element.createElement(MediaPlaceholder, {\n\t\t\t\t\ticon: 'format-image',\n\t\t\t\t\tlabels: {\n\t\t\t\t\t\ttitle: __('Background Image'),\n\t\t\t\t\t\tname: __('an image')\n\t\t\t\t\t},\n\t\t\t\t\tvalue: props.attributes.backgroundImageID,\n\t\t\t\t\tonSelect: changeBackground,\n\t\t\t\t\taccept: 'image/*',\n\t\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES\n\t\t\t\t})\n\t\t\t)\n\t\t), wp.element.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: classnames__WEBPACK_IMPORTED_MODULE_0___default()(props.className, { 'is-dim': props.attributes.backgroundType === 'image' && props.attributes.backgroundDimmed }, { 'is-parallax': props.attributes.backgroundType === 'image' && props.attributes.backgroundParallax }),\n\t\t\t\tstyle: style\n\t\t\t},\n\t\t\twp.element.createElement(InnerBlocks, {\n\t\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t\ttemplate: TEMPLATE\n\t\t\t})\n\t\t)];\n\t},\n\n\tsave: function save(props) {\n\t\tvar style = {\n\t\t\tbackground: props.attributes.backgroundType === 'color' ? props.attributes.backgroundColor : 'url(\\' ' + props.attributes.backgroundImageURL + ' \\')'\n\t\t};\n\t\treturn wp.element.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: classnames__WEBPACK_IMPORTED_MODULE_0___default()('wp-block-orbitfox-pricing-table', { 'is-dim': props.attributes.backgroundType === 'image' && props.attributes.backgroundDimmed }, { 'is-parallax': props.attributes.backgroundType === 'image' && props.attributes.backgroundParallax }),\n\t\t\t\tstyle: style\n\t\t\t},\n\t\t\twp.element.createElement(InnerBlocks.Content, null)\n\t\t);\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/pricing-table/pricing-table.js?");
402
-
403
- /***/ }),
404
-
405
- /***/ "./blocks/pricing-table/style.scss":
406
- /*!*****************************************!*\
407
- !*** ./blocks/pricing-table/style.scss ***!
408
- \*****************************************/
409
- /*! no static exports found */
410
- /***/ (function(module, exports) {
411
-
412
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/pricing-table/style.scss?");
413
-
414
- /***/ }),
415
-
416
- /***/ "./blocks/services/editor.scss":
417
- /*!*************************************!*\
418
- !*** ./blocks/services/editor.scss ***!
419
- \*************************************/
420
- /*! no static exports found */
421
- /***/ (function(module, exports) {
422
-
423
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/services/editor.scss?");
424
-
425
- /***/ }),
426
-
427
- /***/ "./blocks/services/index.js":
428
- /*!**********************************!*\
429
- !*** ./blocks/services/index.js ***!
430
- \**********************************/
431
- /*! no exports provided */
432
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
433
-
434
- "use strict";
435
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./style.scss */ \"./blocks/services/style.scss\");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editor.scss */ \"./blocks/services/editor.scss\");\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_editor_scss__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _services_block__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./services-block */ \"./blocks/services/services-block.js\");\n/* harmony import */ var _service_block__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./service-block */ \"./blocks/services/service-block.js\");\n/* harmony import */ var _service_block__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_service_block__WEBPACK_IMPORTED_MODULE_3__);\n/**\r\n * Services Block\r\n */\n\n\n\n\n\n//# sourceURL=webpack:///./blocks/services/index.js?");
436
-
437
- /***/ }),
438
-
439
- /***/ "./blocks/services/service-block.js":
440
- /*!******************************************!*\
441
- !*** ./blocks/services/service-block.js ***!
442
- \******************************************/
443
- /*! no static exports found */
444
- /***/ (function(module, exports) {
445
-
446
- eval("/**\n * WordPress dependencies...\n */\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$editor = wp.editor,\n InnerBlocks = _wp$editor.InnerBlocks,\n InspectorControls = _wp$editor.InspectorControls,\n PanelColorSettings = _wp$editor.PanelColorSettings;\n\n\nregisterBlockType('orbitfox/service-block', {\n\ttitle: __('Service Block'),\n\tdescription: __('Use this Services table to showcase services your website offers.'),\n\tparent: ['orbitfox/services'],\n\ticon: 'slides',\n\tcategory: 'orbitfox',\n\tkeywords: ['pricing', 'table', 'orbitfox'],\n\tattributes: {\n\t\tbackgroundColor: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#ffffff'\n\t\t}\n\t},\n\n\tedit: function edit(props) {\n\t\tvar setBackgroundColor = function setBackgroundColor(value) {\n\t\t\tprops.setAttributes({ backgroundColor: value });\n\t\t};\n\t\tvar TEMPLATE = [['orbitfox/font-awesome-icons', {\n\t\t\tfontSize: '62',\n\t\t\tprefix: 'fab',\n\t\t\ticon: 'angellist'\n\t\t}], ['core/heading', {\n\t\t\tcontent: __('Panel'),\n\t\t\tclassName: 'service-title',\n\t\t\talign: 'center',\n\t\t\tlevel: 4\n\t\t}], ['core/paragraph', {\n\t\t\tcontent: __('Small description, but a pretty long one.'),\n\t\t\tclassName: 'service-content',\n\t\t\talign: 'center'\n\t\t}], ['core/button', {\n\t\t\ttext: __('Learn More'),\n\t\t\tclassName: 'service-button',\n\t\t\talign: 'center'\n\t\t}]];\n\n\t\treturn [wp.element.createElement(\n\t\t\tInspectorControls,\n\t\t\tnull,\n\t\t\twp.element.createElement(PanelColorSettings, {\n\t\t\t\ttitle: __('Color Settings'),\n\t\t\t\tinitialOpen: true,\n\t\t\t\tcolorSettings: [{\n\t\t\t\t\tvalue: props.attributes.backgroundColor,\n\t\t\t\t\tonChange: setBackgroundColor,\n\t\t\t\t\tlabel: __('Background Color')\n\t\t\t\t}]\n\t\t\t})\n\t\t), wp.element.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: 'wp-block-column',\n\t\t\t\tstyle: {\n\t\t\t\t\tbackgroundColor: props.attributes.backgroundColor\n\t\t\t\t}\n\t\t\t},\n\t\t\twp.element.createElement(InnerBlocks, {\n\t\t\t\ttemplate: TEMPLATE\n\t\t\t})\n\t\t)];\n\t},\n\n\tsave: function save(props) {\n\t\treturn wp.element.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: 'wp-block-column',\n\t\t\t\tstyle: {\n\t\t\t\t\tbackgroundColor: props.attributes.backgroundColor\n\t\t\t\t}\n\t\t\t},\n\t\t\twp.element.createElement(InnerBlocks.Content, null)\n\t\t);\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/services/service-block.js?");
447
-
448
- /***/ }),
449
-
450
- /***/ "./blocks/services/services-block.js":
451
- /*!*******************************************!*\
452
- !*** ./blocks/services/services-block.js ***!
453
- \*******************************************/
454
- /*! no exports provided */
455
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
456
-
457
- "use strict";
458
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_0__);\n/**\n * External dependencies\n */\n\n\n/**\n * WordPress dependencies...\n */\n\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$editor = wp.editor,\n ColorPalette = _wp$editor.ColorPalette,\n InnerBlocks = _wp$editor.InnerBlocks,\n InspectorControls = _wp$editor.InspectorControls,\n MediaPlaceholder = _wp$editor.MediaPlaceholder;\nvar _wp$components = wp.components,\n Button = _wp$components.Button,\n ToggleControl = _wp$components.ToggleControl,\n SelectControl = _wp$components.SelectControl,\n PanelBody = _wp$components.PanelBody;\nvar Fragment = wp.element.Fragment;\n\n\nregisterBlockType('orbitfox/services', {\n\ttitle: __('Our Services'),\n\tdescription: __('Use this Services table to showcase services your website offers.'),\n\ticon: 'columns',\n\tcategory: 'orbitfox',\n\tkeywords: ['services', 'features', 'orbitfox'],\n\tattributes: {\n\t\tbackgroundType: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'color'\n\t\t},\n\t\tbackgroundColor: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#ffffff'\n\t\t},\n\t\tbackgroundImageID: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tbackgroundImageURL: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tbackgroundDimmed: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true\n\t\t},\n\t\tbackgroundParallax: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false\n\t\t}\n\t},\n\n\tsupports: {\n\t\talign: ['wide', 'full']\n\t},\n\n\tedit: function edit(props) {\n\t\tvar ALLOWED_BLOCKS = ['orbitfox/service-block'];\n\t\tvar ALLOWED_MEDIA_TYPES = ['image'];\n\t\tvar TEMPLATE = [['orbitfox/service-block'], ['orbitfox/service-block'], ['orbitfox/service-block']];\n\t\tvar changeType = function changeType(value) {\n\t\t\tprops.setAttributes({ backgroundType: value });\n\t\t};\n\t\tvar changeColor = function changeColor(value) {\n\t\t\tprops.setAttributes({ backgroundColor: value });\n\t\t};\n\t\tvar changeBackground = function changeBackground(value) {\n\t\t\tprops.setAttributes({\n\t\t\t\tbackgroundImageID: value.id,\n\t\t\t\tbackgroundImageURL: value.url\n\t\t\t});\n\t\t};\n\t\tvar removeBackground = function removeBackground() {\n\t\t\tprops.setAttributes({\n\t\t\t\tbackgroundImageID: '',\n\t\t\t\tbackgroundImageURL: ''\n\t\t\t});\n\t\t};\n\t\tvar toggleDimming = function toggleDimming() {\n\t\t\tprops.setAttributes({ backgroundDimmed: !props.attributes.backgroundDimmed });\n\t\t};\n\t\tvar toggleParallax = function toggleParallax() {\n\t\t\tprops.setAttributes({ backgroundParallax: !props.attributes.backgroundParallax });\n\t\t};\n\t\tvar style = {\n\t\t\tbackground: props.attributes.backgroundType === 'color' ? props.attributes.backgroundColor : 'url(\\' ' + props.attributes.backgroundImageURL + ' \\')'\n\t\t};\n\t\treturn [wp.element.createElement(\n\t\t\tInspectorControls,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tPanelBody,\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Background')\n\t\t\t\t},\n\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\tlabel: __('Background Type'),\n\t\t\t\t\tvalue: props.attributes.backgroundType,\n\t\t\t\t\toptions: [{ label: 'Color', value: 'color' }, { label: 'Image', value: 'image' }],\n\t\t\t\t\tonChange: changeType\n\t\t\t\t}),\n\t\t\t\tprops.attributes.backgroundType === 'color' ? wp.element.createElement(ColorPalette, {\n\t\t\t\t\tlabel: __('Background Color'),\n\t\t\t\t\tvalue: props.attributes.backgroundColor,\n\t\t\t\t\tonChange: changeColor\n\t\t\t\t}) : props.attributes.backgroundImageURL ? wp.element.createElement(\n\t\t\t\t\tFragment,\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\t\t\tlabel: __('Dimmed Background'),\n\t\t\t\t\t\tchecked: props.attributes.backgroundDimmed,\n\t\t\t\t\t\tonChange: toggleDimming\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\t\t\tlabel: __('Parallax Background'),\n\t\t\t\t\t\tchecked: props.attributes.backgroundParallax,\n\t\t\t\t\t\tonChange: toggleParallax\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement('img', {\n\t\t\t\t\t\tsrc: props.attributes.backgroundImageURL\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tButton,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\tonClick: removeBackground,\n\t\t\t\t\t\t\tstyle: { marginTop: '10px' }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t__('Change or Remove Image')\n\t\t\t\t\t)\n\t\t\t\t) : wp.element.createElement(MediaPlaceholder, {\n\t\t\t\t\ticon: 'format-image',\n\t\t\t\t\tlabels: {\n\t\t\t\t\t\ttitle: __('Background Image'),\n\t\t\t\t\t\tname: __('an image')\n\t\t\t\t\t},\n\t\t\t\t\tvalue: props.attributes.backgroundImageID,\n\t\t\t\t\tonSelect: changeBackground,\n\t\t\t\t\taccept: 'image/*',\n\t\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES\n\t\t\t\t})\n\t\t\t)\n\t\t), wp.element.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: classnames__WEBPACK_IMPORTED_MODULE_0___default()(props.className, { 'is-dim': props.attributes.backgroundType === 'image' && props.attributes.backgroundDimmed }, { 'is-parallax': props.attributes.backgroundType === 'image' && props.attributes.backgroundParallax }),\n\t\t\t\tstyle: style\n\t\t\t},\n\t\t\twp.element.createElement(InnerBlocks, {\n\t\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t\ttemplate: TEMPLATE\n\t\t\t})\n\t\t)];\n\t},\n\n\tsave: function save(props) {\n\t\tvar style = {\n\t\t\tbackground: props.attributes.backgroundType === 'color' ? props.attributes.backgroundColor : 'url(\\' ' + props.attributes.backgroundImageURL + ' \\')'\n\t\t};\n\t\treturn wp.element.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: classnames__WEBPACK_IMPORTED_MODULE_0___default()('wp-block-orbitfox-services', { 'is-dim': props.attributes.backgroundType === 'image' && props.attributes.backgroundDimmed }, { 'is-parallax': props.attributes.backgroundType === 'image' && props.attributes.backgroundParallax }),\n\t\t\t\tstyle: style\n\t\t\t},\n\t\t\twp.element.createElement(InnerBlocks.Content, null)\n\t\t);\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/services/services-block.js?");
459
-
460
- /***/ }),
461
-
462
- /***/ "./blocks/services/style.scss":
463
- /*!************************************!*\
464
- !*** ./blocks/services/style.scss ***!
465
- \************************************/
466
- /*! no static exports found */
467
- /***/ (function(module, exports) {
468
-
469
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/services/style.scss?");
470
-
471
- /***/ }),
472
-
473
- /***/ "./blocks/sharing-icons/editor.scss":
474
- /*!******************************************!*\
475
- !*** ./blocks/sharing-icons/editor.scss ***!
476
- \******************************************/
477
- /*! no static exports found */
478
- /***/ (function(module, exports) {
479
-
480
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/sharing-icons/editor.scss?");
481
-
482
- /***/ }),
483
-
484
- /***/ "./blocks/sharing-icons/icons.js":
485
- /*!***************************************!*\
486
- !*** ./blocks/sharing-icons/icons.js ***!
487
- \***************************************/
488
- /*! exports provided: default */
489
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
490
-
491
- "use strict";
492
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var babel_runtime_core_js_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n/* harmony import */ var babel_runtime_core_js_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_core_js_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n/* harmony import */ var babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n/* harmony import */ var babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n/* harmony import */ var babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n/* harmony import */ var babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n/**\n * WordPress dependencies...\n */\nvar Component = wp.element.Component;\n\nvar SocialIcons = function (_Component) {\n\tbabel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default()(SocialIcons, _Component);\n\n\tfunction SocialIcons() {\n\t\tbabel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, SocialIcons);\n\n\t\treturn babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3___default()(this, (SocialIcons.__proto__ || babel_runtime_core_js_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_0___default()(SocialIcons)).apply(this, arguments));\n\t}\n\n\tbabel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(SocialIcons, [{\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tif (this.props.icon === 'facebook') {\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\"svg\",\n\t\t\t\t\t{ className: \"obfx-toolbar\", xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 264 512\" },\n\t\t\t\t\twp.element.createElement(\"path\", { fill: \"currentColor\", d: \"M76.7 512V283H0v-91h76.7v-71.7C76.7 42.4 124.3 0 193.8 0c33.3 0 61.9 2.5 70.2 3.6V85h-48.2c-37.8 0-45.1 18-45.1 44.3V192H256l-11.7 91h-73.6v229\" })\n\t\t\t\t);\n\t\t\t} else if (this.props.icon === 'twitter') {\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\"svg\",\n\t\t\t\t\t{ className: \"obfx-toolbar\", xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 512 512\" },\n\t\t\t\t\twp.element.createElement(\"path\", { fill: \"currentColor\", d: \"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\" })\n\t\t\t\t);\n\t\t\t} else if (this.props.icon === 'googleplus') {\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\"svg\",\n\t\t\t\t\t{ className: \"obfx-toolbar\", xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 640 512\" },\n\t\t\t\t\twp.element.createElement(\"path\", { fill: \"currentColor\", d: \"M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z\" })\n\t\t\t\t);\n\t\t\t} else if (this.props.icon === 'linkedin') {\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\"svg\",\n\t\t\t\t\t{ className: \"obfx-toolbar\", xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 448 512\" },\n\t\t\t\t\twp.element.createElement(\"path\", { fill: \"currentColor\", d: \"M100.3 480H7.4V180.9h92.9V480zM53.8 140.1C24.1 140.1 0 115.5 0 85.8 0 56.1 24.1 32 53.8 32c29.7 0 53.8 24.1 53.8 53.8 0 29.7-24.1 54.3-53.8 54.3zM448 480h-92.7V334.4c0-34.7-.7-79.2-48.3-79.2-48.3 0-55.7 37.7-55.7 76.7V480h-92.8V180.9h89.1v40.8h1.3c12.4-23.5 42.7-48.3 87.9-48.3 94 0 111.3 61.9 111.3 142.3V480z\" })\n\t\t\t\t);\n\t\t\t} else if (this.props.icon === 'pinterest') {\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\"svg\",\n\t\t\t\t\t{ className: \"obfx-toolbar\", xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 384 512\" },\n\t\t\t\t\twp.element.createElement(\"path\", { fill: \"currentColor\", d: \"M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z\" })\n\t\t\t\t);\n\t\t\t} else if (this.props.icon === 'tumblr') {\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\"svg\",\n\t\t\t\t\t{ className: \"obfx-toolbar\", xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 320 512\" },\n\t\t\t\t\twp.element.createElement(\"path\", { fill: \"currentColor\", d: \"M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z\" })\n\t\t\t\t);\n\t\t\t} else if (this.props.icon === 'reddit') {\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\"svg\",\n\t\t\t\t\t{ className: \"obfx-toolbar\", xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 512 512\" },\n\t\t\t\t\twp.element.createElement(\"path\", { fill: \"currentColor\", d: \"M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z\" })\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\"svg\",\n\t\t\t\t\t{ className: \"obfx-toolbar\", xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 512 512\" },\n\t\t\t\t\twp.element.createElement(\"path\", { fill: \"currentColor\", d: \"M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z\" })\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}]);\n\n\treturn SocialIcons;\n}(Component);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SocialIcons);\n\n//# sourceURL=webpack:///./blocks/sharing-icons/icons.js?");
493
-
494
- /***/ }),
495
-
496
- /***/ "./blocks/sharing-icons/index.js":
497
- /*!***************************************!*\
498
- !*** ./blocks/sharing-icons/index.js ***!
499
- \***************************************/
500
- /*! no exports provided */
501
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
502
-
503
- "use strict";
504
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var babel_runtime_core_js_object_keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babel-runtime/core-js/object/keys */ \"./node_modules/babel-runtime/core-js/object/keys.js\");\n/* harmony import */ var babel_runtime_core_js_object_keys__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_core_js_object_keys__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"./node_modules/babel-runtime/helpers/defineProperty.js\");\n/* harmony import */ var babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./style.scss */ \"./blocks/sharing-icons/style.scss\");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./editor.scss */ \"./blocks/sharing-icons/editor.scss\");\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_editor_scss__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _social_list__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./social_list */ \"./blocks/sharing-icons/social_list.js\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./icons */ \"./blocks/sharing-icons/icons.js\");\n\n\n/**\r\n * WordPress dependencies...\r\n */\n\n\n\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar BlockControls = wp.editor.BlockControls;\nvar _wp$components = wp.components,\n Toolbar = _wp$components.Toolbar,\n Button = _wp$components.Button,\n Tooltip = _wp$components.Tooltip;\n\n/**\r\n * Internal dependencies\r\n */\n\n\n\n\n\n\nregisterBlockType('orbitfox/sharing-icons', {\n\ttitle: __('Sharing Icons'),\n\tdescription: __('Share buttons for your website visitors to share content on any social sharing service.'),\n\ticon: 'networking',\n\tcategory: 'orbitfox',\n\tkeywords: ['social media', 'sharing', 'icons'],\n\tattributes: {\n\t\tfacebook: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true\n\t\t},\n\t\ttwitter: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true\n\t\t},\n\t\tgoogleplus: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true\n\t\t},\n\t\tlinkedin: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true\n\t\t},\n\t\tpinterest: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false\n\t\t},\n\t\ttumblr: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false\n\t\t},\n\t\treddit: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false\n\t\t}\n\t},\n\n\tsupports: {\n\t\thtml: true,\n\t\talign: ['left', 'center', 'right']\n\t},\n\n\tstyles: [{ name: 'default', label: __('Regular'), isDefault: true }, { name: 'icons', label: __('Icons Only') }],\n\n\tedit: function edit(props) {\n\t\tvar toggleIcons = function toggleIcons(item) {\n\t\t\tprops.setAttributes(babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()({}, item, !props.attributes[item]));\n\t\t};\n\n\t\treturn [wp.element.createElement(\n\t\t\tBlockControls,\n\t\t\t{ key: 'toolbar-controls' },\n\t\t\twp.element.createElement(\n\t\t\t\tToolbar,\n\t\t\t\t{\n\t\t\t\t\tclassName: 'components-toolbar'\n\t\t\t\t},\n\t\t\t\tbabel_runtime_core_js_object_keys__WEBPACK_IMPORTED_MODULE_0___default()(_social_list__WEBPACK_IMPORTED_MODULE_5__[\"default\"]).map(function (item, i) {\n\t\t\t\t\tvar prop = props.attributes[item];\n\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\tTooltip,\n\t\t\t\t\t\t{ text: __('Display ' + _social_list__WEBPACK_IMPORTED_MODULE_5__[\"default\"][item]['label']) },\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclassName: classnames__WEBPACK_IMPORTED_MODULE_2___default()('components-icon-button', 'components-toolbar__control', { 'is-active': prop }),\n\t\t\t\t\t\t\t\tonClick: function onClick(e) {\n\t\t\t\t\t\t\t\t\treturn toggleIcons(item);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\twp.element.createElement(_icons__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { icon: item })\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t)\n\t\t), wp.element.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: classnames__WEBPACK_IMPORTED_MODULE_2___default()(props.className, { 'has-label': props.attributes.className ? !props.attributes.className.includes('is-style-icons') : true })\n\t\t\t},\n\t\t\tbabel_runtime_core_js_object_keys__WEBPACK_IMPORTED_MODULE_0___default()(_social_list__WEBPACK_IMPORTED_MODULE_5__[\"default\"]).map(function (item, i) {\n\t\t\t\tif (props.attributes[item] === true) {\n\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t'a',\n\t\t\t\t\t\t{ className: 'social-icon is-' + item },\n\t\t\t\t\t\twp.element.createElement('i', { 'class': 'fab fa-' + _social_list__WEBPACK_IMPORTED_MODULE_5__[\"default\"][item]['icon'] }),\n\t\t\t\t\t\t(props.attributes.className ? !props.attributes.className.includes('is-style-icons') : true) && _social_list__WEBPACK_IMPORTED_MODULE_5__[\"default\"][item]['label']\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t)];\n\t},\n\n\tsave: function save() {\n\t\treturn null;\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/sharing-icons/index.js?");
505
-
506
- /***/ }),
507
-
508
- /***/ "./blocks/sharing-icons/social_list.js":
509
- /*!*********************************************!*\
510
- !*** ./blocks/sharing-icons/social_list.js ***!
511
- \*********************************************/
512
- /*! exports provided: default */
513
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
514
-
515
- "use strict";
516
- eval("__webpack_require__.r(__webpack_exports__);\n/**\r\n * WordPress dependencies...\r\n */\nvar __ = wp.i18n.__;\n\n\nvar social_list = {\n\tfacebook: {\n\t\tlabel: __('Facebook'),\n\t\ticon: 'facebook-f'\n\t},\n\ttwitter: {\n\t\tlabel: __('Twitter'),\n\t\ticon: 'twitter'\n\t},\n\tgoogleplus: {\n\t\tlabel: __('Google+'),\n\t\ticon: 'google-plus-g'\n\t},\n\tlinkedin: {\n\t\tlabel: __('Linkedin'),\n\t\ticon: 'linkedin-in'\n\t},\n\tpinterest: {\n\t\tlabel: __('Pinterest'),\n\t\ticon: 'pinterest-p'\n\t},\n\ttumblr: {\n\t\tlabel: __('Tumblr'),\n\t\ticon: 'tumblr'\n\t},\n\treddit: {\n\t\tlabel: __('Reddit'),\n\t\ticon: 'reddit-alien'\n\t}\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (social_list);\n\n//# sourceURL=webpack:///./blocks/sharing-icons/social_list.js?");
517
-
518
- /***/ }),
519
-
520
- /***/ "./blocks/sharing-icons/style.scss":
521
- /*!*****************************************!*\
522
- !*** ./blocks/sharing-icons/style.scss ***!
523
- \*****************************************/
524
- /*! no static exports found */
525
- /***/ (function(module, exports) {
526
-
527
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/sharing-icons/style.scss?");
528
-
529
- /***/ }),
530
-
531
- /***/ "./blocks/testimonials/editor.scss":
532
- /*!*****************************************!*\
533
- !*** ./blocks/testimonials/editor.scss ***!
534
- \*****************************************/
535
- /*! no static exports found */
536
- /***/ (function(module, exports) {
537
-
538
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/testimonials/editor.scss?");
539
-
540
- /***/ }),
541
-
542
- /***/ "./blocks/testimonials/index.js":
543
- /*!**************************************!*\
544
- !*** ./blocks/testimonials/index.js ***!
545
- \**************************************/
546
- /*! no exports provided */
547
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
548
-
549
- "use strict";
550
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./style.scss */ \"./blocks/testimonials/style.scss\");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editor.scss */ \"./blocks/testimonials/editor.scss\");\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_editor_scss__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _testimonials_area__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./testimonials-area */ \"./blocks/testimonials/testimonials-area.js\");\n/* harmony import */ var _testimonials_block__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./testimonials-block */ \"./blocks/testimonials/testimonials-block.js\");\n/* harmony import */ var _testimonials_block__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_testimonials_block__WEBPACK_IMPORTED_MODULE_3__);\n/**\r\n * Testimonials Block\r\n */\n\n\n\n\n\n//# sourceURL=webpack:///./blocks/testimonials/index.js?");
551
-
552
- /***/ }),
553
-
554
- /***/ "./blocks/testimonials/style.scss":
555
- /*!****************************************!*\
556
- !*** ./blocks/testimonials/style.scss ***!
557
- \****************************************/
558
- /*! no static exports found */
559
- /***/ (function(module, exports) {
560
-
561
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/testimonials/style.scss?");
562
-
563
- /***/ }),
564
-
565
- /***/ "./blocks/testimonials/testimonials-area.js":
566
- /*!**************************************************!*\
567
- !*** ./blocks/testimonials/testimonials-area.js ***!
568
- \**************************************************/
569
- /*! no exports provided */
570
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
571
-
572
- "use strict";
573
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_0__);\n/**\n * External dependencies\n */\n\n\n/**\n * WordPress dependencies...\n */\n\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$editor = wp.editor,\n ColorPalette = _wp$editor.ColorPalette,\n InnerBlocks = _wp$editor.InnerBlocks,\n InspectorControls = _wp$editor.InspectorControls,\n MediaPlaceholder = _wp$editor.MediaPlaceholder;\nvar _wp$components = wp.components,\n Button = _wp$components.Button,\n ToggleControl = _wp$components.ToggleControl,\n SelectControl = _wp$components.SelectControl,\n PanelBody = _wp$components.PanelBody;\nvar Fragment = wp.element.Fragment;\n\n\nregisterBlockType('orbitfox/testimonials-area', {\n\ttitle: __('Testimonials Area'),\n\tdescription: __('Display kudos from customers and clients and display them on your website.'),\n\ticon: 'testimonial',\n\tcategory: 'orbitfox',\n\tkeywords: ['testimonials', 'clients', 'quotes'],\n\tattributes: {\n\t\tbackgroundType: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'color'\n\t\t},\n\t\tbackgroundColor: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#ffffff'\n\t\t},\n\t\tbackgroundImageID: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tbackgroundImageURL: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tbackgroundDimmed: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true\n\t\t},\n\t\tbackgroundParallax: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false\n\t\t}\n\t},\n\n\tsupports: {\n\t\talign: ['wide', 'full']\n\t},\n\n\tedit: function edit(props) {\n\t\tvar ALLOWED_BLOCKS = ['orbitfox/testimonials-block'];\n\t\tvar ALLOWED_MEDIA_TYPES = ['image'];\n\t\tvar TEMPLATE = [['orbitfox/testimonials-block'], ['orbitfox/testimonials-block'], ['orbitfox/testimonials-block']];\n\t\tvar changeType = function changeType(value) {\n\t\t\tprops.setAttributes({ backgroundType: value });\n\t\t};\n\t\tvar changeColor = function changeColor(value) {\n\t\t\tprops.setAttributes({ backgroundColor: value });\n\t\t};\n\t\tvar changeBackground = function changeBackground(value) {\n\t\t\tprops.setAttributes({\n\t\t\t\tbackgroundImageID: value.id,\n\t\t\t\tbackgroundImageURL: value.url\n\t\t\t});\n\t\t};\n\t\tvar removeBackground = function removeBackground() {\n\t\t\tprops.setAttributes({\n\t\t\t\tbackgroundImageID: '',\n\t\t\t\tbackgroundImageURL: ''\n\t\t\t});\n\t\t};\n\t\tvar toggleDimming = function toggleDimming() {\n\t\t\tprops.setAttributes({ backgroundDimmed: !props.attributes.backgroundDimmed });\n\t\t};\n\t\tvar toggleParallax = function toggleParallax() {\n\t\t\tprops.setAttributes({ backgroundParallax: !props.attributes.backgroundParallax });\n\t\t};\n\t\tvar style = {\n\t\t\tbackground: props.attributes.backgroundType === 'color' ? props.attributes.backgroundColor : 'url(\\' ' + props.attributes.backgroundImageURL + ' \\')'\n\t\t};\n\t\treturn [wp.element.createElement(\n\t\t\tInspectorControls,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tPanelBody,\n\t\t\t\t{\n\t\t\t\t\ttitle: __('Background')\n\t\t\t\t},\n\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\tlabel: __('Background Type'),\n\t\t\t\t\tvalue: props.attributes.backgroundType,\n\t\t\t\t\toptions: [{ label: 'Color', value: 'color' }, { label: 'Image', value: 'image' }],\n\t\t\t\t\tonChange: changeType\n\t\t\t\t}),\n\t\t\t\tprops.attributes.backgroundType === 'color' ? wp.element.createElement(ColorPalette, {\n\t\t\t\t\tlabel: __('Background Color'),\n\t\t\t\t\tvalue: props.attributes.backgroundColor,\n\t\t\t\t\tonChange: changeColor\n\t\t\t\t}) : props.attributes.backgroundImageURL ? wp.element.createElement(\n\t\t\t\t\tFragment,\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\t\t\tlabel: __('Dimmed Background'),\n\t\t\t\t\t\tchecked: props.attributes.backgroundDimmed,\n\t\t\t\t\t\tonChange: toggleDimming\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\t\t\tlabel: __('Parallax Background'),\n\t\t\t\t\t\tchecked: props.attributes.backgroundParallax,\n\t\t\t\t\t\tonChange: toggleParallax\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement('img', {\n\t\t\t\t\t\tsrc: props.attributes.backgroundImageURL\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tButton,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\tonClick: removeBackground,\n\t\t\t\t\t\t\tstyle: { marginTop: '10px' }\n\t\t\t\t\t\t},\n\t\t\t\t\t\t__('Change or Remove Image')\n\t\t\t\t\t)\n\t\t\t\t) : wp.element.createElement(MediaPlaceholder, {\n\t\t\t\t\ticon: 'format-image',\n\t\t\t\t\tlabels: {\n\t\t\t\t\t\ttitle: __('Background Image'),\n\t\t\t\t\t\tname: __('an image')\n\t\t\t\t\t},\n\t\t\t\t\tvalue: props.attributes.backgroundImageID,\n\t\t\t\t\tonSelect: changeBackground,\n\t\t\t\t\taccept: 'image/*',\n\t\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES\n\t\t\t\t})\n\t\t\t)\n\t\t), wp.element.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: classnames__WEBPACK_IMPORTED_MODULE_0___default()(props.className, { 'is-dim': props.attributes.backgroundType === 'image' && props.attributes.backgroundDimmed }, { 'is-parallax': props.attributes.backgroundType === 'image' && props.attributes.backgroundParallax }),\n\t\t\t\tstyle: style\n\t\t\t},\n\t\t\twp.element.createElement(InnerBlocks, {\n\t\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t\ttemplate: TEMPLATE\n\t\t\t})\n\t\t)];\n\t},\n\n\tsave: function save(props) {\n\t\tvar style = {\n\t\t\tbackground: props.attributes.backgroundType === 'color' ? props.attributes.backgroundColor : 'url(\\' ' + props.attributes.backgroundImageURL + ' \\')'\n\t\t};\n\t\treturn wp.element.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: classnames__WEBPACK_IMPORTED_MODULE_0___default()('wp-block-orbitfox-testimonials-area', { 'is-dim': props.attributes.backgroundType === 'image' && props.attributes.backgroundDimmed }, { 'is-parallax': props.attributes.backgroundType === 'image' && props.attributes.backgroundParallax }),\n\t\t\t\tstyle: style\n\t\t\t},\n\t\t\twp.element.createElement(InnerBlocks.Content, null)\n\t\t);\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/testimonials/testimonials-area.js?");
574
-
575
- /***/ }),
576
-
577
- /***/ "./blocks/testimonials/testimonials-block.js":
578
- /*!***************************************************!*\
579
- !*** ./blocks/testimonials/testimonials-block.js ***!
580
- \***************************************************/
581
- /*! no static exports found */
582
- /***/ (function(module, exports) {
583
-
584
- eval("/**\n * WordPress dependencies...\n */\n\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$editor = wp.editor,\n InnerBlocks = _wp$editor.InnerBlocks,\n InspectorControls = _wp$editor.InspectorControls,\n PanelColorSettings = _wp$editor.PanelColorSettings;\n\n/**\n * Internal dependencies\n */\n\nregisterBlockType('orbitfox/testimonials-block', {\n\ttitle: __('Testimonials Block'),\n\tdescription: __('Display kudos from customers and clients and display them on your website.'),\n\tparent: ['orbitfox/testimonials-area'],\n\ticon: 'testimonial',\n\tcategory: 'orbitfox',\n\tkeywords: ['testimonials', 'clients', 'quotes'],\n\tattributes: {\n\t\tbackgroundColor: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '#ffffff'\n\t\t}\n\t},\n\n\tedit: function edit(props) {\n\t\tvar setBackgroundColor = function setBackgroundColor(value) {\n\t\t\tprops.setAttributes({ backgroundColor: value });\n\t\t};\n\t\tvar TEMPLATE = [['core/image', {\n\t\t\talign: 'center'\n\t\t}], ['core/heading', {\n\t\t\tcontent: __('John Doe'),\n\t\t\tclassName: 'testimonials-title',\n\t\t\talign: 'center',\n\t\t\tlevel: 3\n\t\t}], ['core/heading', {\n\t\t\tcontent: __('Jedi Master'),\n\t\t\tclassName: 'testimonials-subtitle',\n\t\t\talign: 'center',\n\t\t\tlevel: 6\n\t\t}], ['core/paragraph', {\n\t\t\tcontent: __('What is the point of being alive if you don’t at least try to do something remarkable?'),\n\t\t\tclassName: 'testimonials-content',\n\t\t\talign: 'center'\n\t\t}]];\n\n\t\treturn [wp.element.createElement(\n\t\t\tInspectorControls,\n\t\t\tnull,\n\t\t\twp.element.createElement(PanelColorSettings, {\n\t\t\t\ttitle: __('Color Settings'),\n\t\t\t\tinitialOpen: true,\n\t\t\t\tcolorSettings: [{\n\t\t\t\t\tvalue: props.attributes.backgroundColor,\n\t\t\t\t\tonChange: setBackgroundColor,\n\t\t\t\t\tlabel: __('Background Color')\n\t\t\t\t}]\n\t\t\t})\n\t\t), wp.element.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: 'wp-block-column',\n\t\t\t\tstyle: {\n\t\t\t\t\tbackgroundColor: props.attributes.backgroundColor\n\t\t\t\t}\n\t\t\t},\n\t\t\twp.element.createElement(InnerBlocks, {\n\t\t\t\ttemplate: TEMPLATE\n\t\t\t})\n\t\t)];\n\t},\n\n\tsave: function save(props) {\n\t\treturn wp.element.createElement(\n\t\t\t'div',\n\t\t\t{\n\t\t\t\tclassName: 'wp-block-column',\n\t\t\t\tstyle: {\n\t\t\t\t\tbackgroundColor: props.attributes.backgroundColor\n\t\t\t\t}\n\t\t\t},\n\t\t\twp.element.createElement(InnerBlocks.Content, null)\n\t\t);\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/testimonials/testimonials-block.js?");
585
-
586
- /***/ }),
587
-
588
- /***/ "./blocks/tweetable/editor.scss":
589
- /*!**************************************!*\
590
- !*** ./blocks/tweetable/editor.scss ***!
591
- \**************************************/
592
- /*! no static exports found */
593
- /***/ (function(module, exports) {
594
-
595
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/tweetable/editor.scss?");
596
-
597
- /***/ }),
598
-
599
- /***/ "./blocks/tweetable/index.js":
600
- /*!***********************************!*\
601
- !*** ./blocks/tweetable/index.js ***!
602
- \***********************************/
603
- /*! no exports provided */
604
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
605
-
606
- "use strict";
607
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./editor.scss */ \"./blocks/tweetable/editor.scss\");\n/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_editor_scss__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./style.scss */ \"./blocks/tweetable/style.scss\");\n/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_1__);\n/**\r\n * WordPress dependencies.\r\n */\nvar __ = wp.i18n.__;\nvar _lodash = lodash,\n get = _lodash.get;\nvar _wp$blocks = wp.blocks,\n registerBlockType = _wp$blocks.registerBlockType,\n createBlock = _wp$blocks.createBlock;\nvar _wp$components = wp.components,\n Toolbar = _wp$components.Toolbar,\n TextControl = _wp$components.TextControl;\nvar BlockControls = wp.editor.BlockControls;\nvar withSelect = wp.data.withSelect;\nvar RichText = wp.editor.RichText;\n\n/**\r\n * Internal dependencies\r\n */\n\n\n\n\nregisterBlockType('orbitfox/tweetable', {\n\ttitle: __('Click To Tweet'),\n\tdescription: __('Click to Tweet allows visitors to easily share your content on Twitter.'),\n\ticon: 'twitter',\n\tcategory: 'orbitfox',\n\tkeywords: [__('twitter'), __('tweet'), __('orbitfox')],\n\tattributes: {\n\t\tquote: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'children',\n\t\t\tselector: 'p',\n\t\t\tdefault: []\n\t\t},\n\t\tpermalink: {\n\t\t\ttype: 'url'\n\t\t},\n\t\tvia: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tbuttonText: {\n\t\t\ttype: 'string',\n\t\t\tdefault: __('Click to Tweet')\n\t\t}\n\t},\n\n\ttransforms: {\n\t\tfrom: [{\n\t\t\ttype: 'block',\n\t\t\tblocks: ['core/paragraph'],\n\t\t\ttransform: function transform(_ref) {\n\t\t\t\tvar content = _ref.content;\n\n\t\t\t\treturn createBlock('orbitfox/tweetable', { quote: content });\n\t\t\t}\n\t\t}, {\n\t\t\ttype: 'block',\n\t\t\tblocks: ['core/quote'],\n\t\t\ttransform: function transform(_ref2) {\n\t\t\t\tvar value = _ref2.value,\n\t\t\t\t citation = _ref2.citation;\n\n\t\t\t\tif ((!value || !value.length) && !citation) {\n\t\t\t\t\treturn createBlock('orbitfox/tweetable');\n\t\t\t\t}\n\t\t\t\treturn (value || []).map(function (item) {\n\t\t\t\t\treturn createBlock('orbitfox/tweetable', {\n\t\t\t\t\t\tquote: [get(item, 'children.props.children', '')]\n\t\t\t\t\t});\n\t\t\t\t}).concat(citation ? createBlock('core/paragraph', {\n\t\t\t\t\tcontent: citation\n\t\t\t\t}) : []);\n\t\t\t}\n\t\t}, {\n\t\t\ttype: 'block',\n\t\t\tblocks: ['core/pullquote'],\n\t\t\ttransform: function transform(_ref3) {\n\t\t\t\tvar value = _ref3.value,\n\t\t\t\t citation = _ref3.citation;\n\n\t\t\t\tif ((!value || !value.length) && !citation) {\n\t\t\t\t\treturn createBlock('orbitfox/tweetable');\n\t\t\t\t}\n\t\t\t\treturn (value || []).map(function (item) {\n\t\t\t\t\treturn createBlock('orbitfox/tweetable', {\n\t\t\t\t\t\tquote: [get(item, 'children.props.children', '')]\n\t\t\t\t\t});\n\t\t\t\t}).concat(citation ? createBlock('core/paragraph', {\n\t\t\t\t\tquote: citation\n\t\t\t\t}) : []);\n\t\t\t}\n\t\t}],\n\t\tto: [{\n\t\t\ttype: 'block',\n\t\t\tblocks: ['core/paragraph'],\n\t\t\ttransform: function transform(_ref4) {\n\t\t\t\tvar content = _ref4.content,\n\t\t\t\t quote = _ref4.quote;\n\n\t\t\t\tif (!quote || !quote.length) {\n\t\t\t\t\treturn createBlock('core/paragraph');\n\t\t\t\t}\n\t\t\t\treturn (quote || []).map(function (item) {\n\t\t\t\t\treturn createBlock('core/paragraph', {\n\t\t\t\t\t\tcontent: quote\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}, {\n\t\t\ttype: 'block',\n\t\t\tblocks: ['core/quote'],\n\t\t\ttransform: function transform(_ref5) {\n\t\t\t\tvar quote = _ref5.quote;\n\n\t\t\t\treturn createBlock('core/quote', {\n\t\t\t\t\tvalue: [{ children: wp.element.createElement(\n\t\t\t\t\t\t\t'p',\n\t\t\t\t\t\t\t{ key: '1' },\n\t\t\t\t\t\t\tquote\n\t\t\t\t\t\t) }]\n\t\t\t\t});\n\t\t\t}\n\t\t}, {\n\t\t\ttype: 'block',\n\t\t\tblocks: ['core/pullquote'],\n\t\t\ttransform: function transform(_ref6) {\n\t\t\t\tvar quote = _ref6.quote;\n\n\t\t\t\treturn createBlock('core/pullquote', {\n\t\t\t\t\tvalue: [{ children: wp.element.createElement(\n\t\t\t\t\t\t\t'p',\n\t\t\t\t\t\t\t{ key: '1' },\n\t\t\t\t\t\t\tquote\n\t\t\t\t\t\t) }]\n\t\t\t\t});\n\t\t\t}\n\t\t}]\n\t},\n\n\tedit: withSelect(function (select, props) {\n\t\tvar _select = select('core/editor'),\n\t\t getPermalink = _select.getPermalink;\n\n\t\tif (props.attributes.permalink === undefined) {\n\t\t\tprops.setAttributes({ permalink: getPermalink() });\n\t\t}\n\t\treturn {\n\t\t\tpermalink: getPermalink(),\n\t\t\tprops: props\n\t\t};\n\t})(function (_ref7) {\n\t\tvar props = _ref7.props,\n\t\t className = _ref7.className;\n\n\t\tvar onChangeQuote = function onChangeQuote(value) {\n\t\t\tprops.setAttributes({ quote: value });\n\t\t};\n\n\t\tvar onChangeButton = function onChangeButton(value) {\n\t\t\tprops.setAttributes({ buttonText: value });\n\t\t};\n\n\t\tvar onChangeVia = function onChangeVia(value) {\n\t\t\tprops.setAttributes({ via: value });\n\t\t};\n\n\t\treturn [wp.element.createElement(\n\t\t\tBlockControls,\n\t\t\t{ key: 'controls' },\n\t\t\twp.element.createElement(\n\t\t\t\tToolbar,\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement('i', { className: 'fas fa-at tweetable-icon' }),\n\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tplaceholder: 'Username',\n\t\t\t\t\tclassName: 'tweetable-controls',\n\t\t\t\t\tvalue: props.attributes.via,\n\t\t\t\t\tonChange: onChangeVia\n\t\t\t\t})\n\t\t\t)\n\t\t), wp.element.createElement(\n\t\t\t'blockquote',\n\t\t\t{ className: className },\n\t\t\twp.element.createElement(RichText, {\n\t\t\t\ttagName: 'p',\n\t\t\t\tmultiline: 'false',\n\t\t\t\tplaceholder: __('What should we tweet?'),\n\t\t\t\tvalue: props.attributes.quote,\n\t\t\t\tformattingControls: [],\n\t\t\t\tonChange: onChangeQuote,\n\t\t\t\tkeepPlaceholderOnFocus: true\n\t\t\t}),\n\t\t\twp.element.createElement(RichText, {\n\t\t\t\ttagName: 'span',\n\t\t\t\tplaceholder: __('Tweet this!'),\n\t\t\t\tclassName: 'tweetbutton',\n\t\t\t\tvalue: props.attributes.buttonText ? props.attributes.buttonText : __('Tweet this!'),\n\t\t\t\tformattingControls: [],\n\t\t\t\tonChange: onChangeButton,\n\t\t\t\tkeepPlaceholderOnFocus: true\n\t\t\t})\n\t\t)];\n\t}),\n\n\tsave: function save(props) {\n\t\tvar viaUrl = props.attributes.via ? '&via=' + props.attributes.via : '';\n\n\t\tvar tweetUrl = 'http://twitter.com/share?&text=' + encodeURIComponent(props.attributes.quote) + '&url=' + props.attributes.permalink + viaUrl;\n\n\t\treturn wp.element.createElement(\n\t\t\t'blockquote',\n\t\t\tnull,\n\t\t\twp.element.createElement(RichText.Content, {\n\t\t\t\ttagName: 'p',\n\t\t\t\tvalue: props.attributes.quote\n\t\t\t}),\n\t\t\twp.element.createElement(RichText.Content, {\n\t\t\t\ttagName: 'a',\n\t\t\t\tclassName: 'tweetbutton',\n\t\t\t\thref: tweetUrl,\n\t\t\t\tvalue: props.attributes.buttonText,\n\t\t\t\ttarget: '_blank'\n\t\t\t})\n\t\t);\n\t}\n});\n\n//# sourceURL=webpack:///./blocks/tweetable/index.js?");
608
-
609
- /***/ }),
610
-
611
- /***/ "./blocks/tweetable/style.scss":
612
- /*!*************************************!*\
613
- !*** ./blocks/tweetable/style.scss ***!
614
- \*************************************/
615
- /*! no static exports found */
616
- /***/ (function(module, exports) {
617
-
618
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./blocks/tweetable/style.scss?");
619
-
620
- /***/ }),
621
-
622
- /***/ "./node_modules/@handsontable/react/dist/react-handsontable.js":
623
- /*!*********************************************************************!*\
624
- !*** ./node_modules/@handsontable/react/dist/react-handsontable.js ***!
625
- \*********************************************************************/
626
- /*! no static exports found */
627
- /***/ (function(module, exports, __webpack_require__) {
628
-
629
- eval("/*!\n * (The MIT License)\n * \n * Copyright (c) Handsoncode sp. z o.o. <hello@handsoncode.net>\n * \n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n * \n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * \n * Version: 1.1.0 (built at Fri Aug 17 2018 10:16:29 GMT+0200 (CEST))\n */\n(function (global, factory) {\n true ? factory(exports, __webpack_require__(/*! handsontable */ \"./node_modules/handsontable/dist/handsontable.js\"), __webpack_require__(/*! react */ \"./node_modules/react/index.js\")) :\nundefined;\n}(this, (function (exports,Handsontable,React) { 'use strict';\n\nHandsontable = Handsontable && Handsontable.hasOwnProperty('default') ? Handsontable['default'] : Handsontable;\nReact = React && React.hasOwnProperty('default') ? React['default'] : React;\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar SettingsMapper = function () {\n function SettingsMapper() {\n classCallCheck(this, SettingsMapper);\n\n this.registeredHooks = Handsontable.hooks.getRegistered();\n }\n /**\r\n * Parse component settings into Handosntable-compatible settings.\r\n *\r\n * @param {Object} properties Object containing properties from the HotTable object.\r\n * @returns {Object} Handsontable-compatible settings object.\r\n */\n\n\n createClass(SettingsMapper, [{\n key: 'getSettings',\n value: function getSettings(properties) {\n var newSettings = {};\n if (properties.settings) {\n var settings = properties.settings;\n for (var key in settings) {\n if (settings.hasOwnProperty(key)) {\n newSettings[this.trimHookPrefix(key)] = settings[key];\n }\n }\n }\n for (var _key in properties) {\n if (_key !== 'settings' && properties.hasOwnProperty(_key)) {\n newSettings[this.trimHookPrefix(_key)] = properties[_key];\n }\n }\n return newSettings;\n }\n /**\r\n * Trim the \"on\" hook prefix.\r\n *\r\n * @param {String} prop Settings property.\r\n * @returns {String} Handsontable-compatible, prefix-less property name.\r\n */\n\n }, {\n key: 'trimHookPrefix',\n value: function trimHookPrefix(prop) {\n if (prop.indexOf('on') === 0) {\n var hookName = prop.charAt(2).toLowerCase() + prop.slice(3, prop.length);\n if (this.registeredHooks.indexOf(hookName) > -1) {\n return hookName;\n }\n }\n // returns the string anyway, when we're sure all the hooks are registered, might be changed\n return prop;\n }\n }]);\n return SettingsMapper;\n}();\n\n/**\r\n * A Handsontable-ReactJS wrapper.\r\n *\r\n * To implement, use the `HotTable` tag with properties corresponding to Handsontable options.\r\n * For example:\r\n *\r\n * ```js\r\n * <HotTable id=\"hot\" data={dataObject} contextMenu={true} colHeaders={true} width={600} height={300} stretchH=\"all\" />\r\n *\r\n * // is analogous to\r\n * let hot = new Handsontable(document.getElementById('hot'), {\r\n * data: dataObject,\r\n * contextMenu: true,\r\n * colHeaders: true,\r\n * width: 600\r\n * height: 300\r\n * });\r\n *\r\n * ```\r\n *\r\n * @class HotTable\r\n */\nvar HotTable = function (_React$Component) {\n inherits(HotTable, _React$Component);\n\n function HotTable() {\n classCallCheck(this, HotTable);\n\n /**\r\n * Reference to the `SettingsMapper` instance.\r\n *\r\n * @type {SettingsMapper}\r\n */\n var _this = possibleConstructorReturn(this, (HotTable.__proto__ || Object.getPrototypeOf(HotTable)).apply(this, arguments));\n\n _this.settingsMapper = new SettingsMapper();\n /**\r\n * The `id` of the main Handsontable DOM element.\r\n *\r\n * @type {String}\r\n */\n _this.id = null;\n /**\r\n * Reference to the Handsontable instance.\r\n *\r\n * @type {Object}\r\n */\n _this.hotInstance = null;\n /**\r\n * Reference to the main Handsontable DOM element.\r\n *\r\n * @type {HTMLElement}\r\n */\n _this.hotElementRef = null;\n return _this;\n }\n /**\r\n * Set the reference to the main Handsontable DOM element.\r\n *\r\n * @param {HTMLElement} element The main Handsontable DOM element.\r\n */\n\n\n createClass(HotTable, [{\n key: 'setHotElementRef',\n value: function setHotElementRef(element) {\n this.hotElementRef = element;\n }\n /**\r\n * Initialize Handsontable after the component has mounted.\r\n */\n\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var newSettings = this.settingsMapper.getSettings(this.props);\n this.hotInstance = new Handsontable(this.hotElementRef, newSettings);\n }\n /**\r\n * Call the `updateHot` method and prevent the component from re-rendering the instance.\r\n *\r\n * @param {Object} nextProps\r\n * @param {Object} nextState\r\n * @returns {Boolean}\r\n */\n\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps, nextState) {\n this.updateHot(this.settingsMapper.getSettings(nextProps));\n return false;\n }\n /**\r\n * Destroy the Handsontable instance when the parent component unmounts.\r\n */\n\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.hotInstance.destroy();\n }\n /**\r\n * Render the table.\r\n */\n\n }, {\n key: 'render',\n value: function render() {\n this.id = this.props.id || 'hot-' + Math.random().toString(36).substring(5);\n this.className = this.props.className || '';\n this.style = this.props.style || {};\n return React.createElement(\"div\", { ref: this.setHotElementRef.bind(this), id: this.id, className: this.className, style: this.style });\n }\n /**\r\n * Call the `updateSettings` method for the Handsontable instance.\r\n *\r\n * @param {Object} newSettings The settings object.\r\n */\n\n }, {\n key: 'updateHot',\n value: function updateHot(newSettings) {\n this.hotInstance.updateSettings(newSettings, false);\n }\n }]);\n return HotTable;\n}(React.Component);\n\nexports.HotTable = HotTable;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=react-handsontable.js.map\n\n\n//# sourceURL=webpack:///./node_modules/@handsontable/react/dist/react-handsontable.js?");
630
-
631
- /***/ }),
632
-
633
- /***/ "./node_modules/babel-runtime/core-js/json/stringify.js":
634
- /*!**************************************************************!*\
635
- !*** ./node_modules/babel-runtime/core-js/json/stringify.js ***!
636
- \**************************************************************/
637
- /*! no static exports found */
638
- /***/ (function(module, exports, __webpack_require__) {
639
-
640
- eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/json/stringify */ \"./node_modules/core-js/library/fn/json/stringify.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/json/stringify.js?");
641
-
642
- /***/ }),
643
-
644
- /***/ "./node_modules/babel-runtime/core-js/object/assign.js":
645
- /*!*************************************************************!*\
646
- !*** ./node_modules/babel-runtime/core-js/object/assign.js ***!
647
- \*************************************************************/
648
- /*! no static exports found */
649
- /***/ (function(module, exports, __webpack_require__) {
650
-
651
- eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/assign */ \"./node_modules/core-js/library/fn/object/assign.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/assign.js?");
652
-
653
- /***/ }),
654
-
655
- /***/ "./node_modules/babel-runtime/core-js/object/create.js":
656
- /*!*************************************************************!*\
657
- !*** ./node_modules/babel-runtime/core-js/object/create.js ***!
658
- \*************************************************************/
659
- /*! no static exports found */
660
- /***/ (function(module, exports, __webpack_require__) {
661
-
662
- eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/create */ \"./node_modules/core-js/library/fn/object/create.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/create.js?");
663
-
664
- /***/ }),
665
-
666
- /***/ "./node_modules/babel-runtime/core-js/object/define-property.js":
667
- /*!**********************************************************************!*\
668
- !*** ./node_modules/babel-runtime/core-js/object/define-property.js ***!
669
- \**********************************************************************/
670
- /*! no static exports found */
671
- /***/ (function(module, exports, __webpack_require__) {
672
-
673
- eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/define-property */ \"./node_modules/core-js/library/fn/object/define-property.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/define-property.js?");
674
-
675
- /***/ }),
676
-
677
- /***/ "./node_modules/babel-runtime/core-js/object/get-prototype-of.js":
678
- /*!***********************************************************************!*\
679
- !*** ./node_modules/babel-runtime/core-js/object/get-prototype-of.js ***!
680
- \***********************************************************************/
681
- /*! no static exports found */
682
- /***/ (function(module, exports, __webpack_require__) {
683
-
684
- eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/get-prototype-of */ \"./node_modules/core-js/library/fn/object/get-prototype-of.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/get-prototype-of.js?");
685
-
686
- /***/ }),
687
-
688
- /***/ "./node_modules/babel-runtime/core-js/object/keys.js":
689
- /*!***********************************************************!*\
690
- !*** ./node_modules/babel-runtime/core-js/object/keys.js ***!
691
- \***********************************************************/
692
- /*! no static exports found */
693
- /***/ (function(module, exports, __webpack_require__) {
694
-
695
- eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/keys */ \"./node_modules/core-js/library/fn/object/keys.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/keys.js?");
696
-
697
- /***/ }),
698
-
699
- /***/ "./node_modules/babel-runtime/core-js/object/set-prototype-of.js":
700
- /*!***********************************************************************!*\
701
- !*** ./node_modules/babel-runtime/core-js/object/set-prototype-of.js ***!
702
- \***********************************************************************/
703
- /*! no static exports found */
704
- /***/ (function(module, exports, __webpack_require__) {
705
-
706
- eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/set-prototype-of */ \"./node_modules/core-js/library/fn/object/set-prototype-of.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/object/set-prototype-of.js?");
707
-
708
- /***/ }),
709
-
710
- /***/ "./node_modules/babel-runtime/core-js/promise.js":
711
- /*!*******************************************************!*\
712
- !*** ./node_modules/babel-runtime/core-js/promise.js ***!
713
- \*******************************************************/
714
- /*! no static exports found */
715
- /***/ (function(module, exports, __webpack_require__) {
716
-
717
- eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/promise */ \"./node_modules/core-js/library/fn/promise.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/promise.js?");
718
-
719
- /***/ }),
720
-
721
- /***/ "./node_modules/babel-runtime/core-js/symbol.js":
722
- /*!******************************************************!*\
723
- !*** ./node_modules/babel-runtime/core-js/symbol.js ***!
724
- \******************************************************/
725
- /*! no static exports found */
726
- /***/ (function(module, exports, __webpack_require__) {
727
-
728
- eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/symbol */ \"./node_modules/core-js/library/fn/symbol/index.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/symbol.js?");
729
-
730
- /***/ }),
731
-
732
- /***/ "./node_modules/babel-runtime/core-js/symbol/iterator.js":
733
- /*!***************************************************************!*\
734
- !*** ./node_modules/babel-runtime/core-js/symbol/iterator.js ***!
735
- \***************************************************************/
736
- /*! no static exports found */
737
- /***/ (function(module, exports, __webpack_require__) {
738
-
739
- eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/symbol/iterator */ \"./node_modules/core-js/library/fn/symbol/iterator.js\"), __esModule: true };\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/core-js/symbol/iterator.js?");
740
-
741
- /***/ }),
742
-
743
- /***/ "./node_modules/babel-runtime/helpers/asyncToGenerator.js":
744
- /*!****************************************************************!*\
745
- !*** ./node_modules/babel-runtime/helpers/asyncToGenerator.js ***!
746
- \****************************************************************/
747
- /*! no static exports found */
748
- /***/ (function(module, exports, __webpack_require__) {
749
-
750
- "use strict";
751
- eval("\n\nexports.__esModule = true;\n\nvar _promise = __webpack_require__(/*! ../core-js/promise */ \"./node_modules/babel-runtime/core-js/promise.js\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new _promise2.default(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return _promise2.default.resolve(value).then(function (value) {\n step(\"next\", value);\n }, function (err) {\n step(\"throw\", err);\n });\n }\n }\n\n return step(\"next\");\n });\n };\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/asyncToGenerator.js?");
752
-
753
- /***/ }),
754
-
755
- /***/ "./node_modules/babel-runtime/helpers/classCallCheck.js":
756
- /*!**************************************************************!*\
757
- !*** ./node_modules/babel-runtime/helpers/classCallCheck.js ***!
758
- \**************************************************************/
759
- /*! no static exports found */
760
- /***/ (function(module, exports, __webpack_require__) {
761
-
762
- "use strict";
763
- eval("\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/classCallCheck.js?");
764
-
765
- /***/ }),
766
-
767
- /***/ "./node_modules/babel-runtime/helpers/createClass.js":
768
- /*!***********************************************************!*\
769
- !*** ./node_modules/babel-runtime/helpers/createClass.js ***!
770
- \***********************************************************/
771
- /*! no static exports found */
772
- /***/ (function(module, exports, __webpack_require__) {
773
-
774
- "use strict";
775
- eval("\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(/*! ../core-js/object/define-property */ \"./node_modules/babel-runtime/core-js/object/define-property.js\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/createClass.js?");
776
-
777
- /***/ }),
778
-
779
- /***/ "./node_modules/babel-runtime/helpers/defineProperty.js":
780
- /*!**************************************************************!*\
781
- !*** ./node_modules/babel-runtime/helpers/defineProperty.js ***!
782
- \**************************************************************/
783
- /*! no static exports found */
784
- /***/ (function(module, exports, __webpack_require__) {
785
-
786
- "use strict";
787
- eval("\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(/*! ../core-js/object/define-property */ \"./node_modules/babel-runtime/core-js/object/define-property.js\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/defineProperty.js?");
788
-
789
- /***/ }),
790
-
791
- /***/ "./node_modules/babel-runtime/helpers/extends.js":
792
- /*!*******************************************************!*\
793
- !*** ./node_modules/babel-runtime/helpers/extends.js ***!
794
- \*******************************************************/
795
- /*! no static exports found */
796
- /***/ (function(module, exports, __webpack_require__) {
797
-
798
- "use strict";
799
- eval("\n\nexports.__esModule = true;\n\nvar _assign = __webpack_require__(/*! ../core-js/object/assign */ \"./node_modules/babel-runtime/core-js/object/assign.js\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/extends.js?");
800
-
801
- /***/ }),
802
-
803
- /***/ "./node_modules/babel-runtime/helpers/inherits.js":
804
- /*!********************************************************!*\
805
- !*** ./node_modules/babel-runtime/helpers/inherits.js ***!
806
- \********************************************************/
807
- /*! no static exports found */
808
- /***/ (function(module, exports, __webpack_require__) {
809
-
810
- "use strict";
811
- eval("\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(/*! ../core-js/object/set-prototype-of */ \"./node_modules/babel-runtime/core-js/object/set-prototype-of.js\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(/*! ../core-js/object/create */ \"./node_modules/babel-runtime/core-js/object/create.js\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(/*! ../helpers/typeof */ \"./node_modules/babel-runtime/helpers/typeof.js\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/inherits.js?");
812
-
813
- /***/ }),
814
-
815
- /***/ "./node_modules/babel-runtime/helpers/possibleConstructorReturn.js":
816
- /*!*************************************************************************!*\
817
- !*** ./node_modules/babel-runtime/helpers/possibleConstructorReturn.js ***!
818
- \*************************************************************************/
819
- /*! no static exports found */
820
- /***/ (function(module, exports, __webpack_require__) {
821
-
822
- "use strict";
823
- eval("\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(/*! ../helpers/typeof */ \"./node_modules/babel-runtime/helpers/typeof.js\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/possibleConstructorReturn.js?");
824
-
825
- /***/ }),
826
-
827
- /***/ "./node_modules/babel-runtime/helpers/typeof.js":
828
- /*!******************************************************!*\
829
- !*** ./node_modules/babel-runtime/helpers/typeof.js ***!
830
- \******************************************************/
831
- /*! no static exports found */
832
- /***/ (function(module, exports, __webpack_require__) {
833
-
834
- "use strict";
835
- eval("\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(/*! ../core-js/symbol/iterator */ \"./node_modules/babel-runtime/core-js/symbol/iterator.js\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(/*! ../core-js/symbol */ \"./node_modules/babel-runtime/core-js/symbol.js\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/helpers/typeof.js?");
836
-
837
- /***/ }),
838
-
839
- /***/ "./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js":
840
- /*!***************************************************************************************!*\
841
- !*** ./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js ***!
842
- \***************************************************************************************/
843
- /*! no static exports found */
844
- /***/ (function(module, exports, __webpack_require__) {
845
-
846
- eval("/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = __webpack_require__(/*! ./runtime */ \"./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js?");
847
-
848
- /***/ }),
849
-
850
- /***/ "./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js":
851
- /*!********************************************************************************!*\
852
- !*** ./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js ***!
853
- \********************************************************************************/
854
- /*! no static exports found */
855
- /***/ (function(module, exports) {
856
-
857
- eval("/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js?");
858
-
859
- /***/ }),
860
-
861
- /***/ "./node_modules/babel-runtime/regenerator/index.js":
862
- /*!*********************************************************!*\
863
- !*** ./node_modules/babel-runtime/regenerator/index.js ***!
864
- \*********************************************************/
865
- /*! no static exports found */
866
- /***/ (function(module, exports, __webpack_require__) {
867
-
868
- eval("module.exports = __webpack_require__(/*! regenerator-runtime */ \"./node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js\");\n\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/regenerator/index.js?");
869
-
870
- /***/ }),
871
-
872
- /***/ "./node_modules/classnames/index.js":
873
- /*!******************************************!*\
874
- !*** ./node_modules/classnames/index.js ***!
875
- \******************************************/
876
- /*! no static exports found */
877
- /***/ (function(module, exports, __webpack_require__) {
878
-
879
- eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n}());\n\n\n//# sourceURL=webpack:///./node_modules/classnames/index.js?");
880
-
881
- /***/ }),
882
-
883
- /***/ "./node_modules/core-js/library/fn/json/stringify.js":
884
- /*!***********************************************************!*\
885
- !*** ./node_modules/core-js/library/fn/json/stringify.js ***!
886
- \***********************************************************/
887
- /*! no static exports found */
888
- /***/ (function(module, exports, __webpack_require__) {
889
-
890
- eval("var core = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/json/stringify.js?");
891
-
892
- /***/ }),
893
-
894
- /***/ "./node_modules/core-js/library/fn/object/assign.js":
895
- /*!**********************************************************!*\
896
- !*** ./node_modules/core-js/library/fn/object/assign.js ***!
897
- \**********************************************************/
898
- /*! no static exports found */
899
- /***/ (function(module, exports, __webpack_require__) {
900
-
901
- eval("__webpack_require__(/*! ../../modules/es6.object.assign */ \"./node_modules/core-js/library/modules/es6.object.assign.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.assign;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/assign.js?");
902
-
903
- /***/ }),
904
-
905
- /***/ "./node_modules/core-js/library/fn/object/create.js":
906
- /*!**********************************************************!*\
907
- !*** ./node_modules/core-js/library/fn/object/create.js ***!
908
- \**********************************************************/
909
- /*! no static exports found */
910
- /***/ (function(module, exports, __webpack_require__) {
911
-
912
- eval("__webpack_require__(/*! ../../modules/es6.object.create */ \"./node_modules/core-js/library/modules/es6.object.create.js\");\nvar $Object = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/create.js?");
913
-
914
- /***/ }),
915
-
916
- /***/ "./node_modules/core-js/library/fn/object/define-property.js":
917
- /*!*******************************************************************!*\
918
- !*** ./node_modules/core-js/library/fn/object/define-property.js ***!
919
- \*******************************************************************/
920
- /*! no static exports found */
921
- /***/ (function(module, exports, __webpack_require__) {
922
-
923
- eval("__webpack_require__(/*! ../../modules/es6.object.define-property */ \"./node_modules/core-js/library/modules/es6.object.define-property.js\");\nvar $Object = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/define-property.js?");
924
-
925
- /***/ }),
926
-
927
- /***/ "./node_modules/core-js/library/fn/object/get-prototype-of.js":
928
- /*!********************************************************************!*\
929
- !*** ./node_modules/core-js/library/fn/object/get-prototype-of.js ***!
930
- \********************************************************************/
931
- /*! no static exports found */
932
- /***/ (function(module, exports, __webpack_require__) {
933
-
934
- eval("__webpack_require__(/*! ../../modules/es6.object.get-prototype-of */ \"./node_modules/core-js/library/modules/es6.object.get-prototype-of.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.getPrototypeOf;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/get-prototype-of.js?");
935
-
936
- /***/ }),
937
-
938
- /***/ "./node_modules/core-js/library/fn/object/keys.js":
939
- /*!********************************************************!*\
940
- !*** ./node_modules/core-js/library/fn/object/keys.js ***!
941
- \********************************************************/
942
- /*! no static exports found */
943
- /***/ (function(module, exports, __webpack_require__) {
944
-
945
- eval("__webpack_require__(/*! ../../modules/es6.object.keys */ \"./node_modules/core-js/library/modules/es6.object.keys.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.keys;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/keys.js?");
946
-
947
- /***/ }),
948
-
949
- /***/ "./node_modules/core-js/library/fn/object/set-prototype-of.js":
950
- /*!********************************************************************!*\
951
- !*** ./node_modules/core-js/library/fn/object/set-prototype-of.js ***!
952
- \********************************************************************/
953
- /*! no static exports found */
954
- /***/ (function(module, exports, __webpack_require__) {
955
-
956
- eval("__webpack_require__(/*! ../../modules/es6.object.set-prototype-of */ \"./node_modules/core-js/library/modules/es6.object.set-prototype-of.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.setPrototypeOf;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/object/set-prototype-of.js?");
957
-
958
- /***/ }),
959
-
960
- /***/ "./node_modules/core-js/library/fn/promise.js":
961
- /*!****************************************************!*\
962
- !*** ./node_modules/core-js/library/fn/promise.js ***!
963
- \****************************************************/
964
- /*! no static exports found */
965
- /***/ (function(module, exports, __webpack_require__) {
966
-
967
- eval("__webpack_require__(/*! ../modules/es6.object.to-string */ \"./node_modules/core-js/library/modules/es6.object.to-string.js\");\n__webpack_require__(/*! ../modules/es6.string.iterator */ \"./node_modules/core-js/library/modules/es6.string.iterator.js\");\n__webpack_require__(/*! ../modules/web.dom.iterable */ \"./node_modules/core-js/library/modules/web.dom.iterable.js\");\n__webpack_require__(/*! ../modules/es6.promise */ \"./node_modules/core-js/library/modules/es6.promise.js\");\n__webpack_require__(/*! ../modules/es7.promise.finally */ \"./node_modules/core-js/library/modules/es7.promise.finally.js\");\n__webpack_require__(/*! ../modules/es7.promise.try */ \"./node_modules/core-js/library/modules/es7.promise.try.js\");\nmodule.exports = __webpack_require__(/*! ../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Promise;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/promise.js?");
968
-
969
- /***/ }),
970
-
971
- /***/ "./node_modules/core-js/library/fn/symbol/index.js":
972
- /*!*********************************************************!*\
973
- !*** ./node_modules/core-js/library/fn/symbol/index.js ***!
974
- \*********************************************************/
975
- /*! no static exports found */
976
- /***/ (function(module, exports, __webpack_require__) {
977
-
978
- eval("__webpack_require__(/*! ../../modules/es6.symbol */ \"./node_modules/core-js/library/modules/es6.symbol.js\");\n__webpack_require__(/*! ../../modules/es6.object.to-string */ \"./node_modules/core-js/library/modules/es6.object.to-string.js\");\n__webpack_require__(/*! ../../modules/es7.symbol.async-iterator */ \"./node_modules/core-js/library/modules/es7.symbol.async-iterator.js\");\n__webpack_require__(/*! ../../modules/es7.symbol.observable */ \"./node_modules/core-js/library/modules/es7.symbol.observable.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Symbol;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/symbol/index.js?");
979
-
980
- /***/ }),
981
-
982
- /***/ "./node_modules/core-js/library/fn/symbol/iterator.js":
983
- /*!************************************************************!*\
984
- !*** ./node_modules/core-js/library/fn/symbol/iterator.js ***!
985
- \************************************************************/
986
- /*! no static exports found */
987
- /***/ (function(module, exports, __webpack_require__) {
988
-
989
- eval("__webpack_require__(/*! ../../modules/es6.string.iterator */ \"./node_modules/core-js/library/modules/es6.string.iterator.js\");\n__webpack_require__(/*! ../../modules/web.dom.iterable */ \"./node_modules/core-js/library/modules/web.dom.iterable.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_wks-ext */ \"./node_modules/core-js/library/modules/_wks-ext.js\").f('iterator');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/fn/symbol/iterator.js?");
990
-
991
- /***/ }),
992
-
993
- /***/ "./node_modules/core-js/library/modules/_a-function.js":
994
- /*!*************************************************************!*\
995
- !*** ./node_modules/core-js/library/modules/_a-function.js ***!
996
- \*************************************************************/
997
- /*! no static exports found */
998
- /***/ (function(module, exports) {
999
-
1000
- eval("module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_a-function.js?");
1001
-
1002
- /***/ }),
1003
-
1004
- /***/ "./node_modules/core-js/library/modules/_add-to-unscopables.js":
1005
- /*!*********************************************************************!*\
1006
- !*** ./node_modules/core-js/library/modules/_add-to-unscopables.js ***!
1007
- \*********************************************************************/
1008
- /*! no static exports found */
1009
- /***/ (function(module, exports) {
1010
-
1011
- eval("module.exports = function () { /* empty */ };\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_add-to-unscopables.js?");
1012
-
1013
- /***/ }),
1014
-
1015
- /***/ "./node_modules/core-js/library/modules/_an-instance.js":
1016
- /*!**************************************************************!*\
1017
- !*** ./node_modules/core-js/library/modules/_an-instance.js ***!
1018
- \**************************************************************/
1019
- /*! no static exports found */
1020
- /***/ (function(module, exports) {
1021
-
1022
- eval("module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_an-instance.js?");
1023
-
1024
- /***/ }),
1025
-
1026
- /***/ "./node_modules/core-js/library/modules/_an-object.js":
1027
- /*!************************************************************!*\
1028
- !*** ./node_modules/core-js/library/modules/_an-object.js ***!
1029
- \************************************************************/
1030
- /*! no static exports found */
1031
- /***/ (function(module, exports, __webpack_require__) {
1032
-
1033
- eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_an-object.js?");
1034
-
1035
- /***/ }),
1036
-
1037
- /***/ "./node_modules/core-js/library/modules/_array-includes.js":
1038
- /*!*****************************************************************!*\
1039
- !*** ./node_modules/core-js/library/modules/_array-includes.js ***!
1040
- \*****************************************************************/
1041
- /*! no static exports found */
1042
- /***/ (function(module, exports, __webpack_require__) {
1043
-
1044
- eval("// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/library/modules/_to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ \"./node_modules/core-js/library/modules/_to-absolute-index.js\");\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_array-includes.js?");
1045
-
1046
- /***/ }),
1047
-
1048
- /***/ "./node_modules/core-js/library/modules/_classof.js":
1049
- /*!**********************************************************!*\
1050
- !*** ./node_modules/core-js/library/modules/_classof.js ***!
1051
- \**********************************************************/
1052
- /*! no static exports found */
1053
- /***/ (function(module, exports, __webpack_require__) {
1054
-
1055
- eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/library/modules/_cof.js\");\nvar TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_classof.js?");
1056
-
1057
- /***/ }),
1058
-
1059
- /***/ "./node_modules/core-js/library/modules/_cof.js":
1060
- /*!******************************************************!*\
1061
- !*** ./node_modules/core-js/library/modules/_cof.js ***!
1062
- \******************************************************/
1063
- /*! no static exports found */
1064
- /***/ (function(module, exports) {
1065
-
1066
- eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_cof.js?");
1067
-
1068
- /***/ }),
1069
-
1070
- /***/ "./node_modules/core-js/library/modules/_core.js":
1071
- /*!*******************************************************!*\
1072
- !*** ./node_modules/core-js/library/modules/_core.js ***!
1073
- \*******************************************************/
1074
- /*! no static exports found */
1075
- /***/ (function(module, exports) {
1076
-
1077
- eval("var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_core.js?");
1078
-
1079
- /***/ }),
1080
-
1081
- /***/ "./node_modules/core-js/library/modules/_ctx.js":
1082
- /*!******************************************************!*\
1083
- !*** ./node_modules/core-js/library/modules/_ctx.js ***!
1084
- \******************************************************/
1085
- /*! no static exports found */
1086
- /***/ (function(module, exports, __webpack_require__) {
1087
-
1088
- eval("// optional / simple context binding\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/core-js/library/modules/_a-function.js\");\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_ctx.js?");
1089
-
1090
- /***/ }),
1091
-
1092
- /***/ "./node_modules/core-js/library/modules/_defined.js":
1093
- /*!**********************************************************!*\
1094
- !*** ./node_modules/core-js/library/modules/_defined.js ***!
1095
- \**********************************************************/
1096
- /*! no static exports found */
1097
- /***/ (function(module, exports) {
1098
-
1099
- eval("// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_defined.js?");
1100
-
1101
- /***/ }),
1102
-
1103
- /***/ "./node_modules/core-js/library/modules/_descriptors.js":
1104
- /*!**************************************************************!*\
1105
- !*** ./node_modules/core-js/library/modules/_descriptors.js ***!
1106
- \**************************************************************/
1107
- /*! no static exports found */
1108
- /***/ (function(module, exports, __webpack_require__) {
1109
-
1110
- eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_descriptors.js?");
1111
-
1112
- /***/ }),
1113
-
1114
- /***/ "./node_modules/core-js/library/modules/_dom-create.js":
1115
- /*!*************************************************************!*\
1116
- !*** ./node_modules/core-js/library/modules/_dom-create.js ***!
1117
- \*************************************************************/
1118
- /*! no static exports found */
1119
- /***/ (function(module, exports, __webpack_require__) {
1120
-
1121
- eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar document = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_dom-create.js?");
1122
-
1123
- /***/ }),
1124
-
1125
- /***/ "./node_modules/core-js/library/modules/_enum-bug-keys.js":
1126
- /*!****************************************************************!*\
1127
- !*** ./node_modules/core-js/library/modules/_enum-bug-keys.js ***!
1128
- \****************************************************************/
1129
- /*! no static exports found */
1130
- /***/ (function(module, exports) {
1131
-
1132
- eval("// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_enum-bug-keys.js?");
1133
-
1134
- /***/ }),
1135
-
1136
- /***/ "./node_modules/core-js/library/modules/_enum-keys.js":
1137
- /*!************************************************************!*\
1138
- !*** ./node_modules/core-js/library/modules/_enum-keys.js ***!
1139
- \************************************************************/
1140
- /*! no static exports found */
1141
- /***/ (function(module, exports, __webpack_require__) {
1142
-
1143
- eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPS = __webpack_require__(/*! ./_object-gops */ \"./node_modules/core-js/library/modules/_object-gops.js\");\nvar pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\");\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_enum-keys.js?");
1144
-
1145
- /***/ }),
1146
-
1147
- /***/ "./node_modules/core-js/library/modules/_export.js":
1148
- /*!*********************************************************!*\
1149
- !*** ./node_modules/core-js/library/modules/_export.js ***!
1150
- \*********************************************************/
1151
- /*! no static exports found */
1152
- /***/ (function(module, exports, __webpack_require__) {
1153
-
1154
- eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_export.js?");
1155
-
1156
- /***/ }),
1157
-
1158
- /***/ "./node_modules/core-js/library/modules/_fails.js":
1159
- /*!********************************************************!*\
1160
- !*** ./node_modules/core-js/library/modules/_fails.js ***!
1161
- \********************************************************/
1162
- /*! no static exports found */
1163
- /***/ (function(module, exports) {
1164
-
1165
- eval("module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_fails.js?");
1166
-
1167
- /***/ }),
1168
-
1169
- /***/ "./node_modules/core-js/library/modules/_for-of.js":
1170
- /*!*********************************************************!*\
1171
- !*** ./node_modules/core-js/library/modules/_for-of.js ***!
1172
- \*********************************************************/
1173
- /*! no static exports found */
1174
- /***/ (function(module, exports, __webpack_require__) {
1175
-
1176
- eval("var ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\");\nvar call = __webpack_require__(/*! ./_iter-call */ \"./node_modules/core-js/library/modules/_iter-call.js\");\nvar isArrayIter = __webpack_require__(/*! ./_is-array-iter */ \"./node_modules/core-js/library/modules/_is-array-iter.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/library/modules/_to-length.js\");\nvar getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ \"./node_modules/core-js/library/modules/core.get-iterator-method.js\");\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_for-of.js?");
1177
-
1178
- /***/ }),
1179
-
1180
- /***/ "./node_modules/core-js/library/modules/_global.js":
1181
- /*!*********************************************************!*\
1182
- !*** ./node_modules/core-js/library/modules/_global.js ***!
1183
- \*********************************************************/
1184
- /*! no static exports found */
1185
- /***/ (function(module, exports) {
1186
-
1187
- eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_global.js?");
1188
-
1189
- /***/ }),
1190
-
1191
- /***/ "./node_modules/core-js/library/modules/_has.js":
1192
- /*!******************************************************!*\
1193
- !*** ./node_modules/core-js/library/modules/_has.js ***!
1194
- \******************************************************/
1195
- /*! no static exports found */
1196
- /***/ (function(module, exports) {
1197
-
1198
- eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_has.js?");
1199
-
1200
- /***/ }),
1201
-
1202
- /***/ "./node_modules/core-js/library/modules/_hide.js":
1203
- /*!*******************************************************!*\
1204
- !*** ./node_modules/core-js/library/modules/_hide.js ***!
1205
- \*******************************************************/
1206
- /*! no static exports found */
1207
- /***/ (function(module, exports, __webpack_require__) {
1208
-
1209
- eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_hide.js?");
1210
-
1211
- /***/ }),
1212
-
1213
- /***/ "./node_modules/core-js/library/modules/_html.js":
1214
- /*!*******************************************************!*\
1215
- !*** ./node_modules/core-js/library/modules/_html.js ***!
1216
- \*******************************************************/
1217
- /*! no static exports found */
1218
- /***/ (function(module, exports, __webpack_require__) {
1219
-
1220
- eval("var document = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\").document;\nmodule.exports = document && document.documentElement;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_html.js?");
1221
-
1222
- /***/ }),
1223
-
1224
- /***/ "./node_modules/core-js/library/modules/_ie8-dom-define.js":
1225
- /*!*****************************************************************!*\
1226
- !*** ./node_modules/core-js/library/modules/_ie8-dom-define.js ***!
1227
- \*****************************************************************/
1228
- /*! no static exports found */
1229
- /***/ (function(module, exports, __webpack_require__) {
1230
-
1231
- eval("module.exports = !__webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") && !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ \"./node_modules/core-js/library/modules/_dom-create.js\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js?");
1232
-
1233
- /***/ }),
1234
-
1235
- /***/ "./node_modules/core-js/library/modules/_invoke.js":
1236
- /*!*********************************************************!*\
1237
- !*** ./node_modules/core-js/library/modules/_invoke.js ***!
1238
- \*********************************************************/
1239
- /*! no static exports found */
1240
- /***/ (function(module, exports) {
1241
-
1242
- eval("// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_invoke.js?");
1243
-
1244
- /***/ }),
1245
-
1246
- /***/ "./node_modules/core-js/library/modules/_iobject.js":
1247
- /*!**********************************************************!*\
1248
- !*** ./node_modules/core-js/library/modules/_iobject.js ***!
1249
- \**********************************************************/
1250
- /*! no static exports found */
1251
- /***/ (function(module, exports, __webpack_require__) {
1252
-
1253
- eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/library/modules/_cof.js\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iobject.js?");
1254
-
1255
- /***/ }),
1256
-
1257
- /***/ "./node_modules/core-js/library/modules/_is-array-iter.js":
1258
- /*!****************************************************************!*\
1259
- !*** ./node_modules/core-js/library/modules/_is-array-iter.js ***!
1260
- \****************************************************************/
1261
- /*! no static exports found */
1262
- /***/ (function(module, exports, __webpack_require__) {
1263
-
1264
- eval("// check on default Array iterator\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_is-array-iter.js?");
1265
-
1266
- /***/ }),
1267
-
1268
- /***/ "./node_modules/core-js/library/modules/_is-array.js":
1269
- /*!***********************************************************!*\
1270
- !*** ./node_modules/core-js/library/modules/_is-array.js ***!
1271
- \***********************************************************/
1272
- /*! no static exports found */
1273
- /***/ (function(module, exports, __webpack_require__) {
1274
-
1275
- eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/library/modules/_cof.js\");\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_is-array.js?");
1276
-
1277
- /***/ }),
1278
-
1279
- /***/ "./node_modules/core-js/library/modules/_is-object.js":
1280
- /*!************************************************************!*\
1281
- !*** ./node_modules/core-js/library/modules/_is-object.js ***!
1282
- \************************************************************/
1283
- /*! no static exports found */
1284
- /***/ (function(module, exports) {
1285
-
1286
- eval("module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_is-object.js?");
1287
-
1288
- /***/ }),
1289
-
1290
- /***/ "./node_modules/core-js/library/modules/_iter-call.js":
1291
- /*!************************************************************!*\
1292
- !*** ./node_modules/core-js/library/modules/_iter-call.js ***!
1293
- \************************************************************/
1294
- /*! no static exports found */
1295
- /***/ (function(module, exports, __webpack_require__) {
1296
-
1297
- eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iter-call.js?");
1298
-
1299
- /***/ }),
1300
-
1301
- /***/ "./node_modules/core-js/library/modules/_iter-create.js":
1302
- /*!**************************************************************!*\
1303
- !*** ./node_modules/core-js/library/modules/_iter-create.js ***!
1304
- \**************************************************************/
1305
- /*! no static exports found */
1306
- /***/ (function(module, exports, __webpack_require__) {
1307
-
1308
- "use strict";
1309
- eval("\nvar create = __webpack_require__(/*! ./_object-create */ \"./node_modules/core-js/library/modules/_object-create.js\");\nvar descriptor = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\")(IteratorPrototype, __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iter-create.js?");
1310
-
1311
- /***/ }),
1312
-
1313
- /***/ "./node_modules/core-js/library/modules/_iter-define.js":
1314
- /*!**************************************************************!*\
1315
- !*** ./node_modules/core-js/library/modules/_iter-define.js ***!
1316
- \**************************************************************/
1317
- /*! no static exports found */
1318
- /***/ (function(module, exports, __webpack_require__) {
1319
-
1320
- "use strict";
1321
- eval("\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/library/modules/_redefine.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar $iterCreate = __webpack_require__(/*! ./_iter-create */ \"./node_modules/core-js/library/modules/_iter-create.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ \"./node_modules/core-js/library/modules/_object-gpo.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iter-define.js?");
1322
-
1323
- /***/ }),
1324
-
1325
- /***/ "./node_modules/core-js/library/modules/_iter-detect.js":
1326
- /*!**************************************************************!*\
1327
- !*** ./node_modules/core-js/library/modules/_iter-detect.js ***!
1328
- \**************************************************************/
1329
- /*! no static exports found */
1330
- /***/ (function(module, exports, __webpack_require__) {
1331
-
1332
- eval("var ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iter-detect.js?");
1333
-
1334
- /***/ }),
1335
-
1336
- /***/ "./node_modules/core-js/library/modules/_iter-step.js":
1337
- /*!************************************************************!*\
1338
- !*** ./node_modules/core-js/library/modules/_iter-step.js ***!
1339
- \************************************************************/
1340
- /*! no static exports found */
1341
- /***/ (function(module, exports) {
1342
-
1343
- eval("module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iter-step.js?");
1344
-
1345
- /***/ }),
1346
-
1347
- /***/ "./node_modules/core-js/library/modules/_iterators.js":
1348
- /*!************************************************************!*\
1349
- !*** ./node_modules/core-js/library/modules/_iterators.js ***!
1350
- \************************************************************/
1351
- /*! no static exports found */
1352
- /***/ (function(module, exports) {
1353
-
1354
- eval("module.exports = {};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_iterators.js?");
1355
-
1356
- /***/ }),
1357
-
1358
- /***/ "./node_modules/core-js/library/modules/_library.js":
1359
- /*!**********************************************************!*\
1360
- !*** ./node_modules/core-js/library/modules/_library.js ***!
1361
- \**********************************************************/
1362
- /*! no static exports found */
1363
- /***/ (function(module, exports) {
1364
-
1365
- eval("module.exports = true;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_library.js?");
1366
-
1367
- /***/ }),
1368
-
1369
- /***/ "./node_modules/core-js/library/modules/_meta.js":
1370
- /*!*******************************************************!*\
1371
- !*** ./node_modules/core-js/library/modules/_meta.js ***!
1372
- \*******************************************************/
1373
- /*! no static exports found */
1374
- /***/ (function(module, exports, __webpack_require__) {
1375
-
1376
- eval("var META = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\")('meta');\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar setDesc = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_meta.js?");
1377
-
1378
- /***/ }),
1379
-
1380
- /***/ "./node_modules/core-js/library/modules/_microtask.js":
1381
- /*!************************************************************!*\
1382
- !*** ./node_modules/core-js/library/modules/_microtask.js ***!
1383
- \************************************************************/
1384
- /*! no static exports found */
1385
- /***/ (function(module, exports, __webpack_require__) {
1386
-
1387
- eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar macrotask = __webpack_require__(/*! ./_task */ \"./node_modules/core-js/library/modules/_task.js\").set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/library/modules/_cof.js\")(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_microtask.js?");
1388
-
1389
- /***/ }),
1390
-
1391
- /***/ "./node_modules/core-js/library/modules/_new-promise-capability.js":
1392
- /*!*************************************************************************!*\
1393
- !*** ./node_modules/core-js/library/modules/_new-promise-capability.js ***!
1394
- \*************************************************************************/
1395
- /*! no static exports found */
1396
- /***/ (function(module, exports, __webpack_require__) {
1397
-
1398
- "use strict";
1399
- eval("\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/core-js/library/modules/_a-function.js\");\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_new-promise-capability.js?");
1400
-
1401
- /***/ }),
1402
-
1403
- /***/ "./node_modules/core-js/library/modules/_object-assign.js":
1404
- /*!****************************************************************!*\
1405
- !*** ./node_modules/core-js/library/modules/_object-assign.js ***!
1406
- \****************************************************************/
1407
- /*! no static exports found */
1408
- /***/ (function(module, exports, __webpack_require__) {
1409
-
1410
- "use strict";
1411
- eval("\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPS = __webpack_require__(/*! ./_object-gops */ \"./node_modules/core-js/library/modules/_object-gops.js\");\nvar pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/core-js/library/modules/_iobject.js\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-assign.js?");
1412
-
1413
- /***/ }),
1414
-
1415
- /***/ "./node_modules/core-js/library/modules/_object-create.js":
1416
- /*!****************************************************************!*\
1417
- !*** ./node_modules/core-js/library/modules/_object-create.js ***!
1418
- \****************************************************************/
1419
- /*! no static exports found */
1420
- /***/ (function(module, exports, __webpack_require__) {
1421
-
1422
- eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar dPs = __webpack_require__(/*! ./_object-dps */ \"./node_modules/core-js/library/modules/_object-dps.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/library/modules/_enum-bug-keys.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(/*! ./_dom-create */ \"./node_modules/core-js/library/modules/_dom-create.js\")('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(/*! ./_html */ \"./node_modules/core-js/library/modules/_html.js\").appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-create.js?");
1423
-
1424
- /***/ }),
1425
-
1426
- /***/ "./node_modules/core-js/library/modules/_object-dp.js":
1427
- /*!************************************************************!*\
1428
- !*** ./node_modules/core-js/library/modules/_object-dp.js ***!
1429
- \************************************************************/
1430
- /*! no static exports found */
1431
- /***/ (function(module, exports, __webpack_require__) {
1432
-
1433
- eval("var anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/core-js/library/modules/_ie8-dom-define.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/library/modules/_to-primitive.js\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-dp.js?");
1434
-
1435
- /***/ }),
1436
-
1437
- /***/ "./node_modules/core-js/library/modules/_object-dps.js":
1438
- /*!*************************************************************!*\
1439
- !*** ./node_modules/core-js/library/modules/_object-dps.js ***!
1440
- \*************************************************************/
1441
- /*! no static exports found */
1442
- /***/ (function(module, exports, __webpack_require__) {
1443
-
1444
- eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\n\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-dps.js?");
1445
-
1446
- /***/ }),
1447
-
1448
- /***/ "./node_modules/core-js/library/modules/_object-gopd.js":
1449
- /*!**************************************************************!*\
1450
- !*** ./node_modules/core-js/library/modules/_object-gopd.js ***!
1451
- \**************************************************************/
1452
- /*! no static exports found */
1453
- /***/ (function(module, exports, __webpack_require__) {
1454
-
1455
- eval("var pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/library/modules/_to-primitive.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/core-js/library/modules/_ie8-dom-define.js\");\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-gopd.js?");
1456
-
1457
- /***/ }),
1458
-
1459
- /***/ "./node_modules/core-js/library/modules/_object-gopn-ext.js":
1460
- /*!******************************************************************!*\
1461
- !*** ./node_modules/core-js/library/modules/_object-gopn-ext.js ***!
1462
- \******************************************************************/
1463
- /*! no static exports found */
1464
- /***/ (function(module, exports, __webpack_require__) {
1465
-
1466
- eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar gOPN = __webpack_require__(/*! ./_object-gopn */ \"./node_modules/core-js/library/modules/_object-gopn.js\").f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-gopn-ext.js?");
1467
-
1468
- /***/ }),
1469
-
1470
- /***/ "./node_modules/core-js/library/modules/_object-gopn.js":
1471
- /*!**************************************************************!*\
1472
- !*** ./node_modules/core-js/library/modules/_object-gopn.js ***!
1473
- \**************************************************************/
1474
- /*! no static exports found */
1475
- /***/ (function(module, exports, __webpack_require__) {
1476
-
1477
- eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/core-js/library/modules/_object-keys-internal.js\");\nvar hiddenKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/library/modules/_enum-bug-keys.js\").concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-gopn.js?");
1478
-
1479
- /***/ }),
1480
-
1481
- /***/ "./node_modules/core-js/library/modules/_object-gops.js":
1482
- /*!**************************************************************!*\
1483
- !*** ./node_modules/core-js/library/modules/_object-gops.js ***!
1484
- \**************************************************************/
1485
- /*! no static exports found */
1486
- /***/ (function(module, exports) {
1487
-
1488
- eval("exports.f = Object.getOwnPropertySymbols;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-gops.js?");
1489
-
1490
- /***/ }),
1491
-
1492
- /***/ "./node_modules/core-js/library/modules/_object-gpo.js":
1493
- /*!*************************************************************!*\
1494
- !*** ./node_modules/core-js/library/modules/_object-gpo.js ***!
1495
- \*************************************************************/
1496
- /*! no static exports found */
1497
- /***/ (function(module, exports, __webpack_require__) {
1498
-
1499
- eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-gpo.js?");
1500
-
1501
- /***/ }),
1502
-
1503
- /***/ "./node_modules/core-js/library/modules/_object-keys-internal.js":
1504
- /*!***********************************************************************!*\
1505
- !*** ./node_modules/core-js/library/modules/_object-keys-internal.js ***!
1506
- \***********************************************************************/
1507
- /*! no static exports found */
1508
- /***/ (function(module, exports, __webpack_require__) {
1509
-
1510
- eval("var has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar arrayIndexOf = __webpack_require__(/*! ./_array-includes */ \"./node_modules/core-js/library/modules/_array-includes.js\")(false);\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-keys-internal.js?");
1511
-
1512
- /***/ }),
1513
-
1514
- /***/ "./node_modules/core-js/library/modules/_object-keys.js":
1515
- /*!**************************************************************!*\
1516
- !*** ./node_modules/core-js/library/modules/_object-keys.js ***!
1517
- \**************************************************************/
1518
- /*! no static exports found */
1519
- /***/ (function(module, exports, __webpack_require__) {
1520
-
1521
- eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/core-js/library/modules/_object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/library/modules/_enum-bug-keys.js\");\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-keys.js?");
1522
-
1523
- /***/ }),
1524
-
1525
- /***/ "./node_modules/core-js/library/modules/_object-pie.js":
1526
- /*!*************************************************************!*\
1527
- !*** ./node_modules/core-js/library/modules/_object-pie.js ***!
1528
- \*************************************************************/
1529
- /*! no static exports found */
1530
- /***/ (function(module, exports) {
1531
-
1532
- eval("exports.f = {}.propertyIsEnumerable;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-pie.js?");
1533
-
1534
- /***/ }),
1535
-
1536
- /***/ "./node_modules/core-js/library/modules/_object-sap.js":
1537
- /*!*************************************************************!*\
1538
- !*** ./node_modules/core-js/library/modules/_object-sap.js ***!
1539
- \*************************************************************/
1540
- /*! no static exports found */
1541
- /***/ (function(module, exports, __webpack_require__) {
1542
-
1543
- eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\");\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_object-sap.js?");
1544
-
1545
- /***/ }),
1546
-
1547
- /***/ "./node_modules/core-js/library/modules/_perform.js":
1548
- /*!**********************************************************!*\
1549
- !*** ./node_modules/core-js/library/modules/_perform.js ***!
1550
- \**********************************************************/
1551
- /*! no static exports found */
1552
- /***/ (function(module, exports) {
1553
-
1554
- eval("module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_perform.js?");
1555
-
1556
- /***/ }),
1557
-
1558
- /***/ "./node_modules/core-js/library/modules/_promise-resolve.js":
1559
- /*!******************************************************************!*\
1560
- !*** ./node_modules/core-js/library/modules/_promise-resolve.js ***!
1561
- \******************************************************************/
1562
- /*! no static exports found */
1563
- /***/ (function(module, exports, __webpack_require__) {
1564
-
1565
- eval("var anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ \"./node_modules/core-js/library/modules/_new-promise-capability.js\");\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_promise-resolve.js?");
1566
-
1567
- /***/ }),
1568
-
1569
- /***/ "./node_modules/core-js/library/modules/_property-desc.js":
1570
- /*!****************************************************************!*\
1571
- !*** ./node_modules/core-js/library/modules/_property-desc.js ***!
1572
- \****************************************************************/
1573
- /*! no static exports found */
1574
- /***/ (function(module, exports) {
1575
-
1576
- eval("module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_property-desc.js?");
1577
-
1578
- /***/ }),
1579
-
1580
- /***/ "./node_modules/core-js/library/modules/_redefine-all.js":
1581
- /*!***************************************************************!*\
1582
- !*** ./node_modules/core-js/library/modules/_redefine-all.js ***!
1583
- \***************************************************************/
1584
- /*! no static exports found */
1585
- /***/ (function(module, exports, __webpack_require__) {
1586
-
1587
- eval("var hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_redefine-all.js?");
1588
-
1589
- /***/ }),
1590
-
1591
- /***/ "./node_modules/core-js/library/modules/_redefine.js":
1592
- /*!***********************************************************!*\
1593
- !*** ./node_modules/core-js/library/modules/_redefine.js ***!
1594
- \***********************************************************/
1595
- /*! no static exports found */
1596
- /***/ (function(module, exports, __webpack_require__) {
1597
-
1598
- eval("module.exports = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_redefine.js?");
1599
-
1600
- /***/ }),
1601
-
1602
- /***/ "./node_modules/core-js/library/modules/_set-proto.js":
1603
- /*!************************************************************!*\
1604
- !*** ./node_modules/core-js/library/modules/_set-proto.js ***!
1605
- \************************************************************/
1606
- /*! no static exports found */
1607
- /***/ (function(module, exports, __webpack_require__) {
1608
-
1609
- eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\")(Function.call, __webpack_require__(/*! ./_object-gopd */ \"./node_modules/core-js/library/modules/_object-gopd.js\").f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_set-proto.js?");
1610
-
1611
- /***/ }),
1612
-
1613
- /***/ "./node_modules/core-js/library/modules/_set-species.js":
1614
- /*!**************************************************************!*\
1615
- !*** ./node_modules/core-js/library/modules/_set-species.js ***!
1616
- \**************************************************************/
1617
- /*! no static exports found */
1618
- /***/ (function(module, exports, __webpack_require__) {
1619
-
1620
- "use strict";
1621
- eval("\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\");\nvar SPECIES = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_set-species.js?");
1622
-
1623
- /***/ }),
1624
-
1625
- /***/ "./node_modules/core-js/library/modules/_set-to-string-tag.js":
1626
- /*!********************************************************************!*\
1627
- !*** ./node_modules/core-js/library/modules/_set-to-string-tag.js ***!
1628
- \********************************************************************/
1629
- /*! no static exports found */
1630
- /***/ (function(module, exports, __webpack_require__) {
1631
-
1632
- eval("var def = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f;\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_set-to-string-tag.js?");
1633
-
1634
- /***/ }),
1635
-
1636
- /***/ "./node_modules/core-js/library/modules/_shared-key.js":
1637
- /*!*************************************************************!*\
1638
- !*** ./node_modules/core-js/library/modules/_shared-key.js ***!
1639
- \*************************************************************/
1640
- /*! no static exports found */
1641
- /***/ (function(module, exports, __webpack_require__) {
1642
-
1643
- eval("var shared = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/library/modules/_shared.js\")('keys');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\");\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_shared-key.js?");
1644
-
1645
- /***/ }),
1646
-
1647
- /***/ "./node_modules/core-js/library/modules/_shared.js":
1648
- /*!*********************************************************!*\
1649
- !*** ./node_modules/core-js/library/modules/_shared.js ***!
1650
- \*********************************************************/
1651
- /*! no static exports found */
1652
- /***/ (function(module, exports, __webpack_require__) {
1653
-
1654
- eval("var core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\") ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_shared.js?");
1655
-
1656
- /***/ }),
1657
-
1658
- /***/ "./node_modules/core-js/library/modules/_species-constructor.js":
1659
- /*!**********************************************************************!*\
1660
- !*** ./node_modules/core-js/library/modules/_species-constructor.js ***!
1661
- \**********************************************************************/
1662
- /*! no static exports found */
1663
- /***/ (function(module, exports, __webpack_require__) {
1664
-
1665
- eval("// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/core-js/library/modules/_a-function.js\");\nvar SPECIES = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_species-constructor.js?");
1666
-
1667
- /***/ }),
1668
-
1669
- /***/ "./node_modules/core-js/library/modules/_string-at.js":
1670
- /*!************************************************************!*\
1671
- !*** ./node_modules/core-js/library/modules/_string-at.js ***!
1672
- \************************************************************/
1673
- /*! no static exports found */
1674
- /***/ (function(module, exports, __webpack_require__) {
1675
-
1676
- eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/library/modules/_to-integer.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/library/modules/_defined.js\");\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_string-at.js?");
1677
-
1678
- /***/ }),
1679
-
1680
- /***/ "./node_modules/core-js/library/modules/_task.js":
1681
- /*!*******************************************************!*\
1682
- !*** ./node_modules/core-js/library/modules/_task.js ***!
1683
- \*******************************************************/
1684
- /*! no static exports found */
1685
- /***/ (function(module, exports, __webpack_require__) {
1686
-
1687
- eval("var ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\");\nvar invoke = __webpack_require__(/*! ./_invoke */ \"./node_modules/core-js/library/modules/_invoke.js\");\nvar html = __webpack_require__(/*! ./_html */ \"./node_modules/core-js/library/modules/_html.js\");\nvar cel = __webpack_require__(/*! ./_dom-create */ \"./node_modules/core-js/library/modules/_dom-create.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(/*! ./_cof */ \"./node_modules/core-js/library/modules/_cof.js\")(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_task.js?");
1688
-
1689
- /***/ }),
1690
-
1691
- /***/ "./node_modules/core-js/library/modules/_to-absolute-index.js":
1692
- /*!********************************************************************!*\
1693
- !*** ./node_modules/core-js/library/modules/_to-absolute-index.js ***!
1694
- \********************************************************************/
1695
- /*! no static exports found */
1696
- /***/ (function(module, exports, __webpack_require__) {
1697
-
1698
- eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/library/modules/_to-integer.js\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-absolute-index.js?");
1699
-
1700
- /***/ }),
1701
-
1702
- /***/ "./node_modules/core-js/library/modules/_to-integer.js":
1703
- /*!*************************************************************!*\
1704
- !*** ./node_modules/core-js/library/modules/_to-integer.js ***!
1705
- \*************************************************************/
1706
- /*! no static exports found */
1707
- /***/ (function(module, exports) {
1708
-
1709
- eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-integer.js?");
1710
-
1711
- /***/ }),
1712
-
1713
- /***/ "./node_modules/core-js/library/modules/_to-iobject.js":
1714
- /*!*************************************************************!*\
1715
- !*** ./node_modules/core-js/library/modules/_to-iobject.js ***!
1716
- \*************************************************************/
1717
- /*! no static exports found */
1718
- /***/ (function(module, exports, __webpack_require__) {
1719
-
1720
- eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/core-js/library/modules/_iobject.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-iobject.js?");
1721
-
1722
- /***/ }),
1723
-
1724
- /***/ "./node_modules/core-js/library/modules/_to-length.js":
1725
- /*!************************************************************!*\
1726
- !*** ./node_modules/core-js/library/modules/_to-length.js ***!
1727
- \************************************************************/
1728
- /*! no static exports found */
1729
- /***/ (function(module, exports, __webpack_require__) {
1730
-
1731
- eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/library/modules/_to-integer.js\");\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-length.js?");
1732
-
1733
- /***/ }),
1734
-
1735
- /***/ "./node_modules/core-js/library/modules/_to-object.js":
1736
- /*!************************************************************!*\
1737
- !*** ./node_modules/core-js/library/modules/_to-object.js ***!
1738
- \************************************************************/
1739
- /*! no static exports found */
1740
- /***/ (function(module, exports, __webpack_require__) {
1741
-
1742
- eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-object.js?");
1743
-
1744
- /***/ }),
1745
-
1746
- /***/ "./node_modules/core-js/library/modules/_to-primitive.js":
1747
- /*!***************************************************************!*\
1748
- !*** ./node_modules/core-js/library/modules/_to-primitive.js ***!
1749
- \***************************************************************/
1750
- /*! no static exports found */
1751
- /***/ (function(module, exports, __webpack_require__) {
1752
-
1753
- eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_to-primitive.js?");
1754
-
1755
- /***/ }),
1756
-
1757
- /***/ "./node_modules/core-js/library/modules/_uid.js":
1758
- /*!******************************************************!*\
1759
- !*** ./node_modules/core-js/library/modules/_uid.js ***!
1760
- \******************************************************/
1761
- /*! no static exports found */
1762
- /***/ (function(module, exports) {
1763
-
1764
- eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_uid.js?");
1765
-
1766
- /***/ }),
1767
-
1768
- /***/ "./node_modules/core-js/library/modules/_user-agent.js":
1769
- /*!*************************************************************!*\
1770
- !*** ./node_modules/core-js/library/modules/_user-agent.js ***!
1771
- \*************************************************************/
1772
- /*! no static exports found */
1773
- /***/ (function(module, exports, __webpack_require__) {
1774
-
1775
- eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_user-agent.js?");
1776
-
1777
- /***/ }),
1778
-
1779
- /***/ "./node_modules/core-js/library/modules/_wks-define.js":
1780
- /*!*************************************************************!*\
1781
- !*** ./node_modules/core-js/library/modules/_wks-define.js ***!
1782
- \*************************************************************/
1783
- /*! no static exports found */
1784
- /***/ (function(module, exports, __webpack_require__) {
1785
-
1786
- eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\");\nvar wksExt = __webpack_require__(/*! ./_wks-ext */ \"./node_modules/core-js/library/modules/_wks-ext.js\");\nvar defineProperty = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_wks-define.js?");
1787
-
1788
- /***/ }),
1789
-
1790
- /***/ "./node_modules/core-js/library/modules/_wks-ext.js":
1791
- /*!**********************************************************!*\
1792
- !*** ./node_modules/core-js/library/modules/_wks-ext.js ***!
1793
- \**********************************************************/
1794
- /*! no static exports found */
1795
- /***/ (function(module, exports, __webpack_require__) {
1796
-
1797
- eval("exports.f = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\");\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_wks-ext.js?");
1798
-
1799
- /***/ }),
1800
-
1801
- /***/ "./node_modules/core-js/library/modules/_wks.js":
1802
- /*!******************************************************!*\
1803
- !*** ./node_modules/core-js/library/modules/_wks.js ***!
1804
- \******************************************************/
1805
- /*! no static exports found */
1806
- /***/ (function(module, exports, __webpack_require__) {
1807
-
1808
- eval("var store = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/library/modules/_shared.js\")('wks');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\");\nvar Symbol = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/_wks.js?");
1809
-
1810
- /***/ }),
1811
-
1812
- /***/ "./node_modules/core-js/library/modules/core.get-iterator-method.js":
1813
- /*!**************************************************************************!*\
1814
- !*** ./node_modules/core-js/library/modules/core.get-iterator-method.js ***!
1815
- \**************************************************************************/
1816
- /*! no static exports found */
1817
- /***/ (function(module, exports, __webpack_require__) {
1818
-
1819
- eval("var classof = __webpack_require__(/*! ./_classof */ \"./node_modules/core-js/library/modules/_classof.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nmodule.exports = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\").getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/core.get-iterator-method.js?");
1820
-
1821
- /***/ }),
1822
-
1823
- /***/ "./node_modules/core-js/library/modules/es6.array.iterator.js":
1824
- /*!********************************************************************!*\
1825
- !*** ./node_modules/core-js/library/modules/es6.array.iterator.js ***!
1826
- \********************************************************************/
1827
- /*! no static exports found */
1828
- /***/ (function(module, exports, __webpack_require__) {
1829
-
1830
- "use strict";
1831
- eval("\nvar addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ \"./node_modules/core-js/library/modules/_add-to-unscopables.js\");\nvar step = __webpack_require__(/*! ./_iter-step */ \"./node_modules/core-js/library/modules/_iter-step.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(/*! ./_iter-define */ \"./node_modules/core-js/library/modules/_iter-define.js\")(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.array.iterator.js?");
1832
-
1833
- /***/ }),
1834
-
1835
- /***/ "./node_modules/core-js/library/modules/es6.object.assign.js":
1836
- /*!*******************************************************************!*\
1837
- !*** ./node_modules/core-js/library/modules/es6.object.assign.js ***!
1838
- \*******************************************************************/
1839
- /*! no static exports found */
1840
- /***/ (function(module, exports, __webpack_require__) {
1841
-
1842
- eval("// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(/*! ./_object-assign */ \"./node_modules/core-js/library/modules/_object-assign.js\") });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.assign.js?");
1843
-
1844
- /***/ }),
1845
-
1846
- /***/ "./node_modules/core-js/library/modules/es6.object.create.js":
1847
- /*!*******************************************************************!*\
1848
- !*** ./node_modules/core-js/library/modules/es6.object.create.js ***!
1849
- \*******************************************************************/
1850
- /*! no static exports found */
1851
- /***/ (function(module, exports, __webpack_require__) {
1852
-
1853
- eval("var $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(/*! ./_object-create */ \"./node_modules/core-js/library/modules/_object-create.js\") });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.create.js?");
1854
-
1855
- /***/ }),
1856
-
1857
- /***/ "./node_modules/core-js/library/modules/es6.object.define-property.js":
1858
- /*!****************************************************************************!*\
1859
- !*** ./node_modules/core-js/library/modules/es6.object.define-property.js ***!
1860
- \****************************************************************************/
1861
- /*! no static exports found */
1862
- /***/ (function(module, exports, __webpack_require__) {
1863
-
1864
- eval("var $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\"), 'Object', { defineProperty: __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.define-property.js?");
1865
-
1866
- /***/ }),
1867
-
1868
- /***/ "./node_modules/core-js/library/modules/es6.object.get-prototype-of.js":
1869
- /*!*****************************************************************************!*\
1870
- !*** ./node_modules/core-js/library/modules/es6.object.get-prototype-of.js ***!
1871
- \*****************************************************************************/
1872
- /*! no static exports found */
1873
- /***/ (function(module, exports, __webpack_require__) {
1874
-
1875
- eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar $getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ \"./node_modules/core-js/library/modules/_object-gpo.js\");\n\n__webpack_require__(/*! ./_object-sap */ \"./node_modules/core-js/library/modules/_object-sap.js\")('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.get-prototype-of.js?");
1876
-
1877
- /***/ }),
1878
-
1879
- /***/ "./node_modules/core-js/library/modules/es6.object.keys.js":
1880
- /*!*****************************************************************!*\
1881
- !*** ./node_modules/core-js/library/modules/es6.object.keys.js ***!
1882
- \*****************************************************************/
1883
- /*! no static exports found */
1884
- /***/ (function(module, exports, __webpack_require__) {
1885
-
1886
- eval("// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar $keys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\n\n__webpack_require__(/*! ./_object-sap */ \"./node_modules/core-js/library/modules/_object-sap.js\")('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.keys.js?");
1887
-
1888
- /***/ }),
1889
-
1890
- /***/ "./node_modules/core-js/library/modules/es6.object.set-prototype-of.js":
1891
- /*!*****************************************************************************!*\
1892
- !*** ./node_modules/core-js/library/modules/es6.object.set-prototype-of.js ***!
1893
- \*****************************************************************************/
1894
- /*! no static exports found */
1895
- /***/ (function(module, exports, __webpack_require__) {
1896
-
1897
- eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(/*! ./_set-proto */ \"./node_modules/core-js/library/modules/_set-proto.js\").set });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.set-prototype-of.js?");
1898
-
1899
- /***/ }),
1900
-
1901
- /***/ "./node_modules/core-js/library/modules/es6.object.to-string.js":
1902
- /*!**********************************************************************!*\
1903
- !*** ./node_modules/core-js/library/modules/es6.object.to-string.js ***!
1904
- \**********************************************************************/
1905
- /*! no static exports found */
1906
- /***/ (function(module, exports) {
1907
-
1908
- eval("\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.object.to-string.js?");
1909
-
1910
- /***/ }),
1911
-
1912
- /***/ "./node_modules/core-js/library/modules/es6.promise.js":
1913
- /*!*************************************************************!*\
1914
- !*** ./node_modules/core-js/library/modules/es6.promise.js ***!
1915
- \*************************************************************/
1916
- /*! no static exports found */
1917
- /***/ (function(module, exports, __webpack_require__) {
1918
-
1919
- "use strict";
1920
- eval("\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\");\nvar classof = __webpack_require__(/*! ./_classof */ \"./node_modules/core-js/library/modules/_classof.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/core-js/library/modules/_a-function.js\");\nvar anInstance = __webpack_require__(/*! ./_an-instance */ \"./node_modules/core-js/library/modules/_an-instance.js\");\nvar forOf = __webpack_require__(/*! ./_for-of */ \"./node_modules/core-js/library/modules/_for-of.js\");\nvar speciesConstructor = __webpack_require__(/*! ./_species-constructor */ \"./node_modules/core-js/library/modules/_species-constructor.js\");\nvar task = __webpack_require__(/*! ./_task */ \"./node_modules/core-js/library/modules/_task.js\").set;\nvar microtask = __webpack_require__(/*! ./_microtask */ \"./node_modules/core-js/library/modules/_microtask.js\")();\nvar newPromiseCapabilityModule = __webpack_require__(/*! ./_new-promise-capability */ \"./node_modules/core-js/library/modules/_new-promise-capability.js\");\nvar perform = __webpack_require__(/*! ./_perform */ \"./node_modules/core-js/library/modules/_perform.js\");\nvar userAgent = __webpack_require__(/*! ./_user-agent */ \"./node_modules/core-js/library/modules/_user-agent.js\");\nvar promiseResolve = __webpack_require__(/*! ./_promise-resolve */ \"./node_modules/core-js/library/modules/_promise-resolve.js\");\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[__webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = __webpack_require__(/*! ./_redefine-all */ \"./node_modules/core-js/library/modules/_redefine-all.js\")($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/library/modules/_set-to-string-tag.js\")($Promise, PROMISE);\n__webpack_require__(/*! ./_set-species */ \"./node_modules/core-js/library/modules/_set-species.js\")(PROMISE);\nWrapper = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\")[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(/*! ./_iter-detect */ \"./node_modules/core-js/library/modules/_iter-detect.js\")(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.promise.js?");
1921
-
1922
- /***/ }),
1923
-
1924
- /***/ "./node_modules/core-js/library/modules/es6.string.iterator.js":
1925
- /*!*********************************************************************!*\
1926
- !*** ./node_modules/core-js/library/modules/es6.string.iterator.js ***!
1927
- \*********************************************************************/
1928
- /*! no static exports found */
1929
- /***/ (function(module, exports, __webpack_require__) {
1930
-
1931
- "use strict";
1932
- eval("\nvar $at = __webpack_require__(/*! ./_string-at */ \"./node_modules/core-js/library/modules/_string-at.js\")(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(/*! ./_iter-define */ \"./node_modules/core-js/library/modules/_iter-define.js\")(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.string.iterator.js?");
1933
-
1934
- /***/ }),
1935
-
1936
- /***/ "./node_modules/core-js/library/modules/es6.symbol.js":
1937
- /*!************************************************************!*\
1938
- !*** ./node_modules/core-js/library/modules/es6.symbol.js ***!
1939
- \************************************************************/
1940
- /*! no static exports found */
1941
- /***/ (function(module, exports, __webpack_require__) {
1942
-
1943
- "use strict";
1944
- eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/library/modules/_redefine.js\");\nvar META = __webpack_require__(/*! ./_meta */ \"./node_modules/core-js/library/modules/_meta.js\").KEY;\nvar $fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\");\nvar shared = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/library/modules/_shared.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\");\nvar wks = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\");\nvar wksExt = __webpack_require__(/*! ./_wks-ext */ \"./node_modules/core-js/library/modules/_wks-ext.js\");\nvar wksDefine = __webpack_require__(/*! ./_wks-define */ \"./node_modules/core-js/library/modules/_wks-define.js\");\nvar enumKeys = __webpack_require__(/*! ./_enum-keys */ \"./node_modules/core-js/library/modules/_enum-keys.js\");\nvar isArray = __webpack_require__(/*! ./_is-array */ \"./node_modules/core-js/library/modules/_is-array.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/library/modules/_to-primitive.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nvar _create = __webpack_require__(/*! ./_object-create */ \"./node_modules/core-js/library/modules/_object-create.js\");\nvar gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ \"./node_modules/core-js/library/modules/_object-gopn-ext.js\");\nvar $GOPD = __webpack_require__(/*! ./_object-gopd */ \"./node_modules/core-js/library/modules/_object-gopd.js\");\nvar $DP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar $keys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(/*! ./_object-gopn */ \"./node_modules/core-js/library/modules/_object-gopn.js\").f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\").f = $propertyIsEnumerable;\n __webpack_require__(/*! ./_object-gops */ \"./node_modules/core-js/library/modules/_object-gops.js\").f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\")) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es6.symbol.js?");
1945
-
1946
- /***/ }),
1947
-
1948
- /***/ "./node_modules/core-js/library/modules/es7.promise.finally.js":
1949
- /*!*********************************************************************!*\
1950
- !*** ./node_modules/core-js/library/modules/es7.promise.finally.js ***!
1951
- \*********************************************************************/
1952
- /*! no static exports found */
1953
- /***/ (function(module, exports, __webpack_require__) {
1954
-
1955
- "use strict";
1956
- eval("// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar speciesConstructor = __webpack_require__(/*! ./_species-constructor */ \"./node_modules/core-js/library/modules/_species-constructor.js\");\nvar promiseResolve = __webpack_require__(/*! ./_promise-resolve */ \"./node_modules/core-js/library/modules/_promise-resolve.js\");\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es7.promise.finally.js?");
1957
-
1958
- /***/ }),
1959
-
1960
- /***/ "./node_modules/core-js/library/modules/es7.promise.try.js":
1961
- /*!*****************************************************************!*\
1962
- !*** ./node_modules/core-js/library/modules/es7.promise.try.js ***!
1963
- \*****************************************************************/
1964
- /*! no static exports found */
1965
- /***/ (function(module, exports, __webpack_require__) {
1966
-
1967
- "use strict";
1968
- eval("\n// https://github.com/tc39/proposal-promise-try\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ \"./node_modules/core-js/library/modules/_new-promise-capability.js\");\nvar perform = __webpack_require__(/*! ./_perform */ \"./node_modules/core-js/library/modules/_perform.js\");\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es7.promise.try.js?");
1969
-
1970
- /***/ }),
1971
-
1972
- /***/ "./node_modules/core-js/library/modules/es7.symbol.async-iterator.js":
1973
- /*!***************************************************************************!*\
1974
- !*** ./node_modules/core-js/library/modules/es7.symbol.async-iterator.js ***!
1975
- \***************************************************************************/
1976
- /*! no static exports found */
1977
- /***/ (function(module, exports, __webpack_require__) {
1978
-
1979
- eval("__webpack_require__(/*! ./_wks-define */ \"./node_modules/core-js/library/modules/_wks-define.js\")('asyncIterator');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es7.symbol.async-iterator.js?");
1980
-
1981
- /***/ }),
1982
-
1983
- /***/ "./node_modules/core-js/library/modules/es7.symbol.observable.js":
1984
- /*!***********************************************************************!*\
1985
- !*** ./node_modules/core-js/library/modules/es7.symbol.observable.js ***!
1986
- \***********************************************************************/
1987
- /*! no static exports found */
1988
- /***/ (function(module, exports, __webpack_require__) {
1989
-
1990
- eval("__webpack_require__(/*! ./_wks-define */ \"./node_modules/core-js/library/modules/_wks-define.js\")('observable');\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/es7.symbol.observable.js?");
1991
-
1992
- /***/ }),
1993
-
1994
- /***/ "./node_modules/core-js/library/modules/web.dom.iterable.js":
1995
- /*!******************************************************************!*\
1996
- !*** ./node_modules/core-js/library/modules/web.dom.iterable.js ***!
1997
- \******************************************************************/
1998
- /*! no static exports found */
1999
- /***/ (function(module, exports, __webpack_require__) {
2000
-
2001
- eval("__webpack_require__(/*! ./es6.array.iterator */ \"./node_modules/core-js/library/modules/es6.array.iterator.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar TO_STRING_TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n\n\n//# sourceURL=webpack:///./node_modules/core-js/library/modules/web.dom.iterable.js?");
2002
-
2003
- /***/ }),
2004
-
2005
- /***/ "./node_modules/fbjs/lib/emptyFunction.js":
2006
- /*!************************************************!*\
2007
- !*** ./node_modules/fbjs/lib/emptyFunction.js ***!
2008
- \************************************************/
2009
- /*! no static exports found */
2010
- /***/ (function(module, exports, __webpack_require__) {
2011
-
2012
- "use strict";
2013
- eval("\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/emptyFunction.js?");
2014
-
2015
- /***/ }),
2016
-
2017
- /***/ "./node_modules/fbjs/lib/emptyObject.js":
2018
- /*!**********************************************!*\
2019
- !*** ./node_modules/fbjs/lib/emptyObject.js ***!
2020
- \**********************************************/
2021
- /*! no static exports found */
2022
- /***/ (function(module, exports, __webpack_require__) {
2023
-
2024
- "use strict";
2025
- eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar emptyObject = {};\n\nif (false) {}\n\nmodule.exports = emptyObject;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/emptyObject.js?");
2026
-
2027
- /***/ }),
2028
-
2029
- /***/ "./node_modules/fbjs/lib/invariant.js":
2030
- /*!********************************************!*\
2031
- !*** ./node_modules/fbjs/lib/invariant.js ***!
2032
- \********************************************/
2033
- /*! no static exports found */
2034
- /***/ (function(module, exports, __webpack_require__) {
2035
-
2036
- "use strict";
2037
- eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (false) {}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/invariant.js?");
2038
-
2039
- /***/ }),
2040
-
2041
- /***/ "./node_modules/handsontable/dist/handsontable.full.css":
2042
- /*!**************************************************************!*\
2043
- !*** ./node_modules/handsontable/dist/handsontable.full.css ***!
2044
- \**************************************************************/
2045
- /*! no static exports found */
2046
- /***/ (function(module, exports) {
2047
-
2048
- eval("// removed by extract-text-webpack-plugin\n\n//# sourceURL=webpack:///./node_modules/handsontable/dist/handsontable.full.css?");
2049
-
2050
- /***/ }),
2051
-
2052
- /***/ "./node_modules/handsontable/dist/handsontable.js":
2053
- /*!********************************************************!*\
2054
- !*** ./node_modules/handsontable/dist/handsontable.js ***!
2055
- \********************************************************/
2056
- /*! no static exports found */
2057
- /***/ (function(module, exports, __webpack_require__) {
2058
-
2059
- eval("/* WEBPACK VAR INJECTION */(function(setImmediate, clearImmediate) {/*!\n * (The MIT License)\n * \n * Copyright (c) 2012-2014 Marcin Warpechowski\n * Copyright (c) 2015 Handsoncode sp. z o.o. <hello@handsoncode.net>\n * \n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n * \n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * \n * Version: 5.0.2\n * Release date: 12/09/2018 (built at 11/09/2018 09:55:19)\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory(__webpack_require__(/*! moment */ \"./node_modules/handsontable/node_modules/moment/moment.js\"), __webpack_require__(/*! numbro */ \"./node_modules/numbro/dist/numbro.min.js\"), __webpack_require__(/*! pikaday */ \"./node_modules/pikaday/pikaday.js\"));\n\telse {}\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_57__, __WEBPACK_EXTERNAL_MODULE_248__, __WEBPACK_EXTERNAL_MODULE_237__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 207);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.HTML_CHARACTERS = undefined;\nexports.getParent = getParent;\nexports.closest = closest;\nexports.closestDown = closestDown;\nexports.isChildOf = isChildOf;\nexports.isChildOfWebComponentTable = isChildOfWebComponentTable;\nexports.polymerWrap = polymerWrap;\nexports.polymerUnwrap = polymerUnwrap;\nexports.index = index;\nexports.overlayContainsElement = overlayContainsElement;\nexports.hasClass = hasClass;\nexports.addClass = addClass;\nexports.removeClass = removeClass;\nexports.removeTextNodes = removeTextNodes;\nexports.empty = empty;\nexports.fastInnerHTML = fastInnerHTML;\nexports.fastInnerText = fastInnerText;\nexports.isVisible = isVisible;\nexports.offset = offset;\nexports.getWindowScrollTop = getWindowScrollTop;\nexports.getWindowScrollLeft = getWindowScrollLeft;\nexports.getScrollTop = getScrollTop;\nexports.getScrollLeft = getScrollLeft;\nexports.getScrollableElement = getScrollableElement;\nexports.getTrimmingContainer = getTrimmingContainer;\nexports.getStyle = getStyle;\nexports.getComputedStyle = getComputedStyle;\nexports.outerWidth = outerWidth;\nexports.outerHeight = outerHeight;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.addEvent = addEvent;\nexports.removeEvent = removeEvent;\nexports.getCaretPosition = getCaretPosition;\nexports.getSelectionEndPosition = getSelectionEndPosition;\nexports.getSelectionText = getSelectionText;\nexports.setCaretPosition = setCaretPosition;\nexports.getScrollbarWidth = getScrollbarWidth;\nexports.hasVerticalScrollbar = hasVerticalScrollbar;\nexports.hasHorizontalScrollbar = hasHorizontalScrollbar;\nexports.setOverlayPosition = setOverlayPosition;\nexports.getCssTransform = getCssTransform;\nexports.resetCssTransform = resetCssTransform;\nexports.isInput = isInput;\nexports.isOutsideInput = isOutsideInput;\n\nvar _browser = __webpack_require__(39);\n\nvar _feature = __webpack_require__(40);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n/**\n * Get the parent of the specified node in the DOM tree.\n *\n * @param {HTMLElement} element Element from which traversing is started.\n * @param {Number} [level=0] Traversing deep level.\n * @return {HTMLElement|null}\n */\nfunction getParent(element) {\n var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var iteration = -1;\n var parent = null;\n var elementToCheck = element;\n\n while (elementToCheck !== null) {\n if (iteration === level) {\n parent = elementToCheck;\n break;\n }\n\n if (elementToCheck.host && elementToCheck.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n elementToCheck = elementToCheck.host;\n } else {\n iteration += 1;\n elementToCheck = elementToCheck.parentNode;\n }\n }\n\n return parent;\n}\n\n/**\n * Goes up the DOM tree (including given element) until it finds an element that matches the nodes or nodes name.\n * This method goes up through web components.\n *\n * @param {HTMLElement} element Element from which traversing is started\n * @param {Array} nodes Array of elements or Array of elements name\n * @param {HTMLElement} [until]\n * @returns {HTMLElement|null}\n */\nfunction closest(element, nodes, until) {\n var elementToCheck = element;\n\n while (elementToCheck !== null && elementToCheck !== until) {\n if (elementToCheck.nodeType === Node.ELEMENT_NODE && (nodes.indexOf(elementToCheck.nodeName) > -1 || nodes.indexOf(elementToCheck) > -1)) {\n return elementToCheck;\n }\n if (elementToCheck.host && elementToCheck.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n elementToCheck = elementToCheck.host;\n } else {\n elementToCheck = elementToCheck.parentNode;\n }\n }\n\n return null;\n}\n\n/**\n * Goes \"down\" the DOM tree (including given element) until it finds an element that matches the nodes or nodes name.\n *\n * @param {HTMLElement} element Element from which traversing is started\n * @param {Array} nodes Array of elements or Array of elements name\n * @param {HTMLElement} [until]\n * @returns {HTMLElement|null}\n */\nfunction closestDown(element, nodes, until) {\n var matched = [];\n var elementToCheck = element;\n\n while (elementToCheck) {\n elementToCheck = closest(elementToCheck, nodes, until);\n\n if (!elementToCheck || until && !until.contains(elementToCheck)) {\n break;\n }\n matched.push(elementToCheck);\n\n if (elementToCheck.host && elementToCheck.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n elementToCheck = elementToCheck.host;\n } else {\n elementToCheck = elementToCheck.parentNode;\n }\n }\n var length = matched.length;\n\n return length ? matched[length - 1] : null;\n}\n\n/**\n * Goes up the DOM tree and checks if element is child of another element.\n *\n * @param child Child element\n * @param {Object|String} parent Parent element OR selector of the parent element.\n * If string provided, function returns `true` for the first occurrence of element with that class.\n * @returns {Boolean}\n */\nfunction isChildOf(child, parent) {\n var node = child.parentNode;\n var queriedParents = [];\n\n if (typeof parent === 'string') {\n queriedParents = Array.prototype.slice.call(document.querySelectorAll(parent), 0);\n } else {\n queriedParents.push(parent);\n }\n\n while (node !== null) {\n if (queriedParents.indexOf(node) > -1) {\n return true;\n }\n node = node.parentNode;\n }\n\n return false;\n}\n\n/**\n * Check if an element is part of `hot-table` web component.\n *\n * @param {Element} element\n * @returns {Boolean}\n */\nfunction isChildOfWebComponentTable(element) {\n var hotTableName = 'hot-table';\n var result = false;\n var parentNode = polymerWrap(element);\n\n function isHotTable(testElement) {\n return testElement.nodeType === Node.ELEMENT_NODE && testElement.nodeName === hotTableName.toUpperCase();\n }\n\n while (parentNode !== null) {\n if (isHotTable(parentNode)) {\n result = true;\n break;\n } else if (parentNode.host && parentNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n result = isHotTable(parentNode.host);\n\n if (result) {\n break;\n }\n parentNode = parentNode.host;\n }\n parentNode = parentNode.parentNode;\n }\n\n return result;\n}\n\n/* global Polymer wrap unwrap */\n\n/**\n * Wrap element into polymer/webcomponent container if exists\n *\n * @param element\n * @returns {*}\n */\nfunction polymerWrap(element) {\n return typeof Polymer !== 'undefined' && typeof wrap === 'function' ? wrap(element) : element;\n}\n\n/**\n * Unwrap element from polymer/webcomponent container if exists\n *\n * @param element\n * @returns {*}\n */\nfunction polymerUnwrap(element) {\n return typeof Polymer !== 'undefined' && typeof unwrap === 'function' ? unwrap(element) : element;\n}\n\n/**\n * Counts index of element within its parent\n * WARNING: for performance reasons, assumes there are only element nodes (no text nodes). This is true for Walkotnable\n * Otherwise would need to check for nodeType or use previousElementSibling\n *\n * @see http://jsperf.com/sibling-index/10\n * @param {Element} element\n * @return {Number}\n */\nfunction index(element) {\n var i = 0;\n var elementToCheck = element;\n\n if (elementToCheck.previousSibling) {\n /* eslint-disable no-cond-assign */\n while (elementToCheck = elementToCheck.previousSibling) {\n i += 1;\n }\n }\n\n return i;\n}\n\n/**\n * Check if the provided overlay contains the provided element\n *\n * @param {String} overlay\n * @param {HTMLElement} element\n * @returns {boolean}\n */\nfunction overlayContainsElement(overlayType, element) {\n var overlayElement = document.querySelector('.ht_clone_' + overlayType);\n return overlayElement ? overlayElement.contains(element) : null;\n}\n\nvar classListSupport = !!document.documentElement.classList;\nvar _hasClass = void 0;\nvar _addClass = void 0;\nvar _removeClass = void 0;\n\nfunction filterEmptyClassNames(classNames) {\n var result = [];\n\n if (!classNames || !classNames.length) {\n return result;\n }\n\n var len = 0;\n\n while (classNames[len]) {\n result.push(classNames[len]);\n len += 1;\n }\n\n return result;\n}\n\nif (classListSupport) {\n var isSupportMultipleClassesArg = function () {\n var element = document.createElement('div');\n\n element.classList.add('test', 'test2');\n\n return element.classList.contains('test2');\n }();\n\n _hasClass = function _hasClass(element, className) {\n if (element.classList === void 0 || typeof className !== 'string' || className === '') {\n return false;\n }\n\n return element.classList.contains(className);\n };\n\n _addClass = function _addClass(element, classes) {\n var className = classes;\n\n if (typeof className === 'string') {\n className = className.split(' ');\n }\n\n className = filterEmptyClassNames(className);\n\n if (className.length > 0) {\n if (isSupportMultipleClassesArg) {\n var _element$classList;\n\n (_element$classList = element.classList).add.apply(_element$classList, _toConsumableArray(className));\n } else {\n var len = 0;\n\n while (className && className[len]) {\n element.classList.add(className[len]);\n len += 1;\n }\n }\n }\n };\n\n _removeClass = function _removeClass(element, classes) {\n var className = classes;\n\n if (typeof className === 'string') {\n className = className.split(' ');\n }\n\n className = filterEmptyClassNames(className);\n\n if (className.length > 0) {\n if (isSupportMultipleClassesArg) {\n var _element$classList2;\n\n (_element$classList2 = element.classList).remove.apply(_element$classList2, _toConsumableArray(className));\n } else {\n var len = 0;\n\n while (className && className[len]) {\n element.classList.remove(className[len]);\n len += 1;\n }\n }\n }\n };\n} else {\n var createClassNameRegExp = function createClassNameRegExp(className) {\n return new RegExp('(\\\\s|^)' + className + '(\\\\s|$)');\n };\n\n _hasClass = function _hasClass(element, className) {\n // http://snipplr.com/view/3561/addclass-removeclass-hasclass/\n return element.className !== void 0 && createClassNameRegExp(className).test(element.className);\n };\n\n _addClass = function _addClass(element, classes) {\n var len = 0;\n var _className = element.className;\n var className = classes;\n\n if (typeof className === 'string') {\n className = className.split(' ');\n }\n if (_className === '') {\n _className = className.join(' ');\n } else {\n while (className && className[len]) {\n if (!createClassNameRegExp(className[len]).test(_className)) {\n _className += ' ' + className[len];\n }\n len += 1;\n }\n }\n element.className = _className;\n };\n\n _removeClass = function _removeClass(element, classes) {\n var len = 0;\n var _className = element.className;\n var className = classes;\n\n if (typeof className === 'string') {\n className = className.split(' ');\n }\n while (className && className[len]) {\n // String.prototype.trim is defined in polyfill.js\n _className = _className.replace(createClassNameRegExp(className[len]), ' ').trim();\n len += 1;\n }\n if (element.className !== _className) {\n element.className = _className;\n }\n };\n}\n\n/**\n * Checks if element has class name\n *\n * @param {HTMLElement} element\n * @param {String} className Class name to check\n * @returns {Boolean}\n */\nfunction hasClass(element, className) {\n return _hasClass(element, className);\n}\n\n/**\n * Add class name to an element\n *\n * @param {HTMLElement} element\n * @param {String|Array} className Class name as string or array of strings\n */\nfunction addClass(element, className) {\n return _addClass(element, className);\n}\n\n/**\n * Remove class name from an element\n *\n * @param {HTMLElement} element\n * @param {String|Array} className Class name as string or array of strings\n */\nfunction removeClass(element, className) {\n return _removeClass(element, className);\n}\n\nfunction removeTextNodes(element, parent) {\n if (element.nodeType === 3) {\n parent.removeChild(element); // bye text nodes!\n } else if (['TABLE', 'THEAD', 'TBODY', 'TFOOT', 'TR'].indexOf(element.nodeName) > -1) {\n var childs = element.childNodes;\n for (var i = childs.length - 1; i >= 0; i--) {\n removeTextNodes(childs[i], element);\n }\n }\n}\n\n/**\n * Remove childs function\n * WARNING - this doesn't unload events and data attached by jQuery\n * http://jsperf.com/jquery-html-vs-empty-vs-innerhtml/9\n * http://jsperf.com/jquery-html-vs-empty-vs-innerhtml/11 - no siginificant improvement with Chrome remove() method\n *\n * @param element\n * @returns {void}\n */\n//\nfunction empty(element) {\n var child = void 0;\n /* eslint-disable no-cond-assign */\n while (child = element.lastChild) {\n element.removeChild(child);\n }\n}\n\nvar HTML_CHARACTERS = exports.HTML_CHARACTERS = /(<(.*)>|&(.*);)/;\n\n/**\n * Insert content into element trying avoid innerHTML method.\n * @return {void}\n */\nfunction fastInnerHTML(element, content) {\n if (HTML_CHARACTERS.test(content)) {\n element.innerHTML = content;\n } else {\n fastInnerText(element, content);\n }\n}\n\n/**\n * Insert text content into element\n * @return {void}\n */\n\nvar textContextSupport = !!document.createTextNode('test').textContent;\n\nfunction fastInnerText(element, content) {\n var child = element.firstChild;\n\n if (child && child.nodeType === 3 && child.nextSibling === null) {\n // fast lane - replace existing text node\n\n if (textContextSupport) {\n // http://jsperf.com/replace-text-vs-reuse\n child.textContent = content;\n } else {\n // http://jsperf.com/replace-text-vs-reuse\n child.data = content;\n }\n } else {\n // slow lane - empty element and insert a text node\n empty(element);\n element.appendChild(document.createTextNode(content));\n }\n}\n\n/**\n * Returns true if element is attached to the DOM and visible, false otherwise\n * @param elem\n * @returns {boolean}\n */\nfunction isVisible(elem) {\n var next = elem;\n\n while (polymerUnwrap(next) !== document.documentElement) {\n // until <html> reached\n if (next === null) {\n // parent detached from DOM\n return false;\n } else if (next.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n if (next.host) {\n // this is Web Components Shadow DOM\n // see: http://w3c.github.io/webcomponents/spec/shadow/#encapsulation\n // according to spec, should be if (next.ownerDocument !== window.document), but that doesn't work yet\n if (next.host.impl) {\n // Chrome 33.0.1723.0 canary (2013-11-29) Web Platform features disabled\n return isVisible(next.host.impl);\n } else if (next.host) {\n // Chrome 33.0.1723.0 canary (2013-11-29) Web Platform features enabled\n return isVisible(next.host);\n }\n throw new Error('Lost in Web Components world');\n } else {\n return false; // this is a node detached from document in IE8\n }\n } else if (next.style.display === 'none') {\n return false;\n }\n next = next.parentNode;\n }\n\n return true;\n}\n\n/**\n * Returns elements top and left offset relative to the document. Function is not compatible with jQuery offset.\n *\n * @param {HTMLElement} elem\n * @return {Object} Returns object with `top` and `left` props\n */\nfunction offset(elem) {\n var docElem = document.documentElement;\n var elementToCheck = elem;\n var offsetLeft = void 0;\n var offsetTop = void 0;\n var lastElem = void 0;\n var box = void 0;\n\n if ((0, _feature.hasCaptionProblem)() && elementToCheck.firstChild && elementToCheck.firstChild.nodeName === 'CAPTION') {\n // fixes problem with Firefox ignoring <caption> in TABLE offset (see also export outerHeight)\n // http://jsperf.com/offset-vs-getboundingclientrect/8\n box = elementToCheck.getBoundingClientRect();\n\n return {\n top: box.top + (window.pageYOffset || docElem.scrollTop) - (docElem.clientTop || 0),\n left: box.left + (window.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0)\n };\n }\n offsetLeft = elementToCheck.offsetLeft;\n offsetTop = elementToCheck.offsetTop;\n lastElem = elementToCheck;\n\n /* eslint-disable no-cond-assign */\n while (elementToCheck = elementToCheck.offsetParent) {\n // from my observation, document.body always has scrollLeft/scrollTop == 0\n if (elementToCheck === document.body) {\n break;\n }\n offsetLeft += elementToCheck.offsetLeft;\n offsetTop += elementToCheck.offsetTop;\n lastElem = elementToCheck;\n }\n\n // slow - http://jsperf.com/offset-vs-getboundingclientrect/6\n if (lastElem && lastElem.style.position === 'fixed') {\n // if(lastElem !== document.body) { //faster but does gives false positive in Firefox\n offsetLeft += window.pageXOffset || docElem.scrollLeft;\n offsetTop += window.pageYOffset || docElem.scrollTop;\n }\n\n return {\n left: offsetLeft,\n top: offsetTop\n };\n}\n\n/**\n * Returns the document's scrollTop property.\n *\n * @returns {Number}\n */\nfunction getWindowScrollTop() {\n var res = window.scrollY;\n\n if (res === void 0) {\n // IE8-11\n res = document.documentElement.scrollTop;\n }\n\n return res;\n}\n\n/**\n * Returns the document's scrollLeft property.\n *\n * @returns {Number}\n */\nfunction getWindowScrollLeft() {\n var res = window.scrollX;\n\n if (res === void 0) {\n // IE8-11\n res = document.documentElement.scrollLeft;\n }\n\n return res;\n}\n\n/**\n * Returns the provided element's scrollTop property.\n *\n * @param element\n * @returns {Number}\n */\nfunction getScrollTop(element) {\n if (element === window) {\n return getWindowScrollTop();\n }\n return element.scrollTop;\n}\n\n/**\n * Returns the provided element's scrollLeft property.\n *\n * @param element\n * @returns {Number}\n */\nfunction getScrollLeft(element) {\n if (element === window) {\n return getWindowScrollLeft();\n }\n return element.scrollLeft;\n}\n\n/**\n * Returns a DOM element responsible for scrolling of the provided element.\n *\n * @param {HTMLElement} element\n * @returns {HTMLElement} Element's scrollable parent\n */\nfunction getScrollableElement(element) {\n var props = ['auto', 'scroll'];\n var el = element.parentNode;\n var overflow = void 0;\n var overflowX = void 0;\n var overflowY = void 0;\n var computedStyle = '';\n var computedOverflow = '';\n var computedOverflowY = '';\n var computedOverflowX = '';\n\n while (el && el.style && document.body !== el) {\n overflow = el.style.overflow;\n overflowX = el.style.overflowX;\n overflowY = el.style.overflowY;\n\n if (overflow === 'scroll' || overflowX === 'scroll' || overflowY === 'scroll') {\n return el;\n } else if (window.getComputedStyle) {\n computedStyle = window.getComputedStyle(el);\n computedOverflow = computedStyle.getPropertyValue('overflow');\n computedOverflowY = computedStyle.getPropertyValue('overflow-y');\n computedOverflowX = computedStyle.getPropertyValue('overflow-x');\n\n if (computedOverflow === 'scroll' || computedOverflowX === 'scroll' || computedOverflowY === 'scroll') {\n return el;\n }\n }\n\n // The '+ 1' after the scrollHeight/scrollWidth is to prevent problems with zoomed out Chrome.\n if (el.clientHeight <= el.scrollHeight + 1 && (props.indexOf(overflowY) !== -1 || props.indexOf(overflow) !== -1 || props.indexOf(computedOverflow) !== -1 || props.indexOf(computedOverflowY) !== -1)) {\n return el;\n }\n if (el.clientWidth <= el.scrollWidth + 1 && (props.indexOf(overflowX) !== -1 || props.indexOf(overflow) !== -1 || props.indexOf(computedOverflow) !== -1 || props.indexOf(computedOverflowX) !== -1)) {\n return el;\n }\n el = el.parentNode;\n }\n\n return window;\n}\n\n/**\n * Returns a DOM element responsible for trimming the provided element.\n *\n * @param {HTMLElement} base Base element\n * @returns {HTMLElement} Base element's trimming parent\n */\nfunction getTrimmingContainer(base) {\n var el = base.parentNode;\n\n while (el && el.style && document.body !== el) {\n if (el.style.overflow !== 'visible' && el.style.overflow !== '') {\n return el;\n } else if (window.getComputedStyle) {\n var computedStyle = window.getComputedStyle(el);\n\n if (computedStyle.getPropertyValue('overflow') !== 'visible' && computedStyle.getPropertyValue('overflow') !== '') {\n return el;\n }\n }\n\n el = el.parentNode;\n }\n\n return window;\n}\n\n/**\n * Returns a style property for the provided element. (Be it an inline or external style).\n *\n * @param {HTMLElement} element\n * @param {String} prop Wanted property\n * @returns {String|undefined} Element's style property\n */\nfunction getStyle(element, prop) {\n /* eslint-disable */\n if (!element) {\n return;\n } else if (element === window) {\n if (prop === 'width') {\n return window.innerWidth + 'px';\n } else if (prop === 'height') {\n return window.innerHeight + 'px';\n }\n\n return;\n }\n\n var styleProp = element.style[prop],\n computedStyle;\n\n if (styleProp !== '' && styleProp !== void 0) {\n return styleProp;\n } else {\n computedStyle = getComputedStyle(element);\n\n if (computedStyle[prop] !== '' && computedStyle[prop] !== void 0) {\n return computedStyle[prop];\n }\n }\n}\n\n/**\n * Returns a computed style object for the provided element. (Needed if style is declared in external stylesheet).\n *\n * @param element\n * @returns {IEElementStyle|CssStyle} Elements computed style object\n */\nfunction getComputedStyle(element) {\n return element.currentStyle || document.defaultView.getComputedStyle(element);\n}\n\n/**\n * Returns the element's outer width.\n *\n * @param element\n * @returns {number} Element's outer width\n */\nfunction outerWidth(element) {\n return element.offsetWidth;\n}\n\n/**\n * Returns the element's outer height\n *\n * @param elem\n * @returns {number} Element's outer height\n */\nfunction outerHeight(elem) {\n if ((0, _feature.hasCaptionProblem)() && elem.firstChild && elem.firstChild.nodeName === 'CAPTION') {\n // fixes problem with Firefox ignoring <caption> in TABLE.offsetHeight\n // jQuery (1.10.1) still has this unsolved\n // may be better to just switch to getBoundingClientRect\n // http://bililite.com/blog/2009/03/27/finding-the-size-of-a-table/\n // http://lists.w3.org/Archives/Public/www-style/2009Oct/0089.html\n // http://bugs.jquery.com/ticket/2196\n // http://lists.w3.org/Archives/Public/www-style/2009Oct/0140.html#start140\n return elem.offsetHeight + elem.firstChild.offsetHeight;\n }\n\n return elem.offsetHeight;\n}\n\n/**\n * Returns the element's inner height.\n *\n * @param element\n * @returns {number} Element's inner height\n */\nfunction innerHeight(element) {\n return element.clientHeight || element.innerHeight;\n}\n\n/**\n * Returns the element's inner width.\n *\n * @param element\n * @returns {number} Element's inner width\n */\nfunction innerWidth(element) {\n return element.clientWidth || element.innerWidth;\n}\n\nfunction addEvent(element, event, callback) {\n if (window.addEventListener) {\n element.addEventListener(event, callback, false);\n } else {\n element.attachEvent('on' + event, callback);\n }\n}\n\nfunction removeEvent(element, event, callback) {\n if (window.removeEventListener) {\n element.removeEventListener(event, callback, false);\n } else {\n element.detachEvent('on' + event, callback);\n }\n}\n\n/**\n * Returns caret position in text input\n *\n * @author http://stackoverflow.com/questions/263743/how-to-get-caret-position-in-textarea\n * @return {Number}\n */\nfunction getCaretPosition(el) {\n if (el.selectionStart) {\n return el.selectionStart;\n } else if (document.selection) {\n // IE8\n el.focus();\n\n var r = document.selection.createRange();\n\n if (r == null) {\n return 0;\n }\n var re = el.createTextRange();\n var rc = re.duplicate();\n\n re.moveToBookmark(r.getBookmark());\n rc.setEndPoint('EndToStart', re);\n\n return rc.text.length;\n }\n\n return 0;\n}\n\n/**\n * Returns end of the selection in text input\n *\n * @return {Number}\n */\nfunction getSelectionEndPosition(el) {\n if (el.selectionEnd) {\n return el.selectionEnd;\n } else if (document.selection) {\n // IE8\n var r = document.selection.createRange();\n\n if (r == null) {\n return 0;\n }\n var re = el.createTextRange();\n\n return re.text.indexOf(r.text) + r.text.length;\n }\n\n return 0;\n}\n\n/**\n * Returns text under selection.\n *\n * @returns {String}\n */\nfunction getSelectionText() {\n var text = '';\n\n if (window.getSelection) {\n text = window.getSelection().toString();\n } else if (document.selection && document.selection.type !== 'Control') {\n text = document.selection.createRange().text;\n }\n\n return text;\n}\n\n/**\n * Sets caret position in text input.\n *\n * @author http://blog.vishalon.net/index.php/javascript-getting-and-setting-caret-position-in-textarea/\n * @param {Element} element\n * @param {Number} pos\n * @param {Number} endPos\n */\nfunction setCaretPosition(element, pos, endPos) {\n if (endPos === void 0) {\n endPos = pos;\n }\n if (element.setSelectionRange) {\n element.focus();\n\n try {\n element.setSelectionRange(pos, endPos);\n } catch (err) {\n var elementParent = element.parentNode;\n var parentDisplayValue = elementParent.style.display;\n elementParent.style.display = 'block';\n element.setSelectionRange(pos, endPos);\n elementParent.style.display = parentDisplayValue;\n }\n } else if (element.createTextRange) {\n // IE8\n var range = element.createTextRange();\n range.collapse(true);\n range.moveEnd('character', endPos);\n range.moveStart('character', pos);\n range.select();\n }\n}\n\nvar cachedScrollbarWidth;\n\n// http://stackoverflow.com/questions/986937/how-can-i-get-the-browsers-scrollbar-sizes\nfunction walkontableCalculateScrollbarWidth() {\n var inner = document.createElement('div');\n inner.style.height = '200px';\n inner.style.width = '100%';\n\n var outer = document.createElement('div');\n outer.style.boxSizing = 'content-box';\n outer.style.height = '150px';\n outer.style.left = '0px';\n outer.style.overflow = 'hidden';\n outer.style.position = 'absolute';\n outer.style.top = '0px';\n outer.style.width = '200px';\n outer.style.visibility = 'hidden';\n outer.appendChild(inner);\n\n (document.body || document.documentElement).appendChild(outer);\n var w1 = inner.offsetWidth;\n outer.style.overflow = 'scroll';\n var w2 = inner.offsetWidth;\n if (w1 == w2) {\n w2 = outer.clientWidth;\n }\n\n (document.body || document.documentElement).removeChild(outer);\n\n return w1 - w2;\n}\n\n/**\n * Returns the computed width of the native browser scroll bar.\n *\n * @return {Number} width\n */\nfunction getScrollbarWidth() {\n if (cachedScrollbarWidth === void 0) {\n cachedScrollbarWidth = walkontableCalculateScrollbarWidth();\n }\n\n return cachedScrollbarWidth;\n}\n\n/**\n * Checks if the provided element has a vertical scrollbar.\n *\n * @param {HTMLElement} element\n * @returns {Boolean}\n */\nfunction hasVerticalScrollbar(element) {\n return element.offsetWidth !== element.clientWidth;\n}\n\n/**\n * Checks if the provided element has a vertical scrollbar.\n *\n * @param {HTMLElement} element\n * @returns {Boolean}\n */\nfunction hasHorizontalScrollbar(element) {\n return element.offsetHeight !== element.clientHeight;\n}\n\n/**\n * Sets overlay position depending on it's type and used browser\n */\nfunction setOverlayPosition(overlayElem, left, top) {\n if ((0, _browser.isIE8)() || (0, _browser.isIE9)()) {\n overlayElem.style.top = top;\n overlayElem.style.left = left;\n } else if ((0, _browser.isSafari)()) {\n overlayElem.style['-webkit-transform'] = 'translate3d(' + left + ',' + top + ',0)';\n } else {\n overlayElem.style.transform = 'translate3d(' + left + ',' + top + ',0)';\n }\n}\n\nfunction getCssTransform(element) {\n var transform = void 0;\n\n if (element.style.transform && (transform = element.style.transform) !== '') {\n return ['transform', transform];\n } else if (element.style['-webkit-transform'] && (transform = element.style['-webkit-transform']) !== '') {\n\n return ['-webkit-transform', transform];\n }\n\n return -1;\n}\n\nfunction resetCssTransform(element) {\n if (element.style.transform && element.style.transform !== '') {\n element.style.transform = '';\n } else if (element.style['-webkit-transform'] && element.style['-webkit-transform'] !== '') {\n element.style['-webkit-transform'] = '';\n }\n}\n\n/**\n * Determines if the given DOM element is an input field.\n * Notice: By 'input' we mean input, textarea and select nodes\n *\n * @param {HTMLElement} element - DOM element\n * @returns {Boolean}\n */\nfunction isInput(element) {\n var inputs = ['INPUT', 'SELECT', 'TEXTAREA'];\n\n return element && (inputs.indexOf(element.nodeName) > -1 || element.contentEditable === 'true');\n}\n\n/**\n * Determines if the given DOM element is an input field placed OUTSIDE of HOT.\n * Notice: By 'input' we mean input, textarea and select nodes\n *\n * @param {HTMLElement} element - DOM element\n * @returns {Boolean}\n */\nfunction isOutsideInput(element) {\n return isInput(element) && element.className.indexOf('handsontableInput') == -1 && element.className.indexOf('copyPaste') == -1;\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.duckSchema = duckSchema;\nexports.inherit = inherit;\nexports.extend = extend;\nexports.deepExtend = deepExtend;\nexports.deepClone = deepClone;\nexports.clone = clone;\nexports.mixin = mixin;\nexports.isObjectEqual = isObjectEqual;\nexports.isObject = isObject;\nexports.defineGetter = defineGetter;\nexports.objectEach = objectEach;\nexports.getProperty = getProperty;\nexports.deepObjectSize = deepObjectSize;\nexports.createObjectPropListener = createObjectPropListener;\nexports.hasOwnProperty = hasOwnProperty;\n\nvar _array = __webpack_require__(2);\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Generate schema for passed object.\n *\n * @param {Array|Object} object\n * @returns {Array|Object}\n */\nfunction duckSchema(object) {\n var schema = void 0;\n\n if (Array.isArray(object)) {\n schema = [];\n } else {\n schema = {};\n\n objectEach(object, function (value, key) {\n if (key === '__children') {\n return;\n }\n\n if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && !Array.isArray(value)) {\n schema[key] = duckSchema(value);\n } else if (Array.isArray(value)) {\n if (value.length && _typeof(value[0]) === 'object' && !Array.isArray(value[0])) {\n schema[key] = [duckSchema(value[0])];\n } else {\n schema[key] = [];\n }\n } else {\n schema[key] = null;\n }\n });\n }\n\n return schema;\n}\n\n/**\n * Inherit without without calling parent constructor, and setting `Child.prototype.constructor` to `Child` instead of `Parent`.\n * Creates temporary dummy function to call it as constructor.\n * Described in ticket: https://github.com/handsontable/handsontable/pull/516\n *\n * @param {Object} Child child class\n * @param {Object} Parent parent class\n * @return {Object} extended Child\n */\nfunction inherit(Child, Parent) {\n Parent.prototype.constructor = Parent;\n Child.prototype = new Parent();\n Child.prototype.constructor = Child;\n\n return Child;\n}\n\n/**\n * Perform shallow extend of a target object with extension's own properties.\n *\n * @param {Object} target An object that will receive the new properties.\n * @param {Object} extension An object containing additional properties to merge into the target.\n */\nfunction extend(target, extension) {\n objectEach(extension, function (value, key) {\n target[key] = value;\n });\n\n return target;\n}\n\n/**\n * Perform deep extend of a target object with extension's own properties.\n *\n * @param {Object} target An object that will receive the new properties.\n * @param {Object} extension An object containing additional properties to merge into the target.\n */\nfunction deepExtend(target, extension) {\n objectEach(extension, function (value, key) {\n if (extension[key] && _typeof(extension[key]) === 'object') {\n if (!target[key]) {\n if (Array.isArray(extension[key])) {\n target[key] = [];\n } else if (Object.prototype.toString.call(extension[key]) === '[object Date]') {\n target[key] = extension[key];\n } else {\n target[key] = {};\n }\n }\n deepExtend(target[key], extension[key]);\n } else {\n target[key] = extension[key];\n }\n });\n}\n\n/**\n * Perform deep clone of an object.\n * WARNING! Only clones JSON properties. Will cause error when `obj` contains a function, Date, etc.\n *\n * @param {Object} obj An object that will be cloned\n * @return {Object}\n */\nfunction deepClone(obj) {\n if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object') {\n return JSON.parse(JSON.stringify(obj));\n }\n\n return obj;\n}\n\n/**\n * Shallow clone object.\n *\n * @param {Object} object\n * @returns {Object}\n */\nfunction clone(object) {\n var result = {};\n\n objectEach(object, function (value, key) {\n result[key] = value;\n });\n\n return result;\n}\n\n/**\n * Extend the Base object (usually prototype) of the functionality the `mixins` objects.\n *\n * @param {Object} Base Base object which will be extended.\n * @param {Object} mixins The object of the functionality will be \"copied\".\n * @returns {Object}\n */\nfunction mixin(Base) {\n if (!Base.MIXINS) {\n Base.MIXINS = [];\n }\n\n for (var _len = arguments.length, mixins = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n mixins[_key - 1] = arguments[_key];\n }\n\n (0, _array.arrayEach)(mixins, function (mixinItem) {\n Base.MIXINS.push(mixinItem.MIXIN_NAME);\n\n objectEach(mixinItem, function (value, key) {\n if (Base.prototype[key] !== void 0) {\n throw new Error('Mixin conflict. Property \\'' + key + '\\' already exist and cannot be overwritten.');\n }\n if (typeof value === 'function') {\n Base.prototype[key] = value;\n } else {\n var getter = function _getter(property, initialValue) {\n var propertyName = '_' + property;\n\n var initValue = function initValue(newValue) {\n var result = newValue;\n\n if (Array.isArray(result) || isObject(result)) {\n result = deepClone(result);\n }\n\n return result;\n };\n\n return function () {\n if (this[propertyName] === void 0) {\n this[propertyName] = initValue(initialValue);\n }\n\n return this[propertyName];\n };\n };\n var setter = function _setter(property) {\n var propertyName = '_' + property;\n\n return function (newValue) {\n this[propertyName] = newValue;\n };\n };\n Object.defineProperty(Base.prototype, key, {\n get: getter(key, value),\n set: setter(key),\n configurable: true\n });\n }\n });\n });\n\n return Base;\n}\n\n/**\n * Checks if two objects or arrays are (deep) equal\n *\n * @param {Object|Array} object1\n * @param {Object|Array} object2\n * @returns {Boolean}\n */\nfunction isObjectEqual(object1, object2) {\n return JSON.stringify(object1) === JSON.stringify(object2);\n}\n\n/**\n * Determines whether given object is a plain Object.\n * Note: String and Array are not plain Objects\n * @param {*} obj\n * @returns {boolean}\n */\nfunction isObject(obj) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n}\n\nfunction defineGetter(object, property, value, options) {\n options.value = value;\n options.writable = options.writable !== false;\n options.enumerable = options.enumerable !== false;\n options.configurable = options.configurable !== false;\n\n Object.defineProperty(object, property, options);\n}\n\n/**\n * A specialized version of `.forEach` for objects.\n *\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction objectEach(object, iteratee) {\n // eslint-disable-next-line no-restricted-syntax\n for (var key in object) {\n if (!object.hasOwnProperty || object.hasOwnProperty && Object.prototype.hasOwnProperty.call(object, key)) {\n if (iteratee(object[key], key, object) === false) {\n break;\n }\n }\n }\n\n return object;\n}\n\n/**\n * Get object property by its name. Access to sub properties can be achieved by dot notation (e.q. `'foo.bar.baz'`).\n *\n * @param {Object} object Object which value will be exported.\n * @param {String} name Object property name.\n * @returns {*}\n */\nfunction getProperty(object, name) {\n var names = name.split('.');\n var result = object;\n\n objectEach(names, function (nameItem) {\n result = result[nameItem];\n\n if (result === void 0) {\n result = void 0;\n\n return false;\n }\n });\n\n return result;\n}\n\n/**\n * Return object length (recursively).\n *\n * @param {*} object Object for which we want get length.\n * @returns {Number}\n */\nfunction deepObjectSize(object) {\n if (!isObject(object)) {\n return 0;\n }\n var recursObjLen = function recursObjLen(obj) {\n var result = 0;\n\n if (isObject(obj)) {\n objectEach(obj, function (key) {\n result += recursObjLen(key);\n });\n } else {\n result += 1;\n }\n\n return result;\n };\n\n return recursObjLen(object);\n}\n\n/**\n * Create object with property where its value change will be observed.\n *\n * @param {*} [defaultValue=undefined] Default value.\n * @param {String} [propertyToListen='value'] Property to listen.\n * @returns {Object}\n */\nfunction createObjectPropListener(defaultValue) {\n var _holder;\n\n var propertyToListen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'value';\n\n var privateProperty = '_' + propertyToListen;\n var holder = (_holder = {\n _touched: false\n }, _defineProperty(_holder, privateProperty, defaultValue), _defineProperty(_holder, 'isTouched', function isTouched() {\n return this._touched;\n }), _holder);\n\n Object.defineProperty(holder, propertyToListen, {\n get: function get() {\n return this[privateProperty];\n },\n set: function set(value) {\n this._touched = true;\n this[privateProperty] = value;\n },\n\n enumerable: true,\n configurable: true\n });\n\n return holder;\n}\n\n/**\n * Check if at specified `key` there is any value for `object`.\n *\n * @param {Object} object Object to search value at specyfic key.\n * @param {String} key String key to check.\n */\nfunction hasOwnProperty(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.to2dArray = to2dArray;\nexports.extendArray = extendArray;\nexports.pivot = pivot;\nexports.arrayReduce = arrayReduce;\nexports.arrayFilter = arrayFilter;\nexports.arrayMap = arrayMap;\nexports.arrayEach = arrayEach;\nexports.arraySum = arraySum;\nexports.arrayMax = arrayMax;\nexports.arrayMin = arrayMin;\nexports.arrayAvg = arrayAvg;\nexports.arrayFlatten = arrayFlatten;\nexports.arrayUnique = arrayUnique;\nfunction to2dArray(arr) {\n var ilen = arr.length;\n var i = 0;\n\n while (i < ilen) {\n arr[i] = [arr[i]];\n i += 1;\n }\n}\n\nfunction extendArray(arr, extension) {\n var ilen = extension.length;\n var i = 0;\n\n while (i < ilen) {\n arr.push(extension[i]);\n i += 1;\n }\n}\n\nfunction pivot(arr) {\n var pivotedArr = [];\n\n if (!arr || arr.length === 0 || !arr[0] || arr[0].length === 0) {\n return pivotedArr;\n }\n\n var rowCount = arr.length;\n var colCount = arr[0].length;\n\n for (var i = 0; i < rowCount; i++) {\n for (var j = 0; j < colCount; j++) {\n if (!pivotedArr[j]) {\n pivotedArr[j] = [];\n }\n\n pivotedArr[j][i] = arr[i][j];\n }\n }\n\n return pivotedArr;\n}\n\n/**\n * A specialized version of `.reduce` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * {@link https://github.com/lodash/lodash/blob/master/lodash.js}\n *\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {Boolean} [initFromArray] Specify using the first element of `array` as the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initFromArray) {\n var index = -1;\n var iterable = array;\n var result = accumulator;\n\n if (!Array.isArray(array)) {\n iterable = Array.from(array);\n }\n var length = iterable.length;\n\n if (initFromArray && length) {\n index += 1;\n result = iterable[index];\n }\n\n index += 1;\n\n while (index < length) {\n result = iteratee(result, iterable[index], index, iterable);\n index += 1;\n }\n\n return result;\n}\n\n/**\n * A specialized version of `.filter` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * {@link https://github.com/lodash/lodash/blob/master/lodash.js}\n *\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = 0;\n var iterable = array;\n\n if (!Array.isArray(array)) {\n iterable = Array.from(array);\n }\n\n var length = iterable.length;\n var result = [];\n var resIndex = -1;\n\n while (index < length) {\n var value = iterable[index];\n\n if (predicate(value, index, iterable)) {\n resIndex += 1;\n result[resIndex] = value;\n }\n\n index += 1;\n }\n\n return result;\n}\n\n/**\n * A specialized version of `.map` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayMap(array, iteratee) {\n var index = 0;\n var iterable = array;\n\n if (!Array.isArray(array)) {\n iterable = Array.from(array);\n }\n\n var length = iterable.length;\n var result = [];\n var resIndex = -1;\n\n while (index < length) {\n var value = iterable[index];\n\n resIndex += 1;\n result[resIndex] = iteratee(value, index, iterable);\n index += 1;\n }\n\n return result;\n}\n\n/**\n * A specialized version of `.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * {@link https://github.com/lodash/lodash/blob/master/lodash.js}\n *\n * @param {Array|*} array The array to iterate over or an any element with implemented iterator protocol.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = 0;\n var iterable = array;\n\n if (!Array.isArray(array)) {\n iterable = Array.from(array);\n }\n\n var length = iterable.length;\n\n while (index < length) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n\n index += 1;\n }\n\n return array;\n}\n\n/**\n * Calculate sum value for each item of the array.\n *\n * @param {Array} array The array to process.\n * @returns {Number} Returns calculated sum value.\n */\nfunction arraySum(array) {\n return arrayReduce(array, function (a, b) {\n return a + b;\n }, 0);\n}\n\n/**\n * Returns the highest value from an array. Can be array of numbers or array of strings.\n * NOTICE: Mixed values is not supported.\n *\n * @param {Array} array The array to process.\n * @returns {Number} Returns the highest value from an array.\n */\nfunction arrayMax(array) {\n return arrayReduce(array, function (a, b) {\n return a > b ? a : b;\n }, Array.isArray(array) ? array[0] : void 0);\n}\n\n/**\n * Returns the lowest value from an array. Can be array of numbers or array of strings.\n * NOTICE: Mixed values is not supported.\n *\n * @param {Array} array The array to process.\n * @returns {Number} Returns the lowest value from an array.\n */\nfunction arrayMin(array) {\n return arrayReduce(array, function (a, b) {\n return a < b ? a : b;\n }, Array.isArray(array) ? array[0] : void 0);\n}\n\n/**\n * Calculate average value for each item of the array.\n *\n * @param {Array} array The array to process.\n * @returns {Number} Returns calculated average value.\n */\nfunction arrayAvg(array) {\n if (!array.length) {\n return 0;\n }\n\n return arraySum(array) / array.length;\n}\n\n/**\n * Flatten multidimensional array.\n *\n * @param {Array} array Array of Arrays\n * @returns {Array}\n */\nfunction arrayFlatten(array) {\n return arrayReduce(array, function (initial, value) {\n return initial.concat(Array.isArray(value) ? arrayFlatten(value) : value);\n }, []);\n}\n\n/**\n * Unique values in the array.\n *\n * @param {Array} array The array to process.\n * @returns {Array}\n */\nfunction arrayUnique(array) {\n var unique = [];\n\n arrayEach(array, function (value) {\n if (unique.indexOf(value) === -1) {\n unique.push(value);\n }\n });\n\n return unique;\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(15);\nvar core = __webpack_require__(37);\nvar hide = __webpack_require__(29);\nvar redefine = __webpack_require__(28);\nvar ctx = __webpack_require__(30);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.Viewport = exports.TableRenderer = exports.Table = exports.Settings = exports.Selection = exports.Scroll = exports.Overlays = exports.Event = exports.Core = exports.default = exports.Border = exports.TopLeftCornerOverlay = exports.TopOverlay = exports.LeftOverlay = exports.DebugOverlay = exports.RowFilter = exports.ColumnFilter = exports.CellRange = exports.CellCoords = exports.ViewportRowsCalculator = exports.ViewportColumnsCalculator = undefined;\n\n__webpack_require__(98);\n\n__webpack_require__(113);\n\n__webpack_require__(114);\n\n__webpack_require__(118);\n\n__webpack_require__(119);\n\n__webpack_require__(121);\n\n__webpack_require__(124);\n\n__webpack_require__(125);\n\n__webpack_require__(126);\n\n__webpack_require__(127);\n\n__webpack_require__(128);\n\n__webpack_require__(129);\n\n__webpack_require__(130);\n\n__webpack_require__(131);\n\n__webpack_require__(132);\n\n__webpack_require__(133);\n\n__webpack_require__(134);\n\n__webpack_require__(135);\n\n__webpack_require__(136);\n\n__webpack_require__(137);\n\n__webpack_require__(138);\n\n__webpack_require__(139);\n\n__webpack_require__(140);\n\n__webpack_require__(141);\n\n__webpack_require__(143);\n\n__webpack_require__(145);\n\n__webpack_require__(146);\n\n__webpack_require__(147);\n\n__webpack_require__(148);\n\n__webpack_require__(149);\n\n__webpack_require__(150);\n\n__webpack_require__(151);\n\n__webpack_require__(152);\n\n__webpack_require__(153);\n\n__webpack_require__(154);\n\n__webpack_require__(155);\n\n__webpack_require__(156);\n\n__webpack_require__(157);\n\n__webpack_require__(88);\n\n__webpack_require__(158);\n\n__webpack_require__(159);\n\n__webpack_require__(161);\n\n__webpack_require__(162);\n\n__webpack_require__(163);\n\n__webpack_require__(164);\n\n__webpack_require__(165);\n\n__webpack_require__(166);\n\n__webpack_require__(167);\n\n__webpack_require__(169);\n\n__webpack_require__(170);\n\n__webpack_require__(171);\n\n__webpack_require__(173);\n\n__webpack_require__(174);\n\n__webpack_require__(175);\n\nvar _viewportColumns = __webpack_require__(176);\n\nvar _viewportColumns2 = _interopRequireDefault(_viewportColumns);\n\nvar _viewportRows = __webpack_require__(177);\n\nvar _viewportRows2 = _interopRequireDefault(_viewportRows);\n\nvar _coords = __webpack_require__(56);\n\nvar _coords2 = _interopRequireDefault(_coords);\n\nvar _range = __webpack_require__(178);\n\nvar _range2 = _interopRequireDefault(_range);\n\nvar _column = __webpack_require__(179);\n\nvar _column2 = _interopRequireDefault(_column);\n\nvar _row = __webpack_require__(180);\n\nvar _row2 = _interopRequireDefault(_row);\n\nvar _debug = __webpack_require__(229);\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nvar _left = __webpack_require__(230);\n\nvar _left2 = _interopRequireDefault(_left);\n\nvar _top = __webpack_require__(231);\n\nvar _top2 = _interopRequireDefault(_top);\n\nvar _topLeftCorner = __webpack_require__(232);\n\nvar _topLeftCorner2 = _interopRequireDefault(_topLeftCorner);\n\nvar _border = __webpack_require__(189);\n\nvar _border2 = _interopRequireDefault(_border);\n\nvar _core = __webpack_require__(181);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _event = __webpack_require__(182);\n\nvar _event2 = _interopRequireDefault(_event);\n\nvar _overlays = __webpack_require__(183);\n\nvar _overlays2 = _interopRequireDefault(_overlays);\n\nvar _scroll = __webpack_require__(184);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _selection = __webpack_require__(233);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _settings = __webpack_require__(185);\n\nvar _settings2 = _interopRequireDefault(_settings);\n\nvar _table = __webpack_require__(186);\n\nvar _table2 = _interopRequireDefault(_table);\n\nvar _tableRenderer = __webpack_require__(187);\n\nvar _tableRenderer2 = _interopRequireDefault(_tableRenderer);\n\nvar _viewport = __webpack_require__(188);\n\nvar _viewport2 = _interopRequireDefault(_viewport);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.ViewportColumnsCalculator = _viewportColumns2.default;\nexports.ViewportRowsCalculator = _viewportRows2.default;\nexports.CellCoords = _coords2.default;\nexports.CellRange = _range2.default;\nexports.ColumnFilter = _column2.default;\nexports.RowFilter = _row2.default;\nexports.DebugOverlay = _debug2.default;\nexports.LeftOverlay = _left2.default;\nexports.TopOverlay = _top2.default;\nexports.TopLeftCornerOverlay = _topLeftCorner2.default;\nexports.Border = _border2.default;\nexports.default = _core2.default;\nexports.Core = _core2.default;\nexports.Event = _event2.default;\nexports.Overlays = _overlays2.default;\nexports.Scroll = _scroll2.default;\nexports.Selection = _selection2.default;\nexports.Settings = _settings2.default;\nexports.Table = _table2.default;\nexports.TableRenderer = _tableRenderer2.default;\nexports.Viewport = _viewport2.default;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nexports.getListenersCounter = getListenersCounter;\n\nvar _element = __webpack_require__(0);\n\nvar _object = __webpack_require__(1);\n\nvar _feature = __webpack_require__(40);\n\nvar _event = __webpack_require__(13);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Counter which tracks unregistered listeners (useful for detecting memory leaks).\n *\n * @type {Number}\n */\nvar listenersCounter = 0;\n\n/**\n * Event DOM manager for internal use in Handsontable.\n *\n * @class EventManager\n * @util\n */\n\nvar EventManager = function () {\n /**\n * @param {Object} [context=null]\n * @private\n */\n function EventManager() {\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n _classCallCheck(this, EventManager);\n\n this.context = context || this;\n\n if (!this.context.eventListeners) {\n this.context.eventListeners = [];\n }\n }\n\n /**\n * Register specified listener (`eventName`) to the element.\n *\n * @param {Element} element Target element.\n * @param {String} eventName Event name.\n * @param {Function} callback Function which will be called after event occur.\n * @returns {Function} Returns function which you can easily call to remove that event\n */\n\n\n _createClass(EventManager, [{\n key: 'addEventListener',\n value: function addEventListener(element, eventName, callback) {\n var _this = this;\n\n var context = this.context;\n\n function callbackProxy(event) {\n callback.call(this, extendEvent(context, event));\n }\n\n this.context.eventListeners.push({\n element: element,\n event: eventName,\n callback: callback,\n callbackProxy: callbackProxy\n });\n\n if (window.addEventListener) {\n element.addEventListener(eventName, callbackProxy, false);\n } else {\n element.attachEvent('on' + eventName, callbackProxy);\n }\n\n listenersCounter += 1;\n\n return function () {\n _this.removeEventListener(element, eventName, callback);\n };\n }\n\n /**\n * Remove the event listener previously registered.\n *\n * @param {Element} element Target element.\n * @param {String} eventName Event name.\n * @param {Function} callback Function to remove from the event target. It must be the same as during registration listener.\n */\n\n }, {\n key: 'removeEventListener',\n value: function removeEventListener(element, eventName, callback) {\n var len = this.context.eventListeners.length;\n var tmpEvent = void 0;\n\n while (len) {\n len -= 1;\n tmpEvent = this.context.eventListeners[len];\n\n if (tmpEvent.event === eventName && tmpEvent.element === element) {\n if (callback && callback !== tmpEvent.callback) {\n /* eslint-disable no-continue */\n continue;\n }\n this.context.eventListeners.splice(len, 1);\n\n if (tmpEvent.element.removeEventListener) {\n tmpEvent.element.removeEventListener(tmpEvent.event, tmpEvent.callbackProxy, false);\n } else {\n tmpEvent.element.detachEvent('on' + tmpEvent.event, tmpEvent.callbackProxy);\n }\n listenersCounter -= 1;\n }\n }\n }\n\n /**\n * Clear all previously registered events.\n *\n * @private\n * @since 0.15.0-beta3\n */\n\n }, {\n key: 'clearEvents',\n value: function clearEvents() {\n if (!this.context) {\n return;\n }\n var len = this.context.eventListeners.length;\n\n while (len) {\n len -= 1;\n var event = this.context.eventListeners[len];\n\n if (event) {\n this.removeEventListener(event.element, event.event, event.callback);\n }\n }\n }\n\n /**\n * Clear all previously registered events.\n */\n\n }, {\n key: 'clear',\n value: function clear() {\n this.clearEvents();\n }\n\n /**\n * Destroy instance of EventManager.\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this.clearEvents();\n this.context = null;\n }\n\n /**\n * Trigger event at the specified target element.\n *\n * @param {Element} element Target element.\n * @param {String} eventName Event name.\n */\n\n }, {\n key: 'fireEvent',\n value: function fireEvent(element, eventName) {\n var options = {\n bubbles: true,\n cancelable: eventName !== 'mousemove',\n view: window,\n detail: 0,\n screenX: 0,\n screenY: 0,\n clientX: 1,\n clientY: 1,\n ctrlKey: false,\n altKey: false,\n shiftKey: false,\n metaKey: false,\n button: 0,\n relatedTarget: undefined\n };\n var event = void 0;\n\n if (document.createEvent) {\n event = document.createEvent('MouseEvents');\n event.initMouseEvent(eventName, options.bubbles, options.cancelable, options.view, options.detail, options.screenX, options.screenY, options.clientX, options.clientY, options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, options.button, options.relatedTarget || document.body.parentNode);\n } else {\n event = document.createEventObject();\n }\n\n if (element.dispatchEvent) {\n element.dispatchEvent(event);\n } else {\n element.fireEvent('on' + eventName, event);\n }\n }\n }]);\n\n return EventManager;\n}();\n\n/**\n * @param {Object} context\n * @param {Event} event\n * @private\n * @returns {*}\n */\n\n\nfunction extendEvent(context, event) {\n var componentName = 'HOT-TABLE';\n var isHotTableSpotted = void 0;\n var fromElement = void 0;\n var realTarget = void 0;\n var target = void 0;\n var len = void 0;\n\n event.isTargetWebComponent = false;\n event.realTarget = event.target;\n\n var nativeStopImmediatePropagation = event.stopImmediatePropagation;\n\n event.stopImmediatePropagation = function () {\n nativeStopImmediatePropagation.apply(this);\n (0, _event.stopImmediatePropagation)(this);\n };\n\n if (!EventManager.isHotTableEnv) {\n return event;\n }\n // eslint-disable-next-line no-param-reassign\n event = (0, _element.polymerWrap)(event);\n len = event.path ? event.path.length : 0;\n\n while (len) {\n len -= 1;\n\n if (event.path[len].nodeName === componentName) {\n isHotTableSpotted = true;\n } else if (isHotTableSpotted && event.path[len].shadowRoot) {\n target = event.path[len];\n\n break;\n }\n if (len === 0 && !target) {\n target = event.path[len];\n }\n }\n if (!target) {\n target = event.target;\n }\n event.isTargetWebComponent = true;\n\n if ((0, _feature.isWebComponentSupportedNatively)()) {\n event.realTarget = event.srcElement || event.toElement;\n } else if ((0, _object.hasOwnProperty)(context, 'hot') || context.isHotTableEnv || context.wtTable) {\n // Polymer doesn't support `event.target` property properly we must emulate it ourselves\n if ((0, _object.hasOwnProperty)(context, 'hot')) {\n // Custom element\n fromElement = context.hot ? context.hot.view.wt.wtTable.TABLE : null;\n } else if (context.isHotTableEnv) {\n // Handsontable.Core\n fromElement = context.view.activeWt.wtTable.TABLE.parentNode.parentNode;\n } else if (context.wtTable) {\n // Walkontable\n fromElement = context.wtTable.TABLE.parentNode.parentNode;\n }\n realTarget = (0, _element.closest)(event.target, [componentName], fromElement);\n\n if (realTarget) {\n event.realTarget = fromElement.querySelector(componentName) || event.target;\n } else {\n event.realTarget = event.target;\n }\n }\n\n Object.defineProperty(event, 'target', {\n get: function get() {\n return (0, _element.polymerWrap)(target);\n },\n\n enumerable: true,\n configurable: true\n });\n\n return event;\n}\n\nexports.default = EventManager;\nfunction getListenersCounter() {\n return listenersCounter;\n}\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.isNumeric = isNumeric;\nexports.rangeEach = rangeEach;\nexports.rangeEachReverse = rangeEachReverse;\nexports.valueAccordingPercent = valueAccordingPercent;\n/**\n * Checks if value of n is a numeric one\n * http://jsperf.com/isnan-vs-isnumeric/4\n * @param n\n * @returns {boolean}\n */\nfunction isNumeric(n) {\n /* eslint-disable */\n var t = typeof n === 'undefined' ? 'undefined' : _typeof(n);\n\n return t == 'number' ? !isNaN(n) && isFinite(n) : t == 'string' ? !n.length ? false : n.length == 1 ? /\\d/.test(n) : /^\\s*[+-]?\\s*(?:(?:\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)|(?:0x[a-f\\d]+))\\s*$/i.test(n) : t == 'object' ? !!n && typeof n.valueOf() == 'number' && !(n instanceof Date) : false;\n}\n\n/**\n * A specialized version of `.forEach` defined by ranges.\n *\n * @param {Number} rangeFrom The number from start iterate.\n * @param {Number|Function} rangeTo The number where finish iterate or function as a iteratee.\n * @param {Function} [iteratee] The function invoked per iteration.\n */\nfunction rangeEach(rangeFrom, rangeTo, iteratee) {\n var index = -1;\n\n if (typeof rangeTo === 'function') {\n iteratee = rangeTo;\n rangeTo = rangeFrom;\n } else {\n index = rangeFrom - 1;\n }\n while (++index <= rangeTo) {\n if (iteratee(index) === false) {\n break;\n }\n }\n}\n\n/**\n * A specialized version of `.forEach` defined by ranges iterable in reverse order.\n *\n * @param {Number} rangeFrom The number from start iterate.\n * @param {Number|Function} rangeTo The number where finish iterate or function as a iteratee.\n * @param {Function} [iteratee] The function invoked per iteration.\n */\nfunction rangeEachReverse(rangeFrom, rangeTo, iteratee) {\n var index = rangeFrom + 1;\n\n if (typeof rangeTo === 'function') {\n iteratee = rangeTo;\n rangeTo = 0;\n }\n while (--index >= rangeTo) {\n if (iteratee(index) === false) {\n break;\n }\n }\n}\n\n/**\n * Calculate value from percent.\n *\n * @param {Number} value Base value from percent will be calculated.\n * @param {String|Number} percent Can be Number or String (eq. `'33%'`).\n * @returns {Number}\n */\nfunction valueAccordingPercent(value, percent) {\n percent = parseInt(percent.toString().replace('%', ''), 10);\n percent = parseInt(value * percent / 100, 10);\n\n return percent;\n}\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n/**\n * Constants for parts of translation.\n */\n\nvar CONTEXT_MENU_ITEMS_NAMESPACE = exports.CONTEXT_MENU_ITEMS_NAMESPACE = 'ContextMenu:items';\nvar CONTEXTMENU_ITEMS_ROW_ABOVE = exports.CONTEXTMENU_ITEMS_ROW_ABOVE = CONTEXT_MENU_ITEMS_NAMESPACE + '.insertRowAbove';\nvar CONTEXTMENU_ITEMS_ROW_BELOW = exports.CONTEXTMENU_ITEMS_ROW_BELOW = CONTEXT_MENU_ITEMS_NAMESPACE + '.insertRowBelow';\nvar CONTEXTMENU_ITEMS_INSERT_LEFT = exports.CONTEXTMENU_ITEMS_INSERT_LEFT = CONTEXT_MENU_ITEMS_NAMESPACE + '.insertColumnOnTheLeft';\nvar CONTEXTMENU_ITEMS_INSERT_RIGHT = exports.CONTEXTMENU_ITEMS_INSERT_RIGHT = CONTEXT_MENU_ITEMS_NAMESPACE + '.insertColumnOnTheRight';\nvar CONTEXTMENU_ITEMS_REMOVE_ROW = exports.CONTEXTMENU_ITEMS_REMOVE_ROW = CONTEXT_MENU_ITEMS_NAMESPACE + '.removeRow';\nvar CONTEXTMENU_ITEMS_REMOVE_COLUMN = exports.CONTEXTMENU_ITEMS_REMOVE_COLUMN = CONTEXT_MENU_ITEMS_NAMESPACE + '.removeColumn';\nvar CONTEXTMENU_ITEMS_UNDO = exports.CONTEXTMENU_ITEMS_UNDO = CONTEXT_MENU_ITEMS_NAMESPACE + '.undo';\nvar CONTEXTMENU_ITEMS_REDO = exports.CONTEXTMENU_ITEMS_REDO = CONTEXT_MENU_ITEMS_NAMESPACE + '.redo';\nvar CONTEXTMENU_ITEMS_READ_ONLY = exports.CONTEXTMENU_ITEMS_READ_ONLY = CONTEXT_MENU_ITEMS_NAMESPACE + '.readOnly';\nvar CONTEXTMENU_ITEMS_CLEAR_COLUMN = exports.CONTEXTMENU_ITEMS_CLEAR_COLUMN = CONTEXT_MENU_ITEMS_NAMESPACE + '.clearColumn';\n\nvar CONTEXTMENU_ITEMS_COPY = exports.CONTEXTMENU_ITEMS_COPY = CONTEXT_MENU_ITEMS_NAMESPACE + '.copy';\nvar CONTEXTMENU_ITEMS_CUT = exports.CONTEXTMENU_ITEMS_CUT = CONTEXT_MENU_ITEMS_NAMESPACE + '.cut';\n\nvar CONTEXTMENU_ITEMS_FREEZE_COLUMN = exports.CONTEXTMENU_ITEMS_FREEZE_COLUMN = CONTEXT_MENU_ITEMS_NAMESPACE + '.freezeColumn';\nvar CONTEXTMENU_ITEMS_UNFREEZE_COLUMN = exports.CONTEXTMENU_ITEMS_UNFREEZE_COLUMN = CONTEXT_MENU_ITEMS_NAMESPACE + '.unfreezeColumn';\n\nvar CONTEXTMENU_ITEMS_MERGE_CELLS = exports.CONTEXTMENU_ITEMS_MERGE_CELLS = CONTEXT_MENU_ITEMS_NAMESPACE + '.mergeCells';\nvar CONTEXTMENU_ITEMS_UNMERGE_CELLS = exports.CONTEXTMENU_ITEMS_UNMERGE_CELLS = CONTEXT_MENU_ITEMS_NAMESPACE + '.unmergeCells';\n\nvar CONTEXTMENU_ITEMS_ADD_COMMENT = exports.CONTEXTMENU_ITEMS_ADD_COMMENT = CONTEXT_MENU_ITEMS_NAMESPACE + '.addComment';\nvar CONTEXTMENU_ITEMS_EDIT_COMMENT = exports.CONTEXTMENU_ITEMS_EDIT_COMMENT = CONTEXT_MENU_ITEMS_NAMESPACE + '.editComment';\nvar CONTEXTMENU_ITEMS_REMOVE_COMMENT = exports.CONTEXTMENU_ITEMS_REMOVE_COMMENT = CONTEXT_MENU_ITEMS_NAMESPACE + '.removeComment';\nvar CONTEXTMENU_ITEMS_READ_ONLY_COMMENT = exports.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT = CONTEXT_MENU_ITEMS_NAMESPACE + '.readOnlyComment';\n\nvar CONTEXTMENU_ITEMS_ALIGNMENT = exports.CONTEXTMENU_ITEMS_ALIGNMENT = CONTEXT_MENU_ITEMS_NAMESPACE + '.align';\nvar CONTEXTMENU_ITEMS_ALIGNMENT_LEFT = exports.CONTEXTMENU_ITEMS_ALIGNMENT_LEFT = CONTEXT_MENU_ITEMS_NAMESPACE + '.align.left';\nvar CONTEXTMENU_ITEMS_ALIGNMENT_CENTER = exports.CONTEXTMENU_ITEMS_ALIGNMENT_CENTER = CONTEXT_MENU_ITEMS_NAMESPACE + '.align.center';\nvar CONTEXTMENU_ITEMS_ALIGNMENT_RIGHT = exports.CONTEXTMENU_ITEMS_ALIGNMENT_RIGHT = CONTEXT_MENU_ITEMS_NAMESPACE + '.align.right';\nvar CONTEXTMENU_ITEMS_ALIGNMENT_JUSTIFY = exports.CONTEXTMENU_ITEMS_ALIGNMENT_JUSTIFY = CONTEXT_MENU_ITEMS_NAMESPACE + '.align.justify';\nvar CONTEXTMENU_ITEMS_ALIGNMENT_TOP = exports.CONTEXTMENU_ITEMS_ALIGNMENT_TOP = CONTEXT_MENU_ITEMS_NAMESPACE + '.align.top';\nvar CONTEXTMENU_ITEMS_ALIGNMENT_MIDDLE = exports.CONTEXTMENU_ITEMS_ALIGNMENT_MIDDLE = CONTEXT_MENU_ITEMS_NAMESPACE + '.align.middle';\nvar CONTEXTMENU_ITEMS_ALIGNMENT_BOTTOM = exports.CONTEXTMENU_ITEMS_ALIGNMENT_BOTTOM = CONTEXT_MENU_ITEMS_NAMESPACE + '.align.bottom';\n\nvar CONTEXTMENU_ITEMS_BORDERS = exports.CONTEXTMENU_ITEMS_BORDERS = CONTEXT_MENU_ITEMS_NAMESPACE + '.borders';\nvar CONTEXTMENU_ITEMS_BORDERS_TOP = exports.CONTEXTMENU_ITEMS_BORDERS_TOP = CONTEXT_MENU_ITEMS_NAMESPACE + '.borders.top';\nvar CONTEXTMENU_ITEMS_BORDERS_RIGHT = exports.CONTEXTMENU_ITEMS_BORDERS_RIGHT = CONTEXT_MENU_ITEMS_NAMESPACE + '.borders.right';\nvar CONTEXTMENU_ITEMS_BORDERS_BOTTOM = exports.CONTEXTMENU_ITEMS_BORDERS_BOTTOM = CONTEXT_MENU_ITEMS_NAMESPACE + '.borders.bottom';\nvar CONTEXTMENU_ITEMS_BORDERS_LEFT = exports.CONTEXTMENU_ITEMS_BORDERS_LEFT = CONTEXT_MENU_ITEMS_NAMESPACE + '.borders.left';\nvar CONTEXTMENU_ITEMS_REMOVE_BORDERS = exports.CONTEXTMENU_ITEMS_REMOVE_BORDERS = CONTEXT_MENU_ITEMS_NAMESPACE + '.borders.remove';\n\nvar CONTEXTMENU_ITEMS_NESTED_ROWS_INSERT_CHILD = exports.CONTEXTMENU_ITEMS_NESTED_ROWS_INSERT_CHILD = CONTEXT_MENU_ITEMS_NAMESPACE + '.nestedHeaders.insertChildRow';\nvar CONTEXTMENU_ITEMS_NESTED_ROWS_DETACH_CHILD = exports.CONTEXTMENU_ITEMS_NESTED_ROWS_DETACH_CHILD = CONTEXT_MENU_ITEMS_NAMESPACE + '.nestedHeaders.detachFromParent';\n\nvar CONTEXTMENU_ITEMS_HIDE_COLUMN = exports.CONTEXTMENU_ITEMS_HIDE_COLUMN = CONTEXT_MENU_ITEMS_NAMESPACE + '.hideColumn';\nvar CONTEXTMENU_ITEMS_SHOW_COLUMN = exports.CONTEXTMENU_ITEMS_SHOW_COLUMN = CONTEXT_MENU_ITEMS_NAMESPACE + '.showColumn';\n\nvar CONTEXTMENU_ITEMS_HIDE_ROW = exports.CONTEXTMENU_ITEMS_HIDE_ROW = CONTEXT_MENU_ITEMS_NAMESPACE + '.hideRow';\nvar CONTEXTMENU_ITEMS_SHOW_ROW = exports.CONTEXTMENU_ITEMS_SHOW_ROW = CONTEXT_MENU_ITEMS_NAMESPACE + '.showRow';\n\nvar FILTERS_NAMESPACE = exports.FILTERS_NAMESPACE = 'Filters:';\nvar FILTERS_CONDITIONS_NAMESPACE = exports.FILTERS_CONDITIONS_NAMESPACE = FILTERS_NAMESPACE + 'conditions';\nvar FILTERS_CONDITIONS_NONE = exports.FILTERS_CONDITIONS_NONE = FILTERS_CONDITIONS_NAMESPACE + '.none';\nvar FILTERS_CONDITIONS_EMPTY = exports.FILTERS_CONDITIONS_EMPTY = FILTERS_CONDITIONS_NAMESPACE + '.isEmpty';\nvar FILTERS_CONDITIONS_NOT_EMPTY = exports.FILTERS_CONDITIONS_NOT_EMPTY = FILTERS_CONDITIONS_NAMESPACE + '.isNotEmpty';\nvar FILTERS_CONDITIONS_EQUAL = exports.FILTERS_CONDITIONS_EQUAL = FILTERS_CONDITIONS_NAMESPACE + '.isEqualTo';\nvar FILTERS_CONDITIONS_NOT_EQUAL = exports.FILTERS_CONDITIONS_NOT_EQUAL = FILTERS_CONDITIONS_NAMESPACE + '.isNotEqualTo';\nvar FILTERS_CONDITIONS_BEGINS_WITH = exports.FILTERS_CONDITIONS_BEGINS_WITH = FILTERS_CONDITIONS_NAMESPACE + '.beginsWith';\nvar FILTERS_CONDITIONS_ENDS_WITH = exports.FILTERS_CONDITIONS_ENDS_WITH = FILTERS_CONDITIONS_NAMESPACE + '.endsWith';\nvar FILTERS_CONDITIONS_CONTAINS = exports.FILTERS_CONDITIONS_CONTAINS = FILTERS_CONDITIONS_NAMESPACE + '.contains';\nvar FILTERS_CONDITIONS_NOT_CONTAIN = exports.FILTERS_CONDITIONS_NOT_CONTAIN = FILTERS_CONDITIONS_NAMESPACE + '.doesNotContain';\nvar FILTERS_CONDITIONS_BY_VALUE = exports.FILTERS_CONDITIONS_BY_VALUE = FILTERS_CONDITIONS_NAMESPACE + '.byValue';\nvar FILTERS_CONDITIONS_GREATER_THAN = exports.FILTERS_CONDITIONS_GREATER_THAN = FILTERS_CONDITIONS_NAMESPACE + '.greaterThan';\nvar FILTERS_CONDITIONS_GREATER_THAN_OR_EQUAL = exports.FILTERS_CONDITIONS_GREATER_THAN_OR_EQUAL = FILTERS_CONDITIONS_NAMESPACE + '.greaterThanOrEqualTo';\nvar FILTERS_CONDITIONS_LESS_THAN = exports.FILTERS_CONDITIONS_LESS_THAN = FILTERS_CONDITIONS_NAMESPACE + '.lessThan';\nvar FILTERS_CONDITIONS_LESS_THAN_OR_EQUAL = exports.FILTERS_CONDITIONS_LESS_THAN_OR_EQUAL = FILTERS_CONDITIONS_NAMESPACE + '.lessThanOrEqualTo';\nvar FILTERS_CONDITIONS_BETWEEN = exports.FILTERS_CONDITIONS_BETWEEN = FILTERS_CONDITIONS_NAMESPACE + '.isBetween';\nvar FILTERS_CONDITIONS_NOT_BETWEEN = exports.FILTERS_CONDITIONS_NOT_BETWEEN = FILTERS_CONDITIONS_NAMESPACE + '.isNotBetween';\nvar FILTERS_CONDITIONS_AFTER = exports.FILTERS_CONDITIONS_AFTER = FILTERS_CONDITIONS_NAMESPACE + '.after';\nvar FILTERS_CONDITIONS_BEFORE = exports.FILTERS_CONDITIONS_BEFORE = FILTERS_CONDITIONS_NAMESPACE + '.before';\nvar FILTERS_CONDITIONS_TODAY = exports.FILTERS_CONDITIONS_TODAY = FILTERS_CONDITIONS_NAMESPACE + '.today';\nvar FILTERS_CONDITIONS_TOMORROW = exports.FILTERS_CONDITIONS_TOMORROW = FILTERS_CONDITIONS_NAMESPACE + '.tomorrow';\nvar FILTERS_CONDITIONS_YESTERDAY = exports.FILTERS_CONDITIONS_YESTERDAY = FILTERS_CONDITIONS_NAMESPACE + '.yesterday';\n\nvar FILTERS_DIVS_FILTER_BY_CONDITION = exports.FILTERS_DIVS_FILTER_BY_CONDITION = FILTERS_NAMESPACE + 'labels.filterByCondition';\nvar FILTERS_DIVS_FILTER_BY_VALUE = exports.FILTERS_DIVS_FILTER_BY_VALUE = FILTERS_NAMESPACE + 'labels.filterByValue';\n\nvar FILTERS_LABELS_CONJUNCTION = exports.FILTERS_LABELS_CONJUNCTION = FILTERS_NAMESPACE + 'labels.conjunction';\nvar FILTERS_LABELS_DISJUNCTION = exports.FILTERS_LABELS_DISJUNCTION = FILTERS_NAMESPACE + 'labels.disjunction';\n\nvar FILTERS_VALUES_BLANK_CELLS = exports.FILTERS_VALUES_BLANK_CELLS = FILTERS_NAMESPACE + 'values.blankCells';\n\nvar FILTERS_BUTTONS_SELECT_ALL = exports.FILTERS_BUTTONS_SELECT_ALL = FILTERS_NAMESPACE + 'buttons.selectAll';\nvar FILTERS_BUTTONS_CLEAR = exports.FILTERS_BUTTONS_CLEAR = FILTERS_NAMESPACE + 'buttons.clear';\nvar FILTERS_BUTTONS_OK = exports.FILTERS_BUTTONS_OK = FILTERS_NAMESPACE + 'buttons.ok';\nvar FILTERS_BUTTONS_CANCEL = exports.FILTERS_BUTTONS_CANCEL = FILTERS_NAMESPACE + 'buttons.cancel';\n\nvar FILTERS_BUTTONS_PLACEHOLDER_SEARCH = exports.FILTERS_BUTTONS_PLACEHOLDER_SEARCH = FILTERS_NAMESPACE + 'buttons.placeholder.search';\nvar FILTERS_BUTTONS_PLACEHOLDER_VALUE = exports.FILTERS_BUTTONS_PLACEHOLDER_VALUE = FILTERS_NAMESPACE + 'buttons.placeholder.value';\nvar FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE = exports.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE = FILTERS_NAMESPACE + 'buttons.placeholder.secondValue';\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.getPluginName = exports.getRegistredPluginNames = exports.getPlugin = exports.registerPlugin = undefined;\n\nvar _pluginHooks = __webpack_require__(16);\n\nvar _pluginHooks2 = _interopRequireDefault(_pluginHooks);\n\nvar _object = __webpack_require__(1);\n\nvar _string = __webpack_require__(33);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar registeredPlugins = new WeakMap();\n\n/**\n * Registers plugin under given name\n *\n * @param {String} pluginName\n * @param {Function} PluginClass\n */\n/**\n * Utility to register plugins and common namespace for keeping reference to all plugins classes\n */\nfunction registerPlugin(pluginName, PluginClass) {\n var correctedPluginName = (0, _string.toUpperCaseFirst)(pluginName);\n\n _pluginHooks2.default.getSingleton().add('construct', function () {\n if (!registeredPlugins.has(this)) {\n registeredPlugins.set(this, {});\n }\n\n var holder = registeredPlugins.get(this);\n\n if (!holder[correctedPluginName]) {\n holder[correctedPluginName] = new PluginClass(this);\n }\n });\n _pluginHooks2.default.getSingleton().add('afterDestroy', function () {\n if (registeredPlugins.has(this)) {\n var pluginsHolder = registeredPlugins.get(this);\n\n (0, _object.objectEach)(pluginsHolder, function (plugin) {\n return plugin.destroy();\n });\n registeredPlugins.delete(this);\n }\n });\n}\n\n/**\n * @param {Object} instance\n * @param {String|Function} pluginName\n * @returns {Function} pluginClass Returns plugin instance if exists or `undefined` if not exists.\n */\nfunction getPlugin(instance, pluginName) {\n if (typeof pluginName !== 'string') {\n throw Error('Only strings can be passed as \"plugin\" parameter');\n }\n var _pluginName = (0, _string.toUpperCaseFirst)(pluginName);\n\n if (!registeredPlugins.has(instance) || !registeredPlugins.get(instance)[_pluginName]) {\n return void 0;\n }\n\n return registeredPlugins.get(instance)[_pluginName];\n}\n\n/**\n * Get all registred plugins names for concrete Handsontable instance.\n *\n * @param {Object} hotInstance\n * @returns {Array}\n */\nfunction getRegistredPluginNames(hotInstance) {\n return registeredPlugins.has(hotInstance) ? Object.keys(registeredPlugins.get(hotInstance)) : [];\n}\n\n/**\n * Get plugin name.\n *\n * @param {Object} hotInstance\n * @param {Object} plugin\n * @returns {String|null}\n */\nfunction getPluginName(hotInstance, plugin) {\n var pluginName = null;\n\n if (registeredPlugins.has(hotInstance)) {\n (0, _object.objectEach)(registeredPlugins.get(hotInstance), function (pluginInstance, name) {\n if (pluginInstance === plugin) {\n pluginName = name;\n }\n });\n }\n\n return pluginName;\n}\n\nexports.registerPlugin = registerPlugin;\nexports.getPlugin = getPlugin;\nexports.getRegistredPluginNames = getRegistredPluginNames;\nexports.getPluginName = getPluginName;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nvar _object = __webpack_require__(1);\n\nvar _array = __webpack_require__(2);\n\nvar _recordTranslator = __webpack_require__(195);\n\nvar _plugins = __webpack_require__(8);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar privatePool = new WeakMap();\nvar initializedPlugins = null;\n\n/**\n * @util\n */\n\nvar BasePlugin = function () {\n /**\n * @param {Object} hotInstance Handsontable instance.\n */\n function BasePlugin(hotInstance) {\n var _this = this;\n\n _classCallCheck(this, BasePlugin);\n\n /**\n * Handsontable instance.\n *\n * @type {Core}\n */\n (0, _object.defineGetter)(this, 'hot', hotInstance, {\n writable: false\n });\n (0, _object.defineGetter)(this, 't', (0, _recordTranslator.getTranslator)(hotInstance), {\n writable: false\n });\n\n privatePool.set(this, { hooks: {} });\n initializedPlugins = null;\n\n this.pluginName = null;\n this.pluginsInitializedCallbacks = [];\n this.isPluginsReady = false;\n this.enabled = false;\n this.initialized = false;\n\n this.hot.addHook('afterPluginsInitialized', function () {\n return _this.onAfterPluginsInitialized();\n });\n this.hot.addHook('afterUpdateSettings', function () {\n return _this.onUpdateSettings();\n });\n this.hot.addHook('beforeInit', function () {\n return _this.init();\n });\n }\n\n _createClass(BasePlugin, [{\n key: 'init',\n value: function init() {\n this.pluginName = (0, _plugins.getPluginName)(this.hot, this);\n\n if (this.isEnabled && this.isEnabled()) {\n this.enablePlugin();\n }\n if (!initializedPlugins) {\n initializedPlugins = (0, _plugins.getRegistredPluginNames)(this.hot);\n }\n if (initializedPlugins.indexOf(this.pluginName) >= 0) {\n initializedPlugins.splice(initializedPlugins.indexOf(this.pluginName), 1);\n }\n if (!initializedPlugins.length) {\n this.hot.runHooks('afterPluginsInitialized');\n }\n this.initialized = true;\n }\n\n /**\n * Enable plugin for this Handsontable instance.\n */\n\n }, {\n key: 'enablePlugin',\n value: function enablePlugin() {\n this.enabled = true;\n }\n\n /**\n * Disable plugin for this Handsontable instance.\n */\n\n }, {\n key: 'disablePlugin',\n value: function disablePlugin() {\n if (this.eventManager) {\n this.eventManager.clear();\n }\n this.clearHooks();\n this.enabled = false;\n }\n\n /**\n * Add listener to plugin hooks system.\n *\n * @param {String} name\n * @param {Function} callback\n */\n\n }, {\n key: 'addHook',\n value: function addHook(name, callback) {\n privatePool.get(this).hooks[name] = privatePool.get(this).hooks[name] || [];\n\n var hooks = privatePool.get(this).hooks[name];\n\n this.hot.addHook(name, callback);\n hooks.push(callback);\n privatePool.get(this).hooks[name] = hooks;\n }\n\n /**\n * Remove all hooks listeners by hook name.\n *\n * @param {String} name\n */\n\n }, {\n key: 'removeHooks',\n value: function removeHooks(name) {\n var _this2 = this;\n\n (0, _array.arrayEach)(privatePool.get(this).hooks[name] || [], function (callback) {\n _this2.hot.removeHook(name, callback);\n });\n }\n\n /**\n * Clear all hooks.\n */\n\n }, {\n key: 'clearHooks',\n value: function clearHooks() {\n var _this3 = this;\n\n var hooks = privatePool.get(this).hooks;\n\n (0, _object.objectEach)(hooks, function (callbacks, name) {\n return _this3.removeHooks(name);\n });\n hooks.length = 0;\n }\n\n /**\n * Register function which will be immediately called after all plugins initialized.\n *\n * @param {Function} callback\n */\n\n }, {\n key: 'callOnPluginsReady',\n value: function callOnPluginsReady(callback) {\n if (this.isPluginsReady) {\n callback();\n } else {\n this.pluginsInitializedCallbacks.push(callback);\n }\n }\n\n /**\n * On after plugins initialized listener.\n *\n * @private\n */\n\n }, {\n key: 'onAfterPluginsInitialized',\n value: function onAfterPluginsInitialized() {\n (0, _array.arrayEach)(this.pluginsInitializedCallbacks, function (callback) {\n return callback();\n });\n this.pluginsInitializedCallbacks.length = 0;\n this.isPluginsReady = true;\n }\n\n /**\n * On update settings listener.\n *\n * @private\n */\n\n }, {\n key: 'onUpdateSettings',\n value: function onUpdateSettings() {\n if (this.isEnabled) {\n if (this.enabled && !this.isEnabled()) {\n this.disablePlugin();\n }\n if (!this.enabled && this.isEnabled()) {\n this.enablePlugin();\n }\n if (this.enabled && this.isEnabled()) {\n this.updatePlugin();\n }\n }\n }\n\n /**\n * Updates the plugin to use the latest options you have specified.\n *\n * @private\n */\n\n }, {\n key: 'updatePlugin',\n value: function updatePlugin() {}\n\n /**\n * Destroy plugin.\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this4 = this;\n\n if (this.eventManager) {\n this.eventManager.destroy();\n }\n this.clearHooks();\n\n (0, _object.objectEach)(this, function (value, property) {\n if (property !== 'hot' && property !== 't') {\n _this4[property] = null;\n }\n });\n delete this.t;\n delete this.hot;\n }\n }]);\n\n return BasePlugin;\n}();\n\nexports.default = BasePlugin;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _templateObject = _taggedTemplateLiteral(['\\n Your license key of Handsontable Pro has expired.\\u200C\\u200C\\u200C\\u200C \\n Renew your maintenance plan at https://handsontable.com or downgrade to the previous version of the software.\\n '], ['\\n Your license key of Handsontable Pro has expired.\\u200C\\u200C\\u200C\\u200C \\n Renew your maintenance plan at https://handsontable.com or downgrade to the previous version of the software.\\n ']);\n\nexports.stringify = stringify;\nexports.isDefined = isDefined;\nexports.isUndefined = isUndefined;\nexports.isEmpty = isEmpty;\nexports.isRegExp = isRegExp;\nexports._injectProductInfo = _injectProductInfo;\n\nvar _moment = __webpack_require__(57);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _templateLiteralTag = __webpack_require__(42);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\n/**\n * Converts any value to string.\n *\n * @param {*} value\n * @returns {String}\n */\nfunction stringify(value) {\n var result = void 0;\n\n switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n case 'string':\n case 'number':\n result = '' + value;\n break;\n\n case 'object':\n result = value === null ? '' : value.toString();\n break;\n case 'undefined':\n result = '';\n break;\n default:\n result = value.toString();\n break;\n }\n\n return result;\n}\n\n/**\n * Checks if given variable is defined.\n *\n * @param {*} variable Variable to check.\n * @returns {Boolean}\n */\nfunction isDefined(variable) {\n return typeof variable !== 'undefined';\n}\n\n/**\n * Checks if given variable is undefined.\n *\n * @param {*} variable Variable to check.\n * @returns {Boolean}\n */\nfunction isUndefined(variable) {\n return typeof variable === 'undefined';\n}\n\n/**\n * Check if given variable is null, empty string or undefined.\n *\n * @param {*} variable Variable to check.\n * @returns {Boolean}\n */\nfunction isEmpty(variable) {\n return variable === null || variable === '' || isUndefined(variable);\n}\n\n/**\n * Check if given variable is a regular expression.\n *\n * @param {*} variable Variable to check.\n * @returns {Boolean}\n */\nfunction isRegExp(variable) {\n return Object.prototype.toString.call(variable) === '[object RegExp]';\n}\n\n/* eslint-disable */\nvar _m = '\\x6C\\x65\\x6E\\x67\\x74\\x68';\nvar _hd = function _hd(v) {\n return parseInt(v, 16);\n};\nvar _pi = function _pi(v) {\n return parseInt(v, 10);\n};\nvar _ss = function _ss(v, s, l) {\n return v['\\x73\\x75\\x62\\x73\\x74\\x72'](s, l);\n};\nvar _cp = function _cp(v) {\n return v['\\x63\\x6F\\x64\\x65\\x50\\x6F\\x69\\x6E\\x74\\x41\\x74'](0) - 65;\n};\nvar _norm = function _norm(v) {\n return ('' + v).replace(/\\-/g, '');\n};\nvar _extractTime = function _extractTime(v) {\n return _hd(_ss(_norm(v), _hd('12'), _cp('\\x46'))) / (_hd(_ss(_norm(v), _cp('\\x42'), ~~![][_m])) || 9);\n};\nvar _ignored = function _ignored() {\n return typeof location !== 'undefined' && /^([a-z0-9\\-]+\\.)?\\x68\\x61\\x6E\\x64\\x73\\x6F\\x6E\\x74\\x61\\x62\\x6C\\x65\\x2E\\x63\\x6F\\x6D$/i.test(location.host);\n};\nvar _notified = false;\n\nfunction _injectProductInfo(key, element) {\n key = _norm(key || '');\n\n var warningMessage = '';\n var showDomMessage = true;\n var schemaValidity = _checkKeySchema(key);\n var ignored = _ignored();\n var trial = isEmpty(key) || key === 'trial';\n\n if (trial || schemaValidity) {\n if (schemaValidity) {\n var releaseTime = Math.floor((0, _moment2.default)('12/09/2018', 'DD/MM/YYYY').toDate().getTime() / 8.64e7);\n var keyGenTime = _extractTime(key);\n\n if (keyGenTime > 45000 || keyGenTime !== parseInt(keyGenTime, 10)) {\n warningMessage = 'The license key provided to Handsontable Pro is invalid. Make sure you pass it correctly.';\n }\n\n if (!warningMessage) {\n if (releaseTime > keyGenTime + 1) {\n warningMessage = (0, _templateLiteralTag.toSingleLine)(_templateObject);\n }\n showDomMessage = releaseTime > keyGenTime + 15;\n }\n } else {\n warningMessage = 'Evaluation version of Handsontable Pro. Not licensed for use in a production environment.';\n }\n } else {\n warningMessage = 'The license key provided to Handsontable Pro is invalid. Make sure you pass it correctly.';\n }\n if (ignored) {\n warningMessage = false;\n showDomMessage = false;\n }\n\n if (warningMessage && !_notified) {\n console[trial ? 'info' : 'warn'](warningMessage);\n _notified = true;\n }\n if (showDomMessage && element.parentNode) {\n var message = document.createElement('div');\n\n message.id = 'hot-display-license-info';\n message.appendChild(document.createTextNode('Evaluation version of Handsontable Pro.'));\n message.appendChild(document.createElement('br'));\n message.appendChild(document.createTextNode('Not licensed for production use.'));\n\n element.parentNode.insertBefore(message, element.nextSibling);\n }\n}\n\nfunction _checkKeySchema(v) {\n var z = [][_m];\n var p = z;\n\n if (v[_m] !== _cp('\\x5A')) {\n return false;\n }\n\n for (var c = '', i = '\\x42\\x3C\\x48\\x34\\x50\\x2B'.split(''), j = _cp(i.shift()); j; j = _cp(i.shift() || 'A')) {\n --j < ''[_m] ? p = p | (_pi('' + _pi(_hd(c) + (_hd(_ss(v, Math.abs(j), 2)) + []).padStart(2, '0'))) % 97 || 2) >> 1 : c = _ss(v, j, !j ? 6 : i[_m] === 1 ? 9 : 8);\n }\n\n return p === z;\n}\n/* eslint-enable */\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(79)('wks');\nvar uid = __webpack_require__(50);\nvar Symbol = __webpack_require__(15).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.stopImmediatePropagation = stopImmediatePropagation;\nexports.isImmediatePropagationStopped = isImmediatePropagationStopped;\nexports.stopPropagation = stopPropagation;\nexports.pageX = pageX;\nexports.pageY = pageY;\nexports.isRightClick = isRightClick;\nexports.isLeftClick = isLeftClick;\n\nvar _element = __webpack_require__(0);\n\n/**\n * Prevent other listeners of the same event from being called.\n *\n * @param {Event} event\n */\nfunction stopImmediatePropagation(event) {\n event.isImmediatePropagationEnabled = false;\n event.cancelBubble = true;\n}\n\n/**\n * Check if event was stopped by `stopImmediatePropagation`.\n *\n * @param event {Event}\n * @returns {Boolean}\n */\nfunction isImmediatePropagationStopped(event) {\n return event.isImmediatePropagationEnabled === false;\n}\n\n/**\n * Prevent further propagation of the current event (prevent bubbling).\n *\n * @param event {Event}\n */\nfunction stopPropagation(event) {\n // ie8\n // http://msdn.microsoft.com/en-us/library/ie/ff975462(v=vs.85).aspx\n if (typeof event.stopPropagation === 'function') {\n event.stopPropagation();\n } else {\n event.cancelBubble = true;\n }\n}\n\n/**\n * Get horizontal coordinate of the event object relative to the whole document.\n *\n * @param {Event} event\n * @returns {Number}\n */\nfunction pageX(event) {\n if (event.pageX) {\n return event.pageX;\n }\n\n return event.clientX + (0, _element.getWindowScrollLeft)();\n}\n\n/**\n * Get vertical coordinate of the event object relative to the whole document.\n *\n * @param {Event} event\n * @returns {Number}\n */\nfunction pageY(event) {\n if (event.pageY) {\n return event.pageY;\n }\n\n return event.clientY + (0, _element.getWindowScrollTop)();\n}\n\n/**\n * Check if provided event was triggered by clicking the right mouse button.\n *\n * @param {Event} event DOM Event.\n * @returns {Boolean}\n */\nfunction isRightClick(event) {\n return event.button === 2;\n}\n\n/**\n * Check if provided event was triggered by clicking the left mouse button.\n *\n * @param {Event} event DOM Event.\n * @returns {Boolean}\n */\nfunction isLeftClick(event) {\n return event.button === 0;\n}\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.getRegisteredRenderers = exports.getRegisteredRendererNames = exports.hasRenderer = exports.getRenderer = exports.registerRenderer = undefined;\n\nvar _staticRegister2 = __webpack_require__(38);\n\nvar _staticRegister3 = _interopRequireDefault(_staticRegister2);\n\nvar _cellDecorator = __webpack_require__(243);\n\nvar _cellDecorator2 = _interopRequireDefault(_cellDecorator);\n\nvar _autocompleteRenderer = __webpack_require__(244);\n\nvar _autocompleteRenderer2 = _interopRequireDefault(_autocompleteRenderer);\n\nvar _checkboxRenderer = __webpack_require__(245);\n\nvar _checkboxRenderer2 = _interopRequireDefault(_checkboxRenderer);\n\nvar _htmlRenderer = __webpack_require__(246);\n\nvar _htmlRenderer2 = _interopRequireDefault(_htmlRenderer);\n\nvar _numericRenderer = __webpack_require__(247);\n\nvar _numericRenderer2 = _interopRequireDefault(_numericRenderer);\n\nvar _passwordRenderer = __webpack_require__(249);\n\nvar _passwordRenderer2 = _interopRequireDefault(_passwordRenderer);\n\nvar _textRenderer = __webpack_require__(250);\n\nvar _textRenderer2 = _interopRequireDefault(_textRenderer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _staticRegister = (0, _staticRegister3.default)('renderers'),\n register = _staticRegister.register,\n getItem = _staticRegister.getItem,\n hasItem = _staticRegister.hasItem,\n getNames = _staticRegister.getNames,\n getValues = _staticRegister.getValues;\n\nregister('base', _cellDecorator2.default);\nregister('autocomplete', _autocompleteRenderer2.default);\nregister('checkbox', _checkboxRenderer2.default);\nregister('html', _htmlRenderer2.default);\nregister('numeric', _numericRenderer2.default);\nregister('password', _passwordRenderer2.default);\nregister('text', _textRenderer2.default);\n\n/**\n * Retrieve renderer function.\n *\n * @param {String} name Renderer identification.\n * @returns {Function} Returns renderer function.\n */\nfunction _getItem(name) {\n if (typeof name === 'function') {\n return name;\n }\n if (!hasItem(name)) {\n throw Error('No registered renderer found under \"' + name + '\" name');\n }\n\n return getItem(name);\n}\n\nexports.registerRenderer = register;\nexports.getRenderer = _getItem;\nexports.hasRenderer = hasItem;\nexports.getRegisteredRendererNames = getNames;\nexports.getRegisteredRenderers = getValues;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nvar _array = __webpack_require__(2);\n\nvar _object = __webpack_require__(1);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * @description\n * Handsontable events are the common interface that function in 2 ways: as __callbacks__ and as __hooks__.\n *\n * @example\n *\n * ```js\n * // Using events as callbacks:\n * ...\n * const hot1 = new Handsontable(document.getElementById('example1'), {\n * afterChange: function(changes, source) {\n * $.ajax({\n * url: \"save.php',\n * data: change\n * });\n * }\n * });\n * ...\n * ```\n *\n * ```js\n * // Using events as plugin hooks:\n * ...\n * const hot1 = new Handsontable(document.getElementById('example1'), {\n * myPlugin: true\n * });\n *\n * const hot2 = new Handsontable(document.getElementById('example2'), {\n * myPlugin: false\n * });\n *\n * // global hook\n * Handsontable.hooks.add('afterChange', function() {\n * // Fired twice - for hot1 and hot2\n * if (this.getSettings().myPlugin) {\n * // function body - will only run for hot1\n * }\n * });\n *\n * // local hook (has same effect as a callback)\n * hot2.addHook('afterChange', function() {\n * // function body - will only run in #example2\n * });\n * ```\n * ...\n */\n\n// @TODO: Move plugin description hooks to plugin?\nvar REGISTERED_HOOKS = [\n/**\n * Fired after resetting a cell's meta. This happens when the {@link Core#updateSettings} method is called.\n *\n * @event Hooks#afterCellMetaReset\n */\n'afterCellMetaReset',\n\n/**\n * Fired after one or more cells has been changed. The changes are triggered in any situation when the\n * value is entered using an editor or changed using API (e.q setDataAtCell)\n *\n * __Note:__ For performance reasons, the `changes` array is null for `\"loadData\"` source.\n *\n * @event Hooks#afterChange\n * @param {Array} changes 2D array containing information about each of the edited cells `[[row, prop, oldVal, newVal], ...]`.\n * @param {String} [source] String that identifies source of hook call ([list of all available sources]{@link https://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).\n * @example\n * ```js\n * new Handsontable(element, {\n * afterChange: (changes) => {\n * changes.forEach(([row, prop, oldValue, newValue]) => {\n * // Some logic...\n * });\n * }\n * })\n * ```\n */\n'afterChange',\n\n/**\n * Fired by {@link ObserveChanges} plugin after detecting changes in the data source. This hook is fired when\n * {@link Options#observeChanges} option is enabled.\n *\n * @event Hooks#afterChangesObserved\n */\n'afterChangesObserved',\n\n/**\n * Fired by {@link ContextMenu} after setting up the Context Menu's default options. These options are a collection\n * which user can select by setting an array of keys or an array of objects in {@link Options#contextMenu} option.\n *\n * @event Hooks#afterContextMenuDefaultOptions\n * @param {Array} predefinedItems An array of objects containing information about the pre-defined Context Menu items.\n */\n'afterContextMenuDefaultOptions',\n\n/**\n * Fired by {@link ContextMenu} plugin before setting up the Context Menu's items but after filtering these options by\n * user (`contextMenu` option). This hook can by helpful to determine if user use specified menu item or to set up\n * one of the menu item to by always visible.\n *\n * @event Hooks#beforeContextMenuSetItems\n * @param {Object[]} menuItems An array of objects containing information about to generated Context Menu items.\n */\n'beforeContextMenuSetItems',\n\n/**\n * Fired by {@link DropdownMenu} plugin after setting up the Dropdown Menu's default options. These options are a\n * collection which user can select by setting an array of keys or an array of objects in {@link Options#dropdownMenu}\n * option.\n *\n * @pro\n * @event Hooks#afterDropdownMenuDefaultOptions\n * @param {Object[]} predefinedItems An array of objects containing information about the pre-defined Context Menu items.\n */\n'afterDropdownMenuDefaultOptions',\n\n/**\n * Fired by {@link DropdownMenu} plugin before setting up the Dropdown Menu's items but after filtering these options\n * by user (`dropdownMenu` option). This hook can by helpful to determine if user use specified menu item or to set\n * up one of the menu item to by always visible.\n *\n * @pro\n * @event Hooks#beforeDropdownMenuSetItems\n * @param {Object[]} menuItems An array of objects containing information about to generated Dropdown Menu items.\n */\n'beforeDropdownMenuSetItems',\n\n/**\n * Fired by {@link ContextMenu} plugin after hiding the Context Menu. This hook is fired when {@link Options#contextMenu}\n * option is enabled.\n *\n * @event Hooks#afterContextMenuHide\n * @param {Object} context The Context Menu plugin instance.\n */\n'afterContextMenuHide',\n\n/**\n * Fired by {@link ContextMenu} plugin before opening the Context Menu. This hook is fired when {@link Options#contextMenu}\n * option is enabled.\n *\n * @event Hooks#beforeContextMenuShow\n * @param {Object} context The Context Menu instance.\n */\n'beforeContextMenuShow',\n\n/**\n * Fired by {@link ContextMenu} plugin after opening the Context Menu. This hook is fired when {@link Options#contextMenu}\n * option is enabled.\n *\n * @event Hooks#afterContextMenuShow\n * @param {Object} context The Context Menu plugin instance.\n */\n'afterContextMenuShow',\n\n/**\n * Fired by {@link CopyPaste} plugin after reaching the copy limit while copying data. This hook is fired when\n * {@link Options#copyPaste} option is enabled.\n *\n * @event Hooks#afterCopyLimit\n * @param {Number} selectedRows Count of selected copyable rows.\n * @param {Number} selectedColumns Count of selected copyable columns.\n * @param {Number} copyRowsLimit Current copy rows limit.\n * @param {Number} copyColumnsLimit Current copy columns limit.\n */\n'afterCopyLimit',\n\n/**\n * Fired before created a new column.\n *\n * @event Hooks#beforeCreateCol\n * @param {Number} index Represents the visual index of first newly created column in the data source array.\n * @param {Number} amount Number of newly created columns in the data source array.\n * @param {String} [source] String that identifies source of hook call\n * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).\n */\n'beforeCreateCol',\n\n/**\n * Fired after created a new column.\n *\n * @event Hooks#afterCreateCol\n * @param {Number} index Represents the visual index of first newly created column in the data source.\n * @param {Number} amount Number of newly created columns in the data source.\n * @param {String} [source] String that identifies source of hook call\n * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).\n */\n'afterCreateCol',\n\n/**\n * Fired before created a new row.\n *\n * @event Hooks#beforeCreateRow\n * @param {Number} index Represents the visual index of first newly created row in the data source array.\n * @param {Number} amount Number of newly created rows in the data source array.\n * @param {String} [source] String that identifies source of hook call\n * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).\n */\n'beforeCreateRow',\n\n/**\n * Fired after created a new row.\n *\n * @event Hooks#afterCreateRow\n * @param {Number} index Represents the visual index of first newly created row in the data source array.\n * @param {Number} amount Number of newly created rows in the data source array.\n * @param {String} [source] String that identifies source of hook call\n * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).\n */\n'afterCreateRow',\n\n/**\n * Fired after the current cell is deselected.\n *\n * @event Hooks#afterDeselect\n */\n'afterDeselect',\n\n/**\n * Fired after destroying the Handsontable instance.\n *\n * @event Hooks#afterDestroy\n */\n'afterDestroy',\n\n/**\n * General hook which captures `keydown` events attached to the document body. These events are delegated to the\n * hooks system and consumed by Core and internal modules (e.g plugins, editors).\n *\n * @event Hooks#afterDocumentKeyDown\n * @param {Event} event A native `keydown` event object.\n */\n'afterDocumentKeyDown',\n\n/**\n * Fired inside the Walkontable's selection `draw` method. Can be used to add additional class names to cells, depending on the current selection.\n *\n * @event Hooks#afterDrawSelection\n * @param {Number} currentRow Row index of the currently processed cell.\n * @param {Number} currentColumn Column index of the currently cell.\n * @param {Number[]} cornersOfSelection Array of the current selection in a form of `[startRow, startColumn, endRow, endColumn]`.\n * @param {Number|undefined} layerLevel Number indicating which layer of selection is currently processed.\n * @since 0.38.1\n * @returns {String|undefined} Can return a `String`, which will act as an additional `className` to be added to the currently processed cell.\n */\n'afterDrawSelection',\n\n/**\n * Fired inside the Walkontable's `refreshSelections` method. Can be used to remove additional class names from all cells in the table.\n *\n * @event Hooks#beforeRemoveCellClassNames\n * @since 0.38.1\n * @returns {String[]|undefined} Can return an `Array` of `String`s. Each of these strings will act like class names to be removed from all the cells in the table.\n */\n'beforeRemoveCellClassNames',\n\n/**\n * Fired after getting the cell settings.\n *\n * @event Hooks#afterGetCellMeta\n * @param {Number} row Visual row index.\n * @param {Number} column Visual column index.\n * @param {Object} cellProperties Object containing the cell properties.\n */\n'afterGetCellMeta',\n\n/**\n * Fired after retrieving information about a column header and appending it to the table header.\n *\n * @event Hooks#afterGetColHeader\n * @param {Number} column Visual column index.\n * @param {HTMLTableCellElement} TH Header's TH element.\n */\n'afterGetColHeader',\n\n/**\n * Fired after retrieving information about a row header and appending it to the table header.\n *\n * @event Hooks#afterGetRowHeader\n * @param {Number} row Visual row index.\n * @param {HTMLTableCellElement} TH Header's TH element.\n */\n'afterGetRowHeader',\n\n/**\n * Fired after the Handsontable instance is initiated.\n *\n * @event Hooks#afterInit\n */\n'afterInit',\n\n/**\n * Fired after new data is loaded (by `loadData` or `updateSettings` method) into the data source array.\n *\n * @event Hooks#afterLoadData\n * @param {Boolean} initialLoad flag that determines whether the data has been loaded during the initialization.\n */\n'afterLoadData',\n\n/**\n * Fired after a scroll event, which is identified as a momentum scroll (e.g. on an iPad).\n *\n * @event Hooks#afterMomentumScroll\n */\n'afterMomentumScroll',\n\n/**\n * Fired after a `mousedown` event is triggered on the cell corner (the drag handle).\n *\n * @event Hooks#afterOnCellCornerMouseDown\n * @param {Event} event `mousedown` event object.\n */\n'afterOnCellCornerMouseDown',\n\n/**\n * Fired after a `dblclick` event is triggered on the cell corner (the drag handle).\n *\n * @event Hooks#afterOnCellCornerDblClick\n * @param {Event} event `dblclick` event object.\n */\n'afterOnCellCornerDblClick',\n\n/**\n * Fired after clicking on a cell or row/column header. In case the row/column header was clicked, the coordinate\n * indexes are negative.\n *\n * For example clicking on the row header of cell (0, 0) results with `afterOnCellMouseDown` called\n * with coordinates `{row: 0, col: -1}`.\n *\n * @event Hooks#afterOnCellMouseDown\n * @param {Event} event `mousedown` event object.\n * @param {CellCoords} coords Coordinates object containing the visual row and visual column indexes of the clicked cell.\n * @param {HTMLTableCellElement} TD Cell's TD (or TH) element.\n */\n'afterOnCellMouseDown',\n\n/**\n * Fired after clicking right mouse button on a cell or row/column header.\n *\n * For example clicking on the row header of cell (0, 0) results with `afterOnCellContextMenu` called\n * with coordinates `{row: 0, col: -1}`.\n *\n * @event Hooks#afterOnCellContextMenu\n * @since 4.1.0\n * @param {Event} event `contextmenu` event object.\n * @param {CellCoords} coords Coordinates object containing the visual row and visual column indexes of the clicked cell.\n * @param {HTMLTableCellElement} TD Cell's TD (or TH) element.\n */\n'afterOnCellContextMenu',\n\n/**\n * Fired after hovering a cell or row/column header with the mouse cursor. In case the row/column header was\n * hovered, the index is negative.\n *\n * For example, hovering over the row header of cell (0, 0) results with `afterOnCellMouseOver` called\n * with coords `{row: 0, col: -1}`.\n *\n * @event Hooks#afterOnCellMouseOver\n * @param {Event} event `mouseover` event object.\n * @param {CellCoords} coords Hovered cell's visual coordinate object.\n * @param {HTMLTableCellElement} TD Cell's TD (or TH) element.\n */\n'afterOnCellMouseOver',\n\n/**\n * Fired after leaving a cell or row/column header with the mouse cursor.\n *\n * @event Hooks#afterOnCellMouseOut\n * @param {Event} event `mouseout` event object.\n * @param {CellCoords} coords Leaved cell's visual coordinate object.\n * @param {HTMLTableCellElement} TD Cell's TD (or TH) element.\n */\n'afterOnCellMouseOut',\n\n/**\n * Fired after one or more columns are removed.\n *\n * @event Hooks#afterRemoveCol\n * @param {Number} index Visual index of starter column.\n * @param {Number} amount An amount of removed columns.\n * @param {Number[]} physicalColumns An array of physical columns removed from the data source.\n * @param {String} [source] String that identifies source of hook call ([list of all available sources]{@link https://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).\n */\n'afterRemoveCol',\n\n/**\n * Fired after one or more rows are removed.\n *\n * @event Hooks#afterRemoveRow\n * @param {Number} index Visual index of starter row.\n * @param {Number} amount An amount of removed rows.\n * @param {Number[]} physicalRows An array of physical rows removed from the data source.\n * @param {String} [source] String that identifies source of hook call ([list of all available sources]{@link https://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).\n */\n'afterRemoveRow',\n\n/**\n * Fired after the Handsontable table is rendered.\n *\n * @event Hooks#afterRender\n * @param {Boolean} isForced Is `true` if rendering was triggered by a change of settings or data; or `false` if\n * rendering was triggered by scrolling or moving selection.\n */\n'afterRender',\n\n/**\n * Fired before starting rendering the cell.\n *\n * @event Hooks#beforeRenderer\n * @param {HTMLTableCellElement} TD Currently rendered cell's TD element.\n * @param {Number} row Visual row index.\n * @param {Number} column Visual column index.\n * @param {String|Number} prop Column property name or a column index, if datasource is an array of arrays.\n * @param {*} value Value of the rendered cell.\n * @param {Object} cellProperties Object containing the cell's properties.\n */\n'beforeRenderer',\n\n/**\n * Fired after finishing rendering the cell (after the renderer finishes).\n *\n * @event Hooks#afterRenderer\n * @param {HTMLTableCellElement} TD Currently rendered cell's TD element.\n * @param {Number} row Visual row index.\n * @param {Number} column Visual column index.\n * @param {String|Number} prop Column property name or a column index, if datasource is an array of arrays.\n * @param {*} value Value of the rendered cell.\n * @param {Object} cellProperties Object containing the cell's properties.\n */\n'afterRenderer',\n\n/**\n * Fired after the horizontal scroll event.\n *\n * @event Hooks#afterScrollHorizontally\n */\n'afterScrollHorizontally',\n\n/**\n * Fired after the vertical scroll event.\n *\n * @event Hooks#afterScrollVertically\n */\n'afterScrollVertically',\n\n/**\n * Fired after one or more cells are selected (e.g. during mouse move).\n *\n * @event Hooks#afterSelection\n * @param {Number} row Selection start visual row index.\n * @param {Number} column Selection start visual column index.\n * @param {Number} row2 Selection end visual row index.\n * @param {Number} column2 Selection end visual column index.\n * @param {Object} preventScrolling Object with `value` property where its value change will be observed.\n * @param {Number} selectionLayerLevel The number which indicates what selection layer is currently modified.\n * @example\n * ```js\n * new Handsontable(element, {\n * afterSelection: (row, column, row2, column2, preventScrolling, selectionLayerLevel) => {\n * // setting if prevent scrolling after selection\n * preventScrolling.value = true;\n * }\n * })\n * ```\n */\n'afterSelection',\n\n/**\n * Fired after one or more cells are selected.\n *\n * The `prop` and `prop2` arguments represent the source object property name instead of the column number.\n *\n * @event Hooks#afterSelectionByProp\n * @param {Number} row Selection start visual row index.\n * @param {String} prop Selection start data source object property name.\n * @param {Number} row2 Selection end visual row index.\n * @param {String} prop2 Selection end data source object property name.\n * @param {Object} preventScrolling Object with `value` property where its value change will be observed.\n * @param {Number} selectionLayerLevel The number which indicates what selection layer is currently modified.\n * @example\n * ```js\n * new Handsontable(element, {\n * afterSelectionByProp: (row, column, row2, column2, preventScrolling, selectionLayerLevel) => {\n * // setting if prevent scrolling after selection\n * preventScrolling.value = true;\n * }\n * })\n * ```\n */\n'afterSelectionByProp',\n\n/**\n * Fired after one or more cells are selected (e.g. on mouse up).\n *\n * @event Hooks#afterSelectionEnd\n * @param {Number} row Selection start visual row index.\n * @param {Number} column Selection start visual column index.\n * @param {Number} row2 Selection end visual row index.\n * @param {Number} column2 Selection end visual column index.\n * @param {Number} selectionLayerLevel The number which indicates what selection layer is currently modified.\n */\n'afterSelectionEnd',\n\n/**\n * Fired after one or more cells are selected (e.g. on mouse up).\n *\n * The `prop` and `prop2` arguments represent the source object property name instead of the column number.\n *\n * @event Hooks#afterSelectionEndByProp\n * @param {Number} row Selection start visual row index.\n * @param {String} prop Selection start data source object property index.\n * @param {Number} row2 Selection end visual row index.\n * @param {String} prop2 Selection end data source object property index.\n * @param {Number} selectionLayerLevel The number which indicates what selection layer is currently modified.\n */\n'afterSelectionEndByProp',\n\n/**\n * Fired after cell meta is changed.\n *\n * @event Hooks#afterSetCellMeta\n * @param {Number} row Visual row index.\n * @param {Number} column Visual column index.\n * @param {String} key The updated meta key.\n * @param {*} value The updated meta value.\n */\n'afterSetCellMeta',\n\n/**\n * Fired after cell meta is removed.\n *\n * @event Hooks#afterRemoveCellMeta\n * @param {Number} row Visual row index.\n * @param {Number} column Visual column index.\n * @param {String} key The removed meta key.\n * @param {*} value Value which was under removed key of cell meta.\n */\n'afterRemoveCellMeta',\n\n/**\n * Fired after cell data was changed.\n *\n * @event Hooks#afterSetDataAtCell\n * @param {Array} changes An array of changes in format `[[row, column, oldValue, value], ...]`.\n * @param {String} [source] String that identifies source of hook call\n * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).\n */\n'afterSetDataAtCell',\n\n/**\n * Fired after cell data was changed.\n *\n * @event Hooks#afterSetDataAtRowProp\n * @param {Array} changes An array of changes in format `[[row, prop, oldValue, value], ...]`.\n * @param {String} [source] String that identifies source of hook call\n * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).\n */\n'afterSetDataAtRowProp',\n\n/**\n * Fired after calling the `updateSettings` method.\n *\n * @event Hooks#afterUpdateSettings\n * @param {Object} settings New settings object.\n */\n'afterUpdateSettings',\n\n/**\n * @description\n * A plugin hook executed after validator function, only if validator function is defined.\n * Validation result is the first parameter. This can be used to determinate if validation passed successfully or not.\n *\n * __Returning false from the callback will mark the cell as invalid.__\n *\n * @event Hooks#afterValidate\n * @param {Boolean} isValid `true` if valid, `false` if not.\n * @param {*} value The value in question.\n * @param {Number} row Visual row index.\n * @param {String|Number} prop Property name / visual column index.\n * @param {String} [source] String that identifies source of hook call\n * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).\n */\n'afterValidate',\n\n/**\n * Fired before successful change of language (when proper language code was set)\n *\n * @event Hooks#beforeLanguageChange\n * @since 0.35.0\n * @param {String} languageCode New language code.\n */\n'beforeLanguageChange',\n\n/**\n * Fired after successful change of language (when proper language code was set).\n *\n * @event Hooks#afterLanguageChange\n * @since 0.35.0\n * @param {String} languageCode New language code.\n */\n'afterLanguageChange',\n\n/**\n * Fired by {@link Autofill} plugin before populating the data in the autofill feature. This hook is fired when\n * {@link Options#fillHandle} option is enabled.\n *\n * @event Hooks#beforeAutofill\n * @param {CellCoords} start Object containing information about first filled cell: `{row: 2, col: 0}`.\n * @param {CellCoords} end Object containing information about last filled cell: `{row: 4, col: 1}`.\n * @param {Array[]} data 2D array containing information about fill pattern: `[[\"1\", \"Ted\"], [\"1\", \"John\"]]`.\n */\n'beforeAutofill',\n\n/**\n * Fired before aligning the cell contents.\n *\n * @event Hooks#beforeCellAlignment\n * @param {Object} stateBefore An object with class names defining the cell alignment.\n * @param {CellRange[]} range An array of CellRange coordinates where the alignment will be applied.\n * @param {String} type Type of the alignment - either `horizontal` or `vertical`.\n * @param {String} alignmentClass String defining the alignment class added to the cell.\n * Possible values:\n * * `htLeft`\n * * `htCenter`\n * * `htRight`\n * * `htJustify`\n * * `htTop`\n * * `htMiddle`\n * * `htBottom`\n */\n'beforeCellAlignment',\n\n/**\n * Fired before one or more cells is changed. Its main purpose is to alter changes silently after input and before\n * table rendering.\n *\n * @event Hooks#beforeChange\n * @param {Array[]} changes 2D array containing information about each of the edited cells.\n * @param {String} [source] String that identifies source of hook call\n * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).\n * @example\n * ```js\n * // To disregard a single change, set changes[i] to null or remove it from array using changes.splice(i, 1).\n * new Handsontable(element, {\n * beforeChange: (changes, source) => {\n * // [[row, prop, oldVal, newVal], ...]\n * changes[0] = null;\n * }\n * });\n * // To alter a single change, overwrite the desired value to changes[i][3].\n * new Handsontable(element, {\n * beforeChange: (changes, source) => {\n * // [[row, prop, oldVal, newVal], ...]\n * changes[0][3] = 10;\n * }\n * });\n * // To cancel all edit, return false from the callback or set array length to 0 (changes.length = 0).\n * new Handsontable(element, {\n * beforeChange: (changes, source) => {\n * // [[row, prop, oldVal, newVal], ...]\n * return false;\n * }\n * });\n * ```\n */\n'beforeChange',\n\n/**\n * Fired right before rendering the changes.\n *\n * @event Hooks#beforeChangeRender\n * @param {Array[]} changes Array in form of `[row, prop, oldValue, newValue]`.\n * @param {String} [source] String that identifies source of hook call\n * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).\n */\n'beforeChangeRender',\n\n/**\n * Fired before drawing the borders.\n *\n * @event Hooks#beforeDrawBorders\n * @param {Array} corners Array specifying the current selection borders.\n * @param {String} borderClassName Specifies the border class name.\n */\n'beforeDrawBorders',\n\n/**\n * Fired before getting cell settings.\n *\n * @event Hooks#beforeGetCellMeta\n * @param {Number} row Visual row index.\n * @param {Number} column Visual column index.\n * @param {Object} cellProperties Object containing the cell's properties.\n */\n'beforeGetCellMeta',\n\n/**\n * Fired before cell meta is removed.\n *\n * @event Hooks#beforeRemoveCellMeta\n * @param {Number} row Visual row index.\n * @param {Number} column Visual column index.\n * @param {String} key The removed meta key.\n * @param {*} value Value which is under removed key of cell meta.\n */\n'beforeRemoveCellMeta',\n\n/**\n * Fired before the Handsontable instance is initiated.\n *\n * @event Hooks#beforeInit\n */\n'beforeInit',\n\n/**\n * Fired before the Walkontable instance is initiated.\n *\n * @event Hooks#beforeInitWalkontable\n * @param {Object} walkontableConfig Walkontable configuration object.\n */\n'beforeInitWalkontable',\n\n/**\n * Fired before keydown event is handled. It can be used to overwrite default key bindings.\n *\n * __Note__: To prevent default behavior you need to call `event.stopImmediatePropagation()` in your `beforeKeyDown`\n * handler.\n *\n * @event Hooks#beforeKeyDown\n * @param {Event} event Original DOM event.\n */\n'beforeKeyDown',\n\n/**\n * Fired after the user clicked a cell, but before all the calculations related with it.\n *\n * @event Hooks#beforeOnCellMouseDown\n * @param {Event} event The `mousedown` event object.\n * @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.\n * @param {HTMLTableCellElement} TD TD element.\n * @param {Object} controller An object with keys `row`, `column` and `cells` which contains boolean values. This\n * object allows or disallows changing the selection for the particular axies.\n */\n'beforeOnCellMouseDown',\n\n/**\n * Fired after the user clicked a cell, but before all the calculations related with it.\n *\n * @event Hooks#beforeOnCellContextMenu\n * @since 4.1.0\n * @param {Event} event The `contextmenu` event object.\n * @param {CellCoords} coords Cell coords object containing the visual coordinates of the clicked cell.\n * @param {HTMLTableCellElement} TD TD element.\n */\n'beforeOnCellContextMenu',\n\n/**\n * Fired after the user moved cursor over a cell, but before all the calculations related with it.\n *\n * @event Hooks#beforeOnCellMouseOver\n * @param {Event} event The `mouseover` event object.\n * @param {CellCoords} coords CellCoords object containing the visual coordinates of the clicked cell.\n * @param {HTMLTableCellElement} TD TD element.\n * @param {Object} controller An object with keys `row`, `column` and `cells` which contains boolean values. This\n * object allows or disallows changing the selection for the particular axies.\n */\n'beforeOnCellMouseOver',\n\n/**\n * Fired after the user moved cursor out from a cell, but before all the calculations related with it.\n *\n * @event Hooks#beforeOnCellMouseOut\n * @param {Event} event The `mouseout` event object.\n * @param {CellCoords} coords CellCoords object containing the visual coordinates of the leaved cell.\n * @param {HTMLTableCellElement} TD TD element.\n */\n'beforeOnCellMouseOut',\n\n/**\n * Fired before one or more columns are about to be removed.\n *\n * @event Hooks#beforeRemoveCol\n * @param {Number} index Visual index of starter column.\n * @param {Number} amount Amount of columns to be removed.\n * @param {Number[]} physicalColumns An array of physical columns removed from the data source.\n * @param {String} [source] String that identifies source of hook call ([list of all available sources]{@link https://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).\n */\n'beforeRemoveCol',\n\n/**\n * Fired when one or more rows are about to be removed.\n *\n * @event Hooks#beforeRemoveRow\n * @param {Number} index Visual index of starter column.\n * @param {Number} amount Amount of columns to be removed.\n * @param {Number[]} physicalRows An array of physical rows removed from the data source.\n * @param {String} [source] String that identifies source of hook call ([list of all available sources]{@link https://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).\n */\n'beforeRemoveRow',\n\n/**\n * Fired before the Handsontable table is rendered.\n *\n * @event Hooks#beforeRender\n * @param {Boolean} isForced If `true` rendering was triggered by a change of settings or data; or `false` if\n * rendering was triggered by scrolling or moving selection.\n */\n'beforeRender',\n\n/**\n * Fired before setting range is started but not finished yet.\n *\n * @event Hooks#beforeSetRangeStartOnly\n * @param {CellCoords} coords CellCoords instance.\n */\n'beforeSetRangeStartOnly',\n\n/**\n * Fired before setting range is started.\n *\n * @event Hooks#beforeSetRangeStart\n * @param {CellCoords} coords CellCoords instance.\n */\n'beforeSetRangeStart',\n\n/**\n * Fired before setting range is ended.\n *\n * @event Hooks#beforeSetRangeEnd\n * @param {CellCoords} coords CellCoords instance.\n */\n'beforeSetRangeEnd',\n\n/**\n * Fired before the logic of handling a touch scroll, when user started scrolling on a touch-enabled device.\n *\n * @event Hooks#beforeTouchScroll\n */\n'beforeTouchScroll',\n\n/**\n * Fired before cell validation, only if validator function is defined. This can be used to manipulate the value\n * of changed cell before it is applied to the validator function.\n *\n * __Note:__ this will not affect values of changes. This will change value *ONLY* for validation\n *\n * @event Hooks#beforeValidate\n * @param {*} value Value of the cell.\n * @param {Number} row Visual row index.\n * @param {String|Number} prop Property name / column index.\n * @param {String} [source] String that identifies source of hook call\n * ([list of all available sources]{@link http://docs.handsontable.com/tutorial-using-callbacks.html#page-source-definition}).\n */\n'beforeValidate',\n\n/**\n * Fired before cell value is rendered into the DOM (through renderer function). This can be used to manipulate the\n * value which is passed to the renderer without modifying the renderer itself.\n *\n * @event Hooks#beforeValueRender\n * @param {*} value Cell value to render.\n * @param {Object} cellProperties An object containing the cell properties.\n */\n'beforeValueRender',\n\n/**\n * Fired after Handsontable instance is constructed (using `new` operator).\n *\n * @event Hooks#construct\n */\n'construct',\n\n/**\n * Fired after Handsontable instance is initiated but before table is rendered.\n *\n * @event Hooks#init\n */\n'init',\n\n/**\n * Fired when a column index is about to be modified by a callback function.\n *\n * @event Hooks#modifyCol\n * @param {Number} column Visual column index.\n */\n'modifyCol',\n\n/**\n * Fired when a column index is about to be de-modified by a callback function.\n *\n * @event Hooks#unmodifyCol\n * @param {Number} column Physical column index.\n */\n'unmodifyCol',\n\n/**\n * Fired when a physical row index is about to be de-modified by a callback function.\n *\n * @event Hooks#unmodifyRow\n * @param {Number} row Physical row index.\n */\n'unmodifyRow',\n\n/**\n * Fired when a column header index is about to be modified by a callback function.\n *\n * @event Hooks#modifyColHeader\n * @param {Number} column Visual column header index.\n */\n'modifyColHeader',\n\n/**\n * Fired when a column width is about to be modified by a callback function.\n *\n * @event Hooks#modifyColWidth\n * @param {Number} width Current column width.\n * @param {Number} column Visual column index.\n */\n'modifyColWidth',\n\n/**\n * Fired when a row index is about to be modified by a callback function.\n *\n * @event Hooks#modifyRow\n * @param {Number} row Visual row index.\n */\n'modifyRow',\n\n/**\n * Fired when a row header index is about to be modified by a callback function.\n *\n * @event Hooks#modifyRowHeader\n * @param {Number} row Visual row header index.\n */\n'modifyRowHeader',\n\n/**\n * Fired when a row height is about to be modified by a callback function.\n *\n * @event Hooks#modifyRowHeight\n * @param {Number} height Row height.\n * @param {Number} row Visual row index.\n */\n'modifyRowHeight',\n\n/**\n * Fired when a data was retrieved or modified.\n *\n * @event Hooks#modifyData\n * @param {Number} row Row height.\n * @param {Number} column Column index.\n * @param {Object} valueHolder Object which contains original value which can be modified by overwriting `.value` property.\n * @param {String} ioMode String which indicates for what operation hook is fired (`get` or `set`).\n */\n'modifyData',\n\n/**\n * Fired when a data was retrieved or modified.\n *\n * @event Hooks#modifyRowData\n * @param {Number} row Physical row index.\n */\n'modifyRowData',\n\n/**\n * Used to modify the cell coordinates when using the `getCell` method.\n *\n * @event Hooks#modifyGetCellCoords\n * @since 0.36.0\n * @param {Number} row Visual row index.\n * @param {Number} column Visual column index.\n * @param {Boolean} topmost If set to `true`, it returns the TD element from the topmost overlay. For example,\n * if the wanted cell is in the range of fixed rows, it will return a TD element\n * from the `top` overlay.\n */\n'modifyGetCellCoords',\n\n/**\n * Fired by {@link PersistentState} plugin, after loading value, saved under given key, from browser local storage. This hook is fired when\n * {@link Options#persistentState} option is enabled.\n *\n * @event Hooks#persistentStateLoad\n * @param {String} key Key.\n * @param {Object} valuePlaceholder Object containing the loaded value under `valuePlaceholder.value` (if no value have been saved, `value` key will be undefined).\n */\n'persistentStateLoad',\n\n/**\n * Fired by {@link PersistentState} plugin after resetting data from local storage. If no key is given, all values associated with table will be cleared.\n * This hook is fired when {@link Options#persistentState} option is enabled.\n *\n * @event Hooks#persistentStateReset\n * @param {String} [key] Key.\n */\n'persistentStateReset',\n\n/**\n * Fired by {@link PersistentState} plugin, after saving value under given key in browser local storage. This hook is fired when\n * {@link Options#persistentState} option is enabled.\n *\n * @event Hooks#persistentStateSave\n * @param {String} key Key.\n * @param {Mixed} value Value to save.\n */\n'persistentStateSave',\n\n/**\n * Fired by {@link ColumnSorting} plugin before sorting the column. If you return `false` value then sorting\n * will be not applied by the Handsontable (useful for server-side sorting).\n *\n * This hook is fired when {@link Options#columnSorting} option is enabled.\n *\n * @event Hooks#beforeColumnSort\n * @param {Number} column Sorted visual column index.\n * @param {Boolean} order Soring order where:\n * * `asc` means ascending order\n * * `desc` means descending order\n * * `none` means original order\n */\n'beforeColumnSort',\n\n/**\n * Fired by {@link ColumnSorting} plugin after sorting the column. This hook is fired when {@link Options#columnSorting}\n * option is enabled.\n *\n * @event Hooks#afterColumnSort\n * @param {Number} column Sorted visual column index.\n * @param {String} order Soring order where:\n * * `'asc'` means ascending order\n * * `'desc'` means descending order\n * * `'none'` means original order\n */\n'afterColumnSort',\n\n/**\n * Fired by {@link Autofill} plugin after setting range of autofill. This hook is fired when {@link Options#fillHandle}\n * option is enabled.\n *\n * @event Hooks#modifyAutofillRange\n * @param {Array} startArea Array of visual coordinates of the starting point for the drag-down operation (`[startRow, startColumn, endRow, endColumn]`).\n * @param {Array} entireArea Array of visual coordinates of the entire area of the drag-down operation (`[startRow, startColumn, endRow, endColumn]`).\n */\n'modifyAutofillRange',\n\n/**\n * Fired to allow modifying the copyable range with a callback function.\n *\n * @event Hooks#modifyCopyableRange\n * @param {Array[]} copyableRanges Array of objects defining copyable cells.\n */\n'modifyCopyableRange',\n\n/**\n * Fired by {@link CopyPaste} plugin before copying the values into clipboard and before clearing values of\n * the selected cells. This hook is fired when {@link Options#copyPaste} option is enabled.\n *\n * @event Hooks#beforeCut\n * @param {Array[]} data An array of arrays which contains data to cut.\n * @param {Object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)\n * which will be cut out.\n * @returns {*} If returns `false` then operation of the cutting out is canceled.\n * @example\n * ```js\n * // To disregard a single row, remove it from the array using data.splice(i, 1).\n * new Handsontable(element, {\n * beforeCut: function(data, coords) {\n * // data -> [[1, 2, 3], [4, 5, 6]]\n * data.splice(0, 1);\n * // data -> [[4, 5, 6]]\n * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]\n * }\n * });\n * // To cancel a cutting action, just return `false`.\n * new Handsontable(element, {\n * beforeCut: function(data, coords) {\n * return false;\n * }\n * });\n * ```\n */\n'beforeCut',\n\n/**\n * Fired by {@link CopyPaste} plugin after data was cut out from the table. This hook is fired when\n * {@link Options#copyPaste} option is enabled.\n *\n * @event Hooks#afterCut\n * @param {Array[]} data An array of arrays which contains the cutted out data.\n * @param {Object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)\n * which was cut out.\n */\n'afterCut',\n\n/**\n * Fired before values are copied into clipboard.\n *\n * @event Hooks#beforeCopy\n * @param {Array[]} data An array of arrays which contains data to copied.\n * @param {Object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)\n * which will copied.\n * @returns {*} If returns `false` then copying is canceled.\n *\n * @example\n * ```js\n * // To disregard a single row, remove it from array using data.splice(i, 1).\n * ...\n * new Handsontable(document.getElementById('example'), {\n * beforeCopy: (data, coords) => {\n * // data -> [[1, 2, 3], [4, 5, 6]]\n * data.splice(0, 1);\n * // data -> [[4, 5, 6]]\n * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]\n * }\n * });\n * ...\n *\n * // To cancel copying, return false from the callback.\n * ...\n * new Handsontable(document.getElementById('example'), {\n * beforeCopy: (data, coords) => {\n * return false;\n * }\n * });\n * ...\n * ```\n */\n'beforeCopy',\n\n/**\n * Fired by {@link CopyPaste} plugin after data are pasted into table. This hook is fired when {@link Options#copyPaste}\n * option is enabled.\n *\n * @event Hooks#afterCopy\n * @param {Array[]} data An array of arrays which contains the copied data.\n * @param {Object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)\n * which was copied.\n */\n'afterCopy',\n\n/**\n * Fired by {@link CopyPaste} plugin before values are pasted into table. This hook is fired when\n * {@link Options#copyPaste} option is enabled.\n *\n * @event Hooks#beforePaste\n * @param {Array[]} data An array of arrays which contains data to paste.\n * @param {Object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)\n * that correspond to the previously selected area.\n * @returns {*} If returns `false` then pasting is canceled.\n * @example\n * ```js\n * // To disregard a single row, remove it from array using data.splice(i, 1).\n * new Handsontable(example, {\n * beforePaste: (data, coords) => {\n * // data -> [[1, 2, 3], [4, 5, 6]]\n * data.splice(0, 1);\n * // data -> [[4, 5, 6]]\n * // coords -> [{startRow: 0, startCol: 0, endRow: 1, endCol: 2}]\n * }\n * });\n * // To cancel pasting, return false from the callback.\n * new Handsontable(example, {\n * beforePaste: (data, coords) => {\n * return false;\n * }\n * });\n * ```\n */\n'beforePaste',\n\n/**\n * Fired by {@link CopyPaste} plugin after values are pasted into table. This hook is fired when\n * {@link Options#copyPaste} option is enabled.\n *\n * @event Hooks#afterPaste\n * @param {Array[]} data An array of arrays which contains the pasted data.\n * @param {Object[]} coords An array of objects with ranges of the visual indexes (`startRow`, `startCol`, `endRow`, `endCol`)\n * that correspond to the previously selected area.\n */\n'afterPaste',\n\n/**\n * Fired by {@link ManualColumnMove} plugin before change order of the visual indexes. This hook is fired when\n * {@link Options#manualColumnMove} option is enabled.\n *\n * @event Hooks#beforeColumnMove\n * @param {Number[]} columns Array of visual column indexes to be moved.\n * @param {Number} target Visual column index being a target for moved columns.\n */\n'beforeColumnMove',\n\n/**\n * Fired by {@link ManualColumnMove} plugin after changing order of the visual indexes. This hook is fired when\n * {@link Options#manualColumnMove} option is enabled.\n *\n * @event Hooks#afterColumnMove\n * @param {Number[]} columns Array of visual column indexes that were moved.\n * @param {Number} target Visual column index being a target for moved columns.\n */\n'afterColumnMove',\n\n/**\n * Fired by {@link ManualRowMove} plugin before change order of the visual indexes. This hook is fired when\n * {@link Options#manualRowMove} option is enabled.\n *\n * @event Hooks#beforeRowMove\n * @param {Number[]} rows An array of visual row indexes to be moved.\n * @param {Number} target Visual row index being a target for moved rows.\n */\n'beforeRowMove',\n\n/**\n * Fired by {@link ManualRowMove} plugin after change order of the visual indexes. This hook is fired when\n * {@link Options#manualRowMove} option is enabled.\n *\n * @event Hooks#afterRowMove\n * @param {Number[]} rows An array of visual row indexes that were moved.\n * @param {Number} target Visual row index being a target for moved rows.\n */\n'afterRowMove',\n\n/**\n * Fired by {@link ManualColumnResize} plugin before rendering the table with modified column sizes. This hook is\n * fired when {@link Options#manualColumnResize} option is enabled.\n *\n * @event Hooks#beforeColumnResize\n * @param {Number} currentColumn Visual index of the resized column.\n * @param {Number} newSize Calculated new column width.\n * @param {Boolean} isDoubleClick Flag that determines whether there was a double-click.\n * @returns {Number} Returns a new column size or `undefined`, if column size should be calculated automatically.\n */\n'beforeColumnResize',\n\n/**\n * Fired by {@link ManualColumnResize} plugin after rendering the table with modified column sizes. This hook is\n * fired when {@link Options#manualColumnResize} option is enabled.\n *\n * @event Hooks#afterColumnResize\n * @param {Number} currentColumn Visual index of the resized column.\n * @param {Number} newSize Calculated new column width.\n * @param {Boolean} isDoubleClick Flag that determines whether there was a double-click.\n */\n'afterColumnResize',\n\n/**\n * Fired by {@link ManualRowResize} plugin before rendering the table with modified row sizes. This hook is\n * fired when {@link Options#manualRowResize} option is enabled.\n *\n * @event Hooks#beforeRowResize\n * @param {Number} currentRow Visual index of the resized row.\n * @param {Number} newSize Calculated new row height.\n * @param {Boolean} isDoubleClick Flag that determines whether there was a double-click.\n * @returns {Number} Returns the new row size or `undefined` if row size should be calculated automatically.\n */\n'beforeRowResize',\n\n/**\n * Fired by {@link ManualRowResize} plugin after rendering the table with modified row sizes. This hook is\n * fired when {@link Options#manualRowResize} option is enabled.\n *\n * @event Hooks#afterRowResize\n * @param {Number} currentRow Visual index of the resized row.\n * @param {Number} newSize Calculated new row height.\n * @param {Boolean} isDoubleClick Flag that determines whether there was a double-click.\n */\n'afterRowResize',\n\n/**\n * Fired after getting the column header renderers.\n *\n * @event Hooks#afterGetColumnHeaderRenderers\n * @param {Function[]} renderers An array of the column header renderers.\n */\n'afterGetColumnHeaderRenderers',\n\n/**\n * Fired after getting the row header renderers.\n *\n * @event Hooks#afterGetRowHeaderRenderers\n * @param {Function[]} renderers An array of the row header renderers.\n */\n'afterGetRowHeaderRenderers',\n\n/**\n * Fired before applying stretched column width to column.\n *\n * @event Hooks#beforeStretchingColumnWidth\n * @param {Number} stretchedWidth Calculated width.\n * @param {Number} column Visual column index.\n * @returns {Number} Returns new width which will be applied to the column element.\n */\n'beforeStretchingColumnWidth',\n\n/**\n * Fired by {@link Filters} plugin before applying [filtering]{@link http://docs.handsontable.com/pro/demo-filtering.html}. This hook is fired when\n * {@link Options#filters} option is enabled.\n *\n * @pro\n * @event Hooks#beforeFilter\n * @param {Object[]} conditionsStack An array of objects with added formulas.\n * ```js\n * // Example format of the conditionsStack argument:\n * [\n * {\n * column: 2,\n * conditions: [\n * {name: 'begins_with', args: [['S']]}\n * ],\n * operation: 'conjunction'\n * },\n * {\n * column: 4,\n * conditions: [\n * {name: 'not_empty', args: []}\n * ],\n * operation: 'conjunction'\n * },\n * ]\n * ```\n * @returns {Boolean} If hook returns `false` value then filtering won't be applied on the UI side (server-side filtering).\n */\n'beforeFilter',\n\n/**\n * Fired by {@link Filters} plugin after applying [filtering]{@link http://docs.handsontable.com/pro/demo-filtering.html}. This hook is fired when\n * {@link Options#filters} option is enabled.\n *\n * @pro\n * @event Hooks#afterFilter\n * @param {Object[]} conditionsStack An array of objects with added conditions.\n * ```js\n * // Example format of the conditionsStack argument:\n * [\n * {\n * column: 2,\n * conditions: [\n * {name: 'begins_with', args: [['S']]}\n * ],\n * operation: 'conjunction'\n * },\n * {\n * column: 4,\n * conditions: [\n * {name: 'not_empty', args: []}\n * ],\n * operation: 'conjunction'\n * },\n * ]\n * ```\n */\n'afterFilter',\n\n/**\n * Fired while retrieving the column header height.\n *\n * @event Hooks#modifyColumnHeaderHeight\n */\n'modifyColumnHeaderHeight',\n\n/**\n * Fired by {@link UndoRedo} plugin before the undo action. Contains information about the action that is being undone.\n * This hook is fired when {@link Options#undo} option is enabled.\n *\n * @event Hooks#beforeUndo\n * @param {Object} action The action object. Contains information about the action being undone. The `actionType`\n * property of the object specifies the type of the action in a String format. (e.g. `'remove_row'`).\n */\n'beforeUndo',\n\n/**\n * Fired by {@link UndoRedo} plugin after the undo action. Contains information about the action that is being undone.\n * This hook is fired when {@link Options#undo} option is enabled.\n *\n * @event Hooks#afterUndo\n * @param {Object} action The action object. Contains information about the action being undone. The `actionType`\n * property of the object specifies the type of the action in a String format. (e.g. `'remove_row'`).\n */\n'afterUndo',\n\n/**\n * Fired by {@link UndoRedo} plugin before the redo action. Contains information about the action that is being redone.\n * This hook is fired when {@link Options#undo} option is enabled.\n *\n * @event Hooks#beforeRedo\n * @param {Object} action The action object. Contains information about the action being redone. The `actionType`\n * property of the object specifies the type of the action in a String format (e.g. `'remove_row'`).\n */\n'beforeRedo',\n\n/**\n * Fired by {@link UndoRedo} plugin after the redo action. Contains information about the action that is being redone.\n * This hook is fired when {@link Options#undo} option is enabled.\n *\n * @event Hooks#afterRedo\n * @param {Object} action The action object. Contains information about the action being redone. The `actionType`\n * property of the object specifies the type of the action in a String format (e.g. `'remove_row'`).\n */\n'afterRedo',\n\n/**\n * Fired while retrieving the row header width.\n *\n * @event Hooks#modifyRowHeaderWidth\n * @param {Number} rowHeaderWidth Row header width.\n */\n'modifyRowHeaderWidth',\n\n/**\n * Fired from the `populateFromArray` method during the `autofill` process. Fired for each \"autofilled\" cell individually.\n *\n * @event Hooks#beforeAutofillInsidePopulate\n * @param {Object} index Object containing `row` and `col` properties, defining the number of rows/columns from the initial cell of the autofill.\n * @param {String} direction Declares the direction of the autofill. Possible values: `up`, `down`, `left`, `right`.\n * @param {Array[]} input Contains an array of rows with data being used in the autofill.\n * @param {Array} deltas The deltas array passed to the `populateFromArray` method.\n */\n'beforeAutofillInsidePopulate',\n\n/**\n * Fired when the start of the selection is being modified (e.g. moving the selection with the arrow keys).\n *\n * @event Hooks#modifyTransformStart\n * @param {CellCoords} delta Cell coords object declaring the delta of the new selection relative to the previous one.\n */\n'modifyTransformStart',\n\n/**\n * Fired when the end of the selection is being modified (e.g. moving the selection with the arrow keys).\n *\n * @event Hooks#modifyTransformEnd\n * @param {CellCoords} delta Cell coords object declaring the delta of the new selection relative to the previous one.\n */\n'modifyTransformEnd',\n\n/**\n * Fired after the start of the selection is being modified (e.g. moving the selection with the arrow keys).\n *\n * @event Hooks#afterModifyTransformStart\n * @param {CellCoords} coords Coords of the freshly selected cell.\n * @param {Number} rowTransformDir `-1` if trying to select a cell with a negative row index. `0` otherwise.\n * @param {Number} colTransformDir `-1` if trying to select a cell with a negative column index. `0` otherwise.\n */\n'afterModifyTransformStart',\n\n/**\n * Fired after the end of the selection is being modified (e.g. moving the selection with the arrow keys).\n *\n * @event Hooks#afterModifyTransformEnd\n * @param {CellCoords} coords Visual coords of the freshly selected cell.\n * @param {Number} rowTransformDir `-1` if trying to select a cell with a negative row index. `0` otherwise.\n * @param {Number} colTransformDir `-1` if trying to select a cell with a negative column index. `0` otherwise.\n */\n'afterModifyTransformEnd',\n\n/**\n * Fired inside the `viewportRowCalculatorOverride` method. Allows modifying the row calculator parameters.\n *\n * @event Hooks#afterViewportRowCalculatorOverride\n * @param {Object} calc The row calculator.\n */\n'afterViewportRowCalculatorOverride',\n\n/**\n * Fired inside the `viewportColumnCalculatorOverride` method. Allows modifying the row calculator parameters.\n *\n * @event Hooks#afterViewportColumnCalculatorOverride\n * @param {Object} calc The row calculator.\n */\n'afterViewportColumnCalculatorOverride',\n\n/**\n * Fired after initializing all the plugins.\n *\n * @event Hooks#afterPluginsInitialized\n */\n'afterPluginsInitialized',\n\n/**\n * Used to skip the length cache calculation for a defined period of time.\n *\n * @event Hooks#skipLengthCache\n * @param {Number} delay The delay in milliseconds.\n */\n'skipLengthCache',\n\n/**\n * Fired by {@link TrimRows} plugin after trimming rows. This hook is fired when {@link Options#trimRows} option is enabled.\n *\n * @pro\n * @event Hooks#afterTrimRow\n * @param {Number[]} rows Physical indexes of trimmed rows.\n */\n'afterTrimRow',\n\n/**\n * Fired by {@link TrimRows} plugin after untrimming rows. This hook is fired when {@link Options#trimRows} option is enabled.\n *\n * @pro\n * @event Hooks#afterUntrimRow\n * @param {Number[]} rows Physical indexes of untrimmed rows.\n */\n'afterUntrimRow',\n\n/**\n * Fired by {@link DropdownMenu} plugin before opening the dropdown menu. This hook is fired when {@link Options#dropdownMenu}\n * option is enabled.\n *\n * @pro\n * @event Hooks#beforeDropdownMenuShow\n * @param {DropdownMenu} dropdownMenu The DropdownMenu instance.\n */\n'beforeDropdownMenuShow',\n\n/**\n * Fired by {@link DropdownMenu} plugin after opening the Dropdown Menu. This hook is fired when {@link Options#dropdownMenu}\n * option is enabled.\n *\n * @pro\n * @event Hooks#afterDropdownMenuShow\n * @param {DropdownMenu} dropdownMenu The DropdownMenu instance.\n */\n'afterDropdownMenuShow',\n\n/**\n * Fired by {@link DropdownMenu} plugin after hiding the Dropdown Menu. This hook is fired when {@link Options#dropdownMenu}\n * option is enabled.\n *\n * @pro\n * @event Hooks#afterDropdownMenuHide\n * @param {DropdownMenu} instance The DropdownMenu instance.\n */\n'afterDropdownMenuHide',\n\n/**\n * Fired by {@link HiddenRows} plugin to check whether the provided row index is hidden. This hook is fired when\n * {@link Options#hiddenRows} option is enabled.\n *\n * @pro\n * @event Hooks#hiddenRow\n * @param {Number} row The visual row index in question.\n */\n'hiddenRow',\n\n/**\n * Fired by {@link HiddenColumns} plugin to check whether the provided column index is hidden. This hook is fired when\n * {@link Options#hiddenColumns} option is enabled.\n *\n * @pro\n * @event Hooks#hiddenColumn\n * @param {Number} column The visual column index in question.\n */\n'hiddenColumn',\n\n/**\n * Fired by {@link NestedRows} plugin before adding a children to the NestedRows structure. This hook is fired when\n * {@link Options#nestedRows} option is enabled.\n *\n * @pro\n * @event Hooks#beforeAddChild\n * @param {Object} parent The parent object.\n * @param {Object|undefined} element The element added as a child. If `undefined`, a blank child was added.\n * @param {Number|undefined} index The index within the parent where the new child was added. If `undefined`, the element was added as the last child.\n */\n'beforeAddChild',\n\n/**\n * Fired by {@link NestedRows} plugin after adding a children to the NestedRows structure. This hook is fired when\n * {@link Options#nestedRows} option is enabled.\n *\n * @pro\n * @event Hooks#afterAddChild\n * @param {Object} parent The parent object.\n * @param {Object|undefined} element The element added as a child. If `undefined`, a blank child was added.\n * @param {Number|undefined} index The index within the parent where the new child was added. If `undefined`, the element was added as the last child.\n */\n'afterAddChild',\n\n/**\n * Fired by {@link NestedRows} plugin before detaching a child from its parent. This hook is fired when\n * {@link Options#nestedRows} option is enabled.\n *\n * @pro\n * @event Hooks#beforeDetachChild\n * @param {Object} parent An object representing the parent from which the element is to be detached.\n * @param {Object} element The detached element.\n */\n'beforeDetachChild',\n\n/**\n * Fired by {@link NestedRows} plugin after detaching a child from its parent. This hook is fired when\n * {@link Options#nestedRows} option is enabled.\n *\n * @pro\n * @event Hooks#afterDetachChild\n * @param {Object} parent An object representing the parent from which the element was detached.\n * @param {Object} element The detached element.\n */\n'afterDetachChild',\n\n/**\n * Fired after the editor is opened and rendered.\n *\n * @event Hooks#afterBeginEditing\n * @param {Number} row Visual row index of the edited cell.\n * @param {Number} column Visual column index of the edited cell.\n */\n'afterBeginEditing',\n\n/**\n * Fired by {@link MergeCells} plugin before cell merging. This hook is fired when {@link Options#mergeCells}\n * option is enabled.\n *\n * @event Hooks#beforeMergeCells\n * @param {CellRange} cellRange Selection cell range.\n * @param {Boolean} [auto=false] `true` if called automatically by the plugin.\n */\n'beforeMergeCells',\n\n/**\n * Fired by {@link MergeCells} plugin after cell merging. This hook is fired when {@link Options#mergeCells}\n * option is enabled.\n *\n * @event Hooks#afterMergeCells\n * @param {CellRange} cellRange Selection cell range.\n * @param {Object} mergeParent The parent collection of the provided cell range.\n * @param {Boolean} [auto=false] `true` if called automatically by the plugin.\n */\n'afterMergeCells',\n\n/**\n * Fired by {@link MergeCells} plugin before unmerging the cells. This hook is fired when {@link Options#mergeCells}\n * option is enabled.\n *\n * @event Hooks#beforeUnmergeCells\n * @param {CellRange} cellRange Selection cell range.\n * @param {Boolean} [auto=false] `true` if called automatically by the plugin.\n */\n'beforeUnmergeCells',\n\n/**\n * Fired by {@link MergeCells} plugin after unmerging the cells. This hook is fired when {@link Options#mergeCells}\n * option is enabled.\n *\n * @event Hooks#afterUnmergeCells\n * @param {CellRange} cellRange Selection cell range.\n * @param {Boolean} [auto=false] `true` if called automatically by the plugin.\n */\n'afterUnmergeCells',\n\n/**\n * Fired after the table was switched into listening mode. This allows Handsontable to capture keyboard events and\n * respond in the right way.\n *\n * @event Hooks#afterListen\n */\n'afterListen',\n\n/**\n * Fired after the table was switched off from the listening mode. This makes the Handsontable inert for any\n * keyboard events.\n *\n * @event Hooks#afterUnlisten\n */\n'afterUnlisten'];\n\nvar Hooks = function () {\n _createClass(Hooks, null, [{\n key: 'getSingleton',\n value: function getSingleton() {\n return getGlobalSingleton();\n }\n\n /**\n *\n */\n\n }]);\n\n function Hooks() {\n _classCallCheck(this, Hooks);\n\n this.globalBucket = this.createEmptyBucket();\n }\n\n /**\n * Returns a new object with empty handlers related to every registered hook name.\n *\n * @returns {Object} The empty bucket object.\n *\n * @example\n * ```js\n * Handsontable.hooks.createEmptyBucket();\n * // Results:\n * {\n * ...\n * afterCreateCol: [],\n * afterCreateRow: [],\n * beforeInit: [],\n * ...\n * }\n * ```\n */\n\n\n _createClass(Hooks, [{\n key: 'createEmptyBucket',\n value: function createEmptyBucket() {\n var bucket = Object.create(null);\n\n // eslint-disable-next-line no-return-assign\n (0, _array.arrayEach)(REGISTERED_HOOKS, function (hook) {\n return bucket[hook] = [];\n });\n\n return bucket;\n }\n\n /**\n * Get hook bucket based on the context of the object or if argument is `undefined`, get the global hook bucket.\n *\n * @param {Object} [context=null] A Handsontable instance.\n * @returns {Object} Returns a global or Handsontable instance bucket.\n */\n\n }, {\n key: 'getBucket',\n value: function getBucket() {\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n if (context) {\n if (!context.pluginHookBucket) {\n context.pluginHookBucket = this.createEmptyBucket();\n }\n\n return context.pluginHookBucket;\n }\n\n return this.globalBucket;\n }\n\n /**\n * Adds a listener (globally or locally) to a specified hook name.\n * If the `context` parameter is provided, the hook will be added only to the instance it references.\n * Otherwise, the callback will be used everytime the hook fires on any Handsontable instance.\n * You can provide an array of callback functions as the `callback` argument, this way they will all be fired\n * once the hook is triggered.\n *\n * @see Core#addHook\n * @param {String} key Hook name.\n * @param {Function|Array} callback Callback function or an array of functions.\n * @param {Object} [context=null] The context for the hook callback to be added - a Handsontable instance or leave empty.\n * @returns {Hooks} Instance of Hooks.\n *\n * @example\n * ```js\n * // single callback, added locally\n * Handsontable.hooks.add('beforeInit', myCallback, hotInstance);\n *\n * // single callback, added globally\n * Handsontable.hooks.add('beforeInit', myCallback);\n *\n * // multiple callbacks, added locally\n * Handsontable.hooks.add('beforeInit', [myCallback, anotherCallback], hotInstance);\n *\n * // multiple callbacks, added globally\n * Handsontable.hooks.add('beforeInit', [myCallback, anotherCallback]);\n * ```\n */\n\n }, {\n key: 'add',\n value: function add(key, callback) {\n var _this = this;\n\n var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (Array.isArray(callback)) {\n (0, _array.arrayEach)(callback, function (c) {\n return _this.add(key, c, context);\n });\n } else {\n var bucket = this.getBucket(context);\n\n if (typeof bucket[key] === 'undefined') {\n this.register(key);\n bucket[key] = [];\n }\n callback.skip = false;\n\n if (bucket[key].indexOf(callback) === -1) {\n // only add a hook if it has not already been added (adding the same hook twice is now silently ignored)\n var foundInitialHook = false;\n\n if (callback.initialHook) {\n (0, _array.arrayEach)(bucket[key], function (cb, i) {\n if (cb.initialHook) {\n bucket[key][i] = callback;\n foundInitialHook = true;\n\n return false;\n }\n });\n }\n\n if (!foundInitialHook) {\n bucket[key].push(callback);\n }\n }\n }\n\n return this;\n }\n\n /**\n * Adds a listener to a specified hook. After the hook runs this listener will be automatically removed from the bucket.\n *\n * @see Core#addHookOnce\n * @param {String} key Hook/Event name.\n * @param {Function|Array} callback Callback function.\n * @param {Object} [context=null] A Handsontable instance.\n *\n * @example\n * ```js\n * Handsontable.hooks.once('beforeInit', myCallback, hotInstance);\n * ```\n */\n\n }, {\n key: 'once',\n value: function once(key, callback) {\n var _this2 = this;\n\n var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (Array.isArray(callback)) {\n (0, _array.arrayEach)(callback, function (c) {\n return _this2.once(key, c, context);\n });\n } else {\n callback.runOnce = true;\n this.add(key, callback, context);\n }\n }\n\n /**\n * Removes a listener from a hook with a given name. If the `context` argument is provided, it removes a listener from a local hook assigned to the given Handsontable instance.\n *\n * @see Core#removeHook\n * @param {String} key Hook/Event name.\n * @param {Function} callback Callback function (needs the be the function that was previously added to the hook).\n * @param {Object} [context=null] Handsontable instance.\n * @return {Boolean} Returns `true` if hook was removed, `false` otherwise.\n *\n * @example\n * ```js\n * Handsontable.hooks.remove('beforeInit', myCallback);\n * ```\n */\n\n }, {\n key: 'remove',\n value: function remove(key, callback) {\n var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n var bucket = this.getBucket(context);\n\n if (typeof bucket[key] !== 'undefined') {\n if (bucket[key].indexOf(callback) >= 0) {\n callback.skip = true;\n\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Checks whether there are any registered listeners for the provided hook name.\n * If the `context` parameter is provided, it only checks for listeners assigned to the given Handsontable instance.\n *\n * @param {String} key Hook name.\n * @param {Object} [context=null] A Handsontable instance.\n * @returns {Boolean} `true` for success, `false` otherwise.\n */\n\n }, {\n key: 'has',\n value: function has(key) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n var bucket = this.getBucket(context);\n\n return !!(bucket[key] !== void 0 && bucket[key].length);\n }\n\n /**\n * Runs all local and global callbacks assigned to the hook identified by the `key` parameter.\n * It returns either a return value from the last called callback or the first parameter (`p1`) passed to the `run` function.\n *\n * @see Core#runHooks\n * @param {Object} context Handsontable instance.\n * @param {String} key Hook/Event name.\n * @param {*} [p1] Parameter to be passed as an argument to the callback function.\n * @param {*} [p2] Parameter to be passed as an argument to the callback function.\n * @param {*} [p3] Parameter to be passed as an argument to the callback function.\n * @param {*} [p4] Parameter to be passed as an argument to the callback function.\n * @param {*} [p5] Parameter to be passed as an argument to the callback function.\n * @param {*} [p6] Parameter to be passed as an argument to the callback function.\n * @returns {*} Either a return value from the last called callback or `p1`.\n *\n * @example\n * ```js\n * Handsontable.hooks.run(hot, 'beforeInit');\n * ```\n */\n\n }, {\n key: 'run',\n value: function run(context, key, p1, p2, p3, p4, p5, p6) {\n {\n var globalHandlers = this.globalBucket[key];\n var length = globalHandlers ? globalHandlers.length : 0;\n var index = 0;\n\n if (length) {\n // Do not optimise this loop with arrayEach or arrow function! If you do You'll decrease perf because of GC.\n while (index < length) {\n if (!globalHandlers[index] || globalHandlers[index].skip) {\n index += 1;\n /* eslint-disable no-continue */\n continue;\n }\n // performance considerations - http://jsperf.com/call-vs-apply-for-a-plugin-architecture\n var res = globalHandlers[index].call(context, p1, p2, p3, p4, p5, p6);\n\n if (res !== void 0) {\n // eslint-disable-next-line no-param-reassign\n p1 = res;\n }\n if (globalHandlers[index] && globalHandlers[index].runOnce) {\n this.remove(key, globalHandlers[index]);\n }\n\n index += 1;\n }\n }\n }\n {\n var localHandlers = this.getBucket(context)[key];\n var _length = localHandlers ? localHandlers.length : 0;\n var _index = 0;\n\n if (_length) {\n // Do not optimise this loop with arrayEach or arrow function! If you do You'll decrease perf because of GC.\n while (_index < _length) {\n if (!localHandlers[_index] || localHandlers[_index].skip) {\n _index += 1;\n /* eslint-disable no-continue */\n continue;\n }\n // performance considerations - http://jsperf.com/call-vs-apply-for-a-plugin-architecture\n var _res = localHandlers[_index].call(context, p1, p2, p3, p4, p5, p6);\n\n if (_res !== void 0) {\n // eslint-disable-next-line no-param-reassign\n p1 = _res;\n }\n if (localHandlers[_index] && localHandlers[_index].runOnce) {\n this.remove(key, localHandlers[_index], context);\n }\n\n _index += 1;\n }\n }\n }\n\n return p1;\n }\n\n /**\n * Destroy all listeners connected to the context. If no context is provided, the global listeners will be destroyed.\n *\n * @param {Object} [context=null] A Handsontable instance.\n * @example\n * ```js\n * // destroy the global listeners\n * Handsontable.hooks.destroy();\n *\n * // destroy the local listeners\n * Handsontable.hooks.destroy(hotInstance);\n * ```\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n // eslint-disable-next-line no-return-assign\n (0, _object.objectEach)(this.getBucket(context), function (value, key, bucket) {\n return bucket[key].length = 0;\n });\n }\n\n /**\n * Registers a hook name (adds it to the list of the known hook names). Used by plugins.\n * It is not necessary to call register, but if you use it, your plugin hook will be used returned by\n * the `getRegistered` method. (which itself is used in the demo http://docs.handsontable.com/tutorial-callbacks.html).\n *\n * @param key {String} The hook name.\n *\n * @example\n * ```js\n * Handsontable.hooks.register('myHook');\n * ```\n */\n\n }, {\n key: 'register',\n value: function register(key) {\n if (!this.isRegistered(key)) {\n REGISTERED_HOOKS.push(key);\n }\n }\n\n /**\n * Deregisters a hook name (removes it from the list of known hook names).\n *\n * @param key {String} Hook name.\n *\n * @example\n * ```js\n * Handsontable.hooks.deregister('myHook');\n * ```\n */\n\n }, {\n key: 'deregister',\n value: function deregister(key) {\n if (this.isRegistered(key)) {\n REGISTERED_HOOKS.splice(REGISTERED_HOOKS.indexOf(key), 1);\n }\n }\n\n /**\n * Returns a boolean depending on if a hook by such name has been registered.\n *\n * @param key {String} Hook name.\n * @returns {Boolean} `true` for success, `false` otherwise.\n *\n * @example\n * ```js\n * Handsontable.hooks.isRegistered('beforeInit');\n *\n * // Results:\n * true\n * ```\n */\n\n }, {\n key: 'isRegistered',\n value: function isRegistered(key) {\n return REGISTERED_HOOKS.indexOf(key) >= 0;\n }\n\n /**\n * Returns an array of registered hooks.\n *\n * @returns {Array} An array of registered hooks.\n *\n * @example\n * ```js\n * Handsontable.hooks.getRegistered();\n *\n * // Results:\n * [\n * ...\n * 'beforeInit',\n * 'beforeRender',\n * 'beforeSetRangeEnd',\n * 'beforeDrawBorders',\n * 'beforeChange',\n * ...\n * ]\n * ```\n */\n\n }, {\n key: 'getRegistered',\n value: function getRegistered() {\n return REGISTERED_HOOKS;\n }\n }]);\n\n return Hooks;\n}();\n\nvar globalSingleton = new Hooks();\n\nfunction getGlobalSingleton() {\n return globalSingleton;\n}\n\nexports.default = Hooks;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.getRegisteredEditors = exports.getRegisteredEditorNames = exports.hasEditor = exports.getEditorInstance = exports.getEditor = exports.registerEditor = undefined;\nexports.RegisteredEditor = RegisteredEditor;\nexports._getEditorInstance = _getEditorInstance;\n\nvar _staticRegister2 = __webpack_require__(38);\n\nvar _staticRegister3 = _interopRequireDefault(_staticRegister2);\n\nvar _pluginHooks = __webpack_require__(16);\n\nvar _pluginHooks2 = _interopRequireDefault(_pluginHooks);\n\nvar _baseEditor = __webpack_require__(55);\n\nvar _baseEditor2 = _interopRequireDefault(_baseEditor);\n\nvar _autocompleteEditor = __webpack_require__(190);\n\nvar _autocompleteEditor2 = _interopRequireDefault(_autocompleteEditor);\n\nvar _checkboxEditor = __webpack_require__(235);\n\nvar _checkboxEditor2 = _interopRequireDefault(_checkboxEditor);\n\nvar _dateEditor = __webpack_require__(236);\n\nvar _dateEditor2 = _interopRequireDefault(_dateEditor);\n\nvar _dropdownEditor = __webpack_require__(239);\n\nvar _dropdownEditor2 = _interopRequireDefault(_dropdownEditor);\n\nvar _handsontableEditor = __webpack_require__(191);\n\nvar _handsontableEditor2 = _interopRequireDefault(_handsontableEditor);\n\nvar _numericEditor = __webpack_require__(240);\n\nvar _numericEditor2 = _interopRequireDefault(_numericEditor);\n\nvar _passwordEditor = __webpack_require__(241);\n\nvar _passwordEditor2 = _interopRequireDefault(_passwordEditor);\n\nvar _selectEditor = __webpack_require__(242);\n\nvar _selectEditor2 = _interopRequireDefault(_selectEditor);\n\nvar _textEditor = __webpack_require__(59);\n\nvar _textEditor2 = _interopRequireDefault(_textEditor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Utility to register editors and common namespace for keeping reference to all editor classes\n */\nvar registeredEditorClasses = new WeakMap();\n\nvar _staticRegister = (0, _staticRegister3.default)('editors'),\n register = _staticRegister.register,\n getItem = _staticRegister.getItem,\n hasItem = _staticRegister.hasItem,\n getNames = _staticRegister.getNames,\n getValues = _staticRegister.getValues;\n\n_register('base', _baseEditor2.default);\n_register('autocomplete', _autocompleteEditor2.default);\n_register('checkbox', _checkboxEditor2.default);\n_register('date', _dateEditor2.default);\n_register('dropdown', _dropdownEditor2.default);\n_register('handsontable', _handsontableEditor2.default);\n_register('numeric', _numericEditor2.default);\n_register('password', _passwordEditor2.default);\n_register('select', _selectEditor2.default);\n_register('text', _textEditor2.default);\n\nfunction RegisteredEditor(editorClass) {\n var instances = {};\n var Clazz = editorClass;\n\n this.getConstructor = function () {\n return editorClass;\n };\n\n this.getInstance = function (hotInstance) {\n if (!(hotInstance.guid in instances)) {\n instances[hotInstance.guid] = new Clazz(hotInstance);\n }\n\n return instances[hotInstance.guid];\n };\n\n _pluginHooks2.default.getSingleton().add('afterDestroy', function () {\n instances[this.guid] = null;\n });\n}\n\n/**\n * Returns instance (singleton) of editor class.\n *\n * @param {String} name Name of an editor under which it has been stored.\n * @param {Object} hotInstance Instance of Handsontable.\n * @returns {Function} Returns instance of editor.\n */\nfunction _getEditorInstance(name, hotInstance) {\n var editor = void 0;\n\n if (typeof name === 'function') {\n if (!registeredEditorClasses.get(name)) {\n _register(null, name);\n }\n editor = registeredEditorClasses.get(name);\n } else if (typeof name === 'string') {\n editor = getItem(name);\n } else {\n throw Error('Only strings and functions can be passed as \"editor\" parameter');\n }\n\n if (!editor) {\n throw Error('No editor registered under name \"' + name + '\"');\n }\n\n return editor.getInstance(hotInstance);\n}\n\n/**\n * Retrieve editor class.\n *\n * @param {String} name Editor identification.\n * @returns {Function} Returns editor class.\n */\nfunction _getItem(name) {\n if (!hasItem(name)) {\n throw Error('No registered editor found under \"' + name + '\" name');\n }\n\n return getItem(name).getConstructor();\n}\n\n/**\n * Register editor class under specified name.\n *\n * @param {String} name Editor identification.\n * @param {Function} editorClass Editor class.\n */\nfunction _register(name, editorClass) {\n var editorWrapper = new RegisteredEditor(editorClass);\n\n if (typeof name === 'string') {\n register(name, editorWrapper);\n }\n registeredEditorClasses.set(editorClass, editorWrapper);\n}\n\nexports.registerEditor = _register;\nexports.getEditor = _getItem;\nexports.getEditorInstance = _getEditorInstance;\nexports.hasEditor = hasItem;\nexports.getRegisteredEditorNames = getNames;\nexports.getRegisteredEditors = getValues;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(9);\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.normalizeSelection = normalizeSelection;\nexports.isSeparator = isSeparator;\nexports.hasSubMenu = hasSubMenu;\nexports.isDisabled = isDisabled;\nexports.isSelectionDisabled = isSelectionDisabled;\nexports.getValidSelection = getValidSelection;\nexports.prepareVerticalAlignClass = prepareVerticalAlignClass;\nexports.prepareHorizontalAlignClass = prepareHorizontalAlignClass;\nexports.getAlignmentClasses = getAlignmentClasses;\nexports.align = align;\nexports.checkSelectionConsistency = checkSelectionConsistency;\nexports.markLabelAsSelected = markLabelAsSelected;\nexports.isItemHidden = isItemHidden;\nexports.filterSeparators = filterSeparators;\n\nvar _array = __webpack_require__(2);\n\nvar _element = __webpack_require__(0);\n\nvar _separator = __webpack_require__(95);\n\nfunction normalizeSelection(selRanges) {\n return (0, _array.arrayMap)(selRanges, function (range) {\n return {\n start: range.getTopLeftCorner(),\n end: range.getBottomRightCorner()\n };\n });\n}\n\nfunction isSeparator(cell) {\n return (0, _element.hasClass)(cell, 'htSeparator');\n}\n\nfunction hasSubMenu(cell) {\n return (0, _element.hasClass)(cell, 'htSubmenu');\n}\n\nfunction isDisabled(cell) {\n return (0, _element.hasClass)(cell, 'htDisabled');\n}\n\nfunction isSelectionDisabled(cell) {\n return (0, _element.hasClass)(cell, 'htSelectionDisabled');\n}\n\nfunction getValidSelection(hot) {\n var selected = hot.getSelected();\n\n if (!selected) {\n return null;\n }\n if (selected[0] < 0) {\n return null;\n }\n\n return selected;\n}\n\nfunction prepareVerticalAlignClass(className, alignment) {\n if (className.indexOf(alignment) !== -1) {\n return className;\n }\n\n var replacedClassName = className.replace('htTop', '').replace('htMiddle', '').replace('htBottom', '').replace(' ', '');\n\n return replacedClassName + ' ' + alignment;\n}\n\nfunction prepareHorizontalAlignClass(className, alignment) {\n if (className.indexOf(alignment) !== -1) {\n return className;\n }\n var replacedClassName = className.replace('htLeft', '').replace('htCenter', '').replace('htRight', '').replace('htJustify', '').replace(' ', '');\n\n return replacedClassName + ' ' + alignment;\n}\n\nfunction getAlignmentClasses(ranges, callback) {\n var classes = {};\n\n (0, _array.arrayEach)(ranges, function (_ref) {\n var from = _ref.from,\n to = _ref.to;\n\n for (var row = from.row; row <= to.row; row++) {\n for (var col = from.col; col <= to.col; col++) {\n if (!classes[row]) {\n classes[row] = [];\n }\n classes[row][col] = callback(row, col);\n }\n }\n });\n\n return classes;\n}\n\nfunction align(ranges, type, alignment, cellDescriptor, propertySetter) {\n (0, _array.arrayEach)(ranges, function (_ref2) {\n var from = _ref2.from,\n to = _ref2.to;\n\n if (from.row === to.row && from.col === to.col) {\n applyAlignClassName(from.row, from.col, type, alignment, cellDescriptor, propertySetter);\n } else {\n for (var row = from.row; row <= to.row; row++) {\n for (var col = from.col; col <= to.col; col++) {\n applyAlignClassName(row, col, type, alignment, cellDescriptor, propertySetter);\n }\n }\n }\n });\n}\n\nfunction applyAlignClassName(row, col, type, alignment, cellDescriptor, propertySetter) {\n var cellMeta = cellDescriptor(row, col);\n var className = alignment;\n\n if (cellMeta.className) {\n if (type === 'vertical') {\n className = prepareVerticalAlignClass(cellMeta.className, alignment);\n } else {\n className = prepareHorizontalAlignClass(cellMeta.className, alignment);\n }\n }\n\n propertySetter(row, col, 'className', className);\n}\n\nfunction checkSelectionConsistency(ranges, comparator) {\n var result = false;\n\n if (Array.isArray(ranges)) {\n (0, _array.arrayEach)(ranges, function (range) {\n range.forAll(function (row, col) {\n if (comparator(row, col)) {\n result = true;\n\n return false;\n }\n });\n\n return result;\n });\n }\n\n return result;\n}\n\nfunction markLabelAsSelected(label) {\n // workaround for https://github.com/handsontable/handsontable/issues/1946\n return '<span class=\"selected\">' + String.fromCharCode(10003) + '</span>' + label;\n}\n\nfunction isItemHidden(item, instance) {\n return !item.hidden || !(typeof item.hidden === 'function' && item.hidden.call(instance));\n}\n\nfunction shiftSeparators(items, separator) {\n var result = items.slice(0);\n\n for (var i = 0; i < result.length;) {\n if (result[i].name === separator) {\n result.shift();\n } else {\n break;\n }\n }\n return result;\n}\n\nfunction popSeparators(items, separator) {\n var result = items.slice(0);\n\n result.reverse();\n result = shiftSeparators(result, separator);\n result.reverse();\n\n return result;\n}\n\nfunction removeDuplicatedSeparators(items) {\n var result = [];\n\n (0, _array.arrayEach)(items, function (value, index) {\n if (index > 0) {\n if (result[result.length - 1].name !== value.name) {\n result.push(value);\n }\n } else {\n result.push(value);\n }\n });\n\n return result;\n}\n\nfunction filterSeparators(items) {\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _separator.KEY;\n\n var result = items.slice(0);\n\n result = shiftSeparators(result, separator);\n result = popSeparators(result, separator);\n result = removeDuplicatedSeparators(result);\n\n return result;\n}\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(18);\nvar IE8_DOM_DEFINE = __webpack_require__(100);\nvar toPrimitive = __webpack_require__(75);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(22) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.KEY_CODES = undefined;\nexports.isPrintableChar = isPrintableChar;\nexports.isMetaKey = isMetaKey;\nexports.isCtrlKey = isCtrlKey;\nexports.isCtrlMetaKey = isCtrlMetaKey;\nexports.isKey = isKey;\n\nvar _array = __webpack_require__(2);\n\nvar KEY_CODES = exports.KEY_CODES = {\n MOUSE_LEFT: 1,\n MOUSE_RIGHT: 3,\n MOUSE_MIDDLE: 2,\n BACKSPACE: 8,\n COMMA: 188,\n INSERT: 45,\n DELETE: 46,\n END: 35,\n ENTER: 13,\n ESCAPE: 27,\n CONTROL: 17,\n COMMAND_LEFT: 91,\n COMMAND_RIGHT: 93,\n COMMAND_FIREFOX: 224,\n ALT: 18,\n HOME: 36,\n PAGE_DOWN: 34,\n PAGE_UP: 33,\n PERIOD: 190,\n SPACE: 32,\n SHIFT: 16,\n CAPS_LOCK: 20,\n TAB: 9,\n ARROW_RIGHT: 39,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_DOWN: 40,\n F1: 112,\n F2: 113,\n F3: 114,\n F4: 115,\n F5: 116,\n F6: 117,\n F7: 118,\n F8: 119,\n F9: 120,\n F10: 121,\n F11: 122,\n F12: 123,\n A: 65,\n X: 88,\n C: 67,\n V: 86\n};\n\n/**\n * Returns true if keyCode represents a printable character.\n *\n * @param {Number} keyCode\n * @returns {Boolean}\n */\nfunction isPrintableChar(keyCode) {\n return keyCode === 32 || // space\n keyCode >= 48 && keyCode <= 57 || // 0-9\n keyCode >= 96 && keyCode <= 111 || // numpad\n keyCode >= 186 && keyCode <= 192 || // ;=,-./`\n keyCode >= 219 && keyCode <= 222 || // []{}\\|\"'\n keyCode >= 226 || // special chars (229 for Asian chars)\n keyCode >= 65 && keyCode <= 90; // a-z\n}\n\n/**\n * @param {Number} keyCode\n * @returns {Boolean}\n */\nfunction isMetaKey(keyCode) {\n var metaKeys = [KEY_CODES.ARROW_DOWN, KEY_CODES.ARROW_UP, KEY_CODES.ARROW_LEFT, KEY_CODES.ARROW_RIGHT, KEY_CODES.HOME, KEY_CODES.END, KEY_CODES.DELETE, KEY_CODES.BACKSPACE, KEY_CODES.F1, KEY_CODES.F2, KEY_CODES.F3, KEY_CODES.F4, KEY_CODES.F5, KEY_CODES.F6, KEY_CODES.F7, KEY_CODES.F8, KEY_CODES.F9, KEY_CODES.F10, KEY_CODES.F11, KEY_CODES.F12, KEY_CODES.TAB, KEY_CODES.PAGE_DOWN, KEY_CODES.PAGE_UP, KEY_CODES.ENTER, KEY_CODES.ESCAPE, KEY_CODES.SHIFT, KEY_CODES.CAPS_LOCK, KEY_CODES.ALT];\n\n return metaKeys.indexOf(keyCode) !== -1;\n}\n\n/**\n * Checks if passed key code is ctrl or cmd key. Depends on what OS the code runs it check key code based on\n * different meta key codes.\n *\n * @param {Number} keyCode Key code to check.\n * @returns {Boolean}\n */\nfunction isCtrlKey(keyCode) {\n var keys = [];\n\n if (window.navigator.platform.includes('Mac')) {\n keys.push(KEY_CODES.COMMAND_LEFT, KEY_CODES.COMMAND_RIGHT, KEY_CODES.COMMAND_FIREFOX);\n } else {\n keys.push(KEY_CODES.CONTROL);\n }\n\n return keys.includes(keyCode);\n}\n\n/**\n * Checks if passed key code is ctrl or cmd key. This helper checks if the key code matches to meta keys\n * regardless of the OS on which it is running.\n *\n * @param {Number} keyCode Key code to check.\n * @returns {Boolean}\n */\nfunction isCtrlMetaKey(keyCode) {\n return [KEY_CODES.CONTROL, KEY_CODES.COMMAND_LEFT, KEY_CODES.COMMAND_RIGHT, KEY_CODES.COMMAND_FIREFOX].includes(keyCode);\n}\n\n/**\n * @param {Number} keyCode\n * @param {String} baseCode\n * @returns {Boolean}\n */\nfunction isKey(keyCode, baseCode) {\n var keys = baseCode.split('|');\n var result = false;\n\n (0, _array.arrayEach)(keys, function (key) {\n if (keyCode === KEY_CODES[key]) {\n result = true;\n\n return false;\n }\n });\n\n return result;\n}\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(23)(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(77);\nvar defined = __webpack_require__(36);\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(60);\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(3);\nvar core = __webpack_require__(37);\nvar fails = __webpack_require__(23);\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(15);\nvar hide = __webpack_require__(29);\nvar has = __webpack_require__(27);\nvar SRC = __webpack_require__(50)('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(37).inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(20);\nvar createDesc = __webpack_require__(51);\nmodule.exports = __webpack_require__(22) ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(63);\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(36);\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar META = __webpack_require__(50)('meta');\nvar isObject = __webpack_require__(9);\nvar has = __webpack_require__(27);\nvar setDesc = __webpack_require__(20).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(23)(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.toUpperCaseFirst = toUpperCaseFirst;\nexports.equalsIgnoreCase = equalsIgnoreCase;\nexports.randomString = randomString;\nexports.isPercentValue = isPercentValue;\nexports.substitute = substitute;\nexports.stripTags = stripTags;\n\nvar _mixed = __webpack_require__(11);\n\n/**\n * Convert string to upper case first letter.\n *\n * @param {String} string String to convert.\n * @returns {String}\n */\nfunction toUpperCaseFirst(string) {\n return string[0].toUpperCase() + string.substr(1);\n}\n\n/**\n * Compare strings case insensitively.\n *\n * @param {...String} strings Strings to compare.\n * @returns {Boolean}\n */\nfunction equalsIgnoreCase() {\n var unique = [];\n\n for (var _len = arguments.length, strings = Array(_len), _key = 0; _key < _len; _key++) {\n strings[_key] = arguments[_key];\n }\n\n var length = strings.length;\n\n while (length) {\n length -= 1;\n var string = (0, _mixed.stringify)(strings[length]).toLowerCase();\n\n if (unique.indexOf(string) === -1) {\n unique.push(string);\n }\n }\n\n return unique.length === 1;\n}\n\n/**\n * Generates a random hex string. Used as namespace for Handsontable instance events.\n *\n * @return {String} Returns 16-long character random string (eq. `'92b1bfc74ec4'`).\n */\nfunction randomString() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n return s4() + s4() + s4() + s4();\n}\n\n/**\n * Checks if value is valid percent.\n *\n * @param {String} value\n * @returns {Boolean}\n */\nfunction isPercentValue(value) {\n return (/^([0-9][0-9]?%$)|(^100%$)/.test(value)\n );\n}\n\n/**\n * Substitute strings placed beetwen square brackets into value defined in `variables` object. String names defined in\n * square brackets must be the same as property name of `variables` object.\n *\n * @param {String} template Template string.\n * @param {Object} variables Object which contains all available values which can be injected into template.\n * @returns {String}\n */\nfunction substitute(template) {\n var variables = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return ('' + template).replace(/(?:\\\\)?\\[([^[\\]]+)]/g, function (match, name) {\n if (match.charAt(0) === '\\\\') {\n return match.substr(1, match.length - 1);\n }\n\n return variables[name] === void 0 ? '' : variables[name];\n });\n}\n\nvar STRIP_TAGS_REGEX = /<\\/?\\w+\\/?>|<\\w+[\\s|/][^>]*>/gi;\n\n/**\n * Strip any HTML tag from the string.\n *\n * @param {String} string String to cut HTML from.\n * @return {String}\n */\nfunction stripTags(string) {\n return ('' + string).replace(STRIP_TAGS_REGEX, '');\n}\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.getRegisteredValidators = exports.getRegisteredValidatorNames = exports.hasValidator = exports.getValidator = exports.registerValidator = undefined;\n\nvar _staticRegister2 = __webpack_require__(38);\n\nvar _staticRegister3 = _interopRequireDefault(_staticRegister2);\n\nvar _autocompleteValidator = __webpack_require__(251);\n\nvar _autocompleteValidator2 = _interopRequireDefault(_autocompleteValidator);\n\nvar _dateValidator = __webpack_require__(252);\n\nvar _dateValidator2 = _interopRequireDefault(_dateValidator);\n\nvar _numericValidator = __webpack_require__(253);\n\nvar _numericValidator2 = _interopRequireDefault(_numericValidator);\n\nvar _timeValidator = __webpack_require__(254);\n\nvar _timeValidator2 = _interopRequireDefault(_timeValidator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _staticRegister = (0, _staticRegister3.default)('validators'),\n register = _staticRegister.register,\n getItem = _staticRegister.getItem,\n hasItem = _staticRegister.hasItem,\n getNames = _staticRegister.getNames,\n getValues = _staticRegister.getValues;\n\nregister('autocomplete', _autocompleteValidator2.default);\nregister('date', _dateValidator2.default);\nregister('numeric', _numericValidator2.default);\nregister('time', _timeValidator2.default);\n\n/**\n * Retrieve validator function.\n *\n * @param {String} name Validator identification.\n * @returns {Function} Returns validator function.\n */\nfunction _getItem(name) {\n if (typeof name === 'function') {\n return name;\n }\n if (!hasItem(name)) {\n throw Error('No registered validator found under \"' + name + '\" name');\n }\n\n return getItem(name);\n}\n\nexports.registerValidator = register;\nexports.getValidator = _getItem;\nexports.hasValidator = hasItem;\nexports.getRegisteredValidatorNames = getNames;\nexports.getRegisteredValidators = getValues;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(101);\nvar enumBugKeys = __webpack_require__(80);\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = staticRegister;\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar collection = exports.collection = new Map();\n\nfunction staticRegister() {\n var namespace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'common';\n\n if (!collection.has(namespace)) {\n collection.set(namespace, new Map());\n }\n var subCollection = collection.get(namespace);\n\n /**\n * Register an item to the collection. If the item under the same was exist earlier then this item will be replaced with new one.\n *\n * @param {String} name Identification of the item.\n * @param {*} item Item to save in the collection.\n */\n function register(name, item) {\n subCollection.set(name, item);\n }\n\n /**\n * Retrieve the item from the collection.\n *\n * @param {String} name Identification of the item.\n * @returns {*} Returns item which was saved in the collection.\n */\n function getItem(name) {\n return subCollection.get(name);\n }\n\n /**\n * Check if item under specyfied name is exists.\n *\n * @param {String} name Identification of the item.\n * @returns {Boolean} Returns `true` or `false` depends on if element exists in the collection.\n */\n function hasItem(name) {\n return subCollection.has(name);\n }\n\n /**\n * Retrieve list of names registered from the collection.\n *\n * @returns {Array} Returns an array of strings with all names under which objects are stored.\n */\n function getNames() {\n return [].concat(_toConsumableArray(subCollection.keys()));\n }\n\n /**\n * Retrieve all registered values from the collection.\n *\n * @returns {Array} Returns an array with all values stored in the collection.\n */\n function getValues() {\n return [].concat(_toConsumableArray(subCollection.values()));\n }\n\n return {\n register: register,\n getItem: getItem,\n hasItem: hasItem,\n getNames: getNames,\n getValues: getValues\n };\n}\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.setBrowserMeta = setBrowserMeta;\nexports.isChrome = isChrome;\nexports.isEdge = isEdge;\nexports.isIE = isIE;\nexports.isIE8 = isIE8;\nexports.isIE9 = isIE9;\nexports.isMSBrowser = isMSBrowser;\nexports.isMobileBrowser = isMobileBrowser;\nexports.isSafari = isSafari;\n\nvar _object = __webpack_require__(1);\n\nvar tester = function tester(testerFunc) {\n var result = {\n value: false\n };\n result.test = function (ua, vendor) {\n result.value = testerFunc(ua, vendor);\n };\n\n return result;\n};\n\nvar browsers = {\n chrome: tester(function (ua, vendor) {\n return (/Chrome/.test(ua) && /Google/.test(vendor)\n );\n }),\n edge: tester(function (ua) {\n return (/Edge/.test(ua)\n );\n }),\n ie: tester(function (ua) {\n return (/Trident/.test(ua)\n );\n }),\n ie8: tester(function () {\n return !document.createTextNode('test').textContent;\n }),\n ie9: tester(function () {\n return !!document.documentMode;\n }),\n mobile: tester(function (ua) {\n return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(ua)\n );\n }),\n safari: tester(function (ua, vendor) {\n return (/Safari/.test(ua) && /Apple Computer/.test(vendor)\n );\n })\n};\n\nfunction setBrowserMeta() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === undefined ? navigator.userAgent : _ref$userAgent,\n _ref$vendor = _ref.vendor,\n vendor = _ref$vendor === undefined ? navigator.vendor : _ref$vendor;\n\n (0, _object.objectEach)(browsers, function (_ref2) {\n var test = _ref2.test;\n return void test(userAgent, vendor);\n });\n}\n\nsetBrowserMeta();\n\nfunction isChrome() {\n return browsers.chrome.value;\n}\n\nfunction isEdge() {\n return browsers.edge.value;\n}\n\nfunction isIE() {\n return browsers.ie.value;\n}\n\nfunction isIE8() {\n return browsers.ie8.value;\n}\n\nfunction isIE9() {\n return browsers.ie9.value;\n}\n\nfunction isMSBrowser() {\n return browsers.ie.value || browsers.edge.value;\n}\n\nfunction isMobileBrowser() {\n return browsers.mobile.value;\n}\n\nfunction isSafari() {\n return browsers.safari.value;\n}\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.requestAnimationFrame = requestAnimationFrame;\nexports.cancelAnimationFrame = cancelAnimationFrame;\nexports.isTouchSupported = isTouchSupported;\nexports.isWebComponentSupportedNatively = isWebComponentSupportedNatively;\nexports.hasCaptionProblem = hasCaptionProblem;\nexports.getComparisonFunction = getComparisonFunction;\n// https://gist.github.com/paulirish/1579671\nvar lastTime = 0;\nvar vendors = ['ms', 'moz', 'webkit', 'o'];\nvar _requestAnimationFrame = window.requestAnimationFrame;\nvar _cancelAnimationFrame = window.cancelAnimationFrame;\n\nfor (var x = 0; x < vendors.length && !_requestAnimationFrame; ++x) {\n _requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\n _cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\n}\n\nif (!_requestAnimationFrame) {\n _requestAnimationFrame = function _requestAnimationFrame(callback) {\n var currTime = new Date().getTime();\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n var id = window.setTimeout(function () {\n callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n\n return id;\n };\n}\n\nif (!_cancelAnimationFrame) {\n _cancelAnimationFrame = function _cancelAnimationFrame(id) {\n clearTimeout(id);\n };\n}\n\n/**\n * Polyfill for requestAnimationFrame\n *\n * @param {Function} callback\n * @returns {Number}\n */\nfunction requestAnimationFrame(callback) {\n return _requestAnimationFrame.call(window, callback);\n}\n\n/**\n * Polyfill for cancelAnimationFrame\n *\n * @param {Number} id\n */\nfunction cancelAnimationFrame(id) {\n _cancelAnimationFrame.call(window, id);\n}\n\nfunction isTouchSupported() {\n return 'ontouchstart' in window;\n}\n\n/**\n * Checks if browser is support web components natively\n *\n * @returns {Boolean}\n */\nfunction isWebComponentSupportedNatively() {\n var test = document.createElement('div');\n\n return !!(test.createShadowRoot && test.createShadowRoot.toString().match(/\\[native code\\]/));\n}\n\nvar _hasCaptionProblem = void 0;\n\nfunction detectCaptionProblem() {\n var TABLE = document.createElement('TABLE');\n TABLE.style.borderSpacing = 0;\n TABLE.style.borderWidth = 0;\n TABLE.style.padding = 0;\n var TBODY = document.createElement('TBODY');\n TABLE.appendChild(TBODY);\n TBODY.appendChild(document.createElement('TR'));\n TBODY.firstChild.appendChild(document.createElement('TD'));\n TBODY.firstChild.firstChild.innerHTML = '<tr><td>t<br>t</td></tr>';\n\n var CAPTION = document.createElement('CAPTION');\n CAPTION.innerHTML = 'c<br>c<br>c<br>c';\n CAPTION.style.padding = 0;\n CAPTION.style.margin = 0;\n TABLE.insertBefore(CAPTION, TBODY);\n\n document.body.appendChild(TABLE);\n _hasCaptionProblem = TABLE.offsetHeight < 2 * TABLE.lastChild.offsetHeight; // boolean\n document.body.removeChild(TABLE);\n}\n\nfunction hasCaptionProblem() {\n if (_hasCaptionProblem === void 0) {\n detectCaptionProblem();\n }\n\n return _hasCaptionProblem;\n}\n\nvar comparisonFunction = void 0;\n\n/**\n * Get string comparison function for sorting purposes. It supports multilingual string comparison base on Internationalization API.\n *\n * @param {String} [language]\n * @param {Object} [options]\n * @returns {*}\n */\nfunction getComparisonFunction(language) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (comparisonFunction) {\n return comparisonFunction;\n }\n\n if ((typeof Intl === 'undefined' ? 'undefined' : _typeof(Intl)) === 'object') {\n comparisonFunction = new Intl.Collator(language, options).compare;\n } else if (typeof String.prototype.localeCompare === 'function') {\n comparisonFunction = function comparisonFunction(a, b) {\n return ('' + a).localeCompare(b);\n };\n } else {\n comparisonFunction = function comparisonFunction(a, b) {\n if (a === b) {\n return 0;\n }\n\n return a > b ? -1 : 1;\n };\n }\n\n return comparisonFunction;\n}\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nvar _element = __webpack_require__(0);\n\nvar _object = __webpack_require__(1);\n\nvar _array = __webpack_require__(2);\n\nvar _eventManager = __webpack_require__(5);\n\nvar _eventManager2 = _interopRequireDefault(_eventManager);\n\nvar _core = __webpack_require__(181);\n\nvar _core2 = _interopRequireDefault(_core);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar registeredOverlays = {};\n\n/**\n * Creates an overlay over the original Walkontable instance. The overlay renders the clone of the original Walkontable\n * and (optionally) implements behavior needed for native horizontal and vertical scrolling.\n *\n * @class Overlay\n */\n\nvar Overlay = function () {\n _createClass(Overlay, null, [{\n key: 'registerOverlay',\n\n\n /**\n * Register overlay class.\n *\n * @param {String} type Overlay type, one of the CLONE_TYPES value\n * @param {Overlay} overlayClass Overlay class extended from base overlay class {@link Overlay}\n */\n value: function registerOverlay(type, overlayClass) {\n if (Overlay.CLONE_TYPES.indexOf(type) === -1) {\n throw new Error('Unsupported overlay (' + type + ').');\n }\n registeredOverlays[type] = overlayClass;\n }\n\n /**\n * Create new instance of overlay type.\n *\n * @param {String} type Overlay type, one of the CLONE_TYPES value\n * @param {Walkontable} wot Walkontable instance\n */\n\n }, {\n key: 'createOverlay',\n value: function createOverlay(type, wot) {\n return new registeredOverlays[type](wot);\n }\n\n /**\n * Check if specified overlay was registered.\n *\n * @param {String} type Overlay type, one of the CLONE_TYPES value\n * @returns {Boolean}\n */\n\n }, {\n key: 'hasOverlay',\n value: function hasOverlay(type) {\n return registeredOverlays[type] !== void 0;\n }\n\n /**\n * Checks if overlay object (`overlay`) is instance of overlay type (`type`).\n *\n * @param {Overlay} overlay Overlay object\n * @param {String} type Overlay type, one of the CLONE_TYPES value\n * @returns {Boolean}\n */\n\n }, {\n key: 'isOverlayTypeOf',\n value: function isOverlayTypeOf(overlay, type) {\n if (!overlay || !registeredOverlays[type]) {\n return false;\n }\n\n return overlay instanceof registeredOverlays[type];\n }\n\n /**\n * @param {Walkontable} wotInstance\n */\n\n }, {\n key: 'CLONE_TOP',\n\n /**\n * @type {String}\n */\n get: function get() {\n return 'top';\n }\n\n /**\n * @type {String}\n */\n\n }, {\n key: 'CLONE_BOTTOM',\n get: function get() {\n return 'bottom';\n }\n\n /**\n * @type {String}\n */\n\n }, {\n key: 'CLONE_LEFT',\n get: function get() {\n return 'left';\n }\n\n /**\n * @type {String}\n */\n\n }, {\n key: 'CLONE_TOP_LEFT_CORNER',\n get: function get() {\n return 'top_left_corner';\n }\n\n /**\n * @type {String}\n */\n\n }, {\n key: 'CLONE_BOTTOM_LEFT_CORNER',\n get: function get() {\n return 'bottom_left_corner';\n }\n\n /**\n * @type {String}\n */\n\n }, {\n key: 'CLONE_DEBUG',\n get: function get() {\n return 'debug';\n }\n\n /**\n * List of all availables clone types\n *\n * @type {Array}\n */\n\n }, {\n key: 'CLONE_TYPES',\n get: function get() {\n return [Overlay.CLONE_TOP, Overlay.CLONE_BOTTOM, Overlay.CLONE_LEFT, Overlay.CLONE_TOP_LEFT_CORNER, Overlay.CLONE_BOTTOM_LEFT_CORNER, Overlay.CLONE_DEBUG];\n }\n }]);\n\n function Overlay(wotInstance) {\n _classCallCheck(this, Overlay);\n\n (0, _object.defineGetter)(this, 'wot', wotInstance, {\n writable: false\n });\n\n // legacy support, deprecated in the future\n this.instance = this.wot;\n\n this.type = '';\n this.mainTableScrollableElement = null;\n this.TABLE = this.wot.wtTable.TABLE;\n this.hider = this.wot.wtTable.hider;\n this.spreader = this.wot.wtTable.spreader;\n this.holder = this.wot.wtTable.holder;\n this.wtRootElement = this.wot.wtTable.wtRootElement;\n this.trimmingContainer = (0, _element.getTrimmingContainer)(this.hider.parentNode.parentNode);\n this.areElementSizesAdjusted = false;\n this.updateStateOfRendering();\n }\n\n /**\n * Update internal state of object with an information about the need of full rendering of the overlay.\n *\n * @returns {Boolean} Returns `true` if the state has changed since the last check.\n */\n\n\n _createClass(Overlay, [{\n key: 'updateStateOfRendering',\n value: function updateStateOfRendering() {\n var previousState = this.needFullRender;\n\n this.needFullRender = this.shouldBeRendered();\n\n var changed = previousState !== this.needFullRender;\n\n if (changed && !this.needFullRender) {\n this.reset();\n }\n\n return changed;\n }\n\n /**\n * Checks if overlay should be fully rendered\n *\n * @returns {Boolean}\n */\n\n }, {\n key: 'shouldBeRendered',\n value: function shouldBeRendered() {\n return true;\n }\n\n /**\n * Update the trimming container.\n */\n\n }, {\n key: 'updateTrimmingContainer',\n value: function updateTrimmingContainer() {\n this.trimmingContainer = (0, _element.getTrimmingContainer)(this.hider.parentNode.parentNode);\n }\n\n /**\n * Update the main scrollable element.\n */\n\n }, {\n key: 'updateMainScrollableElement',\n value: function updateMainScrollableElement() {\n this.mainTableScrollableElement = (0, _element.getScrollableElement)(this.wot.wtTable.TABLE);\n }\n\n /**\n * Make a clone of table for overlay\n *\n * @param {String} direction Can be `Overlay.CLONE_TOP`, `Overlay.CLONE_LEFT`,\n * `Overlay.CLONE_TOP_LEFT_CORNER`, `Overlay.CLONE_DEBUG`\n * @returns {Walkontable}\n */\n\n }, {\n key: 'makeClone',\n value: function makeClone(direction) {\n if (Overlay.CLONE_TYPES.indexOf(direction) === -1) {\n throw new Error('Clone type \"' + direction + '\" is not supported.');\n }\n var clone = document.createElement('DIV');\n var clonedTable = document.createElement('TABLE');\n\n clone.className = 'ht_clone_' + direction + ' handsontable';\n clone.style.position = 'absolute';\n clone.style.top = 0;\n clone.style.left = 0;\n clone.style.overflow = 'hidden';\n\n clonedTable.className = this.wot.wtTable.TABLE.className;\n clone.appendChild(clonedTable);\n\n this.type = direction;\n this.wot.wtTable.wtRootElement.parentNode.appendChild(clone);\n\n var preventOverflow = this.wot.getSetting('preventOverflow');\n\n if (preventOverflow === true || preventOverflow === 'horizontal' && this.type === Overlay.CLONE_TOP || preventOverflow === 'vertical' && this.type === Overlay.CLONE_LEFT) {\n this.mainTableScrollableElement = window;\n } else {\n this.mainTableScrollableElement = (0, _element.getScrollableElement)(this.wot.wtTable.TABLE);\n }\n\n return new _core2.default({\n cloneSource: this.wot,\n cloneOverlay: this,\n table: clonedTable\n });\n }\n\n /**\n * Refresh/Redraw overlay\n *\n * @param {Boolean} [fastDraw=false]\n */\n\n }, {\n key: 'refresh',\n value: function refresh() {\n var fastDraw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n // When hot settings are changed we allow to refresh overlay once before blocking\n var nextCycleRenderFlag = this.shouldBeRendered();\n\n if (this.clone && (this.needFullRender || nextCycleRenderFlag)) {\n this.clone.draw(fastDraw);\n }\n this.needFullRender = nextCycleRenderFlag;\n }\n\n /**\n * Reset overlay styles to initial values.\n */\n\n }, {\n key: 'reset',\n value: function reset() {\n if (!this.clone) {\n return;\n }\n var holder = this.clone.wtTable.holder;\n var hider = this.clone.wtTable.hider;\n var holderStyle = holder.style;\n var hidderStyle = hider.style;\n var rootStyle = holder.parentNode.style;\n\n (0, _array.arrayEach)([holderStyle, hidderStyle, rootStyle], function (style) {\n style.width = '';\n style.height = '';\n });\n }\n\n /**\n * Destroy overlay instance\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n new _eventManager2.default(this.clone).destroy();\n }\n }]);\n\n return Overlay;\n}();\n\nexports.default = Overlay;\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.toSingleLine = toSingleLine;\n\nvar _array = __webpack_require__(2);\n\n/**\n * Tags a multiline string and return new one without line break characters and following spaces.\n *\n * @param {Array} strings Parts of the entire string without expressions.\n * @param {...String} expressions Expressions converted to strings, which are added to the entire string.\n * @returns {String}\n */\nfunction toSingleLine(strings) {\n for (var _len = arguments.length, expressions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n expressions[_key - 1] = arguments[_key];\n }\n\n var result = (0, _array.arrayReduce)(strings, function (previousValue, currentValue, index) {\n\n var valueWithoutWhiteSpaces = currentValue.replace(/(?:\\r?\\n\\s+)/g, '');\n var expressionForIndex = expressions[index] ? expressions[index] : '';\n\n return previousValue + valueWithoutWhiteSpaces + expressionForIndex;\n }, '');\n\n return result.trim();\n} /* eslint-disable import/prefer-default-export */\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.isFunction = isFunction;\nexports.throttle = throttle;\nexports.throttleAfterHits = throttleAfterHits;\nexports.debounce = debounce;\nexports.pipe = pipe;\nexports.partial = partial;\nexports.curry = curry;\nexports.curryRight = curryRight;\n\nvar _array = __webpack_require__(2);\n\n/**\n * Checks if given variable is function.\n *\n * @param {*} func Variable to check.\n * @returns {Boolean}\n */\nfunction isFunction(func) {\n return typeof func === 'function';\n}\n\n/**\n * Creates throttle function that enforces a maximum number of times a function (`func`) can be called over time (`wait`).\n *\n * @param {Function} func Function to invoke.\n * @param {Number} wait Delay in miliseconds.\n * @returns {Function}\n */\nfunction throttle(func) {\n var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 200;\n\n var lastCalled = 0;\n var result = {\n lastCallThrottled: true\n };\n var lastTimer = null;\n\n function _throttle() {\n var _this = this;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var stamp = Date.now();\n var needCall = false;\n\n result.lastCallThrottled = true;\n\n if (!lastCalled) {\n lastCalled = stamp;\n needCall = true;\n }\n var remaining = wait - (stamp - lastCalled);\n\n if (needCall) {\n result.lastCallThrottled = false;\n func.apply(this, args);\n } else {\n if (lastTimer) {\n clearTimeout(lastTimer);\n }\n lastTimer = setTimeout(function () {\n result.lastCallThrottled = false;\n func.apply(_this, args);\n lastCalled = 0;\n lastTimer = void 0;\n }, remaining);\n }\n\n return result;\n }\n\n return _throttle;\n}\n\n/**\n * Creates throttle function that enforces a maximum number of times a function (`func`) can be called over\n * time (`wait`) after specified hits.\n *\n * @param {Function} func Function to invoke.\n * @param {Number} wait Delay in miliseconds.\n * @param {Number} hits Number of hits after throttling will be applied.\n * @returns {Function}\n */\nfunction throttleAfterHits(func) {\n var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 200;\n var hits = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;\n\n var funcThrottle = throttle(func, wait);\n var remainHits = hits;\n\n function _clearHits() {\n remainHits = hits;\n }\n function _throttleAfterHits() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (remainHits) {\n remainHits -= 1;\n\n return func.apply(this, args);\n }\n\n return funcThrottle.apply(this, args);\n }\n _throttleAfterHits.clearHits = _clearHits;\n\n return _throttleAfterHits;\n}\n\n/**\n * Creates debounce function that enforces a function (`func`) not be called again until a certain amount of time (`wait`)\n * has passed without it being called.\n *\n * @param {Function} func Function to invoke.\n * @param {Number} wait Delay in milliseconds.\n * @returns {Function}\n */\nfunction debounce(func) {\n var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 200;\n\n var lastTimer = null;\n var result = void 0;\n\n function _debounce() {\n var _this2 = this;\n\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n if (lastTimer) {\n clearTimeout(lastTimer);\n }\n lastTimer = setTimeout(function () {\n result = func.apply(_this2, args);\n }, wait);\n\n return result;\n }\n\n return _debounce;\n}\n\n/**\n * Creates the function that returns the result of calling the given functions. Result of the first function is passed to\n * the second as an argument and so on. Only first function in the chain can handle multiple arguments.\n *\n * @param {Function} functions Functions to compose.\n * @returns {Function}\n */\nfunction pipe() {\n for (var _len4 = arguments.length, functions = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n functions[_key4] = arguments[_key4];\n }\n\n var firstFunc = functions[0],\n restFunc = functions.slice(1);\n\n\n return function _pipe() {\n for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return (0, _array.arrayReduce)(restFunc, function (acc, fn) {\n return fn(acc);\n }, firstFunc.apply(this, args));\n };\n}\n\n/**\n * Creates the function that returns the function with cached arguments.\n *\n * @param {Function} func Function to partialization.\n * @param {Array} params Function arguments to cache.\n * @returns {Function}\n */\nfunction partial(func) {\n for (var _len6 = arguments.length, params = Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n params[_key6 - 1] = arguments[_key6];\n }\n\n return function _partial() {\n for (var _len7 = arguments.length, restParams = Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n restParams[_key7] = arguments[_key7];\n }\n\n return func.apply(this, params.concat(restParams));\n };\n}\n\n/**\n * Creates the functions that returns the function with cached arguments. If count if passed arguments will be matched\n * to the arguments defined in `func` then function will be invoked.\n * Arguments are added to the stack in direction from the left to the right.\n *\n * @example\n * ```\n * var replace = curry(function(find, replace, string) {\n * return string.replace(find, replace);\n * });\n *\n * // returns function with bounded first argument\n * var replace = replace('foo')\n *\n * // returns replaced string - all arguments was passed so function was invoked\n * replace('bar', 'Some test with foo...');\n *\n * ```\n *\n * @param {Function} func Function to currying.\n * @returns {Function}\n */\nfunction curry(func) {\n var argsLength = func.length;\n\n function given(argsSoFar) {\n return function _curry() {\n for (var _len8 = arguments.length, params = Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n params[_key8] = arguments[_key8];\n }\n\n var passedArgsSoFar = argsSoFar.concat(params);\n var result = void 0;\n\n if (passedArgsSoFar.length >= argsLength) {\n result = func.apply(this, passedArgsSoFar);\n } else {\n result = given(passedArgsSoFar);\n }\n\n return result;\n };\n }\n\n return given([]);\n}\n\n/**\n * Creates the functions that returns the function with cached arguments. If count if passed arguments will be matched\n * to the arguments defined in `func` then function will be invoked.\n * Arguments are added to the stack in direction from the right to the left.\n *\n * @example\n * ```\n * var replace = curry(function(find, replace, string) {\n * return string.replace(find, replace);\n * });\n *\n * // returns function with bounded first argument\n * var replace = replace('Some test with foo...')\n *\n * // returns replaced string - all arguments was passed so function was invoked\n * replace('bar', 'foo');\n *\n * ```\n *\n * @param {Function} func Function to currying.\n * @returns {Function}\n */\nfunction curryRight(func) {\n var argsLength = func.length;\n\n function given(argsSoFar) {\n return function _curry() {\n for (var _len9 = arguments.length, params = Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n params[_key9] = arguments[_key9];\n }\n\n var passedArgsSoFar = argsSoFar.concat(params.reverse());\n var result = void 0;\n\n if (passedArgsSoFar.length >= argsLength) {\n result = func.apply(this, passedArgsSoFar);\n } else {\n result = given(passedArgsSoFar);\n }\n\n return result;\n };\n }\n\n return given([]);\n}\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(9);\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(12)('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(29)(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _array = __webpack_require__(2);\n\nvar _object = __webpack_require__(1);\n\nvar MIXIN_NAME = 'localHooks';\n\n/**\n * Mixin object to extend objects functionality for local hooks.\n *\n * @type {Object}\n */\nvar localHooks = {\n /**\n * Internal hooks storage.\n */\n _localHooks: Object.create(null),\n\n /**\n * Add hook to the collection.\n *\n * @param {String} key Hook name.\n * @param {Function} callback Hook callback\n * @returns {Object}\n */\n addLocalHook: function addLocalHook(key, callback) {\n if (!this._localHooks[key]) {\n this._localHooks[key] = [];\n }\n this._localHooks[key].push(callback);\n\n return this;\n },\n\n\n /**\n * Run hooks.\n *\n * @param {String} key Hook name.\n * @param {*} params\n */\n runLocalHooks: function runLocalHooks(key) {\n var _this = this;\n\n for (var _len = arguments.length, params = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n\n if (this._localHooks[key]) {\n (0, _array.arrayEach)(this._localHooks[key], function (callback) {\n return callback.apply(_this, params);\n });\n }\n },\n\n\n /**\n * Clear all added hooks.\n *\n * @returns {Object}\n */\n clearLocalHooks: function clearLocalHooks() {\n this._localHooks = {};\n\n return this;\n }\n};\n\n(0, _object.defineGetter)(localHooks, 'MIXIN_NAME', MIXIN_NAME, {\n writable: false,\n enumerable: false\n});\n\nexports.default = localHooks;\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.createId = createId;\nexports.createDefaultCustomBorder = createDefaultCustomBorder;\nexports.createSingleEmptyBorder = createSingleEmptyBorder;\nexports.createDefaultHtBorder = createDefaultHtBorder;\nexports.createEmptyBorders = createEmptyBorders;\nexports.extendDefaultBorder = extendDefaultBorder;\nexports.checkSelectionBorders = checkSelectionBorders;\nexports.markSelected = markSelected;\n\nvar _object = __webpack_require__(1);\n\nvar _array = __webpack_require__(2);\n\n/**\n * Create separated id for borders for each cell.\n *\n * @param {Number} row Visual row index.\n * @param {Number} col Visual column index.\n * @returns {String}\n */\nfunction createId(row, col) {\n return 'border_row' + row + 'col' + col;\n}\n\n/**\n * Create default single border for each position (top/right/bottom/left).\n *\n * @returns {Object} `{{width: number, color: string}}`\n */\nfunction createDefaultCustomBorder() {\n return {\n width: 1,\n color: '#000'\n };\n}\n\n/**\n * Create default object for empty border.\n *\n * @returns {Object} `{{hide: boolean}}`\n */\nfunction createSingleEmptyBorder() {\n return { hide: true };\n}\n\n/**\n * Create default Handsontable border object.\n *\n * @returns {Object} `{{width: number, color: string, cornerVisible: boolean}}`\n */\nfunction createDefaultHtBorder() {\n return {\n width: 1,\n color: '#000',\n cornerVisible: false\n };\n}\n\n/**\n * Prepare empty border for each cell with all custom borders hidden.\n *\n * @param {Number} row Visual row index.\n * @param {Number} col Visual column index.\n * @returns {Object} `{{id: *, border: *, row: *, col: *, top: {hide: boolean}, right: {hide: boolean}, bottom: {hide: boolean}, left: {hide: boolean}}}`\n */\nfunction createEmptyBorders(row, col) {\n return {\n id: createId(row, col),\n border: createDefaultHtBorder(),\n row: row,\n col: col,\n top: createSingleEmptyBorder(),\n right: createSingleEmptyBorder(),\n bottom: createSingleEmptyBorder(),\n left: createSingleEmptyBorder()\n };\n}\n\nfunction extendDefaultBorder(defaultBorder, customBorder) {\n if ((0, _object.hasOwnProperty)(customBorder, 'border')) {\n defaultBorder.border = customBorder.border;\n }\n\n if ((0, _object.hasOwnProperty)(customBorder, 'top')) {\n if (customBorder.top) {\n if (!(0, _object.isObject)(customBorder.top)) {\n customBorder.top = createDefaultCustomBorder();\n }\n\n defaultBorder.top = customBorder.top;\n } else {\n customBorder.top = createSingleEmptyBorder();\n defaultBorder.top = customBorder.top;\n }\n }\n\n if ((0, _object.hasOwnProperty)(customBorder, 'right')) {\n if (customBorder.right) {\n if (!(0, _object.isObject)(customBorder.right)) {\n customBorder.right = createDefaultCustomBorder();\n }\n\n defaultBorder.right = customBorder.right;\n } else {\n customBorder.right = createSingleEmptyBorder();\n defaultBorder.right = customBorder.right;\n }\n }\n\n if ((0, _object.hasOwnProperty)(customBorder, 'bottom')) {\n if (customBorder.bottom) {\n if (!(0, _object.isObject)(customBorder.bottom)) {\n customBorder.bottom = createDefaultCustomBorder();\n }\n\n defaultBorder.bottom = customBorder.bottom;\n } else {\n customBorder.bottom = createSingleEmptyBorder();\n defaultBorder.bottom = customBorder.bottom;\n }\n }\n\n if ((0, _object.hasOwnProperty)(customBorder, 'left')) {\n if (customBorder.left) {\n if (!(0, _object.isObject)(customBorder.left)) {\n customBorder.left = createDefaultCustomBorder();\n }\n\n defaultBorder.left = customBorder.left;\n } else {\n customBorder.left = createSingleEmptyBorder();\n defaultBorder.left = customBorder.left;\n }\n }\n\n return defaultBorder;\n}\n\n/**\n * Check if selection has border.\n *\n * @param hot\n * @param direction\n */\nfunction checkSelectionBorders(hot, direction) {\n var atLeastOneHasBorder = false;\n\n (0, _array.arrayEach)(hot.getSelectedRange(), function (range) {\n range.forAll(function (r, c) {\n var metaBorders = hot.getCellMeta(r, c).borders;\n\n if (metaBorders) {\n if (direction) {\n if (!(0, _object.hasOwnProperty)(metaBorders[direction], 'hide') || metaBorders[direction].hide === false) {\n atLeastOneHasBorder = true;\n return false; // breaks forAll\n }\n } else {\n atLeastOneHasBorder = true;\n return false; // breaks forAll\n }\n }\n });\n });\n\n return atLeastOneHasBorder;\n}\n\n/**\n * Mark label in contextMenu as selected.\n *\n * @param label\n * @returns {string}\n */\nfunction markSelected(label) {\n return '<span class=\"selected\">' + String.fromCharCode(10003) + '</span>' + label; // workaround for https://github.com/handsontable/handsontable/issues/1946\n}\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(20).f;\nvar has = __webpack_require__(27);\nvar TAG = __webpack_require__(12)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.EditorState = undefined;\n\nvar _src = __webpack_require__(4);\n\nvar _mixed = __webpack_require__(11);\n\nvar EditorState = exports.EditorState = {\n VIRGIN: 'STATE_VIRGIN', // before editing\n EDITING: 'STATE_EDITING',\n WAITING: 'STATE_WAITING', // waiting for async validation\n FINISHED: 'STATE_FINISHED'\n};\n\n/**\n * @util\n * @class BaseEditor\n */\nfunction BaseEditor(instance) {\n this.instance = instance;\n this.state = EditorState.VIRGIN;\n\n this._opened = false;\n this._fullEditMode = false;\n this._closeCallback = null;\n\n this.init();\n}\n\nBaseEditor.prototype._fireCallbacks = function (result) {\n if (this._closeCallback) {\n this._closeCallback(result);\n this._closeCallback = null;\n }\n};\n\nBaseEditor.prototype.init = function () {};\n\nBaseEditor.prototype.getValue = function () {\n throw Error('Editor getValue() method unimplemented');\n};\n\nBaseEditor.prototype.setValue = function () {\n throw Error('Editor setValue() method unimplemented');\n};\n\nBaseEditor.prototype.open = function () {\n throw Error('Editor open() method unimplemented');\n};\n\nBaseEditor.prototype.close = function () {\n throw Error('Editor close() method unimplemented');\n};\n\nBaseEditor.prototype.prepare = function (row, col, prop, td, originalValue, cellProperties) {\n this.TD = td;\n this.row = row;\n this.col = col;\n this.prop = prop;\n this.originalValue = originalValue;\n this.cellProperties = cellProperties;\n this.state = EditorState.VIRGIN;\n};\n\nBaseEditor.prototype.extend = function () {\n var baseClass = this.constructor;\n\n function Editor() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n baseClass.apply(this, args);\n }\n\n function inherit(Child, Parent) {\n function Bridge() {}\n Bridge.prototype = Parent.prototype;\n Child.prototype = new Bridge();\n Child.prototype.constructor = Child;\n\n return Child;\n }\n\n return inherit(Editor, baseClass);\n};\n\nBaseEditor.prototype.saveValue = function (value, ctrlDown) {\n var selection = void 0;\n var tmp = void 0;\n\n // if ctrl+enter and multiple cells selected, behave like Excel (finish editing and apply to all cells)\n if (ctrlDown) {\n selection = this.instance.getSelectedLast();\n\n if (selection[0] > selection[2]) {\n tmp = selection[0];\n selection[0] = selection[2];\n selection[2] = tmp;\n }\n if (selection[1] > selection[3]) {\n tmp = selection[1];\n selection[1] = selection[3];\n selection[3] = tmp;\n }\n } else {\n selection = [this.row, this.col, null, null];\n }\n\n this.instance.populateFromArray(selection[0], selection[1], value, selection[2], selection[3], 'edit');\n};\n\nBaseEditor.prototype.beginEditing = function (newInitialValue, event) {\n if (this.state !== EditorState.VIRGIN) {\n return;\n }\n this.instance.view.scrollViewport(new _src.CellCoords(this.row, this.col));\n this.state = EditorState.EDITING;\n\n // Set the editor value only in the full edit mode. In other mode the focusable element has to be empty,\n // otherwise IME (editor for Asia users) doesn't work.\n if (this.isInFullEditMode()) {\n var stringifiedInitialValue = typeof newInitialValue === 'string' ? newInitialValue : (0, _mixed.stringify)(this.originalValue);\n\n this.setValue(stringifiedInitialValue);\n }\n\n this.open(event);\n this._opened = true;\n this.focus();\n\n // only rerender the selections (FillHandle should disappear when beginediting is triggered)\n this.instance.view.render();\n\n this.instance.runHooks('afterBeginEditing', this.row, this.col);\n};\n\nBaseEditor.prototype.finishEditing = function (restoreOriginalValue, ctrlDown, callback) {\n var _this = this;\n var val = void 0;\n\n if (callback) {\n var previousCloseCallback = this._closeCallback;\n\n this._closeCallback = function (result) {\n if (previousCloseCallback) {\n previousCloseCallback(result);\n }\n\n callback(result);\n _this.instance.view.render();\n };\n }\n\n if (this.isWaiting()) {\n return;\n }\n\n if (this.state === EditorState.VIRGIN) {\n this.instance._registerTimeout(function () {\n _this._fireCallbacks(true);\n });\n\n return;\n }\n\n if (this.state === EditorState.EDITING) {\n if (restoreOriginalValue) {\n this.cancelChanges();\n this.instance.view.render();\n\n return;\n }\n\n var value = this.getValue();\n\n if (this.instance.getSettings().trimWhitespace) {\n // We trim only string values\n val = [[typeof value === 'string' ? String.prototype.trim.call(value || '') : value]];\n } else {\n val = [[value]];\n }\n\n this.state = EditorState.WAITING;\n this.saveValue(val, ctrlDown);\n\n if (this.instance.getCellValidator(this.cellProperties)) {\n this.instance.addHookOnce('postAfterValidate', function (result) {\n _this.state = EditorState.FINISHED;\n _this.discardEditor(result);\n });\n } else {\n this.state = EditorState.FINISHED;\n this.discardEditor(true);\n }\n }\n};\n\nBaseEditor.prototype.cancelChanges = function () {\n this.state = EditorState.FINISHED;\n this.discardEditor();\n};\n\nBaseEditor.prototype.discardEditor = function (result) {\n if (this.state !== EditorState.FINISHED) {\n return;\n }\n\n // validator was defined and failed\n if (result === false && this.cellProperties.allowInvalid !== true) {\n this.instance.selectCell(this.row, this.col);\n this.focus();\n this.state = EditorState.EDITING;\n this._fireCallbacks(false);\n } else {\n this.close();\n this._opened = false;\n this._fullEditMode = false;\n this.state = EditorState.VIRGIN;\n this._fireCallbacks(true);\n }\n};\n\n/**\n * Switch editor into full edit mode. In this state navigation keys don't close editor. This mode is activated\n * automatically after hit ENTER or F2 key on the cell or while editing cell press F2 key.\n */\nBaseEditor.prototype.enableFullEditMode = function () {\n this._fullEditMode = true;\n};\n\n/**\n * Checks if editor is in full edit mode.\n *\n * @returns {Boolean}\n */\nBaseEditor.prototype.isInFullEditMode = function () {\n return this._fullEditMode;\n};\n\nBaseEditor.prototype.isOpened = function () {\n return this._opened;\n};\n\nBaseEditor.prototype.isWaiting = function () {\n return this.state === EditorState.WAITING;\n};\n\nBaseEditor.prototype.checkEditorSection = function () {\n var totalRows = this.instance.countRows();\n var section = '';\n\n if (this.row < this.instance.getSettings().fixedRowsTop) {\n if (this.col < this.instance.getSettings().fixedColumnsLeft) {\n section = 'top-left-corner';\n } else {\n section = 'top';\n }\n } else if (this.instance.getSettings().fixedRowsBottom && this.row >= totalRows - this.instance.getSettings().fixedRowsBottom) {\n if (this.col < this.instance.getSettings().fixedColumnsLeft) {\n section = 'bottom-left-corner';\n } else {\n section = 'bottom';\n }\n } else if (this.col < this.instance.getSettings().fixedColumnsLeft) {\n section = 'left';\n }\n\n return section;\n};\n\nexports.default = BaseEditor;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * CellCoords holds cell coordinates (row, column) and few method to validate them and retrieve as an array or an object.\n *\n * @util\n */\nvar CellCoords = function () {\n function CellCoords(row, column) {\n _classCallCheck(this, CellCoords);\n\n /**\n * Row index.\n *\n * @type {Number}\n */\n this.row = null;\n /**\n * Column index.\n *\n * @type {Number}\n */\n this.col = null;\n\n if (typeof row !== 'undefined' && typeof column !== 'undefined') {\n this.row = row;\n this.col = column;\n }\n }\n\n /**\n * Checks if given set of coordinates is valid in context of a given Walkontable instance.\n *\n * @param {Walkontable} wot A Walkontable instance.\n * @returns {Boolean}\n */\n\n\n _createClass(CellCoords, [{\n key: 'isValid',\n value: function isValid(wot) {\n // is it a valid cell index (0 or higher)\n if (this.row < 0 || this.col < 0) {\n return false;\n }\n // is selection within total rows and columns\n if (this.row >= wot.getSetting('totalRows') || this.col >= wot.getSetting('totalColumns')) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Checks if this cell coordinates are the same as cell coordinates given as an argument.\n *\n * @param {CellCoords} cellCoords Cell coordinates to equal.\n * @returns {Boolean}\n */\n\n }, {\n key: 'isEqual',\n value: function isEqual(cellCoords) {\n if (cellCoords === this) {\n return true;\n }\n\n return this.row === cellCoords.row && this.col === cellCoords.col;\n }\n\n /**\n * Checks if tested coordinates are positioned in south-east from this cell coordinates.\n *\n * @param {Object} testedCoords Cell coordinates to check.\n * @returns {Boolean}\n */\n\n }, {\n key: 'isSouthEastOf',\n value: function isSouthEastOf(testedCoords) {\n return this.row >= testedCoords.row && this.col >= testedCoords.col;\n }\n\n /**\n * Checks if tested coordinates are positioned in north-east from this cell coordinates.\n *\n * @param {Object} testedCoords Cell coordinates to check.\n * @returns {Boolean}\n */\n\n }, {\n key: 'isNorthWestOf',\n value: function isNorthWestOf(testedCoords) {\n return this.row <= testedCoords.row && this.col <= testedCoords.col;\n }\n\n /**\n * Checks if tested coordinates are positioned in south-west from this cell coordinates.\n *\n * @param {Object} testedCoords Cell coordinates to check.\n * @returns {Boolean}\n */\n\n }, {\n key: 'isSouthWestOf',\n value: function isSouthWestOf(testedCoords) {\n return this.row >= testedCoords.row && this.col <= testedCoords.col;\n }\n\n /**\n * Checks if tested coordinates are positioned in north-east from this cell coordinates.\n *\n * @param {Object} testedCoords Cell coordinates to check.\n * @returns {Boolean}\n */\n\n }, {\n key: 'isNorthEastOf',\n value: function isNorthEastOf(testedCoords) {\n return this.row <= testedCoords.row && this.col >= testedCoords.col;\n }\n\n /**\n * Converts CellCoords to literal object with `row` and `col` properties.\n *\n * @return {Object} Returns a literal object with `row` and `col` properties.\n */\n\n }, {\n key: 'toObject',\n value: function toObject() {\n return {\n row: this.row,\n col: this.col\n };\n }\n }]);\n\n return CellCoords;\n}();\n\nexports.default = CellCoords;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_57__;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.log = log;\nexports.warn = warn;\nexports.info = info;\nexports.error = error;\n\nvar _mixed = __webpack_require__(11);\n\n/**\n * Logs message to the console if the `console` object is exposed.\n *\n * @param {...*} args Values which will be logged.\n */\nfunction log() {\n if ((0, _mixed.isDefined)(console)) {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n }\n}\n\n/**\n * Logs warn to the console if the `console` object is exposed.\n *\n * @param {...*} args Values which will be logged.\n */\n/* eslint-disable no-console */\n/* eslint-disable no-restricted-globals */\n\n/**\n * \"In Internet Explorer 9 (and 8), the console object is only exposed when the developer tools are opened\n * for a particular tab.\"\n *\n * Source: https://stackoverflow.com/a/5473193\n */\n\nfunction warn() {\n if ((0, _mixed.isDefined)(console)) {\n var _console2;\n\n (_console2 = console).warn.apply(_console2, arguments);\n }\n}\n\n/**\n * Logs info to the console if the `console` object is exposed.\n *\n * @param {...*} args Values which will be logged.\n */\nfunction info() {\n if ((0, _mixed.isDefined)(console)) {\n var _console3;\n\n (_console3 = console).info.apply(_console3, arguments);\n }\n}\n\n/**\n * Logs error to the console if the `console` object is exposed.\n *\n * @param {...*} args Values which will be logged.\n */\nfunction error() {\n if ((0, _mixed.isDefined)(console)) {\n var _console4;\n\n (_console4 = console).error.apply(_console4, arguments);\n }\n}\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _element = __webpack_require__(0);\n\nvar _autoResize = __webpack_require__(234);\n\nvar _autoResize2 = _interopRequireDefault(_autoResize);\n\nvar _baseEditor = __webpack_require__(55);\n\nvar _baseEditor2 = _interopRequireDefault(_baseEditor);\n\nvar _eventManager = __webpack_require__(5);\n\nvar _eventManager2 = _interopRequireDefault(_eventManager);\n\nvar _unicode = __webpack_require__(21);\n\nvar _event = __webpack_require__(13);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TextEditor = _baseEditor2.default.prototype.extend();\n\n/**\n * @private\n * @editor TextEditor\n * @class TextEditor\n * @dependencies autoResize\n */\nTextEditor.prototype.init = function () {\n var that = this;\n this.createElements();\n this.eventManager = new _eventManager2.default(this);\n this.bindEvents();\n this.autoResize = (0, _autoResize2.default)();\n this.holderZIndex = -1;\n\n this.instance.addHook('afterDestroy', function () {\n that.destroy();\n });\n};\n\nTextEditor.prototype.prepare = function (row, col, prop, td, originalValue, cellProperties) {\n var _this = this;\n\n var previousState = this.state;\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n _baseEditor2.default.prototype.prepare.apply(this, [row, col, prop, td, originalValue, cellProperties].concat(args));\n\n if (!cellProperties.readOnly) {\n this.refreshDimensions(true);\n\n var allowInvalid = cellProperties.allowInvalid,\n fragmentSelection = cellProperties.fragmentSelection;\n\n\n if (allowInvalid) {\n this.TEXTAREA.value = ''; // Remove an empty space from texarea (added by copyPaste plugin to make copy/paste functionality work with IME)\n }\n\n if (previousState !== _baseEditor.EditorState.FINISHED) {\n this.hideEditableElement();\n }\n\n // @TODO: The fragmentSelection functionality is conflicted with IME. For this feature refocus has to\n // be disabled (to make IME working).\n var restoreFocus = !fragmentSelection;\n\n if (restoreFocus) {\n this.instance._registerImmediate(function () {\n return _this.focus();\n });\n }\n }\n};\n\nTextEditor.prototype.hideEditableElement = function () {\n this.textareaParentStyle.top = '-9999px';\n this.textareaParentStyle.left = '-9999px';\n this.textareaParentStyle.zIndex = '-1';\n this.textareaParentStyle.position = 'fixed';\n};\n\nTextEditor.prototype.showEditableElement = function () {\n this.textareaParentStyle.zIndex = this.holderZIndex >= 0 ? this.holderZIndex : '';\n this.textareaParentStyle.position = '';\n};\n\nTextEditor.prototype.getValue = function () {\n return this.TEXTAREA.value;\n};\n\nTextEditor.prototype.setValue = function (newValue) {\n this.TEXTAREA.value = newValue;\n};\n\nTextEditor.prototype.beginEditing = function () {\n if (this.state !== _baseEditor.EditorState.VIRGIN) {\n return;\n }\n\n this.TEXTAREA.value = ''; // Remove an empty space from texarea (added by copyPaste plugin to make copy/paste functionality work with IME).\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _baseEditor2.default.prototype.beginEditing.apply(this, args);\n};\n\nvar onBeforeKeyDown = function onBeforeKeyDown(event) {\n var instance = this;\n var that = instance.getActiveEditor();\n\n // catch CTRL but not right ALT (which in some systems triggers ALT+CTRL)\n var ctrlDown = (event.ctrlKey || event.metaKey) && !event.altKey;\n\n // Process only events that have been fired in the editor\n if (event.target !== that.TEXTAREA || (0, _event.isImmediatePropagationStopped)(event)) {\n return;\n }\n\n if (event.keyCode === 17 || event.keyCode === 224 || event.keyCode === 91 || event.keyCode === 93) {\n // when CTRL or its equivalent is pressed and cell is edited, don't prepare selectable text in textarea\n (0, _event.stopImmediatePropagation)(event);\n return;\n }\n\n switch (event.keyCode) {\n case _unicode.KEY_CODES.ARROW_RIGHT:\n if (that.isInFullEditMode()) {\n if (!that.isWaiting() && !that.allowKeyEventPropagation || !that.isWaiting() && that.allowKeyEventPropagation && !that.allowKeyEventPropagation(event.keyCode)) {\n (0, _event.stopImmediatePropagation)(event);\n }\n }\n break;\n case _unicode.KEY_CODES.ARROW_LEFT:\n if (that.isInFullEditMode()) {\n if (!that.isWaiting() && !that.allowKeyEventPropagation || !that.isWaiting() && that.allowKeyEventPropagation && !that.allowKeyEventPropagation(event.keyCode)) {\n (0, _event.stopImmediatePropagation)(event);\n }\n }\n break;\n case _unicode.KEY_CODES.ARROW_UP:\n case _unicode.KEY_CODES.ARROW_DOWN:\n if (that.isInFullEditMode()) {\n if (!that.isWaiting() && !that.allowKeyEventPropagation || !that.isWaiting() && that.allowKeyEventPropagation && !that.allowKeyEventPropagation(event.keyCode)) {\n (0, _event.stopImmediatePropagation)(event);\n }\n }\n break;\n\n case _unicode.KEY_CODES.ENTER:\n {\n var isMultipleSelection = this.selection.isMultiple();\n\n if (ctrlDown && !isMultipleSelection || event.altKey) {\n // if ctrl+enter or alt+enter, add new line\n if (that.isOpened()) {\n var caretPosition = (0, _element.getCaretPosition)(that.TEXTAREA);\n var value = that.getValue();\n var newValue = value.slice(0, caretPosition) + '\\n' + value.slice(caretPosition);\n\n that.setValue(newValue);\n\n (0, _element.setCaretPosition)(that.TEXTAREA, caretPosition + 1);\n } else {\n that.beginEditing(that.originalValue + '\\n');\n }\n (0, _event.stopImmediatePropagation)(event);\n }\n event.preventDefault(); // don't add newline to field\n break;\n }\n case _unicode.KEY_CODES.A:\n case _unicode.KEY_CODES.X:\n case _unicode.KEY_CODES.C:\n case _unicode.KEY_CODES.V:\n if (ctrlDown) {\n (0, _event.stopImmediatePropagation)(event); // CTRL+A, CTRL+C, CTRL+V, CTRL+X should only work locally when cell is edited (not in table context)\n }\n break;\n\n case _unicode.KEY_CODES.BACKSPACE:\n case _unicode.KEY_CODES.DELETE:\n case _unicode.KEY_CODES.HOME:\n case _unicode.KEY_CODES.END:\n (0, _event.stopImmediatePropagation)(event); // backspace, delete, home, end should only work locally when cell is edited (not in table context)\n break;\n default:\n break;\n }\n\n if ([_unicode.KEY_CODES.ARROW_UP, _unicode.KEY_CODES.ARROW_RIGHT, _unicode.KEY_CODES.ARROW_DOWN, _unicode.KEY_CODES.ARROW_LEFT].indexOf(event.keyCode) === -1) {\n that.autoResize.resize(String.fromCharCode(event.keyCode));\n }\n};\n\nTextEditor.prototype.open = function () {\n this.refreshDimensions(); // need it instantly, to prevent https://github.com/handsontable/handsontable/issues/348\n this.showEditableElement();\n\n this.instance.addHook('beforeKeyDown', onBeforeKeyDown);\n};\n\nTextEditor.prototype.close = function () {\n this.autoResize.unObserve();\n\n if (document.activeElement === this.TEXTAREA) {\n this.instance.listen(); // don't refocus the table if user focused some cell outside of HT on purpose\n }\n\n this.hideEditableElement();\n this.instance.removeHook('beforeKeyDown', onBeforeKeyDown);\n};\n\nTextEditor.prototype.focus = function () {\n // For IME editor textarea element must be focused using \".select\" method. Using \".focus\" browser automatically scroll into\n // the focused element which is undesire effect.\n this.TEXTAREA.select();\n (0, _element.setCaretPosition)(this.TEXTAREA, this.TEXTAREA.value.length);\n};\n\nTextEditor.prototype.createElements = function () {\n this.TEXTAREA = document.createElement('TEXTAREA');\n this.TEXTAREA.tabIndex = -1;\n\n (0, _element.addClass)(this.TEXTAREA, 'handsontableInput');\n\n this.textareaStyle = this.TEXTAREA.style;\n this.textareaStyle.width = 0;\n this.textareaStyle.height = 0;\n\n this.TEXTAREA_PARENT = document.createElement('DIV');\n (0, _element.addClass)(this.TEXTAREA_PARENT, 'handsontableInputHolder');\n\n this.textareaParentStyle = this.TEXTAREA_PARENT.style;\n this.textareaParentStyle.zIndex = '-1';\n\n this.TEXTAREA_PARENT.appendChild(this.TEXTAREA);\n\n this.instance.rootElement.appendChild(this.TEXTAREA_PARENT);\n};\n\nTextEditor.prototype.getEditedCell = function () {\n var editorSection = this.checkEditorSection();\n var editedCell = void 0;\n\n switch (editorSection) {\n case 'top':\n editedCell = this.instance.view.wt.wtOverlays.topOverlay.clone.wtTable.getCell({\n row: this.row,\n col: this.col\n });\n this.holderZIndex = 101;\n break;\n case 'top-left-corner':\n editedCell = this.instance.view.wt.wtOverlays.topLeftCornerOverlay.clone.wtTable.getCell({\n row: this.row,\n col: this.col\n });\n this.holderZIndex = 103;\n break;\n case 'bottom-left-corner':\n editedCell = this.instance.view.wt.wtOverlays.bottomLeftCornerOverlay.clone.wtTable.getCell({\n row: this.row,\n col: this.col\n });\n this.holderZIndex = 103;\n break;\n case 'left':\n editedCell = this.instance.view.wt.wtOverlays.leftOverlay.clone.wtTable.getCell({\n row: this.row,\n col: this.col\n });\n this.holderZIndex = 102;\n break;\n case 'bottom':\n editedCell = this.instance.view.wt.wtOverlays.bottomOverlay.clone.wtTable.getCell({\n row: this.row,\n col: this.col\n });\n this.holderZIndex = 102;\n break;\n default:\n editedCell = this.instance.getCell(this.row, this.col);\n this.holderZIndex = -1;\n break;\n }\n\n return editedCell !== -1 && editedCell !== -2 ? editedCell : void 0;\n};\n\nTextEditor.prototype.refreshValue = function () {\n var physicalRow = this.instance.toPhysicalRow(this.row);\n var sourceData = this.instance.getSourceDataAtCell(physicalRow, this.col);\n this.originalValue = sourceData;\n\n this.setValue(sourceData);\n this.refreshDimensions();\n};\n\nTextEditor.prototype.refreshDimensions = function () {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (this.state !== _baseEditor.EditorState.EDITING && !force) {\n return;\n }\n this.TD = this.getEditedCell();\n\n // TD is outside of the viewport.\n if (!this.TD) {\n if (!force) {\n this.close(true);\n }\n\n return;\n }\n\n var currentOffset = (0, _element.offset)(this.TD);\n var containerOffset = (0, _element.offset)(this.instance.rootElement);\n var scrollableContainer = this.instance.view.wt.wtOverlays.topOverlay.mainTableScrollableElement;\n var totalRowsCount = this.instance.countRows();\n var containerScrollTop = scrollableContainer !== window ? scrollableContainer.scrollTop : 0;\n var containerScrollLeft = scrollableContainer !== window ? scrollableContainer.scrollLeft : 0;\n\n var editorSection = this.checkEditorSection();\n\n var scrollTop = ['', 'left'].includes(editorSection) ? containerScrollTop : 0;\n var scrollLeft = ['', 'top', 'bottom'].includes(editorSection) ? containerScrollLeft : 0;\n\n // If colHeaders is disabled, cells in the first row have border-top\n var editTopModifier = currentOffset.top === containerOffset.top ? 0 : 1;\n\n var settings = this.instance.getSettings();\n var colHeadersCount = this.instance.hasColHeaders();\n var backgroundColor = this.TD.style.backgroundColor;\n\n var editTop = currentOffset.top - containerOffset.top - editTopModifier - scrollTop;\n var editLeft = currentOffset.left - containerOffset.left - 1 - scrollLeft;\n var cssTransformOffset = void 0;\n\n // TODO: Refactor this to the new instance.getCell method (from #ply-59), after 0.12.1 is released\n switch (editorSection) {\n case 'top':\n cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.topOverlay.clone.wtTable.holder.parentNode);\n break;\n case 'left':\n cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.leftOverlay.clone.wtTable.holder.parentNode);\n break;\n case 'top-left-corner':\n cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.topLeftCornerOverlay.clone.wtTable.holder.parentNode);\n break;\n case 'bottom-left-corner':\n cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.bottomLeftCornerOverlay.clone.wtTable.holder.parentNode);\n break;\n case 'bottom':\n cssTransformOffset = (0, _element.getCssTransform)(this.instance.view.wt.wtOverlays.bottomOverlay.clone.wtTable.holder.parentNode);\n break;\n default:\n break;\n }\n\n if (colHeadersCount && this.instance.getSelectedLast()[0] === 0 || settings.fixedRowsBottom && this.instance.getSelectedLast()[0] === totalRowsCount - settings.fixedRowsBottom) {\n editTop += 1;\n }\n\n if (this.instance.getSelectedLast()[1] === 0) {\n editLeft += 1;\n }\n\n if (cssTransformOffset && cssTransformOffset !== -1) {\n this.textareaParentStyle[cssTransformOffset[0]] = cssTransformOffset[1];\n } else {\n (0, _element.resetCssTransform)(this.TEXTAREA_PARENT);\n }\n\n this.textareaParentStyle.top = editTop + 'px';\n this.textareaParentStyle.left = editLeft + 'px';\n this.showEditableElement();\n\n var firstRowOffset = this.instance.view.wt.wtViewport.rowsRenderCalculator.startPosition;\n var firstColumnOffset = this.instance.view.wt.wtViewport.columnsRenderCalculator.startPosition;\n var horizontalScrollPosition = this.instance.view.wt.wtOverlays.leftOverlay.getScrollPosition();\n var verticalScrollPosition = this.instance.view.wt.wtOverlays.topOverlay.getScrollPosition();\n var scrollbarWidth = (0, _element.getScrollbarWidth)();\n\n var cellTopOffset = this.TD.offsetTop + firstRowOffset - verticalScrollPosition;\n var cellLeftOffset = this.TD.offsetLeft + firstColumnOffset - horizontalScrollPosition;\n\n var width = (0, _element.innerWidth)(this.TD) - 8;\n var actualVerticalScrollbarWidth = (0, _element.hasVerticalScrollbar)(scrollableContainer) ? scrollbarWidth : 0;\n var actualHorizontalScrollbarWidth = (0, _element.hasHorizontalScrollbar)(scrollableContainer) ? scrollbarWidth : 0;\n var maxWidth = this.instance.view.maximumVisibleElementWidth(cellLeftOffset) - 9 - actualVerticalScrollbarWidth;\n var height = this.TD.scrollHeight + 1;\n var maxHeight = Math.max(this.instance.view.maximumVisibleElementHeight(cellTopOffset) - actualHorizontalScrollbarWidth, 23);\n\n var cellComputedStyle = (0, _element.getComputedStyle)(this.TD);\n\n this.TEXTAREA.style.fontSize = cellComputedStyle.fontSize;\n this.TEXTAREA.style.fontFamily = cellComputedStyle.fontFamily;\n this.TEXTAREA.style.backgroundColor = backgroundColor || (0, _element.getComputedStyle)(this.TEXTAREA).backgroundColor;\n\n this.autoResize.init(this.TEXTAREA, {\n minHeight: Math.min(height, maxHeight),\n maxHeight: maxHeight, // TEXTAREA should never be wider than visible part of the viewport (should not cover the scrollbar)\n minWidth: Math.min(width, maxWidth),\n maxWidth: maxWidth // TEXTAREA should never be wider than visible part of the viewport (should not cover the scrollbar)\n }, true);\n};\n\nTextEditor.prototype.bindEvents = function () {\n var editor = this;\n\n this.eventManager.addEventListener(this.TEXTAREA, 'cut', function (event) {\n (0, _event.stopPropagation)(event);\n });\n this.eventManager.addEventListener(this.TEXTAREA, 'paste', function (event) {\n (0, _event.stopPropagation)(event);\n });\n\n this.instance.addHook('afterScrollHorizontally', function () {\n editor.refreshDimensions();\n });\n\n this.instance.addHook('afterScrollVertically', function () {\n editor.refreshDimensions();\n });\n\n this.instance.addHook('afterColumnResize', function () {\n editor.refreshDimensions();\n editor.focus();\n });\n\n this.instance.addHook('afterRowResize', function () {\n editor.refreshDimensions();\n editor.focus();\n });\n\n this.instance.addHook('afterDestroy', function () {\n editor.eventManager.destroy();\n });\n};\n\nTextEditor.prototype.destroy = function () {\n this.eventManager.destroy();\n};\n\nexports.default = TextEditor;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(60);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar redefine = __webpack_require__(28);\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ctx = __webpack_require__(30);\nvar call = __webpack_require__(104);\nvar isArrayIter = __webpack_require__(105);\nvar anObject = __webpack_require__(18);\nvar toLength = __webpack_require__(25);\nvar getIterFn = __webpack_require__(106);\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(15);\nvar $export = __webpack_require__(3);\nvar redefine = __webpack_require__(28);\nvar redefineAll = __webpack_require__(62);\nvar meta = __webpack_require__(32);\nvar forOf = __webpack_require__(65);\nvar anInstance = __webpack_require__(64);\nvar isObject = __webpack_require__(9);\nvar fails = __webpack_require__(23);\nvar $iterDetect = __webpack_require__(81);\nvar setToStringTag = __webpack_require__(53);\nvar inheritIfRequired = __webpack_require__(210);\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pIE = __webpack_require__(54);\nvar createDesc = __webpack_require__(51);\nvar toIObject = __webpack_require__(24);\nvar toPrimitive = __webpack_require__(75);\nvar has = __webpack_require__(27);\nvar IE8_DOM_DEFINE = __webpack_require__(100);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(22) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = __webpack_require__(30);\nvar IObject = __webpack_require__(77);\nvar toObject = __webpack_require__(31);\nvar toLength = __webpack_require__(25);\nvar asc = __webpack_require__(211);\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar hide = __webpack_require__(29);\nvar redefine = __webpack_require__(28);\nvar fails = __webpack_require__(23);\nvar defined = __webpack_require__(36);\nvar wks = __webpack_require__(12);\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n var fns = exec(defined, SYMBOL, ''[KEY]);\n var strfn = fns[0];\n var rxfn = fns[1];\n if (fails(function () {\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n })) {\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.DEFAULT_LANGUAGE_CODE = exports.getLanguagesDictionaries = exports.getDefaultLanguageDictionary = exports.hasLanguageDictionary = exports.getLanguageDictionary = exports.registerLanguageDictionary = undefined;\n\nvar _object = __webpack_require__(1);\n\nvar _utils = __webpack_require__(199);\n\nvar _staticRegister2 = __webpack_require__(38);\n\nvar _staticRegister3 = _interopRequireDefault(_staticRegister2);\n\nvar _enUS = __webpack_require__(270);\n\nvar _enUS2 = _interopRequireDefault(_enUS);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DEFAULT_LANGUAGE_CODE = _enUS2.default.languageCode;\n\nvar _staticRegister = (0, _staticRegister3.default)('languagesDictionaries'),\n registerGloballyLanguageDictionary = _staticRegister.register,\n getGlobalLanguageDictionary = _staticRegister.getItem,\n hasGlobalLanguageDictionary = _staticRegister.hasItem,\n getGlobalLanguagesDictionaries = _staticRegister.getValues;\n\n/**\n * Register language dictionary for specific language code.\n *\n * @param {String|Object} languageCodeOrDictionary Language code for specific language i.e. 'en-US', 'pt-BR', 'de-DE' or object representing dictionary.\n * @param {Object} dictionary Dictionary for specific language (optional if first parameter has already dictionary).\n */\n\n\nfunction registerLanguage(languageCodeOrDictionary, dictionary) {\n var languageCode = languageCodeOrDictionary;\n var dictionaryObject = dictionary;\n\n // Dictionary passed as first argument.\n if ((0, _object.isObject)(languageCodeOrDictionary)) {\n dictionaryObject = languageCodeOrDictionary;\n languageCode = dictionaryObject.languageCode;\n }\n\n extendLanguageDictionary(languageCode, dictionaryObject);\n registerGloballyLanguageDictionary(languageCode, (0, _object.deepClone)(dictionaryObject));\n\n // We do not allow user to work with dictionary by reference, it can cause lot of bugs.\n return (0, _object.deepClone)(dictionaryObject);\n}\n\n/**\n * Get language dictionary for specific language code.\n *\n * @param {String} languageCode Language code.\n * @returns {Object} Object with constants representing identifiers for translation (as keys) and corresponding translation phrases (as values).\n */\nfunction getLanguage(languageCode) {\n if (!hasLanguage(languageCode)) {\n return null;\n }\n\n return (0, _object.deepClone)(getGlobalLanguageDictionary(languageCode));\n}\n\n/**\n *\n * Get if language with specified language code was registered.\n *\n * @param {String} languageCode Language code for specific language i.e. 'en-US', 'pt-BR', 'de-DE'.\n * @returns {Boolean}\n */\nfunction hasLanguage(languageCode) {\n return hasGlobalLanguageDictionary(languageCode);\n}\n\n/**\n * Get default language dictionary.\n *\n * @returns {Object} Object with constants representing identifiers for translation (as keys) and corresponding translation phrases (as values).\n */\nfunction getDefaultLanguage() {\n return _enUS2.default;\n}\n\n/**\n * Extend handled dictionary by default language dictionary. As result, if any dictionary key isn't defined for specific language, it will be filled with default language value (\"dictionary gaps\" are supplemented).\n *\n * @private\n * @param {String} languageCode Language code.\n * @param {Object} dictionary Dictionary which is extended.\n */\nfunction extendLanguageDictionary(languageCode, dictionary) {\n if (languageCode !== DEFAULT_LANGUAGE_CODE) {\n (0, _utils.extendNotExistingKeys)(dictionary, getGlobalLanguageDictionary(DEFAULT_LANGUAGE_CODE));\n }\n}\n\n/**\n * Get registered language dictionaries.\n *\n * @returns {Array}\n */\nfunction getLanguages() {\n return getGlobalLanguagesDictionaries();\n}\n\nexports.registerLanguageDictionary = registerLanguage;\nexports.getLanguageDictionary = getLanguage;\nexports.hasLanguageDictionary = hasLanguage;\nexports.getDefaultLanguageDictionary = getDefaultLanguage;\nexports.getLanguagesDictionaries = getLanguages;\nexports.DEFAULT_LANGUAGE_CODE = DEFAULT_LANGUAGE_CODE;\n\n/**\n * Automatically registers default dictionary.\n */\n\nregisterLanguage(_enUS2.default);\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.SELECTION_TYPES = exports.SELECTION_TYPE_OBJECT = exports.SELECTION_TYPE_ARRAY = exports.SELECTION_TYPE_EMPTY = exports.SELECTION_TYPE_UNRECOGNIZED = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.detectSelectionType = detectSelectionType;\nexports.normalizeSelectionFactory = normalizeSelectionFactory;\nexports.transformSelectionToColumnDistance = transformSelectionToColumnDistance;\nexports.transformSelectionToRowDistance = transformSelectionToRowDistance;\nexports.isValidCoord = isValidCoord;\n\nvar _src = __webpack_require__(4);\n\nvar _array = __webpack_require__(2);\n\nvar _mixed = __webpack_require__(11);\n\nvar SELECTION_TYPE_UNRECOGNIZED = exports.SELECTION_TYPE_UNRECOGNIZED = 0;\nvar SELECTION_TYPE_EMPTY = exports.SELECTION_TYPE_EMPTY = 1;\nvar SELECTION_TYPE_ARRAY = exports.SELECTION_TYPE_ARRAY = 2;\nvar SELECTION_TYPE_OBJECT = exports.SELECTION_TYPE_OBJECT = 3;\nvar SELECTION_TYPES = exports.SELECTION_TYPES = [SELECTION_TYPE_OBJECT, SELECTION_TYPE_ARRAY];\nvar ARRAY_TYPE_PATTERN = [['number'], ['number', 'string'], ['number', 'undefined'], ['number', 'string', 'undefined']];\nvar rootCall = Symbol('root');\nvar childCall = Symbol('child');\n\n/**\n * Detect selection schema structure.\n *\n * @param {*} selectionRanges The selected range or and array of selected ranges. This type of data is produced by\n * `hot.getSelected()`, `hot.getSelectedLast()`, `hot.getSelectedRange()`\n * and `hot.getSelectedRangeLast()` methods.\n * @returns {Number} Returns a number that specifies the type of detected selection schema. If selection schema type\n * is unrecognized than it returns `0`.\n */\nfunction detectSelectionType(selectionRanges) {\n var _callSymbol = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : rootCall;\n\n if (_callSymbol !== rootCall && _callSymbol !== childCall) {\n throw new Error('The second argument is used internally only and cannot be overwritten.');\n }\n\n var isArray = Array.isArray(selectionRanges);\n var isRootCall = _callSymbol === rootCall;\n var result = SELECTION_TYPE_UNRECOGNIZED;\n\n if (isArray) {\n var firstItem = selectionRanges[0];\n\n if (selectionRanges.length === 0) {\n result = SELECTION_TYPE_EMPTY;\n } else if (isRootCall && firstItem instanceof _src.CellRange) {\n result = SELECTION_TYPE_OBJECT;\n } else if (isRootCall && Array.isArray(firstItem)) {\n result = detectSelectionType(firstItem, childCall);\n } else if (selectionRanges.length >= 2 && selectionRanges.length <= 4) {\n var isArrayType = !selectionRanges.some(function (value, index) {\n return !ARRAY_TYPE_PATTERN[index].includes(typeof value === 'undefined' ? 'undefined' : _typeof(value));\n });\n\n if (isArrayType) {\n result = SELECTION_TYPE_ARRAY;\n }\n }\n }\n\n return result;\n}\n\n/**\n * Factory function designed for normalization data schema from different data structures of the selection ranges.\n *\n * @param {String} type Selection type which will be processed.\n * @param {Object} [options]\n * @param {Boolean} [options.keepDirection=false] If `true`, the coordinates which contain the direction of the\n * selected cells won't be changed. Otherwise, the selection will be\n * normalized to values starting from top-left to bottom-right.\n * @param {Function} [options.propToCol] Pass the converting function (usually `datamap.propToCol`) if the column\n * defined as props should be normalized to the numeric values.\n * @returns {Number[]} Returns normalized data about selected range as an array (`[rowStart, columnStart, rowEnd, columnEnd]`).\n */\nfunction normalizeSelectionFactory(type) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$keepDirection = _ref.keepDirection,\n keepDirection = _ref$keepDirection === undefined ? false : _ref$keepDirection,\n propToCol = _ref.propToCol;\n\n if (!SELECTION_TYPES.includes(type)) {\n throw new Error('Unsupported selection ranges schema type was provided.');\n }\n\n return function (selection) {\n var isObjectType = type === SELECTION_TYPE_OBJECT;\n var rowStart = isObjectType ? selection.from.row : selection[0];\n var columnStart = isObjectType ? selection.from.col : selection[1];\n var rowEnd = isObjectType ? selection.to.row : selection[2];\n var columnEnd = isObjectType ? selection.to.col : selection[3];\n\n if (typeof propToCol === 'function') {\n if (typeof columnStart === 'string') {\n columnStart = propToCol(columnStart);\n }\n if (typeof columnEnd === 'string') {\n columnEnd = propToCol(columnEnd);\n }\n }\n\n if ((0, _mixed.isUndefined)(rowEnd)) {\n rowEnd = rowStart;\n }\n if ((0, _mixed.isUndefined)(columnEnd)) {\n columnEnd = columnStart;\n }\n\n if (!keepDirection) {\n var origRowStart = rowStart;\n var origColumnStart = columnStart;\n var origRowEnd = rowEnd;\n var origColumnEnd = columnEnd;\n\n rowStart = Math.min(origRowStart, origRowEnd);\n columnStart = Math.min(origColumnStart, origColumnEnd);\n rowEnd = Math.max(origRowStart, origRowEnd);\n columnEnd = Math.max(origColumnStart, origColumnEnd);\n }\n\n return [rowStart, columnStart, rowEnd, columnEnd];\n };\n}\n\n/**\n * Function transform selection ranges (produced by `hot.getSelected()` and `hot.getSelectedRange()`) to normalized\n * data structure. It merges repeated ranges into consecutive coordinates. The returned structure\n * contains an array of arrays. The single item contains at index 0 visual column index from the selection was\n * started and at index 1 distance as a count of selected columns.\n *\n * @param {Array[]|CellRange[]} selectionRanges Selection ranges produced by Handsontable.\n * @return {Array[]} Returns an array of arrays with ranges defines in that schema:\n * `[[visualColumnStart, distance], [visualColumnStart, distance], ...]`.\n * The column distances are always created starting from the left (zero index) to the\n * right (the latest column index).\n */\nfunction transformSelectionToColumnDistance(selectionRanges) {\n var selectionType = detectSelectionType(selectionRanges);\n\n if (selectionType === SELECTION_TYPE_UNRECOGNIZED || selectionType === SELECTION_TYPE_EMPTY) {\n return [];\n }\n\n var selectionSchemaNormalizer = normalizeSelectionFactory(selectionType);\n var unorderedIndexes = new Set();\n\n // Iterate through all ranges and collect all column indexes which are not saved yet.\n (0, _array.arrayEach)(selectionRanges, function (selection) {\n var _selectionSchemaNorma = selectionSchemaNormalizer(selection),\n _selectionSchemaNorma2 = _slicedToArray(_selectionSchemaNorma, 4),\n columnStart = _selectionSchemaNorma2[1],\n columnEnd = _selectionSchemaNorma2[3];\n\n var amount = columnEnd - columnStart + 1;\n\n (0, _array.arrayEach)(Array.from(new Array(amount), function (_, i) {\n return columnStart + i;\n }), function (index) {\n if (!unorderedIndexes.has(index)) {\n unorderedIndexes.add(index);\n }\n });\n });\n\n // Sort indexes in ascending order to easily detecting non-consecutive columns.\n var orderedIndexes = Array.from(unorderedIndexes).sort(function (a, b) {\n return a - b;\n });\n var normalizedColumnRanges = (0, _array.arrayReduce)(orderedIndexes, function (acc, visualColumnIndex, index, array) {\n if (index !== 0 && visualColumnIndex === array[index - 1] + 1) {\n acc[acc.length - 1][1] += 1;\n } else {\n acc.push([visualColumnIndex, 1]);\n }\n\n return acc;\n }, []);\n\n return normalizedColumnRanges;\n}\n\n/**\n * Function transform selection ranges (produced by `hot.getSelected()` and `hot.getSelectedRange()`) to normalized\n * data structure. It merges repeated ranges into consecutive coordinates. The returned structure\n * contains an array of arrays. The single item contains at index 0 visual column index from the selection was\n * started and at index 1 distance as a count of selected columns.\n *\n * @param {Array[]|CellRange[]} selectionRanges Selection ranges produced by Handsontable.\n * @return {Array[]} Returns an array of arrays with ranges defines in that schema:\n * `[[visualColumnStart, distance], [visualColumnStart, distance], ...]`.\n * The column distances are always created starting from the left (zero index) to the\n * right (the latest column index).\n */\nfunction transformSelectionToRowDistance(selectionRanges) {\n var selectionType = detectSelectionType(selectionRanges);\n\n if (selectionType === SELECTION_TYPE_UNRECOGNIZED || selectionType === SELECTION_TYPE_EMPTY) {\n return [];\n }\n\n var selectionSchemaNormalizer = normalizeSelectionFactory(selectionType);\n var unorderedIndexes = new Set();\n\n // Iterate through all ranges and collect all column indexes which are not saved yet.\n (0, _array.arrayEach)(selectionRanges, function (selection) {\n var _selectionSchemaNorma3 = selectionSchemaNormalizer(selection),\n _selectionSchemaNorma4 = _slicedToArray(_selectionSchemaNorma3, 3),\n rowStart = _selectionSchemaNorma4[0],\n rowEnd = _selectionSchemaNorma4[2];\n\n var amount = rowEnd - rowStart + 1;\n\n (0, _array.arrayEach)(Array.from(new Array(amount), function (_, i) {\n return rowStart + i;\n }), function (index) {\n if (!unorderedIndexes.has(index)) {\n unorderedIndexes.add(index);\n }\n });\n });\n\n // Sort indexes in ascending order to easily detecting non-consecutive columns.\n var orderedIndexes = Array.from(unorderedIndexes).sort(function (a, b) {\n return a - b;\n });\n var normalizedRowRanges = (0, _array.arrayReduce)(orderedIndexes, function (acc, rowIndex, index, array) {\n if (index !== 0 && rowIndex === array[index - 1] + 1) {\n acc[acc.length - 1][1] += 1;\n } else {\n acc.push([rowIndex, 1]);\n }\n\n return acc;\n }, []);\n\n return normalizedRowRanges;\n}\n\n/**\n * Check if passed value can be treated as valid cell coordinate. The second argument is\n * used to check if the value doesn't exceed the defined max table rows/columns count.\n *\n * @param {*} coord\n * @param {Number} maxTableItemsCount The value that declares the maximum coordinate that is still validatable.\n * @return {Boolean}\n */\nfunction isValidCoord(coord) {\n var maxTableItemsCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Infinity;\n\n return typeof coord === 'number' && coord >= 0 && coord < maxTableItemsCount;\n}\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.FIRST_AFTER_SECOND = exports.FIRST_BEFORE_SECOND = exports.DO_NOT_SWAP = undefined;\nexports.getSortFunctionForColumn = getSortFunctionForColumn;\n\nvar _date = __webpack_require__(292);\n\nvar _date2 = _interopRequireDefault(_date);\n\nvar _default = __webpack_require__(293);\n\nvar _default2 = _interopRequireDefault(_default);\n\nvar _numeric = __webpack_require__(294);\n\nvar _numeric2 = _interopRequireDefault(_numeric);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DO_NOT_SWAP = exports.DO_NOT_SWAP = 0;\nvar FIRST_BEFORE_SECOND = exports.FIRST_BEFORE_SECOND = -1;\nvar FIRST_AFTER_SECOND = exports.FIRST_AFTER_SECOND = 1;\n\n/**\n * Gets sort function for the particular column basing on its column meta.\n *\n * @private\n * @param {Object} columnMeta\n * @returns {Function}\n */\nfunction getSortFunctionForColumn(columnMeta) {\n if (columnMeta.sortFunction) {\n return columnMeta.sortFunction;\n } else if (columnMeta.type === 'date') {\n return _date2.default;\n } else if (columnMeta.type === 'numeric') {\n return _numeric2.default;\n }\n\n return _default2.default;\n}\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(9);\nvar document = __webpack_require__(15).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(9);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(18);\nvar dPs = __webpack_require__(208);\nvar enumBugKeys = __webpack_require__(80);\nvar IE_PROTO = __webpack_require__(78)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(74)('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(103).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(44);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(79)('keys');\nvar uid = __webpack_require__(50);\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(37);\nvar global = __webpack_require__(15);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(49) ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ITERATOR = __webpack_require__(12)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ctx = __webpack_require__(30);\nvar invoke = __webpack_require__(214);\nvar html = __webpack_require__(103);\nvar cel = __webpack_require__(74);\nvar global = __webpack_require__(15);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(44)(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(15);\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(101);\nvar hiddenKeys = __webpack_require__(80).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = __webpack_require__(144);\nvar defined = __webpack_require__(36);\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MATCH = __webpack_require__(12)('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $defineProperty = __webpack_require__(20);\nvar createDesc = __webpack_require__(51);\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(46);\nvar step = __webpack_require__(110);\nvar Iterators = __webpack_require__(52);\nvar toIObject = __webpack_require__(24);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(108)(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.getRegisteredCellTypes = exports.getRegisteredCellTypeNames = exports.hasCellType = exports.getCellType = exports.registerCellType = undefined;\n\nvar _staticRegister2 = __webpack_require__(38);\n\nvar _staticRegister3 = _interopRequireDefault(_staticRegister2);\n\nvar _editors = __webpack_require__(17);\n\nvar _renderers = __webpack_require__(14);\n\nvar _validators = __webpack_require__(34);\n\nvar _autocompleteType = __webpack_require__(255);\n\nvar _autocompleteType2 = _interopRequireDefault(_autocompleteType);\n\nvar _checkboxType = __webpack_require__(256);\n\nvar _checkboxType2 = _interopRequireDefault(_checkboxType);\n\nvar _dateType = __webpack_require__(257);\n\nvar _dateType2 = _interopRequireDefault(_dateType);\n\nvar _dropdownType = __webpack_require__(258);\n\nvar _dropdownType2 = _interopRequireDefault(_dropdownType);\n\nvar _handsontableType = __webpack_require__(259);\n\nvar _handsontableType2 = _interopRequireDefault(_handsontableType);\n\nvar _numericType = __webpack_require__(260);\n\nvar _numericType2 = _interopRequireDefault(_numericType);\n\nvar _passwordType = __webpack_require__(261);\n\nvar _passwordType2 = _interopRequireDefault(_passwordType);\n\nvar _textType = __webpack_require__(262);\n\nvar _textType2 = _interopRequireDefault(_textType);\n\nvar _timeType = __webpack_require__(263);\n\nvar _timeType2 = _interopRequireDefault(_timeType);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _staticRegister = (0, _staticRegister3.default)('cellTypes'),\n register = _staticRegister.register,\n getItem = _staticRegister.getItem,\n hasItem = _staticRegister.hasItem,\n getNames = _staticRegister.getNames,\n getValues = _staticRegister.getValues;\n\n_register('autocomplete', _autocompleteType2.default);\n_register('checkbox', _checkboxType2.default);\n_register('date', _dateType2.default);\n_register('dropdown', _dropdownType2.default);\n_register('handsontable', _handsontableType2.default);\n_register('numeric', _numericType2.default);\n_register('password', _passwordType2.default);\n_register('text', _textType2.default);\n_register('time', _timeType2.default);\n\n/**\n * Retrieve cell type object.\n *\n * @param {String} name Cell type identification.\n * @returns {Object} Returns cell type object.\n */\nfunction _getItem(name) {\n if (!hasItem(name)) {\n throw Error('You declared cell type \"' + name + '\" as a string that is not mapped to a known object.\\n Cell type must be an object or a string mapped to an object registered by \"Handsontable.cellTypes.registerCellType\" method');\n }\n\n return getItem(name);\n}\n\n/**\n * Register cell type under specified name.\n *\n * @param {String} name Cell type identification.\n * @param {Object} type An object with contains keys (eq: `editor`, `renderer`, `validator`) which describes specified behaviour of the cell.\n */\nfunction _register(name, type) {\n var editor = type.editor,\n renderer = type.renderer,\n validator = type.validator;\n\n\n if (editor) {\n (0, _editors.registerEditor)(name, editor);\n }\n if (renderer) {\n (0, _renderers.registerRenderer)(name, renderer);\n }\n if (validator) {\n (0, _validators.registerValidator)(name, validator);\n }\n\n register(name, type);\n}\n\nexports.registerCellType = _register;\nexports.getCellType = _getItem;\nexports.hasCellType = hasItem;\nexports.getRegisteredCellTypeNames = getNames;\nexports.getRegisteredCellTypes = getValues;\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['Deprecation warning: This method is going to be removed in the next release.\\n If you want to select a cell using props, please use the `selectCell` method.'], ['Deprecation warning: This method is going to be removed in the next release.\\n If you want to select a cell using props, please use the \\\\`selectCell\\\\` method.']);\n\nexports.default = Core;\n\nvar _element = __webpack_require__(0);\n\nvar _setting = __webpack_require__(91);\n\nvar _function = __webpack_require__(43);\n\nvar _console = __webpack_require__(58);\n\nvar _mixed = __webpack_require__(11);\n\nvar _browser = __webpack_require__(39);\n\nvar _dataMap = __webpack_require__(264);\n\nvar _dataMap2 = _interopRequireDefault(_dataMap);\n\nvar _editorManager = __webpack_require__(267);\n\nvar _editorManager2 = _interopRequireDefault(_editorManager);\n\nvar _eventManager = __webpack_require__(5);\n\nvar _eventManager2 = _interopRequireDefault(_eventManager);\n\nvar _object = __webpack_require__(1);\n\nvar _array = __webpack_require__(2);\n\nvar _templateLiteralTag = __webpack_require__(42);\n\nvar _plugins = __webpack_require__(8);\n\nvar _renderers = __webpack_require__(14);\n\nvar _validators = __webpack_require__(34);\n\nvar _string = __webpack_require__(33);\n\nvar _number = __webpack_require__(6);\n\nvar _tableView = __webpack_require__(268);\n\nvar _tableView2 = _interopRequireDefault(_tableView);\n\nvar _dataSource = __webpack_require__(269);\n\nvar _dataSource2 = _interopRequireDefault(_dataSource);\n\nvar _data = __webpack_require__(92);\n\nvar _recordTranslator = __webpack_require__(195);\n\nvar _rootInstance = __webpack_require__(196);\n\nvar _src = __webpack_require__(4);\n\nvar _pluginHooks = __webpack_require__(16);\n\nvar _pluginHooks2 = _interopRequireDefault(_pluginHooks);\n\nvar _defaultSettings = __webpack_require__(197);\n\nvar _defaultSettings2 = _interopRequireDefault(_defaultSettings);\n\nvar _cellTypes = __webpack_require__(89);\n\nvar _i18n = __webpack_require__(198);\n\nvar _dictionariesManager = __webpack_require__(71);\n\nvar _utils = __webpack_require__(199);\n\nvar _keyStateObserver = __webpack_require__(200);\n\nvar _selection = __webpack_require__(201);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar activeGuid = null;\n\n/**\n * Handsontable constructor\n *\n * @core\n * @constructor Core\n * @description\n *\n * After Handsontable is constructed, you can modify the grid behavior using the available public methods.\n *\n * ---\n * ## How to call methods\n *\n * These are 2 equal ways to call a Handsontable method:\n *\n * ```js\n * // all following examples assume that you constructed Handsontable like this\n * const hot = new Handsontable(document.getElementById('example1'), options);\n *\n * // now, to use setDataAtCell method, you can either:\n * ht.setDataAtCell(0, 0, 'new value');\n * ```\n *\n * Alternatively, you can call the method using jQuery wrapper (__obsolete__, requires initialization using our jQuery guide\n * ```js\n * $('#example1').handsontable('setDataAtCell', 0, 0, 'new value');\n * ```\n * ---\n */\nfunction Core(rootElement, userSettings) {\n var _this = this;\n\n var rootInstanceSymbol = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var preventScrollingToCell = false;\n var instance = this;\n var GridSettings = function GridSettings() {};\n var eventManager = new _eventManager2.default(instance);\n var priv = void 0;\n var datamap = void 0;\n var dataSource = void 0;\n var grid = void 0;\n var editorManager = void 0;\n\n (0, _object.extend)(GridSettings.prototype, _defaultSettings2.default.prototype); // create grid settings as a copy of default settings\n (0, _object.extend)(GridSettings.prototype, userSettings); // overwrite defaults with user settings\n (0, _object.extend)(GridSettings.prototype, expandType(userSettings));\n\n (0, _utils.applyLanguageSetting)(GridSettings.prototype, userSettings.language);\n\n if ((0, _rootInstance.hasValidParameter)(rootInstanceSymbol)) {\n (0, _rootInstance.registerAsRootInstance)(this);\n }\n\n (0, _keyStateObserver.startObserving)();\n\n this.isDestroyed = false;\n this.rootElement = rootElement;\n this.isHotTableEnv = (0, _element.isChildOfWebComponentTable)(this.rootElement);\n _eventManager2.default.isHotTableEnv = this.isHotTableEnv;\n\n this.container = document.createElement('div');\n this.renderCall = false;\n\n rootElement.insertBefore(this.container, rootElement.firstChild);\n\n if (false) {}\n\n this.guid = 'ht_' + (0, _string.randomString)(); // this is the namespace for global events\n\n var recordTranslator = (0, _recordTranslator.getTranslator)(instance);\n\n dataSource = new _dataSource2.default(instance);\n\n if (!this.rootElement.id || this.rootElement.id.substring(0, 3) === 'ht_') {\n this.rootElement.id = this.guid; // if root element does not have an id, assign a random id\n }\n priv = {\n cellSettings: [],\n columnSettings: [],\n columnsSettingConflicts: ['data', 'width', 'language'],\n settings: new GridSettings(), // current settings instance\n selRange: null, // exposed by public method `getSelectedRange`\n isPopulated: null,\n scrollable: null,\n firstRun: true\n };\n\n var selection = new _selection.Selection(priv.settings, {\n countCols: function countCols() {\n return instance.countCols();\n },\n countRows: function countRows() {\n return instance.countRows();\n },\n propToCol: function propToCol(prop) {\n return datamap.propToCol(prop);\n },\n isEditorOpened: function isEditorOpened() {\n return instance.getActiveEditor() ? instance.getActiveEditor().isOpened() : false;\n }\n });\n\n this.selection = selection;\n\n this.selection.addLocalHook('beforeSetRangeStart', function (cellCoords) {\n _this.runHooks('beforeSetRangeStart', cellCoords);\n });\n\n this.selection.addLocalHook('beforeSetRangeStartOnly', function (cellCoords) {\n _this.runHooks('beforeSetRangeStartOnly', cellCoords);\n });\n\n this.selection.addLocalHook('beforeSetRangeEnd', function (cellCoords) {\n _this.runHooks('beforeSetRangeEnd', cellCoords);\n\n if (cellCoords.row < 0) {\n cellCoords.row = _this.view.wt.wtTable.getFirstVisibleRow();\n }\n if (cellCoords.col < 0) {\n cellCoords.col = _this.view.wt.wtTable.getFirstVisibleColumn();\n }\n });\n\n this.selection.addLocalHook('afterSetRangeEnd', function (cellCoords) {\n var preventScrolling = (0, _object.createObjectPropListener)(false);\n var selectionRange = _this.selection.getSelectedRange();\n\n var _selectionRange$curre = selectionRange.current(),\n from = _selectionRange$curre.from,\n to = _selectionRange$curre.to;\n\n var selectionLayerLevel = selectionRange.size() - 1;\n\n _this.runHooks('afterSelection', from.row, from.col, to.row, to.col, preventScrolling, selectionLayerLevel);\n _this.runHooks('afterSelectionByProp', from.row, instance.colToProp(from.col), to.row, instance.colToProp(to.col), preventScrolling, selectionLayerLevel);\n\n var isSelectedByAnyHeader = _this.selection.isSelectedByAnyHeader();\n var currentSelectedRange = _this.selection.selectedRange.current();\n\n var scrollToCell = true;\n\n if (preventScrollingToCell) {\n scrollToCell = false;\n }\n\n if (preventScrolling.isTouched()) {\n scrollToCell = !preventScrolling.value;\n }\n\n var isSelectedByRowHeader = _this.selection.isSelectedByRowHeader();\n var isSelectedByColumnHeader = _this.selection.isSelectedByColumnHeader();\n\n if (scrollToCell !== false) {\n if (!isSelectedByAnyHeader) {\n if (currentSelectedRange && !_this.selection.isMultiple()) {\n _this.view.scrollViewport(currentSelectedRange.from);\n } else {\n _this.view.scrollViewport(cellCoords);\n }\n } else if (isSelectedByRowHeader) {\n _this.view.scrollViewportVertically(cellCoords.row);\n } else if (isSelectedByColumnHeader) {\n _this.view.scrollViewportHorizontally(cellCoords.col);\n }\n }\n\n // @TODO: These CSS classes are no longer needed anymore. They are used only as a indicator of the selected\n // rows/columns in the MergedCells plugin (via border.js#L520 in the walkontable module). After fixing\n // the Border class this should be removed.\n if (isSelectedByRowHeader && isSelectedByColumnHeader) {\n (0, _element.addClass)(_this.rootElement, ['ht__selection--rows', 'ht__selection--columns']);\n } else if (isSelectedByRowHeader) {\n (0, _element.removeClass)(_this.rootElement, 'ht__selection--columns');\n (0, _element.addClass)(_this.rootElement, 'ht__selection--rows');\n } else if (isSelectedByColumnHeader) {\n (0, _element.removeClass)(_this.rootElement, 'ht__selection--rows');\n (0, _element.addClass)(_this.rootElement, 'ht__selection--columns');\n } else {\n (0, _element.removeClass)(_this.rootElement, ['ht__selection--rows', 'ht__selection--columns']);\n }\n\n _this._refreshBorders(null);\n });\n\n this.selection.addLocalHook('afterSelectionFinished', function (cellRanges) {\n var selectionLayerLevel = cellRanges.length - 1;\n var _cellRanges$selection = cellRanges[selectionLayerLevel],\n from = _cellRanges$selection.from,\n to = _cellRanges$selection.to;\n\n\n _this.runHooks('afterSelectionEnd', from.row, from.col, to.row, to.col, selectionLayerLevel);\n _this.runHooks('afterSelectionEndByProp', from.row, instance.colToProp(from.col), to.row, instance.colToProp(to.col), selectionLayerLevel);\n });\n\n this.selection.addLocalHook('afterIsMultipleSelection', function (isMultiple) {\n var changedIsMultiple = _this.runHooks('afterIsMultipleSelection', isMultiple.value);\n\n if (isMultiple.value) {\n isMultiple.value = changedIsMultiple;\n }\n });\n\n this.selection.addLocalHook('beforeModifyTransformStart', function (cellCoordsDelta) {\n _this.runHooks('modifyTransformStart', cellCoordsDelta);\n });\n this.selection.addLocalHook('afterModifyTransformStart', function (coords, rowTransformDir, colTransformDir) {\n _this.runHooks('afterModifyTransformStart', coords, rowTransformDir, colTransformDir);\n });\n this.selection.addLocalHook('beforeModifyTransformEnd', function (cellCoordsDelta) {\n _this.runHooks('modifyTransformEnd', cellCoordsDelta);\n });\n this.selection.addLocalHook('afterModifyTransformEnd', function (coords, rowTransformDir, colTransformDir) {\n _this.runHooks('afterModifyTransformEnd', coords, rowTransformDir, colTransformDir);\n });\n this.selection.addLocalHook('afterDeselect', function () {\n editorManager.destroyEditor();\n\n _this._refreshBorders();\n (0, _element.removeClass)(_this.rootElement, ['ht__selection--rows', 'ht__selection--columns']);\n\n _this.runHooks('afterDeselect');\n });\n this.selection.addLocalHook('insertRowRequire', function (totalRows) {\n _this.alter('insert_row', totalRows, 1, 'auto');\n });\n this.selection.addLocalHook('insertColRequire', function (totalCols) {\n _this.alter('insert_col', totalCols, 1, 'auto');\n });\n\n grid = {\n /**\n * Inserts or removes rows and columns.\n *\n * @memberof Core#\n * @function alter\n * @private\n * @param {String} action Possible values: \"insert_row\", \"insert_col\", \"remove_row\", \"remove_col\".\n * @param {Number|Array} index Row or column visual index which from the alter action will be triggered.\n * Alter actions such as \"remove_row\" and \"remove_col\" support array indexes in the\n * format `[[index, amount], [index, amount]...]` this can be used to remove\n * non-consecutive columns or rows in one call.\n * @param {Number} [amount=1] Ammount rows or columns to remove.\n * @param {String} [source] Optional. Source of hook runner.\n * @param {Boolean} [keepEmptyRows] Optional. Flag for preventing deletion of empty rows.\n */\n alter: function alter(action, index) {\n var amount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var source = arguments[3];\n var keepEmptyRows = arguments[4];\n\n var delta = void 0;\n\n function spliceWith(data, startIndex, count, toInject) {\n var valueFactory = function valueFactory() {\n var result = void 0;\n\n if (toInject === 'array') {\n result = [];\n } else if (toInject === 'object') {\n result = {};\n }\n\n return result;\n };\n var spliceArgs = (0, _array.arrayMap)(new Array(count), function () {\n return valueFactory();\n });\n\n spliceArgs.unshift(startIndex, 0);\n data.splice.apply(data, _toConsumableArray(spliceArgs));\n }\n\n var normalizeIndexesGroup = function normalizeIndexesGroup(indexes) {\n if (indexes.length === 0) {\n return [];\n }\n\n var sortedIndexes = [].concat(_toConsumableArray(indexes));\n\n // Sort the indexes in ascending order.\n sortedIndexes.sort(function (_ref, _ref2) {\n var _ref4 = _slicedToArray(_ref, 1),\n indexA = _ref4[0];\n\n var _ref3 = _slicedToArray(_ref2, 1),\n indexB = _ref3[0];\n\n if (indexA === indexB) {\n return 0;\n }\n\n return indexA > indexB ? 1 : -1;\n });\n\n // Normalize the {index, amount} groups into bigger groups.\n var normalizedIndexes = (0, _array.arrayReduce)(sortedIndexes, function (acc, _ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n groupIndex = _ref6[0],\n groupAmount = _ref6[1];\n\n var previousItem = acc[acc.length - 1];\n\n var _previousItem = _slicedToArray(previousItem, 2),\n prevIndex = _previousItem[0],\n prevAmount = _previousItem[1];\n\n var prevLastIndex = prevIndex + prevAmount;\n\n if (groupIndex <= prevLastIndex) {\n var amountToAdd = Math.max(groupAmount - (prevLastIndex - groupIndex), 0);\n\n previousItem[1] += amountToAdd;\n } else {\n acc.push([groupIndex, groupAmount]);\n }\n\n return acc;\n }, [sortedIndexes[0]]);\n\n return normalizedIndexes;\n };\n\n /* eslint-disable no-case-declarations */\n switch (action) {\n case 'insert_row':\n\n var numberOfSourceRows = instance.countSourceRows();\n\n if (instance.getSettings().maxRows === numberOfSourceRows) {\n return;\n }\n // eslint-disable-next-line no-param-reassign\n index = (0, _mixed.isDefined)(index) ? index : numberOfSourceRows;\n\n delta = datamap.createRow(index, amount, source);\n spliceWith(priv.cellSettings, index, amount, 'array');\n\n if (delta) {\n if (selection.isSelected() && selection.selectedRange.current().from.row >= index) {\n selection.selectedRange.current().from.row += delta;\n selection.transformEnd(delta, 0); // will call render() internally\n } else {\n instance._refreshBorders(); // it will call render and prepare methods\n }\n }\n break;\n\n case 'insert_col':\n delta = datamap.createCol(index, amount, source);\n\n for (var row = 0, len = instance.countSourceRows(); row < len; row++) {\n if (priv.cellSettings[row]) {\n spliceWith(priv.cellSettings[row], index, amount);\n }\n }\n\n if (delta) {\n if (Array.isArray(instance.getSettings().colHeaders)) {\n var spliceArray = [index, 0];\n spliceArray.length += delta; // inserts empty (undefined) elements at the end of an array\n Array.prototype.splice.apply(instance.getSettings().colHeaders, spliceArray); // inserts empty (undefined) elements into the colHeader array\n }\n\n if (selection.isSelected() && selection.selectedRange.current().from.col >= index) {\n selection.selectedRange.current().from.col += delta;\n selection.transformEnd(0, delta); // will call render() internally\n } else {\n instance._refreshBorders(); // it will call render and prepare methods\n }\n }\n break;\n\n case 'remove_row':\n\n var removeRow = function removeRow(indexes) {\n var offset = 0;\n\n // Normalize the {index, amount} groups into bigger groups.\n (0, _array.arrayEach)(indexes, function (_ref7) {\n var _ref8 = _slicedToArray(_ref7, 2),\n groupIndex = _ref8[0],\n groupAmount = _ref8[1];\n\n var calcIndex = (0, _mixed.isEmpty)(groupIndex) ? instance.countRows() - 1 : Math.max(groupIndex - offset, 0);\n\n // If the 'index' is an integer decrease it by 'offset' otherwise pass it through to make the value\n // compatible with datamap.removeCol method.\n if (Number.isInteger(groupIndex)) {\n // eslint-disable-next-line no-param-reassign\n groupIndex = Math.max(groupIndex - offset, 0);\n }\n\n // TODO: for datamap.removeRow index should be passed as it is (with undefined and null values). If not, the logic\n // inside the datamap.removeRow breaks the removing functionality.\n datamap.removeRow(groupIndex, groupAmount, source);\n priv.cellSettings.splice(calcIndex, amount);\n\n var totalRows = instance.countRows();\n var fixedRowsTop = instance.getSettings().fixedRowsTop;\n\n if (fixedRowsTop >= calcIndex + 1) {\n instance.getSettings().fixedRowsTop -= Math.min(groupAmount, fixedRowsTop - calcIndex);\n }\n\n var fixedRowsBottom = instance.getSettings().fixedRowsBottom;\n\n if (fixedRowsBottom && calcIndex >= totalRows - fixedRowsBottom) {\n instance.getSettings().fixedRowsBottom -= Math.min(groupAmount, fixedRowsBottom);\n }\n\n offset += groupAmount;\n });\n };\n\n if (Array.isArray(index)) {\n removeRow(normalizeIndexesGroup(index));\n } else {\n removeRow([[index, amount]]);\n }\n\n grid.adjustRowsAndCols();\n instance._refreshBorders(); // it will call render and prepare methods\n break;\n\n case 'remove_col':\n\n var removeCol = function removeCol(indexes) {\n var offset = 0;\n\n // Normalize the {index, amount} groups into bigger groups.\n (0, _array.arrayEach)(indexes, function (_ref9) {\n var _ref10 = _slicedToArray(_ref9, 2),\n groupIndex = _ref10[0],\n groupAmount = _ref10[1];\n\n var calcIndex = (0, _mixed.isEmpty)(groupIndex) ? instance.countCols() - 1 : Math.max(groupIndex - offset, 0);\n\n var visualColumnIndex = recordTranslator.toPhysicalColumn(calcIndex);\n\n // If the 'index' is an integer decrease it by 'offset' otherwise pass it through to make the value\n // compatible with datamap.removeCol method.\n if (Number.isInteger(groupIndex)) {\n // eslint-disable-next-line no-param-reassign\n groupIndex = Math.max(groupIndex - offset, 0);\n }\n\n // TODO: for datamap.removeCol index should be passed as it is (with undefined and null values). If not, the logic\n // inside the datamap.removeCol breaks the removing functionality.\n datamap.removeCol(groupIndex, groupAmount, source);\n\n for (var _row = 0, _len = instance.countSourceRows(); _row < _len; _row++) {\n if (priv.cellSettings[_row]) {\n // if row hasn't been rendered it wouldn't have cellSettings\n priv.cellSettings[_row].splice(visualColumnIndex, groupAmount);\n }\n }\n var fixedColumnsLeft = instance.getSettings().fixedColumnsLeft;\n\n if (fixedColumnsLeft >= calcIndex + 1) {\n instance.getSettings().fixedColumnsLeft -= Math.min(groupAmount, fixedColumnsLeft - calcIndex);\n }\n\n if (Array.isArray(instance.getSettings().colHeaders)) {\n if (typeof visualColumnIndex === 'undefined') {\n visualColumnIndex = -1;\n }\n instance.getSettings().colHeaders.splice(visualColumnIndex, groupAmount);\n }\n\n offset += groupAmount;\n });\n };\n\n if (Array.isArray(index)) {\n removeCol(normalizeIndexesGroup(index));\n } else {\n removeCol([[index, amount]]);\n }\n\n grid.adjustRowsAndCols();\n instance._refreshBorders(); // it will call render and prepare methods\n\n break;\n default:\n throw new Error('There is no such action \"' + action + '\"');\n }\n\n if (!keepEmptyRows) {\n grid.adjustRowsAndCols(); // makes sure that we did not add rows that will be removed in next refresh\n }\n },\n\n\n /**\n * Makes sure there are empty rows at the bottom of the table\n */\n adjustRowsAndCols: function adjustRowsAndCols() {\n if (priv.settings.minRows) {\n // should I add empty rows to data source to meet minRows?\n var rows = instance.countRows();\n\n if (rows < priv.settings.minRows) {\n for (var r = 0, minRows = priv.settings.minRows; r < minRows - rows; r++) {\n datamap.createRow(instance.countRows(), 1, 'auto');\n }\n }\n }\n if (priv.settings.minSpareRows) {\n var emptyRows = instance.countEmptyRows(true);\n\n // should I add empty rows to meet minSpareRows?\n if (emptyRows < priv.settings.minSpareRows) {\n for (; emptyRows < priv.settings.minSpareRows && instance.countSourceRows() < priv.settings.maxRows; emptyRows++) {\n datamap.createRow(instance.countRows(), 1, 'auto');\n }\n }\n }\n {\n var emptyCols = void 0;\n\n // count currently empty cols\n if (priv.settings.minCols || priv.settings.minSpareCols) {\n emptyCols = instance.countEmptyCols(true);\n }\n\n // should I add empty cols to meet minCols?\n if (priv.settings.minCols && !priv.settings.columns && instance.countCols() < priv.settings.minCols) {\n for (; instance.countCols() < priv.settings.minCols; emptyCols++) {\n datamap.createCol(instance.countCols(), 1, 'auto');\n }\n }\n // should I add empty cols to meet minSpareCols?\n if (priv.settings.minSpareCols && !priv.settings.columns && instance.dataType === 'array' && emptyCols < priv.settings.minSpareCols) {\n for (; emptyCols < priv.settings.minSpareCols && instance.countCols() < priv.settings.maxCols; emptyCols++) {\n datamap.createCol(instance.countCols(), 1, 'auto');\n }\n }\n }\n var rowCount = instance.countRows();\n var colCount = instance.countCols();\n\n if (rowCount === 0 || colCount === 0) {\n selection.deselect();\n }\n\n if (selection.isSelected()) {\n (0, _array.arrayEach)(selection.selectedRange, function (range) {\n var selectionChanged = false;\n var fromRow = range.from.row;\n var fromCol = range.from.col;\n var toRow = range.to.row;\n var toCol = range.to.col;\n\n // if selection is outside, move selection to last row\n if (fromRow > rowCount - 1) {\n fromRow = rowCount - 1;\n selectionChanged = true;\n\n if (toRow > fromRow) {\n toRow = fromRow;\n }\n } else if (toRow > rowCount - 1) {\n toRow = rowCount - 1;\n selectionChanged = true;\n\n if (fromRow > toRow) {\n fromRow = toRow;\n }\n }\n // if selection is outside, move selection to last row\n if (fromCol > colCount - 1) {\n fromCol = colCount - 1;\n selectionChanged = true;\n\n if (toCol > fromCol) {\n toCol = fromCol;\n }\n } else if (toCol > colCount - 1) {\n toCol = colCount - 1;\n selectionChanged = true;\n\n if (fromCol > toCol) {\n fromCol = toCol;\n }\n }\n\n if (selectionChanged) {\n instance.selectCell(fromRow, fromCol, toRow, toCol);\n }\n });\n }\n if (instance.view) {\n instance.view.wt.wtOverlays.adjustElementsSize();\n }\n },\n\n\n /**\n * Populate the data from the provided 2d array from the given cell coordinates.\n *\n * @private\n * @param {Object} start Start selection position. Visual indexes.\n * @param {Array} input 2d data array.\n * @param {Object} [end] End selection position (only for drag-down mode). Visual indexes.\n * @param {String} [source=\"populateFromArray\"] Source information string.\n * @param {String} [method=\"overwrite\"] Populate method. Possible options: `shift_down`, `shift_right`, `overwrite`.\n * @param {String} direction (left|right|up|down) String specifying the direction.\n * @param {Array} deltas The deltas array. A difference between values of adjacent cells.\n * Useful **only** when the type of handled cells is `numeric`.\n * @returns {Object|undefined} ending td in pasted area (only if any cell was changed).\n */\n populateFromArray: function populateFromArray(start, input, end, source, method, direction, deltas) {\n // TODO: either remove or implement the `direction` argument. Currently it's not working at all.\n var r = void 0;\n var rlen = void 0;\n var c = void 0;\n var clen = void 0;\n var setData = [];\n var current = {};\n\n rlen = input.length;\n\n if (rlen === 0) {\n return false;\n }\n\n var repeatCol = void 0;\n var repeatRow = void 0;\n var cmax = void 0;\n var rmax = void 0;\n\n /* eslint-disable no-case-declarations */\n // insert data with specified pasteMode method\n switch (method) {\n case 'shift_down':\n repeatCol = end ? end.col - start.col + 1 : 0;\n repeatRow = end ? end.row - start.row + 1 : 0;\n // eslint-disable-next-line no-param-reassign\n input = (0, _data.translateRowsToColumns)(input);\n for (c = 0, clen = input.length, cmax = Math.max(clen, repeatCol); c < cmax; c++) {\n if (c < clen) {\n var _instance;\n\n for (r = 0, rlen = input[c].length; r < repeatRow - rlen; r++) {\n input[c].push(input[c][r % rlen]);\n }\n input[c].unshift(start.col + c, start.row, 0);\n (_instance = instance).spliceCol.apply(_instance, _toConsumableArray(input[c]));\n } else {\n var _instance2;\n\n input[c % clen][0] = start.col + c;\n (_instance2 = instance).spliceCol.apply(_instance2, _toConsumableArray(input[c % clen]));\n }\n }\n break;\n\n case 'shift_right':\n repeatCol = end ? end.col - start.col + 1 : 0;\n repeatRow = end ? end.row - start.row + 1 : 0;\n for (r = 0, rlen = input.length, rmax = Math.max(rlen, repeatRow); r < rmax; r++) {\n if (r < rlen) {\n var _instance3;\n\n for (c = 0, clen = input[r].length; c < repeatCol - clen; c++) {\n input[r].push(input[r][c % clen]);\n }\n input[r].unshift(start.row + r, start.col, 0);\n (_instance3 = instance).spliceRow.apply(_instance3, _toConsumableArray(input[r]));\n } else {\n var _instance4;\n\n input[r % rlen][0] = start.row + r;\n (_instance4 = instance).spliceRow.apply(_instance4, _toConsumableArray(input[r % rlen]));\n }\n }\n break;\n\n case 'overwrite':\n default:\n // overwrite and other not specified options\n current.row = start.row;\n current.col = start.col;\n\n var selected = { // selected range\n row: end && start ? end.row - start.row + 1 : 1,\n col: end && start ? end.col - start.col + 1 : 1\n };\n var skippedRow = 0;\n var skippedColumn = 0;\n var pushData = true;\n var cellMeta = void 0;\n\n var getInputValue = function getInputValue(row) {\n var col = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n var rowValue = input[row % input.length];\n\n if (col !== null) {\n return rowValue[col % rowValue.length];\n }\n\n return rowValue;\n };\n var rowInputLength = input.length;\n var rowSelectionLength = end ? end.row - start.row + 1 : 0;\n\n if (end) {\n rlen = rowSelectionLength;\n } else {\n rlen = Math.max(rowInputLength, rowSelectionLength);\n }\n for (r = 0; r < rlen; r++) {\n if (end && current.row > end.row && rowSelectionLength > rowInputLength || !priv.settings.allowInsertRow && current.row > instance.countRows() - 1 || current.row >= priv.settings.maxRows) {\n break;\n }\n var visualRow = r - skippedRow;\n var colInputLength = getInputValue(visualRow).length;\n var colSelectionLength = end ? end.col - start.col + 1 : 0;\n\n if (end) {\n clen = colSelectionLength;\n } else {\n clen = Math.max(colInputLength, colSelectionLength);\n }\n current.col = start.col;\n cellMeta = instance.getCellMeta(current.row, current.col);\n\n if ((source === 'CopyPaste.paste' || source === 'Autofill.autofill') && cellMeta.skipRowOnPaste) {\n skippedRow += 1;\n current.row += 1;\n rlen += 1;\n /* eslint-disable no-continue */\n continue;\n }\n skippedColumn = 0;\n\n for (c = 0; c < clen; c++) {\n if (end && current.col > end.col && colSelectionLength > colInputLength || !priv.settings.allowInsertColumn && current.col > instance.countCols() - 1 || current.col >= priv.settings.maxCols) {\n break;\n }\n cellMeta = instance.getCellMeta(current.row, current.col);\n\n if ((source === 'CopyPaste.paste' || source === 'Autofill.fill') && cellMeta.skipColumnOnPaste) {\n skippedColumn += 1;\n current.col += 1;\n clen += 1;\n continue;\n }\n if (cellMeta.readOnly) {\n current.col += 1;\n /* eslint-disable no-continue */\n continue;\n }\n var visualColumn = c - skippedColumn;\n var value = getInputValue(visualRow, visualColumn);\n var orgValue = instance.getDataAtCell(current.row, current.col);\n var index = {\n row: visualRow,\n col: visualColumn\n };\n\n if (source === 'Autofill.fill') {\n var result = instance.runHooks('beforeAutofillInsidePopulate', index, direction, input, deltas, {}, selected);\n\n if (result) {\n value = (0, _mixed.isUndefined)(result.value) ? value : result.value;\n }\n }\n if (value !== null && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {\n if (orgValue === null || (typeof orgValue === 'undefined' ? 'undefined' : _typeof(orgValue)) !== 'object') {\n pushData = false;\n } else {\n var orgValueSchema = (0, _object.duckSchema)(orgValue[0] || orgValue);\n var valueSchema = (0, _object.duckSchema)(value[0] || value);\n\n /* eslint-disable max-depth */\n if ((0, _object.isObjectEqual)(orgValueSchema, valueSchema)) {\n value = (0, _object.deepClone)(value);\n } else {\n pushData = false;\n }\n }\n } else if (orgValue !== null && (typeof orgValue === 'undefined' ? 'undefined' : _typeof(orgValue)) === 'object') {\n pushData = false;\n }\n if (pushData) {\n setData.push([current.row, current.col, value]);\n }\n pushData = true;\n current.col += 1;\n }\n current.row += 1;\n }\n instance.setDataAtCell(setData, null, null, source || 'populateFromArray');\n break;\n }\n }\n };\n\n /**\n * Internal function to set `language` key of settings.\n *\n * @private\n * @param {String} languageCode Language code for specific language i.e. 'en-US', 'pt-BR', 'de-DE'\n * @fires Hooks#afterLanguageChange\n */\n function setLanguage(languageCode) {\n var normalizedLanguageCode = (0, _utils.normalizeLanguageCode)(languageCode);\n\n if ((0, _dictionariesManager.hasLanguageDictionary)(normalizedLanguageCode)) {\n instance.runHooks('beforeLanguageChange', normalizedLanguageCode);\n\n GridSettings.prototype.language = normalizedLanguageCode;\n\n instance.runHooks('afterLanguageChange', normalizedLanguageCode);\n } else {\n (0, _utils.warnUserAboutLanguageRegistration)(languageCode);\n }\n }\n\n this.init = function () {\n dataSource.setData(priv.settings.data);\n instance.runHooks('beforeInit');\n\n if ((0, _browser.isMobileBrowser)()) {\n (0, _element.addClass)(instance.rootElement, 'mobile');\n }\n\n this.updateSettings(priv.settings, true);\n\n this.view = new _tableView2.default(this);\n editorManager = _editorManager2.default.getInstance(instance, priv, selection, datamap);\n\n this.forceFullRender = true; // used when data was changed\n\n instance.runHooks('init');\n this.view.render();\n\n if (_typeof(priv.firstRun) === 'object') {\n instance.runHooks('afterChange', priv.firstRun[0], priv.firstRun[1]);\n priv.firstRun = false;\n }\n instance.runHooks('afterInit');\n };\n\n function ValidatorsQueue() {\n // moved this one level up so it can be used in any function here. Probably this should be moved to a separate file\n var resolved = false;\n\n return {\n validatorsInQueue: 0,\n valid: true,\n addValidatorToQueue: function addValidatorToQueue() {\n this.validatorsInQueue += 1;\n resolved = false;\n },\n removeValidatorFormQueue: function removeValidatorFormQueue() {\n this.validatorsInQueue = this.validatorsInQueue - 1 < 0 ? 0 : this.validatorsInQueue - 1;\n this.checkIfQueueIsEmpty();\n },\n onQueueEmpty: function onQueueEmpty() {},\n checkIfQueueIsEmpty: function checkIfQueueIsEmpty() {\n if (this.validatorsInQueue === 0 && resolved === false) {\n resolved = true;\n this.onQueueEmpty(this.valid);\n }\n }\n };\n }\n\n /**\n * Get parsed number from numeric string.\n *\n * @private\n * @param {String} numericData Float (separated by a dot or a comma) or integer.\n * @returns {Number} Number if we get data in parsable format, not changed value otherwise.\n */\n function getParsedNumber(numericData) {\n // Unifying \"float like\" string. Change from value with comma determiner to value with dot determiner,\n // for example from `450,65` to `450.65`.\n var unifiedNumericData = numericData.replace(',', '.');\n\n if (isNaN(parseFloat(unifiedNumericData)) === false) {\n return parseFloat(unifiedNumericData);\n }\n\n return numericData;\n }\n\n function validateChanges(changes, source, callback) {\n var waitingForValidator = new ValidatorsQueue();\n var isNumericData = function isNumericData(value) {\n return value.length > 0 && /^-?[\\d\\s]*(\\.|,)?\\d*$/.test(value);\n };\n\n waitingForValidator.onQueueEmpty = resolve;\n\n for (var i = changes.length - 1; i >= 0; i--) {\n if (changes[i] === null) {\n changes.splice(i, 1);\n } else {\n var _changes$i = _slicedToArray(changes[i], 4),\n row = _changes$i[0],\n prop = _changes$i[1],\n newValue = _changes$i[3];\n\n var col = datamap.propToCol(prop);\n var cellProperties = instance.getCellMeta(row, col);\n\n if (cellProperties.type === 'numeric' && typeof newValue === 'string' && isNumericData(newValue)) {\n changes[i][3] = getParsedNumber(newValue);\n }\n\n /* eslint-disable no-loop-func */\n if (instance.getCellValidator(cellProperties)) {\n waitingForValidator.addValidatorToQueue();\n instance.validateCell(changes[i][3], cellProperties, function (index, cellPropertiesReference) {\n return function (result) {\n if (typeof result !== 'boolean') {\n throw new Error('Validation error: result is not boolean');\n }\n if (result === false && cellPropertiesReference.allowInvalid === false) {\n changes.splice(index, 1); // cancel the change\n cellPropertiesReference.valid = true; // we cancelled the change, so cell value is still valid\n var cell = instance.getCell(cellPropertiesReference.visualRow, cellPropertiesReference.visualCol);\n (0, _element.removeClass)(cell, instance.getSettings().invalidCellClassName);\n // index -= 1;\n }\n waitingForValidator.removeValidatorFormQueue();\n };\n }(i, cellProperties), source);\n }\n }\n }\n waitingForValidator.checkIfQueueIsEmpty();\n\n function resolve() {\n var beforeChangeResult = void 0;\n\n if (changes.length) {\n beforeChangeResult = instance.runHooks('beforeChange', changes, source || 'edit');\n if ((0, _function.isFunction)(beforeChangeResult)) {\n (0, _console.warn)('Your beforeChange callback returns a function. It\\'s not supported since Handsontable 0.12.1 (and the returned function will not be executed).');\n } else if (beforeChangeResult === false) {\n changes.splice(0, changes.length); // invalidate all changes (remove everything from array)\n }\n }\n callback(); // called when async validators are resolved and beforeChange was not async\n }\n }\n\n /**\n * Internal function to apply changes. Called after validateChanges\n *\n * @private\n * @param {Array} changes Array in form of [row, prop, oldValue, newValue]\n * @param {String} source String that identifies how this change will be described in changes array (useful in onChange callback)\n * @fires Hooks#beforeChangeRender\n * @fires Hooks#afterChange\n */\n function applyChanges(changes, source) {\n var i = changes.length - 1;\n\n if (i < 0) {\n return;\n }\n\n for (; i >= 0; i--) {\n var skipThisChange = false;\n\n if (changes[i] === null) {\n changes.splice(i, 1);\n /* eslint-disable no-continue */\n continue;\n }\n\n if ((changes[i][2] === null || changes[i][2] === void 0) && (changes[i][3] === null || changes[i][3] === void 0)) {\n /* eslint-disable no-continue */\n continue;\n }\n\n if (priv.settings.allowInsertRow) {\n while (changes[i][0] > instance.countRows() - 1) {\n var numberOfCreatedRows = datamap.createRow(void 0, void 0, source);\n\n if (numberOfCreatedRows === 0) {\n skipThisChange = true;\n break;\n }\n }\n }\n\n if (skipThisChange) {\n /* eslint-disable no-continue */\n continue;\n }\n\n if (instance.dataType === 'array' && (!priv.settings.columns || priv.settings.columns.length === 0) && priv.settings.allowInsertColumn) {\n while (datamap.propToCol(changes[i][1]) > instance.countCols() - 1) {\n datamap.createCol(void 0, void 0, source);\n }\n }\n\n datamap.set(changes[i][0], changes[i][1], changes[i][3]);\n }\n\n instance.forceFullRender = true; // used when data was changed\n grid.adjustRowsAndCols();\n instance.runHooks('beforeChangeRender', changes, source);\n editorManager.lockEditor();\n instance._refreshBorders(null);\n editorManager.unlockEditor();\n instance.view.wt.wtOverlays.adjustElementsSize();\n instance.runHooks('afterChange', changes, source || 'edit');\n\n var activeEditor = instance.getActiveEditor();\n\n if (activeEditor && (0, _mixed.isDefined)(activeEditor.refreshValue)) {\n activeEditor.refreshValue();\n }\n }\n\n /**\n * Validate a single cell.\n *\n * @param {String|Number} value\n * @param cellProperties\n * @param callback\n * @param source\n */\n this.validateCell = function (value, cellProperties, callback, source) {\n var validator = instance.getCellValidator(cellProperties);\n\n // the `canBeValidated = false` argument suggests, that the cell passes validation by default.\n function done(valid) {\n var canBeValidated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n // Fixes GH#3903\n if (!canBeValidated || cellProperties.hidden === true) {\n callback(valid);\n return;\n }\n\n var col = cellProperties.visualCol;\n var row = cellProperties.visualRow;\n var td = instance.getCell(row, col, true);\n\n if (td && td.nodeName !== 'TH') {\n instance.view.wt.wtSettings.settings.cellRenderer(row, col, td);\n }\n callback(valid);\n }\n\n if ((0, _mixed.isRegExp)(validator)) {\n validator = function (expression) {\n return function (cellValue, validatorCallback) {\n validatorCallback(expression.test(cellValue));\n };\n }(validator);\n }\n\n if ((0, _function.isFunction)(validator)) {\n // eslint-disable-next-line no-param-reassign\n value = instance.runHooks('beforeValidate', value, cellProperties.visualRow, cellProperties.prop, source);\n\n // To provide consistent behaviour, validation should be always asynchronous\n instance._registerTimeout(setTimeout(function () {\n validator.call(cellProperties, value, function (valid) {\n // eslint-disable-next-line no-param-reassign\n valid = instance.runHooks('afterValidate', valid, value, cellProperties.visualRow, cellProperties.prop, source);\n cellProperties.valid = valid;\n\n done(valid);\n instance.runHooks('postAfterValidate', valid, value, cellProperties.visualRow, cellProperties.prop, source);\n });\n }, 0));\n } else {\n // resolve callback even if validator function was not found\n instance._registerTimeout(setTimeout(function () {\n cellProperties.valid = true;\n done(cellProperties.valid, false);\n }, 0));\n }\n };\n\n function setDataInputToArray(row, propOrCol, value) {\n if ((typeof row === 'undefined' ? 'undefined' : _typeof(row)) === 'object') {\n // is it an array of changes\n return row;\n }\n return [[row, propOrCol, value]];\n }\n\n /**\n * @description\n * Set new value to a cell. To change many cells at once (recommended way), pass an array of `changes` in format\n * `[[row, col, value],...]` as the first argument.\n *\n * @memberof Core#\n * @function setDataAtCell\n * @param {Number|Array} row Visual row index or array of changes in format `[[row, col, value],...]`.\n * @param {Number} [column] Visual column index.\n * @param {String} [value] New value.\n * @param {String} [source] String that identifies how this change will be described in the changes array (useful in onAfterChange or onBeforeChange callback).\n */\n this.setDataAtCell = function (row, column, value, source) {\n var input = setDataInputToArray(row, column, value);\n var changes = [];\n var changeSource = source;\n var i = void 0;\n var ilen = void 0;\n var prop = void 0;\n\n for (i = 0, ilen = input.length; i < ilen; i++) {\n if (_typeof(input[i]) !== 'object') {\n throw new Error('Method `setDataAtCell` accepts row number or changes array of arrays as its first parameter');\n }\n if (typeof input[i][1] !== 'number') {\n throw new Error('Method `setDataAtCell` accepts row and column number as its parameters. If you want to use object property name, use method `setDataAtRowProp`');\n }\n prop = datamap.colToProp(input[i][1]);\n changes.push([input[i][0], prop, dataSource.getAtCell(recordTranslator.toPhysicalRow(input[i][0]), input[i][1]), input[i][2]]);\n }\n\n if (!changeSource && (typeof row === 'undefined' ? 'undefined' : _typeof(row)) === 'object') {\n changeSource = column;\n }\n\n instance.runHooks('afterSetDataAtCell', changes, changeSource);\n\n validateChanges(changes, changeSource, function () {\n applyChanges(changes, changeSource);\n });\n };\n\n /**\n * @description\n * Set new value to a cell. To change many cells at once (recommended way), pass an array of `changes` in format\n * `[[row, prop, value],...]` as the first argument.\n *\n * @memberof Core#\n * @function setDataAtRowProp\n * @param {Number|Array} row Visual row index or array of changes in format `[[row, prop, value], ...]`.\n * @param {String} prop Property name or the source string (e.g. `'first.name'` or `'0'`).\n * @param {String} value Value to be set.\n * @param {String} [source] String that identifies how this change will be described in changes array (useful in onChange callback).\n */\n this.setDataAtRowProp = function (row, prop, value, source) {\n var input = setDataInputToArray(row, prop, value);\n var changes = [];\n var changeSource = source;\n var i = void 0;\n var ilen = void 0;\n\n for (i = 0, ilen = input.length; i < ilen; i++) {\n changes.push([input[i][0], input[i][1], dataSource.getAtCell(recordTranslator.toPhysicalRow(input[i][0]), input[i][1]), input[i][2]]);\n }\n\n if (!changeSource && (typeof row === 'undefined' ? 'undefined' : _typeof(row)) === 'object') {\n changeSource = prop;\n }\n\n instance.runHooks('afterSetDataAtRowProp', changes, changeSource);\n\n validateChanges(changes, changeSource, function () {\n applyChanges(changes, changeSource);\n });\n };\n\n /**\n * Listen to the keyboard input on document body. This allows Handsontable to capture keyboard events and respond\n * in the right way.\n *\n * @memberof Core#\n * @function listen\n * @param {Boolean} [modifyDocumentFocus=true] If `true`, currently focused element will be blured (which returns focus\n * to the document.body). Otherwise the active element does not lose its focus.\n * @fires Hooks#afterListen\n */\n this.listen = function () {\n var modifyDocumentFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (modifyDocumentFocus) {\n var invalidActiveElement = !document.activeElement || document.activeElement && document.activeElement.nodeName === void 0;\n\n if (document.activeElement && document.activeElement !== document.body && !invalidActiveElement) {\n document.activeElement.blur();\n } else if (invalidActiveElement) {\n // IE\n document.body.focus();\n }\n }\n\n if (instance && !instance.isListening()) {\n activeGuid = instance.guid;\n instance.runHooks('afterListen');\n }\n };\n\n /**\n * Stop listening to keyboard input on the document body. Calling this method makes the Handsontable inactive for\n * any keyboard events.\n *\n * @memberof Core#\n * @function unlisten\n */\n this.unlisten = function () {\n if (this.isListening()) {\n activeGuid = null;\n instance.runHooks('afterUnlisten');\n }\n };\n\n /**\n * Returns `true` if the current Handsontable instance is listening to keyboard input on document body.\n *\n * @memberof Core#\n * @function isListening\n * @returns {Boolean} `true` if the instance is listening, `false` otherwise.\n */\n this.isListening = function () {\n return activeGuid === instance.guid;\n };\n\n /**\n * Destroys the current editor, render the table and prepares the editor of the newly selected cell.\n *\n * @memberof Core#\n * @function destroyEditor\n * @param {Boolean} [revertOriginal=false] If `true`, the previous value will be restored. Otherwise, the edited value will be saved.\n * @param {Boolean} [prepareEditorIfNeeded=true] If `true` the editor under the selected cell will be prepared to open.\n */\n this.destroyEditor = function () {\n var revertOriginal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var prepareEditorIfNeeded = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n instance._refreshBorders(revertOriginal, prepareEditorIfNeeded);\n };\n\n /**\n * Populate cells at position with 2D input array (e.g. `[[1, 2], [3, 4]]`). Use `endRow`, `endCol` when you\n * want to cut input when a certain row is reached.\n *\n * Optional `method` argument has the same effect as pasteMode option (see {@link Options#pasteMode}).\n *\n * @memberof Core#\n * @function populateFromArray\n * @param {Number} row Start visual row index.\n * @param {Number} column Start visual column index.\n * @param {Array} input 2d array\n * @param {Number} [endRow] End visual row index (use when you want to cut input when certain row is reached).\n * @param {Number} [endCol] End visual column index (use when you want to cut input when certain column is reached).\n * @param {String} [source=populateFromArray] Used to identify this call in the resulting events (beforeChange, afterChange).\n * @param {String} [method=overwrite] Populate method, possible values: `'shift_down'`, `'shift_right'`, `'overwrite'`.\n * @param {String} direction Populate direction, possible values: `'left'`, `'right'`, `'up'`, `'down'`.\n * @param {Array} deltas The deltas array. A difference between values of adjacent cells.\n * Useful **only** when the type of handled cells is `numeric`.\n */\n this.populateFromArray = function (row, column, input, endRow, endCol, source, method, direction, deltas) {\n if (!((typeof input === 'undefined' ? 'undefined' : _typeof(input)) === 'object' && _typeof(input[0]) === 'object')) {\n throw new Error('populateFromArray parameter `input` must be an array of arrays'); // API changed in 0.9-beta2, let's check if you use it correctly\n }\n\n var c = typeof endRow === 'number' ? new _src.CellCoords(endRow, endCol) : null;\n\n return grid.populateFromArray(new _src.CellCoords(row, column), input, c, source, method, direction, deltas);\n };\n\n /**\n * Adds/removes data from the column. This method works the same as Array.splice for arrays (see {@link DataMap#spliceCol}).\n *\n * @memberof Core#\n * @function spliceCol\n * @param {Number} column Index of the column in which do you want to do splice.\n * @param {Number} index Index at which to start changing the array. If negative, will begin that many elements from the end.\n * @param {Number} amount An integer indicating the number of old array elements to remove. If amount is 0, no elements are removed.\n * @param {...Number} [elements] The elements to add to the array. If you don't specify any elements, spliceCol simply removes elements from the array.\n */\n this.spliceCol = function (column, index, amount) {\n var _datamap;\n\n for (var _len2 = arguments.length, elements = Array(_len2 > 3 ? _len2 - 3 : 0), _key = 3; _key < _len2; _key++) {\n elements[_key - 3] = arguments[_key];\n }\n\n return (_datamap = datamap).spliceCol.apply(_datamap, [column, index, amount].concat(elements));\n };\n\n /**\n * Adds/removes data from the row. This method works the same as Array.splice for arrays (see {@link DataMap#spliceRow}).\n *\n * @memberof Core#\n * @function spliceRow\n * @param {Number} row Index of column in which do you want to do splice.\n * @param {Number} index Index at which to start changing the array. If negative, will begin that many elements from the end.\n * @param {Number} amount An integer indicating the number of old array elements to remove. If amount is 0, no elements are removed.\n * @param {...Number} [elements] The elements to add to the array. If you don't specify any elements, spliceCol simply removes elements from the array.\n */\n this.spliceRow = function (row, index, amount) {\n var _datamap2;\n\n for (var _len3 = arguments.length, elements = Array(_len3 > 3 ? _len3 - 3 : 0), _key2 = 3; _key2 < _len3; _key2++) {\n elements[_key2 - 3] = arguments[_key2];\n }\n\n return (_datamap2 = datamap).spliceRow.apply(_datamap2, [row, index, amount].concat(elements));\n };\n\n /**\n * Returns indexes of the currently selected cells as an array of arrays `[[startRow, startCol, endRow, endCol],...]`.\n *\n * Start row and start column are the coordinates of the active cell (where the selection was started).\n *\n * The version 0.36.0 adds a non-consecutive selection feature. Since this version, the method returns an array of arrays.\n * Additionally to collect the coordinates of the currently selected area (as it was previously done by the method)\n * you need to use `getSelectedLast` method.\n *\n * @memberof Core#\n * @function getSelected\n * @returns {Array[]|undefined} An array of arrays of the selection's coordinates.\n */\n this.getSelected = function () {\n // https://github.com/handsontable/handsontable/issues/44 //cjl\n if (selection.isSelected()) {\n return (0, _array.arrayMap)(selection.getSelectedRange(), function (_ref11) {\n var from = _ref11.from,\n to = _ref11.to;\n return [from.row, from.col, to.row, to.col];\n });\n }\n };\n\n /**\n * Returns the last coordinates applied to the table as a an array `[startRow, startCol, endRow, endCol]`.\n *\n * @since 0.36.0\n * @memberof Core#\n * @function getSelectedLast\n * @returns {Array|undefined} An array of the selection's coordinates.\n */\n this.getSelectedLast = function () {\n var selected = this.getSelected();\n var result = void 0;\n\n if (selected && selected.length > 0) {\n result = selected[selected.length - 1];\n }\n\n return result;\n };\n\n /**\n * Returns the current selection as an array of CellRange objects.\n *\n * The version 0.36.0 adds a non-consecutive selection feature. Since this version, the method returns an array of arrays.\n * Additionally to collect the coordinates of the currently selected area (as it was previously done by the method)\n * you need to use `getSelectedRangeLast` method.\n *\n * @memberof Core#\n * @function getSelectedRange\n * @returns {CellRange[]|undefined} Selected range object or undefined if there is no selection.\n */\n this.getSelectedRange = function () {\n // https://github.com/handsontable/handsontable/issues/44 //cjl\n if (selection.isSelected()) {\n return Array.from(selection.getSelectedRange());\n }\n };\n\n /**\n * Returns the last coordinates applied to the table as a CellRange object.\n *\n * @memberof Core#\n * @function getSelectedRangeLast\n * @since 0.36.0\n * @returns {CellRange|undefined} Selected range object or undefined` if there is no selection.\n */\n this.getSelectedRangeLast = function () {\n var selectedRange = this.getSelectedRange();\n var result = void 0;\n\n if (selectedRange && selectedRange.length > 0) {\n result = selectedRange[selectedRange.length - 1];\n }\n\n return result;\n };\n\n /**\n * Erases content from cells that have been selected in the table.\n *\n * @memberof Core#\n * @function emptySelectedCells\n * @since 0.36.0\n */\n this.emptySelectedCells = function () {\n var _this2 = this;\n\n if (!selection.isSelected()) {\n return;\n }\n var changes = [];\n\n (0, _array.arrayEach)(selection.getSelectedRange(), function (cellRange) {\n var topLeft = cellRange.getTopLeftCorner();\n var bottomRight = cellRange.getBottomRightCorner();\n\n (0, _number.rangeEach)(topLeft.row, bottomRight.row, function (row) {\n (0, _number.rangeEach)(topLeft.col, bottomRight.col, function (column) {\n if (!_this2.getCellMeta(row, column).readOnly) {\n changes.push([row, column, '']);\n }\n });\n });\n });\n\n if (changes.length > 0) {\n this.setDataAtCell(changes);\n }\n };\n\n /**\n * Rerender the table. Calling this method starts the process of recalculating, redrawing and applying the changes\n * to the DOM. While rendering the table all cell renderers are recalled.\n *\n * Calling this method manually is not recommended. Handsontable tries to render itself by choosing the most\n * optimal moments in its lifecycle.\n *\n * @memberof Core#\n * @function render\n */\n this.render = function () {\n if (instance.view) {\n instance.renderCall = true;\n instance.forceFullRender = true; // used when data was changed\n editorManager.lockEditor();\n instance._refreshBorders(null);\n editorManager.unlockEditor();\n }\n };\n\n /**\n * Loads new data to Handsontable. Loading new data resets the cell meta.\n *\n * @memberof Core#\n * @function loadData\n * @param {Array} data Array of arrays or array of objects containing data.\n * @fires Hooks#afterLoadData\n * @fires Hooks#afterChange\n */\n this.loadData = function (data) {\n if (Array.isArray(priv.settings.dataSchema)) {\n instance.dataType = 'array';\n } else if ((0, _function.isFunction)(priv.settings.dataSchema)) {\n instance.dataType = 'function';\n } else {\n instance.dataType = 'object';\n }\n\n if (datamap) {\n datamap.destroy();\n }\n datamap = new _dataMap2.default(instance, priv, GridSettings);\n\n if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object' && data !== null) {\n if (!(data.push && data.splice)) {\n // check if data is array. Must use duck-type check so Backbone Collections also pass it\n // when data is not an array, attempt to make a single-row array of it\n // eslint-disable-next-line no-param-reassign\n data = [data];\n }\n } else if (data === null) {\n var dataSchema = datamap.getSchema();\n // eslint-disable-next-line no-param-reassign\n data = [];\n var row = void 0;\n var r = 0;\n var rlen = 0;\n\n for (r = 0, rlen = priv.settings.startRows; r < rlen; r++) {\n if ((instance.dataType === 'object' || instance.dataType === 'function') && priv.settings.dataSchema) {\n row = (0, _object.deepClone)(dataSchema);\n data.push(row);\n } else if (instance.dataType === 'array') {\n row = (0, _object.deepClone)(dataSchema[0]);\n data.push(row);\n } else {\n row = [];\n\n for (var c = 0, clen = priv.settings.startCols; c < clen; c++) {\n row.push(null);\n }\n\n data.push(row);\n }\n }\n } else {\n throw new Error('loadData only accepts array of objects or array of arrays (' + (typeof data === 'undefined' ? 'undefined' : _typeof(data)) + ' given)');\n }\n\n priv.isPopulated = false;\n GridSettings.prototype.data = data;\n\n if (Array.isArray(data[0])) {\n instance.dataType = 'array';\n }\n\n datamap.dataSource = data;\n dataSource.data = data;\n dataSource.dataType = instance.dataType;\n dataSource.colToProp = datamap.colToProp.bind(datamap);\n dataSource.propToCol = datamap.propToCol.bind(datamap);\n\n clearCellSettingCache();\n\n grid.adjustRowsAndCols();\n instance.runHooks('afterLoadData', priv.firstRun);\n\n if (priv.firstRun) {\n priv.firstRun = [null, 'loadData'];\n } else {\n instance.runHooks('afterChange', null, 'loadData');\n instance.render();\n }\n priv.isPopulated = true;\n\n function clearCellSettingCache() {\n priv.cellSettings.length = 0;\n }\n };\n\n /**\n * Returns the current data object (the same one that was passed by `data` configuration option or `loadData` method,\n * unless the `modifyRow` hook was used to trim some of the rows. If that's the case - use the {@link Core#getSourceData} method.).\n *\n * Optionally you can provide cell range by defining `row`, `column`, `row2`, `column2` to get only a fragment of table data.\n *\n * @memberof Core#\n * @function getData\n * @param {Number} [row] From visual row index.\n * @param {Number} [column] From visual column index.\n * @param {Number} [row2] To visual row index.\n * @param {Number} [column2] To visual column index.\n * @returns {Array[]} Array with the data.\n * @example\n * ```js\n * // Get all data (in order how it is rendered in the table).\n * hot.getData();\n * // Get data fragment (from top-left 0, 0 to bottom-right 3, 3).\n * hot.getData(3, 3);\n * // Get data fragment (from top-left 2, 1 to bottom-right 3, 3).\n * hot.getData(2, 1, 3, 3);\n * ```\n */\n this.getData = function (row, column, row2, column2) {\n if ((0, _mixed.isUndefined)(row)) {\n return datamap.getAll();\n }\n\n return datamap.getRange(new _src.CellCoords(row, column), new _src.CellCoords(row2, column2), datamap.DESTINATION_RENDERER);\n };\n\n /**\n * Returns a string value of the selected range. Each column is separated by tab, each row is separated by a new\n * line character (see {@link DataMap#getCopyableText}).\n *\n * @memberof Core#\n * @function getCopyableText\n * @param {Number} startRow From visual row index.\n * @param {Number} startCol From visual column index.\n * @param {Number} endRow To visual row index.\n * @param {Number} endCol To visual column index.\n * @returns {String}\n */\n this.getCopyableText = function (startRow, startCol, endRow, endCol) {\n return datamap.getCopyableText(new _src.CellCoords(startRow, startCol), new _src.CellCoords(endRow, endCol));\n };\n\n /**\n * Returns the data's copyable value at specified `row` and `column` index (see {@link DataMap#getCopyable}).\n *\n * @memberof Core#\n * @function getCopyableData\n * @param {Number} row Visual row index.\n * @param {Number} column Visual column index.\n * @returns {String}\n */\n this.getCopyableData = function (row, column) {\n return datamap.getCopyable(row, datamap.colToProp(column));\n };\n\n /**\n * Returns schema provided by constructor settings. If it doesn't exist then it returns the schema based on the data\n * structure in the first row.\n *\n * @memberof Core#\n * @function getSchema\n * @returns {Object} Schema object.\n */\n this.getSchema = function () {\n return datamap.getSchema();\n };\n\n /**\n * Use it if you need to change configuration after initialization. The `settings` argument is an object containing the new\n * settings, declared the same way as in the initial settings object.\n *\n * __Note__, that although the `updateSettings` method doesn't overwrite the previously declared settings, it might reset\n * the settings made post-initialization. (for example - ignore changes made using the columnResize feature).\n *\n * @memberof Core#\n * @function updateSettings\n * @param {Object} settings New settings object (see {@link Options}).\n * @param {Boolean} [init=false] Internally used for in initialization mode.\n * @example\n * ```js\n * hot.updateSettings({\n * contextMenu: true,\n * colHeaders: true,\n * fixedRowsTop: 2\n * });\n * ```\n * @fires Hooks#afterCellMetaReset\n * @fires Hooks#afterUpdateSettings\n */\n this.updateSettings = function (settings) {\n var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var columnsAsFunc = false;\n var i = void 0;\n var j = void 0;\n var clen = void 0;\n\n if ((0, _mixed.isDefined)(settings.rows)) {\n throw new Error('\"rows\" setting is no longer supported. do you mean startRows, minRows or maxRows?');\n }\n if ((0, _mixed.isDefined)(settings.cols)) {\n throw new Error('\"cols\" setting is no longer supported. do you mean startCols, minCols or maxCols?');\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (i in settings) {\n if (i === 'data') {\n /* eslint-disable-next-line no-continue */\n continue; // loadData will be triggered later\n } else if (i === 'language') {\n setLanguage(settings.language);\n\n /* eslint-disable-next-line no-continue */\n continue;\n } else if (_pluginHooks2.default.getSingleton().getRegistered().indexOf(i) > -1) {\n if ((0, _function.isFunction)(settings[i]) || Array.isArray(settings[i])) {\n settings[i].initialHook = true;\n instance.addHook(i, settings[i]);\n }\n } else if (!init && (0, _object.hasOwnProperty)(settings, i)) {\n // Update settings\n GridSettings.prototype[i] = settings[i];\n }\n }\n\n // Load data or create data map\n if (settings.data === void 0 && priv.settings.data === void 0) {\n instance.loadData(null); // data source created just now\n } else if (settings.data !== void 0) {\n instance.loadData(settings.data); // data source given as option\n } else if (settings.columns !== void 0) {\n datamap.createMap();\n }\n\n clen = instance.countCols();\n\n var columnSetting = settings.columns || GridSettings.prototype.columns;\n\n // Init columns constructors configuration\n if (columnSetting && (0, _function.isFunction)(columnSetting)) {\n clen = instance.countSourceCols();\n columnsAsFunc = true;\n }\n\n // Clear cellSettings cache\n if (settings.cell !== void 0 || settings.cells !== void 0 || settings.columns !== void 0) {\n priv.cellSettings.length = 0;\n }\n\n if (clen > 0) {\n var proto = void 0;\n var column = void 0;\n\n for (i = 0, j = 0; i < clen; i++) {\n if (columnsAsFunc && !columnSetting(i)) {\n /* eslint-disable no-continue */\n continue;\n }\n priv.columnSettings[j] = (0, _setting.columnFactory)(GridSettings, priv.columnsSettingConflicts);\n\n // shortcut for prototype\n proto = priv.columnSettings[j].prototype;\n\n // Use settings provided by user\n if (columnSetting) {\n if (columnsAsFunc) {\n column = columnSetting(i);\n } else {\n column = columnSetting[j];\n }\n\n if (column) {\n (0, _object.extend)(proto, column);\n (0, _object.extend)(proto, expandType(column));\n }\n }\n\n j += 1;\n }\n }\n\n if ((0, _mixed.isDefined)(settings.cell)) {\n (0, _object.objectEach)(settings.cell, function (cell) {\n instance.setCellMetaObject(cell.row, cell.col, cell);\n });\n }\n\n instance.runHooks('afterCellMetaReset');\n\n if ((0, _mixed.isDefined)(settings.className)) {\n if (GridSettings.prototype.className) {\n (0, _element.removeClass)(instance.rootElement, GridSettings.prototype.className);\n }\n if (settings.className) {\n (0, _element.addClass)(instance.rootElement, settings.className);\n }\n }\n\n var currentHeight = instance.rootElement.style.height;\n if (currentHeight !== '') {\n currentHeight = parseInt(instance.rootElement.style.height, 10);\n }\n\n var height = settings.height;\n if ((0, _function.isFunction)(height)) {\n height = height();\n }\n\n if (init) {\n var initialStyle = instance.rootElement.getAttribute('style');\n\n if (initialStyle) {\n instance.rootElement.setAttribute('data-initialstyle', instance.rootElement.getAttribute('style'));\n }\n }\n\n if (height === null) {\n var _initialStyle = instance.rootElement.getAttribute('data-initialstyle');\n\n if (_initialStyle && (_initialStyle.indexOf('height') > -1 || _initialStyle.indexOf('overflow') > -1)) {\n instance.rootElement.setAttribute('style', _initialStyle);\n } else {\n instance.rootElement.style.height = '';\n instance.rootElement.style.overflow = '';\n }\n } else if (height !== void 0) {\n instance.rootElement.style.height = height + 'px';\n instance.rootElement.style.overflow = 'hidden';\n }\n\n if (typeof settings.width !== 'undefined') {\n var width = settings.width;\n\n if ((0, _function.isFunction)(width)) {\n width = width();\n }\n\n instance.rootElement.style.width = width + 'px';\n }\n\n if (!init) {\n datamap.clearLengthCache(); // force clear cache length on updateSettings() #3416\n\n if (instance.view) {\n instance.view.wt.wtViewport.resetHasOversizedColumnHeadersMarked();\n }\n\n instance.runHooks('afterUpdateSettings', settings);\n }\n\n grid.adjustRowsAndCols();\n if (instance.view && !priv.firstRun) {\n instance.forceFullRender = true; // used when data was changed\n editorManager.lockEditor();\n instance._refreshBorders(null);\n editorManager.unlockEditor();\n }\n\n if (!init && instance.view && (currentHeight === '' || height === '' || height === void 0) && currentHeight !== height) {\n instance.view.wt.wtOverlays.updateMainScrollableElements();\n }\n };\n\n /**\n * Get value from the selected cell.\n *\n * @memberof Core#\n * @function getValue\n * @returns {*} Value of selected cell.\n */\n this.getValue = function () {\n var sel = instance.getSelectedLast();\n\n if (GridSettings.prototype.getValue) {\n if ((0, _function.isFunction)(GridSettings.prototype.getValue)) {\n return GridSettings.prototype.getValue.call(instance);\n } else if (sel) {\n return instance.getData()[sel[0][0]][GridSettings.prototype.getValue];\n }\n } else if (sel) {\n return instance.getDataAtCell(sel[0], sel[1]);\n }\n };\n\n function expandType(obj) {\n if (!(0, _object.hasOwnProperty)(obj, 'type')) {\n // ignore obj.prototype.type\n return;\n }\n\n var expandedType = {};\n var type = void 0;\n\n if (_typeof(obj.type) === 'object') {\n type = obj.type;\n } else if (typeof obj.type === 'string') {\n type = (0, _cellTypes.getCellType)(obj.type);\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (var i in type) {\n if ((0, _object.hasOwnProperty)(type, i) && !(0, _object.hasOwnProperty)(obj, i)) {\n expandedType[i] = type[i];\n }\n }\n\n return expandedType;\n }\n\n /**\n * Returns the object settings.\n *\n * @memberof Core#\n * @function getSettings\n * @returns {Object} Object containing the current table settings.\n */\n this.getSettings = function () {\n return priv.settings;\n };\n\n /**\n * Clears the data from the table (the table settings remain intact).\n *\n * @memberof Core#\n * @function clear\n */\n this.clear = function () {\n this.selectAll();\n this.emptySelectedCells();\n };\n\n /**\n * Allows altering the table structure by either inserting/removing rows or columns.\n *\n * @memberof Core#\n * @function alter\n * @param {String} action Possible alter operations:\n * * `'insert_row'`\n * * `'insert_col'`\n * * `'remove_row'`\n * * `'remove_col'`\n * @param {Number|Number[]} index Visual index of the row/column before which the new row/column will be\n * inserted/removed or an array of arrays in format `[[index, amount],...]`.\n * @param {Number} [amount=1] Amount of rows/columns to be inserted or removed.\n * @param {String} [source] Source indicator.\n * @param {Boolean} [keepEmptyRows] Flag for preventing deletion of empty rows.\n * @example\n * ```js\n * // Insert new row above the row at given visual index.\n * hot.alter('insert_row', 10);\n * // Insert 3 new columns before 10th column.\n * hot.alter('insert_col', 10, 3);\n * // Remove 2 rows starting from 10th row.\n * hot.alter('remove_row', 10, 2);\n * // Remove 5 non-contiquous rows (it removes 3 rows from visual index 1 and 2 rows from visual index 5).\n * hot.alter('remove_row', [[1, 3], [5, 2]]);\n * ```\n */\n this.alter = function (action, index, amount, source, keepEmptyRows) {\n grid.alter(action, index, amount, source, keepEmptyRows);\n };\n\n /**\n * Returns a TD element for the given `row` and `column` arguments, if it is rendered on screen.\n * Returns `null` if the TD is not rendered on screen (probably because that part of the table is not visible).\n *\n * @memberof Core#\n * @function getCell\n * @param {Number} row Visual row index.\n * @param {Number} column Visual column index.\n * @param {Boolean} [topmost=false] If set to `true`, it returns the TD element from the topmost overlay. For example,\n * if the wanted cell is in the range of fixed rows, it will return a TD element from the `top` overlay.\n * @returns {HTMLTableCellElement|null} The cell's TD element.\n */\n this.getCell = function (row, column) {\n var topmost = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n return instance.view.getCellAtCoords(new _src.CellCoords(row, column), topmost);\n };\n\n /**\n * Returns the coordinates of the cell, provided as a HTML table cell element.\n *\n * @memberof Core#\n * @function getCoords\n * @param {HTMLTableCellElement} element The HTML Element representing the cell.\n * @returns {CellCoords} Visual coordinates object.\n * @example\n * ```js\n * hot.getCoords(hot.getCell(1, 1));\n * // it returns CellCoords object instance with props row: 1 and col: 1.\n * ```\n */\n this.getCoords = function (element) {\n return this.view.wt.wtTable.getCoords.call(this.view.wt.wtTable, element);\n };\n\n /**\n * Returns the property name that corresponds with the given column index (see {@link DataMap#colToProp}).\n * If the data source is an array of arrays, it returns the columns index.\n *\n * @memberof Core#\n * @function colToProp\n * @param {Number} column Visual column index.\n * @returns {String|Number} Column property or physical column index.\n */\n this.colToProp = function (column) {\n return datamap.colToProp(column);\n };\n\n /**\n * Returns column index that corresponds with the given property (see {@link DataMap#propToCol}).\n *\n * @memberof Core#\n * @function propToCol\n * @param {String|Number} prop Property name or physical column index.\n * @returns {Number} Visual column index.\n */\n this.propToCol = function (prop) {\n return datamap.propToCol(prop);\n };\n\n /**\n * Translate physical row index into visual.\n *\n * This method is useful when you want to retrieve visual row index which can be reordered, moved or trimmed\n * based on a physical index\n *\n * @memberof Core#\n * @function toVisualRow\n * @param {Number} row Physical row index.\n * @returns {Number} Returns visual row index.\n */\n this.toVisualRow = function (row) {\n return recordTranslator.toVisualRow(row);\n };\n\n /**\n * Translate physical column index into visual.\n *\n * This method is useful when you want to retrieve visual column index which can be reordered, moved or trimmed\n * based on a physical index\n *\n * @memberof Core#\n * @function toVisualColumn\n * @param {Number} column Physical column index.\n * @returns {Number} Returns visual column index.\n */\n this.toVisualColumn = function (column) {\n return recordTranslator.toVisualColumn(column);\n };\n\n /**\n * Translate visual row index into physical.\n *\n * This method is useful when you want to retrieve physical row index based on a visual index which can be\n * reordered, moved or trimmed.\n *\n * @memberof Core#\n * @function toPhysicalRow\n * @param {Number} row Visual row index.\n * @returns {Number} Returns physical row index.\n */\n this.toPhysicalRow = function (row) {\n return recordTranslator.toPhysicalRow(row);\n };\n\n /**\n * Translate visual column index into physical.\n *\n * This method is useful when you want to retrieve physical column index based on a visual index which can be\n * reordered, moved or trimmed.\n *\n * @memberof Core#\n * @function toPhysicalColumn\n * @param {Number} column Visual column index.\n * @returns {Number} Returns physical column index.\n */\n this.toPhysicalColumn = function (column) {\n return recordTranslator.toPhysicalColumn(column);\n };\n\n /**\n * @description\n * Returns the cell value at `row`, `column`.\n *\n * __Note__: If data is reordered, sorted or trimmed, the currently visible order will be used.\n *\n * @memberof Core#\n * @function getDataAtCell\n * @param {Number} row Visual row index.\n * @param {Number} column Visual column index.\n * @returns {*} Data at cell.\n */\n this.getDataAtCell = function (row, column) {\n return datamap.get(row, datamap.colToProp(column));\n };\n\n /**\n * Returns value at visual `row` and `prop` indexes (see {@link DataMap#get}).\n *\n * __Note__: If data is reordered, sorted or trimmed, the currently visible order will be used.\n *\n * @memberof Core#\n * @function getDataAtRowProp\n * @param {Number} row Visual row index.\n * @param {String} prop Property name.\n * @returns {*} Cell value.\n */\n this.getDataAtRowProp = function (row, prop) {\n return datamap.get(row, prop);\n };\n\n /**\n * @description\n * Returns array of column values from the data source.\n *\n * __Note__: If columns were reordered or sorted, the currently visible order will be used.\n *\n * @memberof Core#\n * @function getDataAtCol\n * @param {Number} column Visual column index.\n * @returns {Array} Array of cell values.\n */\n this.getDataAtCol = function (column) {\n var _ref12;\n\n return (_ref12 = []).concat.apply(_ref12, _toConsumableArray(datamap.getRange(new _src.CellCoords(0, column), new _src.CellCoords(priv.settings.data.length - 1, column), datamap.DESTINATION_RENDERER)));\n };\n\n /**\n * Given the object property name (e.g. `'first.name'` or `'0'`), returns an array of column's values from the table data.\n * You can also provide a column index as the first argument.\n *\n * @memberof Core#\n * @function getDataAtProp\n * @param {String|Number} prop Property name or physical column index.\n * @returns {Array} Array of cell values.\n */\n // TODO: Getting data from `datamap` should work on visual indexes.\n this.getDataAtProp = function (prop) {\n var _ref13;\n\n var range = datamap.getRange(new _src.CellCoords(0, datamap.propToCol(prop)), new _src.CellCoords(priv.settings.data.length - 1, datamap.propToCol(prop)), datamap.DESTINATION_RENDERER);\n\n return (_ref13 = []).concat.apply(_ref13, _toConsumableArray(range));\n };\n\n /**\n * Returns the source data object (the same that was passed by `data` configuration option or `loadData` method).\n * Optionally you can provide a cell range by using the `row`, `column`, `row2`, `column2` arguments, to get only a\n * fragment of the table data.\n *\n * __Note__: This method does not participate in data transformation. If the visual data of the table is reordered,\n * sorted or trimmed only physical indexes are correct.\n *\n * @memberof Core#\n * @function getSourceData\n * @param {Number} [row] From physical row index.\n * @param {Number} [column] From physical column index (or visual index, if data type is an array of objects).\n * @param {Number} [row2] To physical row index.\n * @param {Number} [column2] To physical column index (or visual index, if data type is an array of objects).\n * @returns {Array[]|Object[]} The table data.\n */\n this.getSourceData = function (row, column, row2, column2) {\n var data = void 0;\n\n if (row === void 0) {\n data = dataSource.getData();\n } else {\n data = dataSource.getByRange(new _src.CellCoords(row, column), new _src.CellCoords(row2, column2));\n }\n\n return data;\n };\n\n /**\n * Returns the source data object as an arrays of arrays format even when source data was provided in another format.\n * Optionally you can provide a cell range by using the `row`, `column`, `row2`, `column2` arguments, to get only a\n * fragment of the table data.\n *\n * __Note__: This method does not participate in data transformation. If the visual data of the table is reordered,\n * sorted or trimmed only physical indexes are correct.\n *\n * @memberof Core#\n * @function getSourceDataArray\n * @param {Number} [row] From physical row index.\n * @param {Number} [column] From physical column index (or visual index, if data type is an array of objects).\n * @param {Number} [row2] To physical row index.\n * @param {Number} [column2] To physical column index (or visual index, if data type is an array of objects).\n * @returns {Array} An array of arrays.\n */\n this.getSourceDataArray = function (row, column, row2, column2) {\n var data = void 0;\n\n if (row === void 0) {\n data = dataSource.getData(true);\n } else {\n data = dataSource.getByRange(new _src.CellCoords(row, column), new _src.CellCoords(row2, column2), true);\n }\n\n return data;\n };\n\n /**\n * Returns an array of column values from the data source.\n *\n * @memberof Core#\n * @function getSourceDataAtCol\n * @param {Number} column Visual column index.\n * @returns {Array} Array of the column's cell values.\n */\n // TODO: Getting data from `sourceData` should work always on physical indexes.\n this.getSourceDataAtCol = function (column) {\n return dataSource.getAtColumn(column);\n };\n\n /**\n * Returns a single row of the data (array or object, depending on what data format you use).\n *\n * __Note__: This method does not participate in data transformation. If the visual data of the table is reordered,\n * sorted or trimmed only physical indexes are correct.\n *\n * @memberof Core#\n * @function getSourceDataAtRow\n * @param {Number} row Physical row index.\n * @returns {Array|Object} Single row of data.\n */\n this.getSourceDataAtRow = function (row) {\n return dataSource.getAtRow(row);\n };\n\n /**\n * Returns a single value from the data source.\n *\n * @memberof Core#\n * @function getSourceDataAtCell\n * @param {Number} row Physical row index.\n * @param {Number} column Visual column index.\n * @returns {*} Cell data.\n */\n // TODO: Getting data from `sourceData` should work always on physical indexes.\n this.getSourceDataAtCell = function (row, column) {\n return dataSource.getAtCell(row, column);\n };\n\n /**\n * @description\n * Returns a single row of the data.\n *\n * __Note__: If rows were reordered, sorted or trimmed, the currently visible order will be used.\n *\n * @memberof Core#\n * @function getDataAtRow\n * @param {Number} row Visual row index.\n * @returns {Array} Array of row's cell data.\n */\n this.getDataAtRow = function (row) {\n var data = datamap.getRange(new _src.CellCoords(row, 0), new _src.CellCoords(row, this.countCols() - 1), datamap.DESTINATION_RENDERER);\n\n return data[0] || [];\n };\n\n /**\n * @description\n * Returns a data type defined in the Handsontable settings under the `type` key ([Options#type](http://docs.handsontable.com/Options.html#type)).\n * If there are cells with different types in the selected range, it returns `'mixed'`.\n *\n * __Note__: If data is reordered, sorted or trimmed, the currently visible order will be used.\n *\n * @memberof Core#\n * @function getDataType\n * @param {Number} rowFrom From visual row index.\n * @param {Number} columnFrom From visual column index.\n * @param {Number} rowTo To visual row index.\n * @param {Number} columnTo To visual column index.\n * @returns {String} Cell type (e.q: `'mixed'`, `'text'`, `'numeric'`, `'autocomplete'`).\n */\n this.getDataType = function (rowFrom, columnFrom, rowTo, columnTo) {\n var _this3 = this;\n\n var coords = rowFrom === void 0 ? [0, 0, this.countRows(), this.countCols()] : [rowFrom, columnFrom, rowTo, columnTo];\n var rowStart = coords[0],\n columnStart = coords[1];\n var rowEnd = coords[2],\n columnEnd = coords[3];\n\n var previousType = null;\n var currentType = null;\n\n if (rowEnd === void 0) {\n rowEnd = rowStart;\n }\n if (columnEnd === void 0) {\n columnEnd = columnStart;\n }\n var type = 'mixed';\n\n (0, _number.rangeEach)(Math.min(rowStart, rowEnd), Math.max(rowStart, rowEnd), function (row) {\n var isTypeEqual = true;\n\n (0, _number.rangeEach)(Math.min(columnStart, columnEnd), Math.max(columnStart, columnEnd), function (column) {\n var cellType = _this3.getCellMeta(row, column);\n\n currentType = cellType.type;\n\n if (previousType) {\n isTypeEqual = previousType === currentType;\n } else {\n previousType = currentType;\n }\n\n return isTypeEqual;\n });\n type = isTypeEqual ? currentType : 'mixed';\n\n return isTypeEqual;\n });\n\n return type;\n };\n\n /**\n * Remove a property defined by the `key` argument from the cell meta object for the provided `row` and `column` coordinates.\n *\n * @memberof Core#\n * @function removeCellMeta\n * @param {Number} row Visual row index.\n * @param {Number} column Visual column index.\n * @param {String} key Property name.\n * @fires Hooks#beforeRemoveCellMeta\n * @fires Hooks#afterRemoveCellMeta\n */\n this.removeCellMeta = function (row, column, key) {\n var _recordTranslator$toP = recordTranslator.toPhysical(row, column),\n _recordTranslator$toP2 = _slicedToArray(_recordTranslator$toP, 2),\n physicalRow = _recordTranslator$toP2[0],\n physicalColumn = _recordTranslator$toP2[1];\n\n var cachedValue = priv.cellSettings[physicalRow][physicalColumn][key];\n\n var hookResult = instance.runHooks('beforeRemoveCellMeta', row, column, key, cachedValue);\n\n if (hookResult !== false) {\n delete priv.cellSettings[physicalRow][physicalColumn][key];\n\n instance.runHooks('afterRemoveCellMeta', row, column, key, cachedValue);\n }\n\n cachedValue = null;\n };\n\n /**\n * Remove one or more rows from the cell meta object.\n *\n * @since 0.30.0\n * @param {Number} index An integer that specifies at what position to add/remove items, Use negative values to specify the position from the end of the array.\n * @param {Number} deleteAmount The number of items to be removed. If set to 0, no items will be removed.\n * @param {Array} items The new items to be added to the array.\n */\n this.spliceCellsMeta = function (index, deleteAmount) {\n var _priv$cellSettings;\n\n for (var _len4 = arguments.length, items = Array(_len4 > 2 ? _len4 - 2 : 0), _key3 = 2; _key3 < _len4; _key3++) {\n items[_key3 - 2] = arguments[_key3];\n }\n\n (_priv$cellSettings = priv.cellSettings).splice.apply(_priv$cellSettings, [index, deleteAmount].concat(items));\n };\n\n /**\n * Set cell meta data object defined by `prop` to the corresponding params `row` and `column`.\n *\n * @memberof Core#\n * @function setCellMetaObject\n * @param {Number} row Visual row index.\n * @param {Number} column Visual column index.\n * @param {Object} prop Meta object.\n */\n this.setCellMetaObject = function (row, column, prop) {\n var _this4 = this;\n\n if ((typeof prop === 'undefined' ? 'undefined' : _typeof(prop)) === 'object') {\n (0, _object.objectEach)(prop, function (value, key) {\n _this4.setCellMeta(row, column, key, value);\n });\n }\n };\n\n /**\n * Sets a property defined by the `key` property to the meta object of a cell corresponding to params `row` and `column`.\n *\n * @memberof Core#\n * @function setCellMeta\n * @param {Number} row Visual row index.\n * @param {Number} column Visual column index.\n * @param {String} key Property name.\n * @param {String} value Property value.\n * @fires Hooks#afterSetCellMeta\n */\n this.setCellMeta = function (row, column, key, value) {\n var _recordTranslator$toP3 = recordTranslator.toPhysical(row, column),\n _recordTranslator$toP4 = _slicedToArray(_recordTranslator$toP3, 2),\n physicalRow = _recordTranslator$toP4[0],\n physicalColumn = _recordTranslator$toP4[1];\n\n if (!priv.columnSettings[physicalColumn]) {\n priv.columnSettings[physicalColumn] = (0, _setting.columnFactory)(GridSettings, priv.columnsSettingConflicts);\n }\n\n if (!priv.cellSettings[physicalRow]) {\n priv.cellSettings[physicalRow] = [];\n }\n if (!priv.cellSettings[physicalRow][physicalColumn]) {\n priv.cellSettings[physicalRow][physicalColumn] = new priv.columnSettings[physicalColumn]();\n }\n priv.cellSettings[physicalRow][physicalColumn][key] = value;\n instance.runHooks('afterSetCellMeta', row, column, key, value);\n };\n\n /**\n * Get all the cells meta settings at least once generated in the table (in order of cell initialization).\n *\n * @memberof Core#\n * @function getCellsMeta\n * @returns {Array} Returns an array of ColumnSettings object instances.\n */\n this.getCellsMeta = function () {\n return (0, _array.arrayFlatten)(priv.cellSettings);\n };\n\n /**\n * Returns the cell properties object for the given `row` and `column` coordinates.\n *\n * @memberof Core#\n * @function getCellMeta\n * @param {Number} row Visual row index.\n * @param {Number} column Visual column index.\n * @returns {Object} The cell properties object.\n * @fires Hooks#beforeGetCellMeta\n * @fires Hooks#afterGetCellMeta\n */\n this.getCellMeta = function (row, column) {\n var prop = datamap.colToProp(column);\n\n var _recordTranslator$toP5 = recordTranslator.toPhysical(row, column),\n _recordTranslator$toP6 = _slicedToArray(_recordTranslator$toP5, 2),\n potentialPhysicalRow = _recordTranslator$toP6[0],\n physicalColumn = _recordTranslator$toP6[1];\n\n var physicalRow = potentialPhysicalRow;\n\n // Workaround for #11. Connected also with #3849. It should be fixed within #4497.\n if (physicalRow === null) {\n physicalRow = row;\n }\n\n if (!priv.columnSettings[physicalColumn]) {\n priv.columnSettings[physicalColumn] = (0, _setting.columnFactory)(GridSettings, priv.columnsSettingConflicts);\n }\n\n if (!priv.cellSettings[physicalRow]) {\n priv.cellSettings[physicalRow] = [];\n }\n if (!priv.cellSettings[physicalRow][physicalColumn]) {\n priv.cellSettings[physicalRow][physicalColumn] = new priv.columnSettings[physicalColumn]();\n }\n\n var cellProperties = priv.cellSettings[physicalRow][physicalColumn]; // retrieve cellProperties from cache\n\n cellProperties.row = physicalRow;\n cellProperties.col = physicalColumn;\n cellProperties.visualRow = row;\n cellProperties.visualCol = column;\n cellProperties.prop = prop;\n cellProperties.instance = instance;\n\n instance.runHooks('beforeGetCellMeta', row, column, cellProperties);\n (0, _object.extend)(cellProperties, expandType(cellProperties)); // for `type` added in beforeGetCellMeta\n\n if (cellProperties.cells) {\n var settings = cellProperties.cells.call(cellProperties, physicalRow, physicalColumn, prop);\n\n if (settings) {\n (0, _object.extend)(cellProperties, settings);\n (0, _object.extend)(cellProperties, expandType(settings)); // for `type` added in cells\n }\n }\n\n instance.runHooks('afterGetCellMeta', row, column, cellProperties);\n\n return cellProperties;\n };\n\n /**\n * Returns an array of cell meta objects for specyfied physical row index.\n *\n * @memberof Core#\n * @function getCellMetaAtRow\n * @param {Number} row Physical row index.\n * @returns {Array}\n */\n this.getCellMetaAtRow = function (row) {\n return priv.cellSettings[row];\n };\n\n /**\n * Checks if the data format and config allows user to modify the column structure.\n *\n * @memberof Core#\n * @function isColumnModificationAllowed\n * @returns {Boolean}\n */\n this.isColumnModificationAllowed = function () {\n return !(instance.dataType === 'object' || instance.getSettings().columns);\n };\n\n var rendererLookup = (0, _data.cellMethodLookupFactory)('renderer');\n\n /**\n * Returns the cell renderer function by given `row` and `column` arguments.\n *\n * @memberof Core#\n * @function getCellRenderer\n * @param {Number|Object} row Visual row index or cell meta object (see {@link Core#getCellMeta}).\n * @param {Number} column Visual column index.\n * @returns {Function} The renderer function.\n * @example\n * ```js\n * // Get cell renderer using `row` and `column` coordinates.\n * hot.getCellRenderer(1, 1);\n * // Get cell renderer using cell meta object.\n * hot.getCellRenderer(hot.getCellMeta(1, 1));\n * ```\n */\n this.getCellRenderer = function (row, column) {\n return (0, _renderers.getRenderer)(rendererLookup.call(this, row, column));\n };\n\n /**\n * Returns the cell editor class by the provided `row` and `column` arguments.\n *\n * @memberof Core#\n * @function getCellEditor\n * @param {Number} row Visual row index or cell meta object (see {@link Core#getCellMeta}).\n * @param {Number} column Visual column index.\n * @returns {Function} The editor class.\n * @example\n * ```js\n * // Get cell editor class using `row` and `column` coordinates.\n * hot.getCellEditor(1, 1);\n * // Get cell editor class using cell meta object.\n * hot.getCellEditor(hot.getCellMeta(1, 1));\n * ```\n */\n this.getCellEditor = (0, _data.cellMethodLookupFactory)('editor');\n\n var validatorLookup = (0, _data.cellMethodLookupFactory)('validator');\n\n /**\n * Returns the cell validator by `row` and `column`.\n *\n * @memberof Core#\n * @function getCellValidator\n * @param {Number|Object} row Visual row index or cell meta object (see {@link Core#getCellMeta}).\n * @param {Number} column Visual column index.\n * @returns {Function|RegExp|undefined} The validator function.\n * @example\n * ```js\n * // Get cell valiator using `row` and `column` coordinates.\n * hot.getCellValidator(1, 1);\n * // Get cell valiator using cell meta object.\n * hot.getCellValidator(hot.getCellMeta(1, 1));\n * ```\n */\n this.getCellValidator = function (row, column) {\n var validator = validatorLookup.call(this, row, column);\n\n if (typeof validator === 'string') {\n validator = (0, _validators.getValidator)(validator);\n }\n\n return validator;\n };\n\n /**\n * Validates all cells using their validator functions and calls callback when finished.\n *\n * If one of the cells is invalid, the callback will be fired with `'valid'` arguments as `false` - otherwise it\n * would equal `true`.\n *\n * @memberof Core#\n * @function validateCells\n * @param {Function} [callback] The callback function.\n * @example\n * ```js\n * hot.validateCells((valid) => {\n * if (valid) {\n * // ... code for validated cells\n * }\n * })\n * ```\n */\n this.validateCells = function (callback) {\n this._validateCells(callback);\n };\n\n /**\n * Validates rows using their validator functions and calls callback when finished.\n *\n * If one of the cells is invalid, the callback will be fired with `'valid'` arguments as `false` - otherwise it\n * would equal `true`.\n *\n * @memberof Core#\n * @function validateRows\n * @param {Array} [rows] Array of validation target visual row indexes.\n * @param {Function} [callback] The callback function.\n * @example\n * ```js\n * hot.validateRows([3, 4, 5], (valid) => {\n * if (valid) {\n * // ... code for validated rows\n * }\n * })\n * ```\n */\n this.validateRows = function (rows, callback) {\n if (!Array.isArray(rows)) {\n throw new Error('validateRows parameter `rows` must be an array');\n }\n this._validateCells(callback, rows);\n };\n\n /**\n * Validates columns using their validator functions and calls callback when finished.\n *\n * If one of the cells is invalid, the callback will be fired with `'valid'` arguments as `false` - otherwise it\n * would equal `true`.\n *\n * @memberof Core#\n * @function validateColumns\n * @param {Array} [columns] Array of validation target visual columns indexes.\n * @param {Function} [callback] The callback function.\n * @example\n * ```js\n * hot.validateColumns([3, 4, 5], (valid) => {\n * if (valid) {\n * // ... code for validated columns\n * }\n * })\n * ```\n */\n this.validateColumns = function (columns, callback) {\n if (!Array.isArray(columns)) {\n throw new Error('validateColumns parameter `columns` must be an array');\n }\n this._validateCells(callback, undefined, columns);\n };\n\n /**\n * Validates all cells using their validator functions and calls callback when finished.\n *\n * If one of the cells is invalid, the callback will be fired with `'valid'` arguments as `false` - otherwise it would equal `true`.\n *\n * Private use intended.\n *\n * @private\n * @memberof Core#\n * @function _validateCells\n * @param {Function} [callback] The callback function.\n * @param {Array} [rows] An array of validation target visual row indexes.\n * @param {Array} [columns] An array of validation target visual column indexes.\n */\n this._validateCells = function (callback, rows, columns) {\n var waitingForValidator = new ValidatorsQueue();\n\n if (callback) {\n waitingForValidator.onQueueEmpty = callback;\n }\n\n var i = instance.countRows() - 1;\n\n while (i >= 0) {\n if (rows !== undefined && rows.indexOf(i) === -1) {\n i -= 1;\n continue;\n }\n var j = instance.countCols() - 1;\n\n while (j >= 0) {\n if (columns !== undefined && columns.indexOf(j) === -1) {\n j -= 1;\n continue;\n }\n waitingForValidator.addValidatorToQueue();\n\n instance.validateCell(instance.getDataAtCell(i, j), instance.getCellMeta(i, j), function (result) {\n if (typeof result !== 'boolean') {\n throw new Error('Validation error: result is not boolean');\n }\n if (result === false) {\n waitingForValidator.valid = false;\n }\n waitingForValidator.removeValidatorFormQueue();\n }, 'validateCells');\n j -= 1;\n }\n i -= 1;\n }\n waitingForValidator.checkIfQueueIsEmpty();\n };\n\n /**\n * Returns an array of row headers' values (if they are enabled). If param `row` was given, it returns the header of the given row as a string.\n *\n * @memberof Core#\n * @function getRowHeader\n * @param {Number} [row] Visual row index.\n * @fires Hooks#modifyRowHeader\n * @returns {Array|String|Number} Array of header values / single header value.\n */\n this.getRowHeader = function (row) {\n var rowHeader = priv.settings.rowHeaders;\n var physicalRow = row;\n\n if (physicalRow !== void 0) {\n physicalRow = instance.runHooks('modifyRowHeader', physicalRow);\n }\n if (physicalRow === void 0) {\n rowHeader = [];\n (0, _number.rangeEach)(instance.countRows() - 1, function (i) {\n rowHeader.push(instance.getRowHeader(i));\n });\n } else if (Array.isArray(rowHeader) && rowHeader[physicalRow] !== void 0) {\n rowHeader = rowHeader[physicalRow];\n } else if ((0, _function.isFunction)(rowHeader)) {\n rowHeader = rowHeader(physicalRow);\n } else if (rowHeader && typeof rowHeader !== 'string' && typeof rowHeader !== 'number') {\n rowHeader = physicalRow + 1;\n }\n\n return rowHeader;\n };\n\n /**\n * Returns information about if this table is configured to display row headers.\n *\n * @memberof Core#\n * @function hasRowHeaders\n * @returns {Boolean} `true` if the instance has the row headers enabled, `false` otherwise.\n */\n this.hasRowHeaders = function () {\n return !!priv.settings.rowHeaders;\n };\n\n /**\n * Returns information about if this table is configured to display column headers.\n *\n * @memberof Core#\n * @function hasColHeaders\n * @returns {Boolean} `true` if the instance has the column headers enabled, `false` otherwise.\n */\n this.hasColHeaders = function () {\n if (priv.settings.colHeaders !== void 0 && priv.settings.colHeaders !== null) {\n // Polymer has empty value = null\n return !!priv.settings.colHeaders;\n }\n for (var i = 0, ilen = instance.countCols(); i < ilen; i++) {\n if (instance.getColHeader(i)) {\n return true;\n }\n }\n\n return false;\n };\n\n /**\n * Returns an array of column headers (in string format, if they are enabled). If param `column` is given, it\n * returns the header at the given column.\n *\n * @memberof Core#\n * @function getColHeader\n * @param {Number} [column] Visual column index.\n * @fires Hooks#modifyColHeader\n * @returns {Array|String|Number} The column header(s).\n */\n this.getColHeader = function (column) {\n var columnsAsFunc = priv.settings.columns && (0, _function.isFunction)(priv.settings.columns);\n var columnIndex = instance.runHooks('modifyColHeader', column);\n var result = priv.settings.colHeaders;\n\n if (columnIndex === void 0) {\n var out = [];\n var ilen = columnsAsFunc ? instance.countSourceCols() : instance.countCols();\n\n for (var i = 0; i < ilen; i++) {\n out.push(instance.getColHeader(i));\n }\n\n result = out;\n } else {\n var translateVisualIndexToColumns = function translateVisualIndexToColumns(visualColumnIndex) {\n var arr = [];\n var columnsLen = instance.countSourceCols();\n var index = 0;\n\n for (; index < columnsLen; index++) {\n if ((0, _function.isFunction)(instance.getSettings().columns) && instance.getSettings().columns(index)) {\n arr.push(index);\n }\n }\n\n return arr[visualColumnIndex];\n };\n var baseCol = columnIndex;\n var physicalColumn = instance.runHooks('modifyCol', baseCol);\n\n var prop = translateVisualIndexToColumns(physicalColumn);\n\n if (priv.settings.columns && (0, _function.isFunction)(priv.settings.columns) && priv.settings.columns(prop) && priv.settings.columns(prop).title) {\n result = priv.settings.columns(prop).title;\n } else if (priv.settings.columns && priv.settings.columns[physicalColumn] && priv.settings.columns[physicalColumn].title) {\n result = priv.settings.columns[physicalColumn].title;\n } else if (Array.isArray(priv.settings.colHeaders) && priv.settings.colHeaders[physicalColumn] !== void 0) {\n result = priv.settings.colHeaders[physicalColumn];\n } else if ((0, _function.isFunction)(priv.settings.colHeaders)) {\n result = priv.settings.colHeaders(physicalColumn);\n } else if (priv.settings.colHeaders && typeof priv.settings.colHeaders !== 'string' && typeof priv.settings.colHeaders !== 'number') {\n result = (0, _data.spreadsheetColumnLabel)(baseCol); // see #1458\n }\n }\n\n return result;\n };\n\n /**\n * Return column width from settings (no guessing). Private use intended.\n *\n * @private\n * @memberof Core#\n * @function _getColWidthFromSettings\n * @param {Number} col Visual col index.\n * @returns {Number}\n */\n this._getColWidthFromSettings = function (col) {\n var cellProperties = instance.getCellMeta(0, col);\n var width = cellProperties.width;\n\n if (width === void 0 || width === priv.settings.width) {\n width = cellProperties.colWidths;\n }\n if (width !== void 0 && width !== null) {\n switch (typeof width === 'undefined' ? 'undefined' : _typeof(width)) {\n case 'object':\n // array\n width = width[col];\n break;\n\n case 'function':\n width = width(col);\n break;\n default:\n break;\n }\n if (typeof width === 'string') {\n width = parseInt(width, 10);\n }\n }\n\n return width;\n };\n\n /**\n * Returns the width of the requested column.\n *\n * @memberof Core#\n * @function getColWidth\n * @param {Number} column Visual column index.\n * @returns {Number} Column width.\n * @fires Hooks#modifyColWidth\n */\n this.getColWidth = function (column) {\n var width = instance._getColWidthFromSettings(column);\n\n width = instance.runHooks('modifyColWidth', width, column);\n\n if (width === void 0) {\n width = _src.ViewportColumnsCalculator.DEFAULT_WIDTH;\n }\n\n return width;\n };\n\n /**\n * Return row height from settings (no guessing). Private use intended.\n *\n * @private\n * @memberof Core#\n * @function _getRowHeightFromSettings\n * @param {Number} row Visual row index.\n * @returns {Number}\n */\n this._getRowHeightFromSettings = function (row) {\n // let cellProperties = instance.getCellMeta(row, 0);\n // let height = cellProperties.height;\n //\n // if (height === void 0 || height === priv.settings.height) {\n // height = cellProperties.rowHeights;\n // }\n var height = priv.settings.rowHeights;\n\n if (height !== void 0 && height !== null) {\n switch (typeof height === 'undefined' ? 'undefined' : _typeof(height)) {\n case 'object':\n // array\n height = height[row];\n break;\n\n case 'function':\n height = height(row);\n break;\n default:\n break;\n }\n if (typeof height === 'string') {\n height = parseInt(height, 10);\n }\n }\n\n return height;\n };\n\n /**\n * Returns the row height.\n *\n * @memberof Core#\n * @function getRowHeight\n * @param {Number} row Visual row index.\n * @returns {Number} The given row's height.\n * @fires Hooks#modifyRowHeight\n */\n this.getRowHeight = function (row) {\n var height = instance._getRowHeightFromSettings(row);\n\n height = instance.runHooks('modifyRowHeight', height, row);\n\n return height;\n };\n\n /**\n * Returns the total number of rows in the data source.\n *\n * @memberof Core#\n * @function countSourceRows\n * @returns {Number} Total number of rows.\n */\n this.countSourceRows = function () {\n var sourceLength = instance.runHooks('modifySourceLength');\n return sourceLength || (instance.getSourceData() ? instance.getSourceData().length : 0);\n };\n\n /**\n * Returns the total number of columns in the data source.\n *\n * @memberof Core#\n * @function countSourceCols\n * @returns {Number} Total number of columns.\n */\n this.countSourceCols = function () {\n var len = 0;\n var obj = instance.getSourceData() && instance.getSourceData()[0] ? instance.getSourceData()[0] : [];\n\n if ((0, _object.isObject)(obj)) {\n len = (0, _object.deepObjectSize)(obj);\n } else {\n len = obj.length || 0;\n }\n\n return len;\n };\n\n /**\n * Returns the total number of visual rows in the table.\n *\n * @memberof Core#\n * @function countRows\n * @returns {Number} Total number of rows.\n */\n this.countRows = function () {\n return datamap.getLength();\n };\n\n /**\n * Returns the total number of visible columns in the table.\n *\n * @memberof Core#\n * @function countCols\n * @returns {Number} Total number of columns.\n */\n this.countCols = function () {\n var maxCols = this.getSettings().maxCols;\n var dataHasLength = false;\n var dataLen = 0;\n\n if (instance.dataType === 'array') {\n dataHasLength = priv.settings.data && priv.settings.data[0] && priv.settings.data[0].length;\n }\n\n if (dataHasLength) {\n dataLen = priv.settings.data[0].length;\n }\n\n if (priv.settings.columns) {\n var columnsIsFunction = (0, _function.isFunction)(priv.settings.columns);\n\n if (columnsIsFunction) {\n if (instance.dataType === 'array') {\n var columnLen = 0;\n\n for (var i = 0; i < dataLen; i++) {\n if (priv.settings.columns(i)) {\n columnLen += 1;\n }\n }\n\n dataLen = columnLen;\n } else if (instance.dataType === 'object' || instance.dataType === 'function') {\n dataLen = datamap.colToPropCache.length;\n }\n } else {\n dataLen = priv.settings.columns.length;\n }\n } else if (instance.dataType === 'object' || instance.dataType === 'function') {\n dataLen = datamap.colToPropCache.length;\n }\n\n return Math.min(maxCols, dataLen);\n };\n\n /**\n * Returns an visual index of the first rendered row.\n *\n * @memberof Core#\n * @function rowOffset\n * @returns {Number} Visual index of first rendered row.\n */\n this.rowOffset = function () {\n return instance.view.wt.wtTable.getFirstRenderedRow();\n };\n\n /**\n * Returns the visual index of the first rendered column.\n *\n * @memberof Core#\n * @function colOffset\n * @returns {Number} Visual index of the first visible column.\n */\n this.colOffset = function () {\n return instance.view.wt.wtTable.getFirstRenderedColumn();\n };\n\n /**\n * Returns the number of rendered rows (including rows partially or fully rendered outside viewport).\n *\n * @memberof Core#\n * @function countRenderedRows\n * @returns {Number} Returns -1 if table is not visible.\n */\n this.countRenderedRows = function () {\n return instance.view.wt.drawn ? instance.view.wt.wtTable.getRenderedRowsCount() : -1;\n };\n\n /**\n * Returns the number of visible rows (rendered rows that fully fit inside viewport).\n *\n * @memberof Core#\n * @function countVisibleRows\n * @returns {Number} Number of visible rows or -1.\n */\n this.countVisibleRows = function () {\n return instance.view.wt.drawn ? instance.view.wt.wtTable.getVisibleRowsCount() : -1;\n };\n\n /**\n * Returns the number of rendered columns (including columns partially or fully rendered outside viewport).\n *\n * @memberof Core#\n * @function countRenderedCols\n * @returns {Number} Returns -1 if table is not visible.\n */\n this.countRenderedCols = function () {\n return instance.view.wt.drawn ? instance.view.wt.wtTable.getRenderedColumnsCount() : -1;\n };\n\n /**\n * Returns the number of visible columns. Returns -1 if table is not visible\n *\n * @memberof Core#\n * @function countVisibleCols\n * @return {Number} Number of visible columns or -1.\n */\n this.countVisibleCols = function () {\n return instance.view.wt.drawn ? instance.view.wt.wtTable.getVisibleColumnsCount() : -1;\n };\n\n /**\n * Returns the number of empty rows. If the optional ending parameter is `true`, returns the\n * number of empty rows at the bottom of the table.\n *\n * @memberof Core#\n * @function countEmptyRows\n * @param {Boolean} [ending=false] If `true`, will only count empty rows at the end of the data source.\n * @returns {Number} Count empty rows.\n */\n this.countEmptyRows = function () {\n var ending = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var emptyRows = 0;\n\n (0, _number.rangeEachReverse)(instance.countRows() - 1, function (visualIndex) {\n if (instance.isEmptyRow(visualIndex)) {\n emptyRows += 1;\n } else if (ending === true) {\n return false;\n }\n });\n\n return emptyRows;\n };\n\n /**\n * Returns the number of empty columns. If the optional ending parameter is `true`, returns the number of empty\n * columns at right hand edge of the table.\n *\n * @memberof Core#\n * @function countEmptyCols\n * @param {Boolean} [ending=false] If `true`, will only count empty columns at the end of the data source row.\n * @returns {Number} Count empty cols.\n */\n this.countEmptyCols = function () {\n var ending = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (instance.countRows() < 1) {\n return 0;\n }\n\n var emptyColumns = 0;\n\n (0, _number.rangeEachReverse)(instance.countCols() - 1, function (visualIndex) {\n if (instance.isEmptyCol(visualIndex)) {\n emptyColumns += 1;\n } else if (ending === true) {\n return false;\n }\n });\n\n return emptyColumns;\n };\n\n /**\n * Check if all cells in the row declared by the `row` argument are empty.\n *\n * @memberof Core#\n * @function isEmptyRow\n * @param {Number} row Visual row index.\n * @returns {Boolean} `true` if the row at the given `row` is empty, `false` otherwise.\n */\n this.isEmptyRow = function (row) {\n return priv.settings.isEmptyRow.call(instance, row);\n };\n\n /**\n * Check if all cells in the the column declared by the `column` argument are empty.\n *\n * @memberof Core#\n * @function isEmptyCol\n * @param {Number} column Column index.\n * @returns {Boolean} `true` if the column at the given `col` is empty, `false` otherwise.\n */\n this.isEmptyCol = function (column) {\n return priv.settings.isEmptyCol.call(instance, column);\n };\n\n /**\n * Select cell specified by `row` and `column` values or a range of cells finishing at `endRow`, `endCol`. If the table\n * was configured to support data column properties that properties can be used to making a selection.\n *\n * By default, viewport will be scrolled to the selection. After the `selectCell` method had finished, the instance\n * will be listening to keyboard input on the document.\n *\n * @example\n * ```js\n * // select a single cell\n * hot.selectCell(2, 4);\n * // select a single cell using column property\n * hot.selectCell(2, 'address');\n * // select a range of cells\n * hot.selectCell(2, 4, 3, 5);\n * // select a range of cells using column properties\n * hot.selectCell(2, 'address', 3, 'phone_number');\n * // select a range of cells without scrolling to them\n * hot.selectCell(2, 'address', 3, 'phone_number', false);\n * ```\n *\n * @memberof Core#\n * @function selectCell\n * @param {Number} row Visual row index.\n * @param {Number|String} column Visual column index or column property.\n * @param {Number} [endRow] Visual end row index (if selecting a range).\n * @param {Number|String} [endColumn] Visual end column index or column property (if selecting a range).\n * @param {Boolean} [scrollToCell=true] If `true`, the viewport will be scrolled to the selection.\n * @param {Boolean} [changeListener=true] If `false`, Handsontable will not change keyboard events listener to himself.\n * @returns {Boolean} `true` if selection was successful, `false` otherwise.\n */\n this.selectCell = function (row, column, endRow, endColumn) {\n var scrollToCell = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var changeListener = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n\n if ((0, _mixed.isUndefined)(row) || (0, _mixed.isUndefined)(column)) {\n return false;\n }\n\n return this.selectCells([[row, column, endRow, endColumn]], scrollToCell, changeListener);\n };\n\n /**\n * Make multiple, non-contiguous selection specified by `row` and `column` values or a range of cells\n * finishing at `endRow`, `endColumn`. The method supports two input formats which are the same as that\n * produces by `getSelected` and `getSelectedRange` methods.\n *\n * By default, viewport will be scrolled to selection. After the `selectCells` method had finished, the instance\n * will be listening to keyboard input on the document.\n *\n * @example\n * ```js\n * // Using an array of arrays.\n * hot.selectCells([[1, 1, 2, 2], [3, 3], [6, 2, 0, 2]]);\n * // Using an array of arrays with defined columns as props.\n * hot.selectCells([[1, 'id', 2, 'first_name'], [3, 'full_name'], [6, 'last_name', 0, 'first_name']]);\n * // Using an array of CellRange objects (produced by `.getSelectedRange()` method).\n * const selected = hot.getSelectedRange();\n *\n * selected[0].from.row = 0;\n * selected[0].from.col = 0;\n *\n * hot.selectCells(selected);\n * ```\n *\n * @memberof Core#\n * @since 0.38.0\n * @function selectCells\n * @param {Array[]|CellRange[]} coords Visual coords passed as an array of array (`[[rowStart, columnStart, rowEnd, columnEnd], ...]`)\n * the same format as `getSelected` method returns or as an CellRange objects\n * which is the same format what `getSelectedRange` method returns.\n * @param {Boolean} [scrollToCell=true] If `true`, the viewport will be scrolled to the selection.\n * @param {Boolean} [changeListener=true] If `false`, Handsontable will not change keyboard events listener to himself.\n * @returns {Boolean} `true` if selection was successful, `false` otherwise.\n */\n this.selectCells = function () {\n var coords = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [[]];\n var scrollToCell = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var changeListener = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (scrollToCell === false) {\n preventScrollingToCell = true;\n }\n\n var wasSelected = selection.selectCells(coords);\n\n if (wasSelected && changeListener) {\n instance.listen();\n }\n preventScrollingToCell = false;\n\n return wasSelected;\n };\n\n /**\n * Select the cell specified by the `row` and `prop` arguments, or a range finishing at `endRow`, `endProp`.\n * By default, viewport will be scrolled to selection.\n *\n * @deprecated\n * @memberof Core#\n * @function selectCellByProp\n * @param {Number} row Visual row index.\n * @param {String} prop Property name.\n * @param {Number} [endRow] visual end row index (if selecting a range).\n * @param {String} [endProp] End property name (if selecting a range).\n * @param {Boolean} [scrollToCell=true] If `true`, viewport will be scrolled to the selection.\n * @param {Boolean} [changeListener=true] If `false`, Handsontable will not change keyboard events listener to himself.\n * @returns {Boolean} `true` if selection was successful, `false` otherwise.\n */\n this.selectCellByProp = function (row, prop, endRow, endProp) {\n var scrollToCell = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var changeListener = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n\n (0, _console.warn)((0, _templateLiteralTag.toSingleLine)(_templateObject));\n\n return this.selectCells([[row, prop, endRow, endProp]], scrollToCell, changeListener);\n };\n\n /**\n * Select column specified by `startColumn` visual index, column property or a range of columns finishing at `endColumn`.\n *\n * @example\n * ```js\n * // Select column using visual index.\n * hot.selectColumns(1);\n * // Select column using column property.\n * hot.selectColumns('id');\n * // Select range of columns using visual indexes.\n * hot.selectColumns(1, 4);\n * // Select range of columns using column properties.\n * hot.selectColumns('id', 'last_name');\n * ```\n *\n * @memberof Core#\n * @since 0.38.0\n * @function selectColumns\n * @param {Number} startColumn The visual column index from which the selection starts.\n * @param {Number} [endColumn=startColumn] The visual column index to which the selection finishes. If `endColumn`\n * is not defined the column defined by `startColumn` will be selected.\n * @returns {Boolean} `true` if selection was successful, `false` otherwise.\n */\n this.selectColumns = function (startColumn) {\n var endColumn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startColumn;\n\n return selection.selectColumns(startColumn, endColumn);\n };\n\n /**\n * Select row specified by `startRow` visual index or a range of rows finishing at `endRow`.\n *\n * @example\n * ```js\n * // Select row using visual index.\n * hot.selectRows(1);\n * // Select range of rows using visual indexes.\n * hot.selectRows(1, 4);\n * ```\n *\n * @memberof Core#\n * @since 0.38.0\n * @function selectRows\n * @param {Number} startRow The visual row index from which the selection starts.\n * @param {Number} [endRow=startRow] The visual row index to which the selection finishes. If `endRow`\n * is not defined the row defined by `startRow` will be selected.\n * @returns {Boolean} `true` if selection was successful, `false` otherwise.\n */\n this.selectRows = function (startRow) {\n var endRow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startRow;\n\n return selection.selectRows(startRow, endRow);\n };\n\n /**\n * Deselects the current cell selection on the table.\n *\n * @memberof Core#\n * @function deselectCell\n */\n this.deselectCell = function () {\n selection.deselect();\n };\n\n /**\n * Select the whole table. The previous selection will be overwritten.\n *\n * @since 0.38.2\n * @memberof Core#\n * @function selectAll\n */\n this.selectAll = function () {\n preventScrollingToCell = true;\n selection.selectAll();\n preventScrollingToCell = false;\n };\n\n /**\n * Scroll viewport to coordinates specified by the `row` and `column` arguments.\n *\n * @memberof Core#\n * @function scrollViewportTo\n * @param {Number} [row] Visual row index.\n * @param {Number} [column] Visual column index.\n * @param {Boolean} [snapToBottom = false] If `true`, viewport is scrolled to show the cell on the bottom of the table.\n * @param {Boolean} [snapToRight = false] If `true`, viewport is scrolled to show the cell on the right side of the table.\n * @returns {Boolean} `true` if scroll was successful, `false` otherwise.\n */\n this.scrollViewportTo = function (row, column) {\n var snapToBottom = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var snapToRight = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n var snapToTop = !snapToBottom;\n var snapToLeft = !snapToRight;\n var result = false;\n\n if (row !== void 0 && column !== void 0) {\n result = instance.view.scrollViewport(new _src.CellCoords(row, column), snapToTop, snapToRight, snapToBottom, snapToLeft);\n }\n if (typeof row === 'number' && typeof column !== 'number') {\n result = instance.view.scrollViewportVertically(row, snapToTop, snapToBottom);\n }\n if (typeof column === 'number' && typeof row !== 'number') {\n result = instance.view.scrollViewportHorizontally(column, snapToRight, snapToLeft);\n }\n\n return result;\n };\n\n /**\n * Removes the table from the DOM and destroys the instance of the Handsontable.\n *\n * @memberof Core#\n * @function destroy\n * @fires Hooks#afterDestroy\n */\n this.destroy = function () {\n instance._clearTimeouts();\n instance._clearImmediates();\n\n if (instance.view) {\n // in case HT is destroyed before initialization has finished\n instance.view.destroy();\n }\n if (dataSource) {\n dataSource.destroy();\n }\n dataSource = null;\n\n (0, _keyStateObserver.stopObserving)();\n\n if (false) { var licenseInfo; }\n (0, _element.empty)(instance.rootElement);\n eventManager.destroy();\n\n if (editorManager) {\n editorManager.destroy();\n }\n\n instance.runHooks('afterDestroy');\n _pluginHooks2.default.getSingleton().destroy(instance);\n\n (0, _object.objectEach)(instance, function (property, key, obj) {\n // replace instance methods with post mortem\n if ((0, _function.isFunction)(property)) {\n obj[key] = postMortem(key);\n } else if (key !== 'guid') {\n // replace instance properties with null (restores memory)\n // it should not be necessary but this prevents a memory leak side effects that show itself in Jasmine tests\n obj[key] = null;\n }\n });\n\n instance.isDestroyed = true;\n\n // replace private properties with null (restores memory)\n // it should not be necessary but this prevents a memory leak side effects that show itself in Jasmine tests\n if (datamap) {\n datamap.destroy();\n }\n datamap = null;\n priv = null;\n grid = null;\n selection = null;\n editorManager = null;\n instance = null;\n GridSettings = null;\n };\n\n /**\n * Replacement for all methods after Handsotnable was destroyed.\n *\n * @private\n */\n function postMortem(method) {\n return function () {\n throw new Error('The \"' + method + '\" method cannot be called because this Handsontable instance has been destroyed');\n };\n }\n\n /**\n * Returns the active editor class instance.\n *\n * @memberof Core#\n * @function getActiveEditor\n * @returns {BaseEditor} The active editor instance.\n */\n this.getActiveEditor = function () {\n return editorManager.getActiveEditor();\n };\n\n /**\n * Returns plugin instance by provided its name.\n *\n * @memberof Core#\n * @function getPlugin\n * @param {String} pluginName The plugin name.\n * @returns {BasePlugin} The plugin instance.\n */\n this.getPlugin = function (pluginName) {\n return (0, _plugins.getPlugin)(this, pluginName);\n };\n\n /**\n * Returns the Handsontable instance.\n *\n * @memberof Core#\n * @function getInstance\n * @returns {Handsontable} The Handsontable instance.\n */\n this.getInstance = function () {\n return instance;\n };\n\n /**\n * Adds listener to the specified hook name (only for this Handsontable instance).\n *\n * @memberof Core#\n * @function addHook\n * @see Hooks#add\n * @param {String} key Hook name (see {@link Hooks}).\n * @param {Function|Array} callback Function or array of functions.\n * @example\n * ```js\n * hot.addHook('beforeInit', myCallback);\n * ```\n */\n this.addHook = function (key, callback) {\n _pluginHooks2.default.getSingleton().add(key, callback, instance);\n };\n\n /**\n * Check if for a specified hook name there are added listeners (only for this Handsontable instance). All available\n * hooks you will find {@link Hooks}.\n *\n * @memberof Core#\n * @function hasHook\n * @see Hooks#has\n * @param {String} key Hook name\n * @return {Boolean}\n *\n * @example\n * ```js\n * const hasBeforeInitListeners = hot.hasHook('beforeInit');\n * ```\n */\n this.hasHook = function (key) {\n return _pluginHooks2.default.getSingleton().has(key, instance);\n };\n\n /**\n * Adds listener to specified hook name (only for this Handsontable instance). After the listener is triggered,\n * it will be automatically removed.\n *\n * @memberof Core#\n * @function addHookOnce\n * @see Hooks#once\n * @param {String} key Hook name (see {@link Hooks}).\n * @param {Function|Array} callback Function or array of functions.\n * @example\n * ```js\n * hot.addHookOnce('beforeInit', myCallback);\n * ```\n */\n this.addHookOnce = function (key, callback) {\n _pluginHooks2.default.getSingleton().once(key, callback, instance);\n };\n\n /**\n * Removes the hook listener previously registered with {@link Core#addHook}.\n *\n * @memberof Core#\n * @function removeHook\n * @see Hooks#remove\n * @param {String} key Hook name.\n * @param {Function} callback Reference to the function which has been registered using {@link Core#addHook}.\n *\n * @example\n * ```js\n * hot.removeHook('beforeInit', myCallback);\n * ```\n */\n this.removeHook = function (key, callback) {\n _pluginHooks2.default.getSingleton().remove(key, callback, instance);\n };\n\n /**\n * Run the callbacks for the hook provided in the `key` argument using the parameters given in the other arguments.\n *\n * @memberof Core#\n * @function runHooks\n * @see Hooks#run\n * @param {String} key Hook name.\n * @param {*} [p1] Argument passed to the callback.\n * @param {*} [p2] Argument passed to the callback.\n * @param {*} [p3] Argument passed to the callback.\n * @param {*} [p4] Argument passed to the callback.\n * @param {*} [p5] Argument passed to the callback.\n * @param {*} [p6] Argument passed to the callback.\n * @returns {*}\n *\n * @example\n * ```js\n * // Run built-in hook\n * hot.runHooks('beforeInit');\n * // Run custom hook\n * hot.runHooks('customAction', 10, 'foo');\n * ```\n */\n this.runHooks = function (key, p1, p2, p3, p4, p5, p6) {\n return _pluginHooks2.default.getSingleton().run(instance, key, p1, p2, p3, p4, p5, p6);\n };\n\n /**\n * Get language phrase for specified dictionary key.\n *\n * @memberof Core#\n * @function getTranslatedPhrase\n * @since 0.35.0\n * @param {String} dictionaryKey Constant which is dictionary key.\n * @param {*} extraArguments Arguments which will be handled by formatters.\n * @returns {String}\n */\n this.getTranslatedPhrase = function (dictionaryKey, extraArguments) {\n return (0, _i18n.getTranslatedPhrase)(priv.settings.language, dictionaryKey, extraArguments);\n };\n\n this.timeouts = [];\n\n /**\n * Sets timeout. Purpose of this method is to clear all known timeouts when `destroy` method is called.\n *\n * @param {Number|Function} handle Handler returned from setTimeout or function to execute (it will be automatically wraped\n * by setTimeout function).\n * @param {Number} [delay=0] If first argument is passed as a function this argument set delay of the execution of that function.\n * @private\n */\n this._registerTimeout = function (handle) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var handleFunc = handle;\n\n if (typeof handleFunc === 'function') {\n handleFunc = setTimeout(handleFunc, delay);\n }\n\n this.timeouts.push(handleFunc);\n };\n\n /**\n * Clears all known timeouts.\n *\n * @private\n */\n this._clearTimeouts = function () {\n (0, _array.arrayEach)(this.timeouts, function (handler) {\n clearTimeout(handler);\n });\n };\n\n this.immediates = [];\n\n /**\n * Execute function execution to the next event loop cycle. Purpose of this method is to clear all known timeouts when `destroy` method is called.\n *\n * @param {Function} callback Function to be delayed in execution.\n * @private\n */\n this._registerImmediate = function (callback) {\n this.immediates.push(setImmediate(callback));\n };\n\n /**\n * Clears all known timeouts.\n *\n * @private\n */\n this._clearImmediates = function () {\n (0, _array.arrayEach)(this.immediates, function (handler) {\n clearImmediate(handler);\n });\n };\n\n /**\n * Refresh selection borders. This is temporary method relic after selection rewrite.\n *\n * @private\n * @param {Boolean} [revertOriginal=false] If `true`, the previous value will be restored. Otherwise, the edited value will be saved.\n * @param {Boolean} [prepareEditorIfNeeded=true] If `true` the editor under the selected cell will be prepared to open.\n */\n this._refreshBorders = function () {\n var revertOriginal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var prepareEditorIfNeeded = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n editorManager.destroyEditor(revertOriginal);\n instance.view.render();\n\n if (prepareEditorIfNeeded && selection.isSelected()) {\n editorManager.prepareEditor();\n }\n };\n\n _pluginHooks2.default.getSingleton().run(instance, 'construct');\n}\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.columnFactory = columnFactory;\n\nvar _object = __webpack_require__(1);\n\n/* eslint-disable import/prefer-default-export */\n/**\n * Factory for columns constructors.\n *\n * @param {Object} GridSettings\n * @param {Array} conflictList\n * @return {Object} ColumnSettings\n */\nfunction columnFactory(GridSettings, conflictList) {\n function ColumnSettings() {}\n\n (0, _object.inherit)(ColumnSettings, GridSettings);\n\n // Clear conflict settings\n for (var i = 0, len = conflictList.length; i < len; i++) {\n ColumnSettings.prototype[conflictList[i]] = void 0;\n }\n\n return ColumnSettings;\n}\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.spreadsheetColumnLabel = spreadsheetColumnLabel;\nexports.spreadsheetColumnIndex = spreadsheetColumnIndex;\nexports.createSpreadsheetData = createSpreadsheetData;\nexports.createSpreadsheetObjectData = createSpreadsheetObjectData;\nexports.createEmptySpreadsheetData = createEmptySpreadsheetData;\nexports.translateRowsToColumns = translateRowsToColumns;\nexports.cellMethodLookupFactory = cellMethodLookupFactory;\n\nvar _cellTypes = __webpack_require__(89);\n\nvar _object = __webpack_require__(1);\n\nvar COLUMN_LABEL_BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\nvar COLUMN_LABEL_BASE_LENGTH = COLUMN_LABEL_BASE.length;\n\n/**\n * Generates spreadsheet-like column names: A, B, C, ..., Z, AA, AB, etc.\n *\n * @param {Number} index Column index.\n * @returns {String}\n */\nfunction spreadsheetColumnLabel(index) {\n var dividend = index + 1;\n var columnLabel = '';\n var modulo = void 0;\n\n while (dividend > 0) {\n modulo = (dividend - 1) % COLUMN_LABEL_BASE_LENGTH;\n columnLabel = String.fromCharCode(65 + modulo) + columnLabel;\n dividend = parseInt((dividend - modulo) / COLUMN_LABEL_BASE_LENGTH, 10);\n }\n\n return columnLabel;\n}\n\n/**\n * Generates spreadsheet-like column index from theirs labels: A, B, C ...., Z, AA, AB, etc.\n *\n * @param {String} label Column label.\n * @returns {Number}\n */\nfunction spreadsheetColumnIndex(label) {\n var result = 0;\n\n if (label) {\n for (var i = 0, j = label.length - 1; i < label.length; i += 1, j -= 1) {\n result += Math.pow(COLUMN_LABEL_BASE_LENGTH, j) * (COLUMN_LABEL_BASE.indexOf(label[i]) + 1);\n }\n }\n result -= 1;\n\n return result;\n}\n\n/**\n * Creates 2D array of Excel-like values \"A1\", \"A2\", ...\n *\n * @param {Number} rows Number of rows to generate.\n * @param {Number} columns Number of columns to generate.\n * @returns {Array}\n */\nfunction createSpreadsheetData() {\n var rows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100;\n var columns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 4;\n\n var _rows = [];\n var i = void 0;\n var j = void 0;\n\n for (i = 0; i < rows; i++) {\n var row = [];\n\n for (j = 0; j < columns; j++) {\n row.push(spreadsheetColumnLabel(j) + (i + 1));\n }\n _rows.push(row);\n }\n\n return _rows;\n}\n\n/**\n * Creates 2D array of Excel-like values \"A1\", \"A2\", as an array of objects.\n *\n * @param {Number} rows Number of rows to generate.\n * @param {Number} colCount Number of columns to generate.\n * @returns {Array}\n */\nfunction createSpreadsheetObjectData() {\n var rows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100;\n var colCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 4;\n\n var _rows = [];\n var i = void 0;\n var j = void 0;\n\n for (i = 0; i < rows; i++) {\n var row = {};\n\n for (j = 0; j < colCount; j++) {\n row['prop' + j] = spreadsheetColumnLabel(j) + (i + 1);\n }\n _rows.push(row);\n }\n\n return _rows;\n}\n\n/**\n * Generates an empty data object.\n *\n * @param {Number} rows Number of rows to generate.\n * @param {Number} columns Number of columns to generate\n * @returns {Array}\n */\nfunction createEmptySpreadsheetData(rows, columns) {\n var data = [];\n var row = void 0;\n\n for (var i = 0; i < rows; i++) {\n row = [];\n for (var j = 0; j < columns; j++) {\n row.push('');\n }\n data.push(row);\n }\n\n return data;\n}\n\nfunction translateRowsToColumns(input) {\n var output = [];\n var i = void 0;\n var ilen = void 0;\n var j = void 0;\n var jlen = void 0;\n var olen = 0;\n\n for (i = 0, ilen = input.length; i < ilen; i++) {\n for (j = 0, jlen = input[i].length; j < jlen; j++) {\n if (j === olen) {\n output.push([]);\n olen += 1;\n }\n output[j].push(input[i][j]);\n }\n }\n\n return output;\n}\n\n/**\n * Factory that produces a function for searching methods (or any properties) which could be defined directly in\n * table configuration or implicitly, within cell type definition.\n *\n * For example: renderer can be defined explicitly using \"renderer\" property in column configuration or it can be\n * defined implicitly using \"type\" property.\n *\n * Methods/properties defined explicitly always takes precedence over those defined through \"type\".\n *\n * If the method/property is not found in an object, searching is continued recursively through prototype chain, until\n * it reaches the Object.prototype.\n *\n *\n * @param methodName {String} name of the method/property to search (i.e. 'renderer', 'validator', 'copyable')\n * @param allowUndefined {Boolean} [optional] if false, the search is continued if methodName has not been found in cell \"type\"\n * @returns {Function}\n */\nfunction cellMethodLookupFactory(methodName, allowUndefined) {\n var isUndefinedAllowed = typeof allowUndefined === 'undefined' ? true : allowUndefined;\n\n return function cellMethodLookup(row, col) {\n return function getMethodFromProperties(properties) {\n\n if (!properties) {\n return; // method not found\n } else if ((0, _object.hasOwnProperty)(properties, methodName) && properties[methodName] !== void 0) {\n // check if it is own and is not empty\n return properties[methodName]; // method defined directly\n } else if ((0, _object.hasOwnProperty)(properties, 'type') && properties.type) {\n // check if it is own and is not empty\n if (typeof properties.type !== 'string') {\n throw new Error('Cell type must be a string ');\n }\n\n var type = (0, _cellTypes.getCellType)(properties.type);\n\n if ((0, _object.hasOwnProperty)(type, methodName)) {\n return type[methodName]; // method defined in type.\n } else if (isUndefinedAllowed) {\n return; // method does not defined in type (eg. validator), returns undefined\n }\n }\n\n return getMethodFromProperties(Object.getPrototypeOf(properties));\n }(typeof row === 'number' ? this.getCellMeta(row, col) : row);\n };\n}\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nvar _element = __webpack_require__(0);\n\nvar _array = __webpack_require__(2);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * @class GhostTable\n * @util\n */\nvar GhostTable = function () {\n function GhostTable(hotInstance) {\n _classCallCheck(this, GhostTable);\n\n /**\n * Handsontable instance.\n *\n * @type {Core}\n */\n this.hot = hotInstance;\n /**\n * Container element where every table will be injected.\n *\n * @type {HTMLElement|null}\n */\n this.container = null;\n /**\n * Flag which determine is table was injected to DOM.\n *\n * @type {Boolean}\n */\n this.injected = false;\n /**\n * Added rows collection.\n *\n * @type {Array}\n */\n this.rows = [];\n /**\n * Added columns collection.\n *\n * @type {Array}\n */\n this.columns = [];\n /**\n * Samples prepared for calculations.\n *\n * @type {Map}\n * @default {null}\n */\n this.samples = null;\n /**\n * Ghost table settings.\n *\n * @type {Object}\n * @default {Object}\n */\n this.settings = {\n useHeaders: true\n };\n }\n\n /**\n * Add row.\n *\n * @param {Number} row Row index.\n * @param {Map} samples Samples Map object.\n */\n\n\n _createClass(GhostTable, [{\n key: 'addRow',\n value: function addRow(row, samples) {\n if (this.columns.length) {\n throw new Error('Doesn\\'t support multi-dimensional table');\n }\n if (!this.rows.length) {\n this.container = this.createContainer(this.hot.rootElement.className);\n }\n var rowObject = { row: row };\n this.rows.push(rowObject);\n\n this.samples = samples;\n this.table = this.createTable(this.hot.table.className);\n this.table.colGroup.appendChild(this.createColGroupsCol());\n this.table.tr.appendChild(this.createRow(row));\n this.container.container.appendChild(this.table.fragment);\n\n rowObject.table = this.table.table;\n }\n\n /**\n * Add a row consisting of the column headers.\n */\n\n }, {\n key: 'addColumnHeadersRow',\n value: function addColumnHeadersRow(samples) {\n var colHeader = this.hot.getColHeader(0);\n\n if (colHeader !== null && colHeader !== void 0) {\n var rowObject = { row: -1 };\n\n this.rows.push(rowObject);\n\n this.container = this.createContainer(this.hot.rootElement.className);\n this.samples = samples;\n this.table = this.createTable(this.hot.table.className);\n\n this.table.colGroup.appendChild(this.createColGroupsCol());\n this.table.tHead.appendChild(this.createColumnHeadersRow());\n this.container.container.appendChild(this.table.fragment);\n\n rowObject.table = this.table.table;\n }\n }\n\n /**\n * Add column.\n *\n * @param {Number} column Column index.\n * @param {Map} samples Samples Map object.\n */\n\n }, {\n key: 'addColumn',\n value: function addColumn(column, samples) {\n if (this.rows.length) {\n throw new Error('Doesn\\'t support multi-dimensional table');\n }\n if (!this.columns.length) {\n this.container = this.createContainer(this.hot.rootElement.className);\n }\n var columnObject = { col: column };\n this.columns.push(columnObject);\n\n this.samples = samples;\n this.table = this.createTable(this.hot.table.className);\n\n if (this.getSetting('useHeaders') && this.hot.getColHeader(column) !== null) {\n this.hot.view.appendColHeader(column, this.table.th);\n }\n this.table.tBody.appendChild(this.createCol(column));\n this.container.container.appendChild(this.table.fragment);\n\n columnObject.table = this.table.table;\n }\n\n /**\n * Get calculated heights.\n *\n * @param {Function} callback Callback which will be fired for each calculated row.\n */\n\n }, {\n key: 'getHeights',\n value: function getHeights(callback) {\n if (!this.injected) {\n this.injectTable();\n }\n (0, _array.arrayEach)(this.rows, function (row) {\n // -1 <- reduce border-top from table\n callback(row.row, (0, _element.outerHeight)(row.table) - 1);\n });\n }\n\n /**\n * Get calculated widths.\n *\n * @param {Function} callback Callback which will be fired for each calculated column.\n */\n\n }, {\n key: 'getWidths',\n value: function getWidths(callback) {\n if (!this.injected) {\n this.injectTable();\n }\n (0, _array.arrayEach)(this.columns, function (column) {\n callback(column.col, (0, _element.outerWidth)(column.table));\n });\n }\n\n /**\n * Set the Ghost Table settings to the provided object.\n *\n * @param {Object} settings New Ghost Table Settings\n */\n\n }, {\n key: 'setSettings',\n value: function setSettings(settings) {\n this.settings = settings;\n }\n\n /**\n * Set a single setting of the Ghost Table.\n *\n * @param {String} name Setting name.\n * @param {*} value Setting value.\n */\n\n }, {\n key: 'setSetting',\n value: function setSetting(name, value) {\n if (!this.settings) {\n this.settings = {};\n }\n\n this.settings[name] = value;\n }\n\n /**\n * Get the Ghost Table settings.\n *\n * @returns {Object|null}\n */\n\n }, {\n key: 'getSettings',\n value: function getSettings() {\n return this.settings;\n }\n\n /**\n * Get a single Ghost Table setting.\n *\n * @param {String} name\n * @returns {Boolean|null}\n */\n\n }, {\n key: 'getSetting',\n value: function getSetting(name) {\n if (this.settings) {\n return this.settings[name];\n }\n return null;\n }\n\n /**\n * Create colgroup col elements.\n *\n * @returns {DocumentFragment}\n */\n\n }, {\n key: 'createColGroupsCol',\n value: function createColGroupsCol() {\n var _this = this;\n\n var d = document;\n var fragment = d.createDocumentFragment();\n\n if (this.hot.hasRowHeaders()) {\n fragment.appendChild(this.createColElement(-1));\n }\n\n this.samples.forEach(function (sample) {\n (0, _array.arrayEach)(sample.strings, function (string) {\n fragment.appendChild(_this.createColElement(string.col));\n });\n });\n\n return fragment;\n }\n\n /**\n * Create table row element.\n *\n * @param {Number} row Row index.\n * @returns {DocumentFragment} Returns created table row elements.\n */\n\n }, {\n key: 'createRow',\n value: function createRow(row) {\n var _this2 = this;\n\n var d = document;\n var fragment = d.createDocumentFragment();\n var th = d.createElement('th');\n\n if (this.hot.hasRowHeaders()) {\n this.hot.view.appendRowHeader(row, th);\n\n fragment.appendChild(th);\n }\n\n this.samples.forEach(function (sample) {\n (0, _array.arrayEach)(sample.strings, function (string) {\n var column = string.col;\n var cellProperties = _this2.hot.getCellMeta(row, column);\n\n cellProperties.col = column;\n cellProperties.row = row;\n\n var renderer = _this2.hot.getCellRenderer(cellProperties);\n var td = d.createElement('td');\n\n renderer(_this2.hot, td, row, column, _this2.hot.colToProp(column), string.value, cellProperties);\n fragment.appendChild(td);\n });\n });\n\n return fragment;\n }\n }, {\n key: 'createColumnHeadersRow',\n value: function createColumnHeadersRow() {\n var _this3 = this;\n\n var d = document;\n var fragment = d.createDocumentFragment();\n\n if (this.hot.hasRowHeaders()) {\n var th = d.createElement('th');\n this.hot.view.appendColHeader(-1, th);\n fragment.appendChild(th);\n }\n\n this.samples.forEach(function (sample) {\n (0, _array.arrayEach)(sample.strings, function (string) {\n var column = string.col;\n\n var th = d.createElement('th');\n\n _this3.hot.view.appendColHeader(column, th);\n fragment.appendChild(th);\n });\n });\n\n return fragment;\n }\n\n /**\n * Create table column elements.\n *\n * @param {Number} column Column index.\n * @returns {DocumentFragment} Returns created column table column elements.\n */\n\n }, {\n key: 'createCol',\n value: function createCol(column) {\n var _this4 = this;\n\n var d = document;\n var fragment = d.createDocumentFragment();\n\n this.samples.forEach(function (sample) {\n (0, _array.arrayEach)(sample.strings, function (string) {\n var row = string.row;\n var cellProperties = _this4.hot.getCellMeta(row, column);\n\n cellProperties.col = column;\n cellProperties.row = row;\n\n var renderer = _this4.hot.getCellRenderer(cellProperties);\n var td = d.createElement('td');\n var tr = d.createElement('tr');\n\n renderer(_this4.hot, td, row, column, _this4.hot.colToProp(column), string.value, cellProperties);\n tr.appendChild(td);\n fragment.appendChild(tr);\n });\n });\n\n return fragment;\n }\n\n /**\n * Remove table from document and reset internal state.\n */\n\n }, {\n key: 'clean',\n value: function clean() {\n this.rows.length = 0;\n this.rows[-1] = void 0;\n this.columns.length = 0;\n\n if (this.samples) {\n this.samples.clear();\n }\n this.samples = null;\n this.removeTable();\n }\n\n /**\n * Inject generated table into document.\n *\n * @param {HTMLElement} [parent=null]\n */\n\n }, {\n key: 'injectTable',\n value: function injectTable() {\n var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n if (!this.injected) {\n (parent || this.hot.rootElement).appendChild(this.container.fragment);\n this.injected = true;\n }\n }\n\n /**\n * Remove table from document.\n */\n\n }, {\n key: 'removeTable',\n value: function removeTable() {\n if (this.injected && this.container.container.parentNode) {\n this.container.container.parentNode.removeChild(this.container.container);\n this.container = null;\n this.injected = false;\n }\n }\n\n /**\n * Create col element.\n *\n * @param {Number} column Column index.\n * @returns {HTMLElement}\n */\n\n }, {\n key: 'createColElement',\n value: function createColElement(column) {\n var d = document;\n var col = d.createElement('col');\n\n col.style.width = this.hot.view.wt.wtTable.getStretchedColumnWidth(column) + 'px';\n\n return col;\n }\n\n /**\n * Create table element.\n *\n * @param {String} className\n * @returns {Object}\n */\n\n }, {\n key: 'createTable',\n value: function createTable() {\n var className = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n var d = document;\n var fragment = d.createDocumentFragment();\n var table = d.createElement('table');\n var tHead = d.createElement('thead');\n var tBody = d.createElement('tbody');\n var colGroup = d.createElement('colgroup');\n var tr = d.createElement('tr');\n var th = d.createElement('th');\n\n if (this.isVertical()) {\n table.appendChild(colGroup);\n }\n if (this.isHorizontal()) {\n tr.appendChild(th);\n tHead.appendChild(tr);\n table.style.tableLayout = 'auto';\n table.style.width = 'auto';\n }\n table.appendChild(tHead);\n\n if (this.isVertical()) {\n tBody.appendChild(tr);\n }\n table.appendChild(tBody);\n (0, _element.addClass)(table, className);\n fragment.appendChild(table);\n\n return { fragment: fragment, table: table, tHead: tHead, tBody: tBody, colGroup: colGroup, tr: tr, th: th };\n }\n\n /**\n * Create container for tables.\n *\n * @param {String} className\n * @returns {Object}\n */\n\n }, {\n key: 'createContainer',\n value: function createContainer() {\n var className = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n var d = document;\n var fragment = d.createDocumentFragment();\n var container = d.createElement('div');\n var containerClassName = 'htGhostTable htAutoSize ' + className.trim();\n\n (0, _element.addClass)(container, containerClassName);\n fragment.appendChild(container);\n\n return { fragment: fragment, container: container };\n }\n\n /**\n * Checks if table is raised vertically (checking rows).\n *\n * @returns {Boolean}\n */\n\n }, {\n key: 'isVertical',\n value: function isVertical() {\n return !!(this.rows.length && !this.columns.length);\n }\n\n /**\n * Checks if table is raised horizontally (checking columns).\n *\n * @returns {Boolean}\n */\n\n }, {\n key: 'isHorizontal',\n value: function isHorizontal() {\n return !!(this.columns.length && !this.rows.length);\n }\n }]);\n\n return GhostTable;\n}();\n\nexports.default = GhostTable;\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _array = __webpack_require__(2);\n\nvar _object = __webpack_require__(1);\n\nvar _number = __webpack_require__(6);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar MIXIN_NAME = 'arrayMapper';\n\n/**\n * @type {Object}\n */\nvar arrayMapper = {\n _arrayMap: [],\n\n /**\n * Get translated index by its physical index.\n *\n * @param {Number} physicalIndex Physical index.\n * @return {Number|null} Returns translated index mapped by passed physical index.\n */\n getValueByIndex: function getValueByIndex(physicalIndex) {\n var length = this._arrayMap.length;\n var translatedIndex = null;\n\n if (physicalIndex < length) {\n translatedIndex = this._arrayMap[physicalIndex];\n }\n\n return translatedIndex;\n },\n\n\n /**\n * Get physical index by its translated index.\n *\n * @param {*} translatedIndex Value to search.\n * @returns {Number|null} Returns a physical index of the array mapper.\n */\n getIndexByValue: function getIndexByValue(translatedIndex) {\n var physicalIndex = void 0;\n\n // eslint-disable-next-line no-cond-assign, no-return-assign\n return (physicalIndex = this._arrayMap.indexOf(translatedIndex)) === -1 ? null : physicalIndex;\n },\n\n\n /**\n * Insert new items to array mapper starting at passed index. New entries will be a continuation of last value in the array.\n *\n * @param {Number} physicalIndex Array index.\n * @param {Number} [amount=1] Defines how many items will be created to an array.\n * @returns {Array} Returns added items.\n */\n insertItems: function insertItems(physicalIndex) {\n var _this = this;\n\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var newIndex = (0, _array.arrayMax)(this._arrayMap) + 1;\n var addedItems = [];\n\n (0, _number.rangeEach)(amount - 1, function (count) {\n addedItems.push(_this._arrayMap.splice(physicalIndex + count, 0, newIndex + count));\n });\n\n return addedItems;\n },\n\n\n /**\n * Remove items from array mapper.\n *\n * @param {Number} physicalIndex Array index.\n * @param {Number} [amount=1] Defines how many items will be created to an array.\n * @returns {Array} Returns removed items.\n */\n removeItems: function removeItems(physicalIndex) {\n var _this2 = this;\n\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var removedItems = [];\n\n if (Array.isArray(physicalIndex)) {\n var mapCopy = [].concat(this._arrayMap);\n\n // Sort descending\n physicalIndex.sort(function (a, b) {\n return b - a;\n });\n\n removedItems = (0, _array.arrayReduce)(physicalIndex, function (acc, item) {\n _this2._arrayMap.splice(item, 1);\n\n return acc.concat(mapCopy.slice(item, item + 1));\n }, []);\n } else {\n removedItems = this._arrayMap.splice(physicalIndex, amount);\n }\n\n return removedItems;\n },\n\n\n /**\n * Unshift items (remove and shift chunk of array to the left).\n *\n * @param {Number|Array} physicalIndex Array index or Array of indexes to unshift.\n * @param {Number} [amount=1] Defines how many items will be removed from an array (when index is passed as number).\n */\n unshiftItems: function unshiftItems(physicalIndex) {\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var removedItems = this.removeItems(physicalIndex, amount);\n\n function countRowShift(logicalRow) {\n // Todo: compare perf between reduce vs sort->each->brake\n return (0, _array.arrayReduce)(removedItems, function (count, removedLogicalRow) {\n var result = count;\n\n if (logicalRow > removedLogicalRow) {\n result += 1;\n }\n\n return result;\n }, 0);\n }\n\n this._arrayMap = (0, _array.arrayMap)(this._arrayMap, function (logicalRow) {\n var logicalRowIndex = logicalRow;\n var rowShift = countRowShift(logicalRowIndex);\n\n if (rowShift) {\n logicalRowIndex -= rowShift;\n }\n\n return logicalRowIndex;\n });\n },\n\n\n /**\n * Shift (right shifting) items starting at passed index.\n *\n * @param {Number} physicalIndex Array index.\n * @param {Number} [amount=1] Defines how many items will be created to an array.\n */\n shiftItems: function shiftItems(physicalIndex) {\n var _this3 = this;\n\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n this._arrayMap = (0, _array.arrayMap)(this._arrayMap, function (row) {\n var physicalRowIndex = row;\n\n if (physicalRowIndex >= physicalIndex) {\n physicalRowIndex += amount;\n }\n\n return physicalRowIndex;\n });\n\n (0, _number.rangeEach)(amount - 1, function (count) {\n _this3._arrayMap.splice(physicalIndex + count, 0, physicalIndex + count);\n });\n },\n\n\n /**\n * Swap indexes in arrayMapper.\n *\n * @param {Number} physicalIndexFrom index to move.\n * @param {Number} physicalIndexTo index to.\n */\n swapIndexes: function swapIndexes(physicalIndexFrom, physicalIndexTo) {\n var _arrayMap;\n\n (_arrayMap = this._arrayMap).splice.apply(_arrayMap, [physicalIndexTo, 0].concat(_toConsumableArray(this._arrayMap.splice(physicalIndexFrom, 1))));\n },\n\n\n /**\n * Clear all stored index<->value information from an array.\n */\n clearMap: function clearMap() {\n this._arrayMap.length = 0;\n }\n};\n\n(0, _object.defineGetter)(arrayMapper, 'MIXIN_NAME', MIXIN_NAME, {\n writable: false,\n enumerable: false\n});\n\nexports.default = arrayMapper;\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = separatorItem;\nvar KEY = exports.KEY = '---------';\n\nfunction separatorItem() {\n return {\n name: KEY\n };\n}\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.ITEMS = exports.UNDO = exports.SEPARATOR = exports.ROW_BELOW = exports.ROW_ABOVE = exports.REMOVE_ROW = exports.REMOVE_COLUMN = exports.REDO = exports.READ_ONLY = exports.COLUMN_RIGHT = exports.COLUMN_LEFT = exports.CLEAR_COLUMN = exports.ALIGNMENT = undefined;\n\nvar _predefinedItems2;\n\nvar _alignment = __webpack_require__(305);\n\nObject.defineProperty(exports, 'ALIGNMENT', {\n enumerable: true,\n get: function get() {\n return _alignment.KEY;\n }\n});\n\nvar _clearColumn = __webpack_require__(306);\n\nObject.defineProperty(exports, 'CLEAR_COLUMN', {\n enumerable: true,\n get: function get() {\n return _clearColumn.KEY;\n }\n});\n\nvar _columnLeft = __webpack_require__(307);\n\nObject.defineProperty(exports, 'COLUMN_LEFT', {\n enumerable: true,\n get: function get() {\n return _columnLeft.KEY;\n }\n});\n\nvar _columnRight = __webpack_require__(308);\n\nObject.defineProperty(exports, 'COLUMN_RIGHT', {\n enumerable: true,\n get: function get() {\n return _columnRight.KEY;\n }\n});\n\nvar _readOnly = __webpack_require__(309);\n\nObject.defineProperty(exports, 'READ_ONLY', {\n enumerable: true,\n get: function get() {\n return _readOnly.KEY;\n }\n});\n\nvar _redo = __webpack_require__(310);\n\nObject.defineProperty(exports, 'REDO', {\n enumerable: true,\n get: function get() {\n return _redo.KEY;\n }\n});\n\nvar _removeColumn = __webpack_require__(311);\n\nObject.defineProperty(exports, 'REMOVE_COLUMN', {\n enumerable: true,\n get: function get() {\n return _removeColumn.KEY;\n }\n});\n\nvar _removeRow = __webpack_require__(312);\n\nObject.defineProperty(exports, 'REMOVE_ROW', {\n enumerable: true,\n get: function get() {\n return _removeRow.KEY;\n }\n});\n\nvar _rowAbove = __webpack_require__(313);\n\nObject.defineProperty(exports, 'ROW_ABOVE', {\n enumerable: true,\n get: function get() {\n return _rowAbove.KEY;\n }\n});\n\nvar _rowBelow = __webpack_require__(314);\n\nObject.defineProperty(exports, 'ROW_BELOW', {\n enumerable: true,\n get: function get() {\n return _rowBelow.KEY;\n }\n});\n\nvar _separator = __webpack_require__(95);\n\nObject.defineProperty(exports, 'SEPARATOR', {\n enumerable: true,\n get: function get() {\n return _separator.KEY;\n }\n});\n\nvar _undo = __webpack_require__(315);\n\nObject.defineProperty(exports, 'UNDO', {\n enumerable: true,\n get: function get() {\n return _undo.KEY;\n }\n});\nexports.predefinedItems = predefinedItems;\nexports.addItem = addItem;\n\nvar _object = __webpack_require__(1);\n\nvar _alignment2 = _interopRequireDefault(_alignment);\n\nvar _clearColumn2 = _interopRequireDefault(_clearColumn);\n\nvar _columnLeft2 = _interopRequireDefault(_columnLeft);\n\nvar _columnRight2 = _interopRequireDefault(_columnRight);\n\nvar _readOnly2 = _interopRequireDefault(_readOnly);\n\nvar _redo2 = _interopRequireDefault(_redo);\n\nvar _removeColumn2 = _interopRequireDefault(_removeColumn);\n\nvar _removeRow2 = _interopRequireDefault(_removeRow);\n\nvar _rowAbove2 = _interopRequireDefault(_rowAbove);\n\nvar _rowBelow2 = _interopRequireDefault(_rowBelow);\n\nvar _separator2 = _interopRequireDefault(_separator);\n\nvar _undo2 = _interopRequireDefault(_undo);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ITEMS = exports.ITEMS = [_rowAbove.KEY, _rowBelow.KEY, _columnLeft.KEY, _columnRight.KEY, _clearColumn.KEY, _removeRow.KEY, _removeColumn.KEY, _undo.KEY, _redo.KEY, _readOnly.KEY, _alignment.KEY, _separator.KEY];\n\nvar _predefinedItems = (_predefinedItems2 = {}, _defineProperty(_predefinedItems2, _separator.KEY, _separator2.default), _defineProperty(_predefinedItems2, _rowAbove.KEY, _rowAbove2.default), _defineProperty(_predefinedItems2, _rowBelow.KEY, _rowBelow2.default), _defineProperty(_predefinedItems2, _columnLeft.KEY, _columnLeft2.default), _defineProperty(_predefinedItems2, _columnRight.KEY, _columnRight2.default), _defineProperty(_predefinedItems2, _clearColumn.KEY, _clearColumn2.default), _defineProperty(_predefinedItems2, _removeRow.KEY, _removeRow2.default), _defineProperty(_predefinedItems2, _removeColumn.KEY, _removeColumn2.default), _defineProperty(_predefinedItems2, _undo.KEY, _undo2.default), _defineProperty(_predefinedItems2, _redo.KEY, _redo2.default), _defineProperty(_predefinedItems2, _readOnly.KEY, _readOnly2.default), _defineProperty(_predefinedItems2, _alignment.KEY, _alignment2.default), _predefinedItems2);\n\n/**\n * Gets new object with all predefined menu items.\n *\n * @returns {Object}\n */\nfunction predefinedItems() {\n var items = {};\n\n (0, _object.objectEach)(_predefinedItems, function (itemFactory, key) {\n items[key] = itemFactory();\n });\n\n return items;\n}\n\n/**\n * Add new predefined menu item to the collection.\n *\n * @param {String} key Menu command id.\n * @param {Object} item Object command descriptor.\n */\nfunction addItem(key, item) {\n if (ITEMS.indexOf(key) === -1) {\n _predefinedItems[key] = item;\n }\n}\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['The merged cell declared with {row: ', ', col: ', ', rowspan: \\n ', ', colspan: ', '} contains negative values, which is not supported. It \\n will not be added to the collection.'], ['The merged cell declared with {row: ', ', col: ', ', rowspan: \\n ', ', colspan: ', '} contains negative values, which is not supported. It \\n will not be added to the collection.']),\n _templateObject2 = _taggedTemplateLiteral(['The merged cell declared at [', ', ', '] is positioned (or positioned partially) \\n outside of the table range. It was not added to the table, please fix your setup.'], ['The merged cell declared at [', ', ', '] is positioned (or positioned partially) \\n outside of the table range. It was not added to the table, please fix your setup.']),\n _templateObject3 = _taggedTemplateLiteral(['The merged cell declared at [', ', ', '] has both \"rowspan\" \\n and \"colspan\" declared as \"1\", which makes it a single cell. It cannot be added to the collection.'], ['The merged cell declared at [', ', ', '] has both \"rowspan\" \\n and \"colspan\" declared as \"1\", which makes it a single cell. It cannot be added to the collection.']),\n _templateObject4 = _taggedTemplateLiteral(['The merged cell declared at [', ', ', '] has \"rowspan\" or \"colspan\" declared as \\n \"0\", which is not supported. It cannot be added to the collection.'], ['The merged cell declared at [', ', ', '] has \"rowspan\" or \"colspan\" declared as \\n \"0\", which is not supported. It cannot be added to the collection.']);\n\nvar _index = __webpack_require__(4);\n\nvar _templateLiteralTag = __webpack_require__(42);\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * The `MergedCellCoords` class represents a single merged cell.\n *\n * @class MergedCellCoords\n * @plugin MergeCells\n */\nvar MergedCellCoords = function () {\n function MergedCellCoords(row, column, rowspan, colspan) {\n _classCallCheck(this, MergedCellCoords);\n\n /**\n * The index of the topmost merged cell row.\n *\n * @type {Number}\n */\n this.row = row;\n /**\n * The index of the leftmost column.\n *\n * @type {Number}\n */\n this.col = column;\n /**\n * The `rowspan` value of the merged cell.\n *\n * @type {Number}\n */\n this.rowspan = rowspan;\n /**\n * The `colspan` value of the merged cell.\n *\n * @type {Number}\n */\n this.colspan = colspan;\n /**\n * `true` only if the merged cell is bound to be removed.\n *\n * @type {Boolean}\n */\n this.removed = false;\n }\n\n /**\n * Get a warning message for when the declared merged cell data contains negative values.\n *\n * @param {Object} newMergedCell Object containg information about the merged cells that was about to be added.\n * @return {String}\n */\n\n\n _createClass(MergedCellCoords, [{\n key: 'normalize',\n\n\n /**\n * Sanitize (prevent from going outside the boundaries) the merged cell.\n *\n * @param hotInstance\n */\n value: function normalize(hotInstance) {\n var totalRows = hotInstance.countRows();\n var totalColumns = hotInstance.countCols();\n\n if (this.row < 0) {\n this.row = 0;\n } else if (this.row > totalRows - 1) {\n this.row = totalRows - 1;\n }\n\n if (this.col < 0) {\n this.col = 0;\n } else if (this.col > totalColumns - 1) {\n this.col = totalColumns - 1;\n }\n\n if (this.row + this.rowspan > totalRows - 1) {\n this.rowspan = totalRows - this.row;\n }\n\n if (this.col + this.colspan > totalColumns - 1) {\n this.colspan = totalColumns - this.col;\n }\n }\n\n /**\n * Returns `true` if the provided coordinates are inside the merged cell.\n *\n * @param {Number} row The row index.\n * @param {Number} column The column index.\n * @return {Boolean}\n */\n\n }, {\n key: 'includes',\n value: function includes(row, column) {\n return this.row <= row && this.col <= column && this.row + this.rowspan - 1 >= row && this.col + this.colspan - 1 >= column;\n }\n\n /**\n * Returns `true` if the provided `column` property is within the column span of the merged cell.\n *\n * @param {Number} column The column index.\n * @return {Boolean}\n */\n\n }, {\n key: 'includesHorizontally',\n value: function includesHorizontally(column) {\n return this.col <= column && this.col + this.colspan - 1 >= column;\n }\n\n /**\n * Returns `true` if the provided `row` property is within the row span of the merged cell.\n *\n * @param {Number} row Row index.\n * @return {Boolean}\n */\n\n }, {\n key: 'includesVertically',\n value: function includesVertically(row) {\n return this.row <= row && this.row + this.rowspan - 1 >= row;\n }\n\n /**\n * Shift (and possibly resize, if needed) the merged cell.\n *\n * @param {Array} shiftVector 2-element array containing the information on the shifting in the `x` and `y` axis.\n * @param {Number} indexOfChange Index of the preceding change.\n * @returns {Boolean} Returns `false` if the whole merged cell was removed.\n */\n\n }, {\n key: 'shift',\n value: function shift(shiftVector, indexOfChange) {\n var shiftValue = shiftVector[0] || shiftVector[1];\n var shiftedIndex = indexOfChange + Math.abs(shiftVector[0] || shiftVector[1]) - 1;\n var span = shiftVector[0] ? 'colspan' : 'rowspan';\n var index = shiftVector[0] ? 'col' : 'row';\n var changeStart = Math.min(indexOfChange, shiftedIndex);\n var changeEnd = Math.max(indexOfChange, shiftedIndex);\n var mergeStart = this[index];\n var mergeEnd = this[index] + this[span] - 1;\n\n if (mergeStart >= indexOfChange) {\n this[index] += shiftValue;\n }\n\n // adding rows/columns\n if (shiftValue > 0) {\n if (indexOfChange <= mergeEnd && indexOfChange > mergeStart) {\n this[span] += shiftValue;\n }\n\n // removing rows/columns\n } else if (shiftValue < 0) {\n\n // removing the whole merge\n if (changeStart <= mergeStart && changeEnd >= mergeEnd) {\n this.removed = true;\n return false;\n\n // removing the merge partially, including the beginning\n } else if (mergeStart >= changeStart && mergeStart <= changeEnd) {\n var removedOffset = changeEnd - mergeStart + 1;\n var preRemovedOffset = Math.abs(shiftValue) - removedOffset;\n\n this[index] -= preRemovedOffset + shiftValue;\n this[span] -= removedOffset;\n\n // removing the middle part of the merge\n } else if (mergeStart <= changeStart && mergeEnd >= changeEnd) {\n this[span] += shiftValue;\n\n // removing the end part of the merge\n } else if (mergeStart <= changeStart && mergeEnd >= changeStart && mergeEnd < changeEnd) {\n var removedPart = mergeEnd - changeStart + 1;\n\n this[span] -= removedPart;\n }\n }\n\n return true;\n }\n\n /**\n * Check if the second provided merged cell is \"farther\" in the provided direction.\n *\n * @param {MergedCellCoords} mergedCell The merged cell to check.\n * @param {String} direction Drag direction.\n * @return {Boolean|null} `true` if the second provided merged cell is \"farther\".\n */\n\n }, {\n key: 'isFarther',\n value: function isFarther(mergedCell, direction) {\n if (!mergedCell) {\n return true;\n }\n\n if (direction === 'down') {\n return mergedCell.row + mergedCell.rowspan - 1 < this.row + this.rowspan - 1;\n } else if (direction === 'up') {\n return mergedCell.row > this.row;\n } else if (direction === 'right') {\n return mergedCell.col + mergedCell.colspan - 1 < this.col + this.colspan - 1;\n } else if (direction === 'left') {\n return mergedCell.col > this.col;\n }\n return null;\n }\n\n /**\n * Get the bottom row index of the merged cell.\n *\n * @returns {Number}\n */\n\n }, {\n key: 'getLastRow',\n value: function getLastRow() {\n return this.row + this.rowspan - 1;\n }\n\n /**\n * Get the rightmost column index of the merged cell.\n *\n * @returns {Number}\n */\n\n }, {\n key: 'getLastColumn',\n value: function getLastColumn() {\n return this.col + this.colspan - 1;\n }\n\n /**\n * Get the range coordinates of the merged cell.\n *\n * @return {CellRange}\n */\n\n }, {\n key: 'getRange',\n value: function getRange() {\n return new _index.CellRange(new _index.CellCoords(this.row, this.col), new _index.CellCoords(this.row, this.col), new _index.CellCoords(this.getLastRow(), this.getLastColumn()));\n }\n }], [{\n key: 'NEGATIVE_VALUES_WARNING',\n value: function NEGATIVE_VALUES_WARNING(newMergedCell) {\n return (0, _templateLiteralTag.toSingleLine)(_templateObject, newMergedCell.row, newMergedCell.col, newMergedCell.rowspan, newMergedCell.colspan);\n }\n\n /**\n * Get a warning message for when the declared merged cell data contains values exceeding the table limits.\n *\n * @param {Object} newMergedCell Object containg information about the merged cells that was about to be added.\n * @return {String}\n */\n\n }, {\n key: 'IS_OUT_OF_BOUNDS_WARNING',\n value: function IS_OUT_OF_BOUNDS_WARNING(newMergedCell) {\n return (0, _templateLiteralTag.toSingleLine)(_templateObject2, newMergedCell.row, newMergedCell.col);\n }\n\n /**\n * Get a warning message for when the declared merged cell data represents a single cell.\n *\n * @param {Object} newMergedCell Object containg information about the merged cells that was about to be added.\n * @return {String}\n */\n\n }, {\n key: 'IS_SINGLE_CELL',\n value: function IS_SINGLE_CELL(newMergedCell) {\n return (0, _templateLiteralTag.toSingleLine)(_templateObject3, newMergedCell.row, newMergedCell.col);\n }\n\n /**\n * Get a warning message for when the declared merged cell data contains \"colspan\" or \"rowspan\", that equals 0.\n *\n * @param {Object} newMergedCell Object containg information about the merged cells that was about to be added.\n * @return {String}\n */\n\n }, {\n key: 'ZERO_SPAN_WARNING',\n value: function ZERO_SPAN_WARNING(newMergedCell) {\n return (0, _templateLiteralTag.toSingleLine)(_templateObject4, newMergedCell.row, newMergedCell.col);\n }\n\n /**\n * Check whether the values provided for a merged cell contain any negative values.\n *\n * @param {Object} mergedCellInfo Object containing the `row`, `col`, `rowspan` and `colspan` properties.\n * @return {Boolean}\n */\n\n }, {\n key: 'containsNegativeValues',\n value: function containsNegativeValues(mergedCellInfo) {\n return mergedCellInfo.row < 0 || mergedCellInfo.col < 0 || mergedCellInfo.rowspan < 0 || mergedCellInfo.colspan < 0;\n }\n\n /**\n * Check whether the provided merged cell information object represents a single cell.\n *\n * @private\n * @param {Object} mergedCellInfo An object with `row`, `col`, `rowspan` and `colspan` properties.\n * @return {Boolean}\n */\n\n }, {\n key: 'isSingleCell',\n value: function isSingleCell(mergedCellInfo) {\n return mergedCellInfo.colspan === 1 && mergedCellInfo.rowspan === 1;\n }\n\n /**\n * Check whether the provided merged cell information object contains a rowspan or colspan of 0.\n *\n * @private\n * @param {Object} mergedCellInfo An object with `row`, `col`, `rowspan` and `colspan` properties.\n * @return {Boolean}\n */\n\n }, {\n key: 'containsZeroSpan',\n value: function containsZeroSpan(mergedCellInfo) {\n return mergedCellInfo.colspan === 0 || mergedCellInfo.rowspan === 0;\n }\n\n /**\n * Check whether the provided merged cell object is to be declared out of bounds of the table.\n *\n * @param {Object} mergeCell Object containing the `row`, `col`, `rowspan` and `colspan` properties.\n * @param {Number} rowCount Number of rows in the table.\n * @param {Number} columnCount Number of rows in the table.\n * @return {Boolean}\n */\n\n }, {\n key: 'isOutOfBounds',\n value: function isOutOfBounds(mergeCell, rowCount, columnCount) {\n return mergeCell.row < 0 || mergeCell.col < 0 || mergeCell.row >= rowCount || mergeCell.row + mergeCell.rowspan - 1 >= rowCount || mergeCell.col >= columnCount || mergeCell.col + mergeCell.colspan - 1 >= columnCount;\n }\n }]);\n\n return MergedCellCoords;\n}();\n\nexports.default = MergedCellCoords;\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar strong = __webpack_require__(99);\nvar validate = __webpack_require__(45);\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = __webpack_require__(66)(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar dP = __webpack_require__(20).f;\nvar create = __webpack_require__(76);\nvar redefineAll = __webpack_require__(62);\nvar ctx = __webpack_require__(30);\nvar anInstance = __webpack_require__(64);\nvar forOf = __webpack_require__(65);\nvar $iterDefine = __webpack_require__(108);\nvar step = __webpack_require__(110);\nvar setSpecies = __webpack_require__(111);\nvar DESCRIPTORS = __webpack_require__(22);\nvar fastKey = __webpack_require__(32).fastKey;\nvar validate = __webpack_require__(45);\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 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\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(22) && !__webpack_require__(23)(function () {\n return Object.defineProperty(__webpack_require__(74)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(27);\nvar toIObject = __webpack_require__(24);\nvar arrayIndexOf = __webpack_require__(102)(false);\nvar IE_PROTO = __webpack_require__(78)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(24);\nvar toLength = __webpack_require__(25);\nvar toAbsoluteIndex = __webpack_require__(61);\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(15).document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(18);\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// check on default Array iterator\nvar Iterators = __webpack_require__(52);\nvar ITERATOR = __webpack_require__(12)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(107);\nvar ITERATOR = __webpack_require__(12)('iterator');\nvar Iterators = __webpack_require__(52);\nmodule.exports = __webpack_require__(37).getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(44);\nvar TAG = __webpack_require__(12)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(49);\nvar $export = __webpack_require__(3);\nvar redefine = __webpack_require__(28);\nvar hide = __webpack_require__(29);\nvar Iterators = __webpack_require__(52);\nvar $iterCreate = __webpack_require__(209);\nvar setToStringTag = __webpack_require__(53);\nvar getPrototypeOf = __webpack_require__(109);\nvar ITERATOR = __webpack_require__(12)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(27);\nvar toObject = __webpack_require__(31);\nvar IE_PROTO = __webpack_require__(78)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(15);\nvar dP = __webpack_require__(20);\nvar DESCRIPTORS = __webpack_require__(22);\nvar SPECIES = __webpack_require__(12)('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(9);\nvar anObject = __webpack_require__(18);\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(30)(Function.call, __webpack_require__(67).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar strong = __webpack_require__(99);\nvar validate = __webpack_require__(45);\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = __webpack_require__(66)(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar each = __webpack_require__(68)(0);\nvar redefine = __webpack_require__(28);\nvar meta = __webpack_require__(32);\nvar assign = __webpack_require__(116);\nvar weak = __webpack_require__(117);\nvar isObject = __webpack_require__(9);\nvar fails = __webpack_require__(23);\nvar validate = __webpack_require__(45);\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = __webpack_require__(66)(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(44);\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(35);\nvar gOPS = __webpack_require__(69);\nvar pIE = __webpack_require__(54);\nvar toObject = __webpack_require__(31);\nvar IObject = __webpack_require__(77);\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(23)(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar redefineAll = __webpack_require__(62);\nvar getWeak = __webpack_require__(32).getWeak;\nvar anObject = __webpack_require__(18);\nvar isObject = __webpack_require__(9);\nvar anInstance = __webpack_require__(64);\nvar forOf = __webpack_require__(65);\nvar createArrayMethod = __webpack_require__(68);\nvar $has = __webpack_require__(27);\nvar validate = __webpack_require__(45);\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar weak = __webpack_require__(117);\nvar validate = __webpack_require__(45);\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\n__webpack_require__(66)(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(49);\nvar global = __webpack_require__(15);\nvar ctx = __webpack_require__(30);\nvar classof = __webpack_require__(107);\nvar $export = __webpack_require__(3);\nvar isObject = __webpack_require__(9);\nvar aFunction = __webpack_require__(63);\nvar anInstance = __webpack_require__(64);\nvar forOf = __webpack_require__(65);\nvar speciesConstructor = __webpack_require__(213);\nvar task = __webpack_require__(82).set;\nvar microtask = __webpack_require__(215)();\nvar newPromiseCapabilityModule = __webpack_require__(120);\nvar perform = __webpack_require__(216);\nvar userAgent = __webpack_require__(83);\nvar promiseResolve = __webpack_require__(217);\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[__webpack_require__(12)('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = __webpack_require__(62)($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(53)($Promise, PROMISE);\n__webpack_require__(111)(PROMISE);\nWrapper = __webpack_require__(37)[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(81)(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(63);\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(15);\nvar has = __webpack_require__(27);\nvar DESCRIPTORS = __webpack_require__(22);\nvar $export = __webpack_require__(3);\nvar redefine = __webpack_require__(28);\nvar META = __webpack_require__(32).KEY;\nvar $fails = __webpack_require__(23);\nvar shared = __webpack_require__(79);\nvar setToStringTag = __webpack_require__(53);\nvar uid = __webpack_require__(50);\nvar wks = __webpack_require__(12);\nvar wksExt = __webpack_require__(122);\nvar wksDefine = __webpack_require__(218);\nvar enumKeys = __webpack_require__(219);\nvar isArray = __webpack_require__(115);\nvar anObject = __webpack_require__(18);\nvar isObject = __webpack_require__(9);\nvar toIObject = __webpack_require__(24);\nvar toPrimitive = __webpack_require__(75);\nvar createDesc = __webpack_require__(51);\nvar _create = __webpack_require__(76);\nvar gOPNExt = __webpack_require__(123);\nvar $GOPD = __webpack_require__(67);\nvar $DP = __webpack_require__(20);\nvar $keys = __webpack_require__(35);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(84).f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(54).f = $propertyIsEnumerable;\n __webpack_require__(69).f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(49)) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(29)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports.f = __webpack_require__(12);\n\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(24);\nvar gOPN = __webpack_require__(84).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.5 Object.freeze(O)\nvar isObject = __webpack_require__(9);\nvar meta = __webpack_require__(32).onFreeze;\n\n__webpack_require__(26)('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.17 Object.seal(O)\nvar isObject = __webpack_require__(9);\nvar meta = __webpack_require__(32).onFreeze;\n\n__webpack_require__(26)('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = __webpack_require__(9);\nvar meta = __webpack_require__(32).onFreeze;\n\n__webpack_require__(26)('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.12 Object.isFrozen(O)\nvar isObject = __webpack_require__(9);\n\n__webpack_require__(26)('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.13 Object.isSealed(O)\nvar isObject = __webpack_require__(9);\n\n__webpack_require__(26)('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.11 Object.isExtensible(O)\nvar isObject = __webpack_require__(9);\n\n__webpack_require__(26)('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = __webpack_require__(24);\nvar $getOwnPropertyDescriptor = __webpack_require__(67).f;\n\n__webpack_require__(26)('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(31);\nvar $getPrototypeOf = __webpack_require__(109);\n\n__webpack_require__(26)('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(31);\nvar $keys = __webpack_require__(35);\n\n__webpack_require__(26)('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.7 Object.getOwnPropertyNames(O)\n__webpack_require__(26)('getOwnPropertyNames', function () {\n return __webpack_require__(123).f;\n});\n\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(3);\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(116) });\n\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.10 Object.is(value1, value2)\nvar $export = __webpack_require__(3);\n$export($export.S, 'Object', { is: __webpack_require__(220) });\n\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(3);\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(112).set });\n\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(20).f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || __webpack_require__(22) && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(3);\nvar toIObject = __webpack_require__(24);\nvar toLength = __webpack_require__(25);\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(3);\nvar toAbsoluteIndex = __webpack_require__(61);\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $export = __webpack_require__(3);\nvar $at = __webpack_require__(221)(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(3);\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: __webpack_require__(142)\n});\n\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toInteger = __webpack_require__(60);\nvar defined = __webpack_require__(36);\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n\nvar $export = __webpack_require__(3);\nvar toLength = __webpack_require__(25);\nvar context = __webpack_require__(85);\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(86)(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(9);\nvar cof = __webpack_require__(44);\nvar MATCH = __webpack_require__(12)('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n\nvar $export = __webpack_require__(3);\nvar toLength = __webpack_require__(25);\nvar context = __webpack_require__(85);\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(86)(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\nvar $export = __webpack_require__(3);\nvar context = __webpack_require__(85);\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * __webpack_require__(86)(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 21.2.5.3 get RegExp.prototype.flags()\nif (__webpack_require__(22) && /./g.flags != 'g') __webpack_require__(20).f(RegExp.prototype, 'flags', {\n configurable: true,\n get: __webpack_require__(222)\n});\n\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// @@match logic\n__webpack_require__(70)('match', 1, function (defined, MATCH, $match) {\n // 21.1.3.11 String.prototype.match(regexp)\n return [function match(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n }, $match];\n});\n\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// @@replace logic\n__webpack_require__(70)('replace', 2, function (defined, REPLACE, $replace) {\n // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)\n return [function replace(searchValue, replaceValue) {\n 'use strict';\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n }, $replace];\n});\n\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// @@split logic\n__webpack_require__(70)('split', 2, function (defined, SPLIT, $split) {\n 'use strict';\n var isRegExp = __webpack_require__(144);\n var _split = $split;\n var $push = [].push;\n var $SPLIT = 'split';\n var LENGTH = 'length';\n var LAST_INDEX = 'lastIndex';\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group\n // based on es5-shim implementation, need to rework it\n $split = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return _split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var separator2, match, lastIndex, lastLength, i;\n // Doesn't need flags gy, but they don't hurt\n if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n while (match = separatorCopy.exec(string)) {\n // `separatorCopy.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0][LENGTH];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG\n // eslint-disable-next-line no-loop-func\n if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {\n for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;\n });\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n $split = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);\n };\n }\n // 21.1.3.17 String.prototype.split(separator, limit)\n return [function split(separator, limit) {\n var O = defined(this);\n var fn = separator == undefined ? undefined : separator[SPLIT];\n return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);\n }, $split];\n});\n\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// @@search logic\n__webpack_require__(70)('search', 1, function (defined, SEARCH, $search) {\n // 21.1.3.15 String.prototype.search(regexp)\n return [function search(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n }, $search];\n});\n\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ctx = __webpack_require__(30);\nvar $export = __webpack_require__(3);\nvar toObject = __webpack_require__(31);\nvar call = __webpack_require__(104);\nvar isArrayIter = __webpack_require__(105);\nvar toLength = __webpack_require__(25);\nvar createProperty = __webpack_require__(87);\nvar getIterFn = __webpack_require__(106);\n\n$export($export.S + $export.F * !__webpack_require__(81)(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $export = __webpack_require__(3);\nvar createProperty = __webpack_require__(87);\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * __webpack_require__(23)(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = __webpack_require__(3);\n\n$export($export.P, 'Array', { copyWithin: __webpack_require__(223) });\n\n__webpack_require__(46)('copyWithin');\n\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = __webpack_require__(3);\nvar $find = __webpack_require__(68)(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n__webpack_require__(46)(KEY);\n\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = __webpack_require__(3);\nvar $find = __webpack_require__(68)(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n__webpack_require__(46)(KEY);\n\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = __webpack_require__(3);\n\n$export($export.P, 'Array', { fill: __webpack_require__(224) });\n\n__webpack_require__(46)('fill');\n\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 20.1.2.2 Number.isFinite(number)\nvar $export = __webpack_require__(3);\nvar _isFinite = __webpack_require__(15).isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 20.1.2.3 Number.isInteger(number)\nvar $export = __webpack_require__(3);\n\n$export($export.S, 'Number', { isInteger: __webpack_require__(160) });\n\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 20.1.2.3 Number.isInteger(number)\nvar isObject = __webpack_require__(9);\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = __webpack_require__(3);\nvar isInteger = __webpack_require__(160);\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 20.1.2.4 Number.isNaN(number)\nvar $export = __webpack_require__(3);\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n\n\n/***/ }),\n/* 163 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 20.1.2.1 Number.EPSILON\nvar $export = __webpack_require__(3);\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = __webpack_require__(3);\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = __webpack_require__(3);\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/Array.prototype.includes\nvar $export = __webpack_require__(3);\nvar $includes = __webpack_require__(102)(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n__webpack_require__(46)('includes');\n\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// https://github.com/tc39/proposal-object-values-entries\nvar $export = __webpack_require__(3);\nvar $values = __webpack_require__(168)(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getKeys = __webpack_require__(35);\nvar toIObject = __webpack_require__(24);\nvar isEnum = __webpack_require__(54).f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// https://github.com/tc39/proposal-object-values-entries\nvar $export = __webpack_require__(3);\nvar $entries = __webpack_require__(168)(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = __webpack_require__(3);\nvar ownKeys = __webpack_require__(225);\nvar toIObject = __webpack_require__(24);\nvar gOPD = __webpack_require__(67);\nvar createProperty = __webpack_require__(87);\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = __webpack_require__(3);\nvar $pad = __webpack_require__(172);\nvar userAgent = __webpack_require__(83);\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = __webpack_require__(25);\nvar repeat = __webpack_require__(142);\nvar defined = __webpack_require__(36);\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = __webpack_require__(3);\nvar $pad = __webpack_require__(172);\nvar userAgent = __webpack_require__(83);\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(3);\nvar $task = __webpack_require__(82);\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $iterators = __webpack_require__(88);\nvar getKeys = __webpack_require__(35);\nvar redefine = __webpack_require__(28);\nvar global = __webpack_require__(15);\nvar hide = __webpack_require__(29);\nvar Iterators = __webpack_require__(52);\nvar wks = __webpack_require__(12);\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar privatePool = new WeakMap();\n\n/**\n * Calculates indexes of columns to render OR columns that are visible.\n * To redo the calculation, you need to create a new calculator.\n *\n * @class ViewportColumnsCalculator\n */\n\nvar ViewportColumnsCalculator = function () {\n _createClass(ViewportColumnsCalculator, null, [{\n key: 'DEFAULT_WIDTH',\n\n /**\n * Default column width\n *\n * @type {Number}\n */\n get: function get() {\n return 50;\n }\n\n /**\n * @param {Number} viewportWidth Width of the viewport\n * @param {Number} scrollOffset Current horizontal scroll position of the viewport\n * @param {Number} totalColumns Total number of rows\n * @param {Function} columnWidthFn Function that returns the width of the column at a given index (in px)\n * @param {Function} overrideFn Function that changes calculated this.startRow, this.endRow (used by MergeCells plugin)\n * @param {Boolean} onlyFullyVisible if `true`, only startRow and endRow will be indexes of rows that are fully in viewport\n * @param {Boolean} stretchH\n * @param {Function} [stretchingColumnWidthFn] Function that returns the new width of the stretched column.\n */\n\n }]);\n\n function ViewportColumnsCalculator(viewportWidth, scrollOffset, totalColumns, columnWidthFn, overrideFn, onlyFullyVisible, stretchH) {\n var stretchingColumnWidthFn = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : function (width) {\n return width;\n };\n\n _classCallCheck(this, ViewportColumnsCalculator);\n\n privatePool.set(this, {\n viewportWidth: viewportWidth,\n scrollOffset: scrollOffset,\n totalColumns: totalColumns,\n columnWidthFn: columnWidthFn,\n overrideFn: overrideFn,\n onlyFullyVisible: onlyFullyVisible,\n stretchingColumnWidthFn: stretchingColumnWidthFn\n });\n\n /**\n * Number of rendered/visible columns\n *\n * @type {Number}\n */\n this.count = 0;\n\n /**\n * Index of the first rendered/visible column (can be overwritten using overrideFn)\n *\n * @type {Number|null}\n */\n this.startColumn = null;\n\n /**\n * Index of the last rendered/visible column (can be overwritten using overrideFn)\n *\n * @type {null}\n */\n this.endColumn = null;\n\n /**\n * Position of the first rendered/visible column (in px)\n *\n * @type {Number|null}\n */\n this.startPosition = null;\n\n this.stretchAllRatio = 0;\n this.stretchLastWidth = 0;\n this.stretch = stretchH;\n this.totalTargetWidth = 0;\n this.needVerifyLastColumnWidth = true;\n this.stretchAllColumnsWidth = [];\n\n this.calculate();\n }\n\n /**\n * Calculates viewport\n */\n\n\n _createClass(ViewportColumnsCalculator, [{\n key: 'calculate',\n value: function calculate() {\n var sum = 0;\n var needReverse = true;\n var startPositions = [];\n var columnWidth = void 0;\n\n var priv = privatePool.get(this);\n var onlyFullyVisible = priv.onlyFullyVisible;\n var overrideFn = priv.overrideFn;\n var scrollOffset = priv.scrollOffset;\n var totalColumns = priv.totalColumns;\n var viewportWidth = priv.viewportWidth;\n\n for (var i = 0; i < totalColumns; i++) {\n columnWidth = this._getColumnWidth(i);\n\n if (sum <= scrollOffset && !onlyFullyVisible) {\n this.startColumn = i;\n }\n\n // +1 pixel for row header width compensation for horizontal scroll > 0\n var compensatedViewportWidth = scrollOffset > 0 ? viewportWidth + 1 : viewportWidth;\n\n if (sum >= scrollOffset && sum + columnWidth <= scrollOffset + compensatedViewportWidth) {\n if (this.startColumn === null || this.startColumn === void 0) {\n this.startColumn = i;\n }\n this.endColumn = i;\n }\n startPositions.push(sum);\n sum += columnWidth;\n\n if (!onlyFullyVisible) {\n this.endColumn = i;\n }\n if (sum >= scrollOffset + viewportWidth) {\n needReverse = false;\n break;\n }\n }\n\n if (this.endColumn === totalColumns - 1 && needReverse) {\n this.startColumn = this.endColumn;\n\n while (this.startColumn > 0) {\n var viewportSum = startPositions[this.endColumn] + columnWidth - startPositions[this.startColumn - 1];\n\n if (viewportSum <= viewportWidth || !onlyFullyVisible) {\n this.startColumn -= 1;\n }\n if (viewportSum > viewportWidth) {\n break;\n }\n }\n }\n\n if (this.startColumn !== null && overrideFn) {\n overrideFn(this);\n }\n this.startPosition = startPositions[this.startColumn];\n\n if (this.startPosition === void 0) {\n this.startPosition = null;\n }\n if (this.startColumn !== null) {\n this.count = this.endColumn - this.startColumn + 1;\n }\n }\n\n /**\n * Recalculate columns stretching.\n *\n * @param {Number} totalWidth\n */\n\n }, {\n key: 'refreshStretching',\n value: function refreshStretching(totalWidth) {\n if (this.stretch === 'none') {\n return;\n }\n var totalColumnsWidth = totalWidth;\n this.totalTargetWidth = totalColumnsWidth;\n\n var priv = privatePool.get(this);\n var totalColumns = priv.totalColumns;\n var sumAll = 0;\n\n for (var i = 0; i < totalColumns; i++) {\n var columnWidth = this._getColumnWidth(i);\n var permanentColumnWidth = priv.stretchingColumnWidthFn(void 0, i);\n\n if (typeof permanentColumnWidth === 'number') {\n totalColumnsWidth -= permanentColumnWidth;\n } else {\n sumAll += columnWidth;\n }\n }\n var remainingSize = totalColumnsWidth - sumAll;\n\n if (this.stretch === 'all' && remainingSize > 0) {\n this.stretchAllRatio = totalColumnsWidth / sumAll;\n this.stretchAllColumnsWidth = [];\n this.needVerifyLastColumnWidth = true;\n } else if (this.stretch === 'last' && totalColumnsWidth !== Infinity) {\n var _columnWidth = this._getColumnWidth(totalColumns - 1);\n var lastColumnWidth = remainingSize + _columnWidth;\n\n this.stretchLastWidth = lastColumnWidth >= 0 ? lastColumnWidth : _columnWidth;\n }\n }\n\n /**\n * Get stretched column width based on stretchH (all or last) setting passed in handsontable instance.\n *\n * @param {Number} column\n * @param {Number} baseWidth\n * @returns {Number|null}\n */\n\n }, {\n key: 'getStretchedColumnWidth',\n value: function getStretchedColumnWidth(column, baseWidth) {\n var result = null;\n\n if (this.stretch === 'all' && this.stretchAllRatio !== 0) {\n result = this._getStretchedAllColumnWidth(column, baseWidth);\n } else if (this.stretch === 'last' && this.stretchLastWidth !== 0) {\n result = this._getStretchedLastColumnWidth(column);\n }\n\n return result;\n }\n\n /**\n * @param {Number} column\n * @param {Number} baseWidth\n * @returns {Number}\n * @private\n */\n\n }, {\n key: '_getStretchedAllColumnWidth',\n value: function _getStretchedAllColumnWidth(column, baseWidth) {\n var sumRatioWidth = 0;\n var priv = privatePool.get(this);\n var totalColumns = priv.totalColumns;\n\n if (!this.stretchAllColumnsWidth[column]) {\n var stretchedWidth = Math.round(baseWidth * this.stretchAllRatio);\n var newStretchedWidth = priv.stretchingColumnWidthFn(stretchedWidth, column);\n\n if (newStretchedWidth === void 0) {\n this.stretchAllColumnsWidth[column] = stretchedWidth;\n } else {\n this.stretchAllColumnsWidth[column] = isNaN(newStretchedWidth) ? this._getColumnWidth(column) : newStretchedWidth;\n }\n }\n\n if (this.stretchAllColumnsWidth.length === totalColumns && this.needVerifyLastColumnWidth) {\n this.needVerifyLastColumnWidth = false;\n\n for (var i = 0; i < this.stretchAllColumnsWidth.length; i++) {\n sumRatioWidth += this.stretchAllColumnsWidth[i];\n }\n if (sumRatioWidth !== this.totalTargetWidth) {\n this.stretchAllColumnsWidth[this.stretchAllColumnsWidth.length - 1] += this.totalTargetWidth - sumRatioWidth;\n }\n }\n\n return this.stretchAllColumnsWidth[column];\n }\n\n /**\n * @param {Number} column\n * @returns {Number|null}\n * @private\n */\n\n }, {\n key: '_getStretchedLastColumnWidth',\n value: function _getStretchedLastColumnWidth(column) {\n var priv = privatePool.get(this);\n var totalColumns = priv.totalColumns;\n\n if (column === totalColumns - 1) {\n return this.stretchLastWidth;\n }\n\n return null;\n }\n\n /**\n * @param {Number} column Column index.\n * @returns {Number}\n * @private\n */\n\n }, {\n key: '_getColumnWidth',\n value: function _getColumnWidth(column) {\n var width = privatePool.get(this).columnWidthFn(column);\n\n if (isNaN(width)) {\n width = ViewportColumnsCalculator.DEFAULT_WIDTH;\n }\n\n return width;\n }\n }]);\n\n return ViewportColumnsCalculator;\n}();\n\nexports.default = ViewportColumnsCalculator;\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar privatePool = new WeakMap();\n\n/**\n * Calculates indexes of rows to render OR rows that are visible.\n * To redo the calculation, you need to create a new calculator.\n *\n * @class ViewportRowsCalculator\n */\n\nvar ViewportRowsCalculator = function () {\n _createClass(ViewportRowsCalculator, null, [{\n key: \"DEFAULT_HEIGHT\",\n\n /**\n * Default row height\n *\n * @type {Number}\n */\n get: function get() {\n return 23;\n }\n\n /**\n * @param {Number} viewportHeight Height of the viewport\n * @param {Number} scrollOffset Current vertical scroll position of the viewport\n * @param {Number} totalRows Total number of rows\n * @param {Function} rowHeightFn Function that returns the height of the row at a given index (in px)\n * @param {Function} overrideFn Function that changes calculated this.startRow, this.endRow (used by MergeCells plugin)\n * @param {Boolean} onlyFullyVisible if `true`, only startRow and endRow will be indexes of rows that are fully in viewport\n * @param {Number} horizontalScrollbarHeight\n */\n\n }]);\n\n function ViewportRowsCalculator(viewportHeight, scrollOffset, totalRows, rowHeightFn, overrideFn, onlyFullyVisible, horizontalScrollbarHeight) {\n _classCallCheck(this, ViewportRowsCalculator);\n\n privatePool.set(this, {\n viewportHeight: viewportHeight,\n scrollOffset: scrollOffset,\n totalRows: totalRows,\n rowHeightFn: rowHeightFn,\n overrideFn: overrideFn,\n onlyFullyVisible: onlyFullyVisible,\n horizontalScrollbarHeight: horizontalScrollbarHeight\n });\n\n /**\n * Number of rendered/visible rows\n *\n * @type {Number}\n */\n this.count = 0;\n\n /**\n * Index of the first rendered/visible row (can be overwritten using overrideFn)\n *\n * @type {Number|null}\n */\n this.startRow = null;\n\n /**\n * Index of the last rendered/visible row (can be overwritten using overrideFn)\n *\n * @type {null}\n */\n this.endRow = null;\n\n /**\n * Position of the first rendered/visible row (in px)\n *\n * @type {Number|null}\n */\n this.startPosition = null;\n\n this.calculate();\n }\n\n /**\n * Calculates viewport\n */\n\n\n _createClass(ViewportRowsCalculator, [{\n key: \"calculate\",\n value: function calculate() {\n var sum = 0;\n var needReverse = true;\n var startPositions = [];\n\n var priv = privatePool.get(this);\n var onlyFullyVisible = priv.onlyFullyVisible;\n var overrideFn = priv.overrideFn;\n var rowHeightFn = priv.rowHeightFn;\n var scrollOffset = priv.scrollOffset;\n var totalRows = priv.totalRows;\n var viewportHeight = priv.viewportHeight;\n var horizontalScrollbarHeight = priv.horizontalScrollbarHeight || 0;\n var rowHeight = void 0;\n\n // Calculate the number (start and end index) of rows needed\n for (var i = 0; i < totalRows; i++) {\n rowHeight = rowHeightFn(i);\n\n if (isNaN(rowHeight)) {\n rowHeight = ViewportRowsCalculator.DEFAULT_HEIGHT;\n }\n if (sum <= scrollOffset && !onlyFullyVisible) {\n this.startRow = i;\n }\n\n // the row is within the \"visible range\"\n if (sum >= scrollOffset && sum + rowHeight <= scrollOffset + viewportHeight - horizontalScrollbarHeight) {\n if (this.startRow === null) {\n this.startRow = i;\n }\n this.endRow = i;\n }\n startPositions.push(sum);\n sum += rowHeight;\n\n if (!onlyFullyVisible) {\n this.endRow = i;\n }\n if (sum >= scrollOffset + viewportHeight - horizontalScrollbarHeight) {\n needReverse = false;\n break;\n }\n }\n\n // If the estimation has reached the last row and there is still some space available in the viewport,\n // we need to render in reverse in order to fill the whole viewport with rows\n if (this.endRow === totalRows - 1 && needReverse) {\n this.startRow = this.endRow;\n\n while (this.startRow > 0) {\n // rowHeight is the height of the last row\n var viewportSum = startPositions[this.endRow] + rowHeight - startPositions[this.startRow - 1];\n\n if (viewportSum <= viewportHeight - horizontalScrollbarHeight || !onlyFullyVisible) {\n this.startRow -= 1;\n }\n if (viewportSum >= viewportHeight - horizontalScrollbarHeight) {\n break;\n }\n }\n }\n\n if (this.startRow !== null && overrideFn) {\n overrideFn(this);\n }\n this.startPosition = startPositions[this.startRow];\n\n if (this.startPosition === void 0) {\n this.startPosition = null;\n }\n if (this.startRow !== null) {\n this.count = this.endRow - this.startRow + 1;\n }\n }\n }]);\n\n return ViewportRowsCalculator;\n}();\n\nexports.default = ViewportRowsCalculator;\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nvar _coords = __webpack_require__(56);\n\nvar _coords2 = _interopRequireDefault(_coords);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * CellRange holds cell coordinates as {@link CellCoords} instances. This object represent unit of the selection layer which\n * can contains multiple contiquous cells or single cell.\n *\n * @util\n */\nvar CellRange = function () {\n function CellRange(highlight) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : highlight;\n var to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : highlight;\n\n _classCallCheck(this, CellRange);\n\n /**\n * Used to draw bold border around a cell where selection was started and to edit the cell when you press Enter.\n *\n * @type {CellCoords}\n */\n this.highlight = highlight;\n /**\n * Usually the same as highlight, but in Excel there is distinction - one can change highlight within a selection.\n *\n * @type {CellCoords}\n */\n this.from = from;\n /**\n * End selection.\n *\n * @type {CellCoords}\n */\n this.to = to;\n }\n\n /**\n * Set the new coordinates for highlighting selection.\n *\n * @param {CellCoords} coords Coordinates to use.\n */\n\n\n _createClass(CellRange, [{\n key: 'setHighlight',\n value: function setHighlight(coords) {\n this.highlight = coords;\n\n return this;\n }\n\n /**\n * Set the new coordinates where selection starts from.\n *\n * @param {CellCoords} coords Coordinates to use.\n */\n\n }, {\n key: 'setFrom',\n value: function setFrom(coords) {\n this.from = coords;\n\n return this;\n }\n\n /**\n * Set new coordinates where selection ends from.\n *\n * @param {CellCoords} coords Coordinates to use.\n */\n\n }, {\n key: 'setTo',\n value: function setTo(coords) {\n this.to = coords;\n\n return this;\n }\n\n /**\n * Checks if given coordinates are valid in context of a given Walkontable instance.\n *\n * @param {Walkontable} wot The Walkontable instance.\n * @returns {Boolean}\n */\n\n }, {\n key: 'isValid',\n value: function isValid(wot) {\n return this.from.isValid(wot) && this.to.isValid(wot);\n }\n\n /**\n * Checks if this cell range is restricted to one cell\n *\n * @returns {Boolean}\n */\n\n }, {\n key: 'isSingle',\n value: function isSingle() {\n return this.from.row === this.to.row && this.from.col === this.to.col;\n }\n\n /**\n * Returns selected range height (in number of rows).\n *\n * @returns {Number}\n */\n\n }, {\n key: 'getHeight',\n value: function getHeight() {\n return Math.max(this.from.row, this.to.row) - Math.min(this.from.row, this.to.row) + 1;\n }\n\n /**\n * Returns selected range width (in number of columns).\n *\n * @returns {Number}\n */\n\n }, {\n key: 'getWidth',\n value: function getWidth() {\n return Math.max(this.from.col, this.to.col) - Math.min(this.from.col, this.to.col) + 1;\n }\n\n /**\n * Checks if given cell coordinates are within `from` and `to` cell coordinates of this range.\n *\n * @param {CellCoords} cellCoords The cell coordinates to check.\n * @returns {Boolean}\n */\n\n }, {\n key: 'includes',\n value: function includes(cellCoords) {\n var row = cellCoords.row,\n col = cellCoords.col;\n\n var topLeft = this.getTopLeftCorner();\n var bottomRight = this.getBottomRightCorner();\n\n return topLeft.row <= row && bottomRight.row >= row && topLeft.col <= col && bottomRight.col >= col;\n }\n\n /**\n * Checks if given range is within of this range.\n *\n * @param {CellRange} cellRange The cells range to check.\n * @returns {Boolean}\n */\n\n }, {\n key: 'includesRange',\n value: function includesRange(cellRange) {\n return this.includes(cellRange.getTopLeftCorner()) && this.includes(cellRange.getBottomRightCorner());\n }\n\n /**\n * Checks if given range is equal to this range.\n *\n * @param {CellRange} cellRange The cells range to check.\n * @returns {Boolean}\n */\n\n }, {\n key: 'isEqual',\n value: function isEqual(cellRange) {\n return Math.min(this.from.row, this.to.row) === Math.min(cellRange.from.row, cellRange.to.row) && Math.max(this.from.row, this.to.row) === Math.max(cellRange.from.row, cellRange.to.row) && Math.min(this.from.col, this.to.col) === Math.min(cellRange.from.col, cellRange.to.col) && Math.max(this.from.col, this.to.col) === Math.max(cellRange.from.col, cellRange.to.col);\n }\n\n /**\n * Checks if tested range overlaps with the range. Range A is considered to to be overlapping with range B\n * if intersection of A and B or B and A is not empty.\n *\n * @param {CellRange} cellRange The cells range to check.\n * @returns {Boolean}\n */\n\n }, {\n key: 'overlaps',\n value: function overlaps(cellRange) {\n return cellRange.isSouthEastOf(this.getTopLeftCorner()) && cellRange.isNorthWestOf(this.getBottomRightCorner());\n }\n\n /**\n * Checks if tested coordinates are positioned in south-east from this cell range.\n *\n * @param {CellRange} cellRange The cells range to check.\n * @returns {Boolean}\n */\n\n }, {\n key: 'isSouthEastOf',\n value: function isSouthEastOf(cellRange) {\n return this.getTopLeftCorner().isSouthEastOf(cellRange) || this.getBottomRightCorner().isSouthEastOf(cellRange);\n }\n\n /**\n * Checks if tested coordinates are positioned in north-west from this cell range.\n *\n * @param {CellRange} cellRange The cells range to check.\n * @returns {Boolean}\n */\n\n }, {\n key: 'isNorthWestOf',\n value: function isNorthWestOf(cellRange) {\n return this.getTopLeftCorner().isNorthWestOf(cellRange) || this.getBottomRightCorner().isNorthWestOf(cellRange);\n }\n\n /**\n * Returns `true` if the provided range is overlapping the current range horizontally (e.g. the current range's last\n * column is 5 and the provided range's first column is 3).\n *\n * @param {CellRange} cellRange The cells range to check.\n * @returns {Boolean}\n */\n\n }, {\n key: 'isOverlappingHorizontally',\n value: function isOverlappingHorizontally(cellRange) {\n return this.getTopRightCorner().col >= cellRange.getTopLeftCorner().col && this.getTopRightCorner().col <= cellRange.getTopRightCorner().col || this.getTopLeftCorner().col <= cellRange.getTopRightCorner().col && this.getTopLeftCorner().col >= cellRange.getTopLeftCorner().col;\n }\n\n /**\n * Returns `true` if the provided range is overlapping the current range vertically (e.g. the current range's last\n * row is 5 and the provided range's first row is 3).\n *\n * @param {CellRange} cellRange The cells range to check.\n * @returns {Boolean}\n */\n\n }, {\n key: 'isOverlappingVertically',\n value: function isOverlappingVertically(cellRange) {\n return this.getBottomRightCorner().row >= cellRange.getTopRightCorner().row && this.getBottomRightCorner().row <= cellRange.getBottomRightCorner().row || this.getTopRightCorner().row <= cellRange.getBottomRightCorner().row && this.getTopRightCorner().row >= cellRange.getTopRightCorner().row;\n }\n\n /**\n * Adds a cell to a range (only if exceeds corners of the range). Returns information if range was expanded.\n *\n * @param {CellCoords} cellCoords\n * @returns {Boolean}\n */\n\n }, {\n key: 'expand',\n value: function expand(cellCoords) {\n var topLeft = this.getTopLeftCorner();\n var bottomRight = this.getBottomRightCorner();\n\n if (cellCoords.row < topLeft.row || cellCoords.col < topLeft.col || cellCoords.row > bottomRight.row || cellCoords.col > bottomRight.col) {\n this.from = new _coords2.default(Math.min(topLeft.row, cellCoords.row), Math.min(topLeft.col, cellCoords.col));\n this.to = new _coords2.default(Math.max(bottomRight.row, cellCoords.row), Math.max(bottomRight.col, cellCoords.col));\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Expand the current object by the range passed in the first argument.\n *\n * @param {CellRange} expandingRange Object extending the range.\n * @returns {Boolean}\n */\n\n }, {\n key: 'expandByRange',\n value: function expandByRange(expandingRange) {\n if (this.includesRange(expandingRange) || !this.overlaps(expandingRange)) {\n return false;\n }\n\n var topLeft = this.getTopLeftCorner();\n var bottomRight = this.getBottomRightCorner();\n var initialDirection = this.getDirection();\n\n var expandingTopLeft = expandingRange.getTopLeftCorner();\n var expandingBottomRight = expandingRange.getBottomRightCorner();\n\n var resultTopRow = Math.min(topLeft.row, expandingTopLeft.row);\n var resultTopCol = Math.min(topLeft.col, expandingTopLeft.col);\n var resultBottomRow = Math.max(bottomRight.row, expandingBottomRight.row);\n var resultBottomCol = Math.max(bottomRight.col, expandingBottomRight.col);\n\n var finalFrom = new _coords2.default(resultTopRow, resultTopCol);\n var finalTo = new _coords2.default(resultBottomRow, resultBottomCol);\n\n this.from = finalFrom;\n this.to = finalTo;\n\n this.setDirection(initialDirection);\n\n if (this.highlight.row === this.getBottomRightCorner().row && this.getVerticalDirection() === 'N-S') {\n this.flipDirectionVertically();\n }\n\n if (this.highlight.col === this.getTopRightCorner().col && this.getHorizontalDirection() === 'W-E') {\n this.flipDirectionHorizontally();\n }\n\n return true;\n }\n\n /**\n * Gets the direction of the selection.\n *\n * @returns {String} Returns one of the values: `'NW-SE'`, `'NE-SW'`, `'SE-NW'`, `'SW-NE'`.\n */\n\n }, {\n key: 'getDirection',\n value: function getDirection() {\n if (this.from.isNorthWestOf(this.to)) {\n // NorthWest - SouthEast\n return 'NW-SE';\n } else if (this.from.isNorthEastOf(this.to)) {\n // NorthEast - SouthWest\n return 'NE-SW';\n } else if (this.from.isSouthEastOf(this.to)) {\n // SouthEast - NorthWest\n return 'SE-NW';\n } else if (this.from.isSouthWestOf(this.to)) {\n // SouthWest - NorthEast\n return 'SW-NE';\n }\n }\n\n /**\n * Sets the direction of the selection.\n *\n * @param {String} direction One of the values: `'NW-SE'`, `'NE-SW'`, `'SE-NW'`, `'SW-NE'`.\n */\n\n }, {\n key: 'setDirection',\n value: function setDirection(direction) {\n switch (direction) {\n case 'NW-SE':\n var _ref = [this.getTopLeftCorner(), this.getBottomRightCorner()];\n this.from = _ref[0];\n this.to = _ref[1];\n\n break;\n case 'NE-SW':\n var _ref2 = [this.getTopRightCorner(), this.getBottomLeftCorner()];\n this.from = _ref2[0];\n this.to = _ref2[1];\n\n break;\n case 'SE-NW':\n var _ref3 = [this.getBottomRightCorner(), this.getTopLeftCorner()];\n this.from = _ref3[0];\n this.to = _ref3[1];\n\n break;\n case 'SW-NE':\n var _ref4 = [this.getBottomLeftCorner(), this.getTopRightCorner()];\n this.from = _ref4[0];\n this.to = _ref4[1];\n\n break;\n default:\n break;\n }\n }\n\n /**\n * Gets the vertical direction of the range.\n *\n * @returns {String} Returns one of the values: `N-S` (north->south), `S-N` (south->north).\n */\n\n }, {\n key: 'getVerticalDirection',\n value: function getVerticalDirection() {\n return ['NE-SW', 'NW-SE'].indexOf(this.getDirection()) > -1 ? 'N-S' : 'S-N';\n }\n\n /**\n * Gets the horizontal direction of the range.\n *\n * @returns {String} Returns one of the values: `W-E` (west->east), `E-W` (east->west).\n */\n\n }, {\n key: 'getHorizontalDirection',\n value: function getHorizontalDirection() {\n return ['NW-SE', 'SW-NE'].indexOf(this.getDirection()) > -1 ? 'W-E' : 'E-W';\n }\n\n /**\n * Flip the direction vertically. (e.g. `NW-SE` changes to `SW-NE`).\n */\n\n }, {\n key: 'flipDirectionVertically',\n value: function flipDirectionVertically() {\n var direction = this.getDirection();\n switch (direction) {\n case 'NW-SE':\n this.setDirection('SW-NE');\n break;\n case 'NE-SW':\n this.setDirection('SE-NW');\n break;\n case 'SE-NW':\n this.setDirection('NE-SW');\n break;\n case 'SW-NE':\n this.setDirection('NW-SE');\n break;\n default:\n break;\n }\n }\n\n /**\n * Flip the direction horizontally. (e.g. `NW-SE` changes to `NE-SW`).\n */\n\n }, {\n key: 'flipDirectionHorizontally',\n value: function flipDirectionHorizontally() {\n var direction = this.getDirection();\n switch (direction) {\n case 'NW-SE':\n this.setDirection('NE-SW');\n break;\n case 'NE-SW':\n this.setDirection('NW-SE');\n break;\n case 'SE-NW':\n this.setDirection('SW-NE');\n break;\n case 'SW-NE':\n this.setDirection('SE-NW');\n break;\n default:\n break;\n }\n }\n\n /**\n * Gets the top left corner of this range.\n *\n * @returns {CellCoords}\n */\n\n }, {\n key: 'getTopLeftCorner',\n value: function getTopLeftCorner() {\n return new _coords2.default(Math.min(this.from.row, this.to.row), Math.min(this.from.col, this.to.col));\n }\n\n /**\n * Gets the bottom right corner of this range.\n *\n * @returns {CellCoords}\n */\n\n }, {\n key: 'getBottomRightCorner',\n value: function getBottomRightCorner() {\n return new _coords2.default(Math.max(this.from.row, this.to.row), Math.max(this.from.col, this.to.col));\n }\n\n /**\n * Gets the top right corner of this range.\n *\n * @returns {CellCoords}\n */\n\n }, {\n key: 'getTopRightCorner',\n value: function getTopRightCorner() {\n return new _coords2.default(Math.min(this.from.row, this.to.row), Math.max(this.from.col, this.to.col));\n }\n\n /**\n * Gets the bottom left corner of this range.\n *\n * @returns {CellCoords}\n */\n\n }, {\n key: 'getBottomLeftCorner',\n value: function getBottomLeftCorner() {\n return new _coords2.default(Math.max(this.from.row, this.to.row), Math.min(this.from.col, this.to.col));\n }\n\n /**\n * Checks if coordinates match to one of the 4th corners of this range.\n *\n * @param {CellCoords} coords Cell coordinates to check.\n * @param {CellRange} [expandedRange]\n * @returns {Boolean}\n */\n\n }, {\n key: 'isCorner',\n value: function isCorner(coords, expandedRange) {\n if (expandedRange && expandedRange.includes(coords) && (this.getTopLeftCorner().isEqual(new _coords2.default(expandedRange.from.row, expandedRange.from.col)) || this.getTopRightCorner().isEqual(new _coords2.default(expandedRange.from.row, expandedRange.to.col)) || this.getBottomLeftCorner().isEqual(new _coords2.default(expandedRange.to.row, expandedRange.from.col)) || this.getBottomRightCorner().isEqual(new _coords2.default(expandedRange.to.row, expandedRange.to.col)))) {\n return true;\n }\n\n return coords.isEqual(this.getTopLeftCorner()) || coords.isEqual(this.getTopRightCorner()) || coords.isEqual(this.getBottomLeftCorner()) || coords.isEqual(this.getBottomRightCorner());\n }\n\n /**\n * Gets coordinates of the corner which is opposite to the matched. When the passed coordinates matched to the\n * bottom-right corner of this range then the coordinates for top-left will be returned.\n *\n * @param {CellCoords} coords Cell coordinates to check.\n * @param {CellRange} [expandedRange]\n * @returns {CellCoords}\n */\n\n }, {\n key: 'getOppositeCorner',\n value: function getOppositeCorner(coords, expandedRange) {\n if (!(coords instanceof _coords2.default)) {\n return false;\n }\n\n if (expandedRange) {\n if (expandedRange.includes(coords)) {\n if (this.getTopLeftCorner().isEqual(new _coords2.default(expandedRange.from.row, expandedRange.from.col))) {\n return this.getBottomRightCorner();\n }\n if (this.getTopRightCorner().isEqual(new _coords2.default(expandedRange.from.row, expandedRange.to.col))) {\n return this.getBottomLeftCorner();\n }\n if (this.getBottomLeftCorner().isEqual(new _coords2.default(expandedRange.to.row, expandedRange.from.col))) {\n return this.getTopRightCorner();\n }\n if (this.getBottomRightCorner().isEqual(new _coords2.default(expandedRange.to.row, expandedRange.to.col))) {\n return this.getTopLeftCorner();\n }\n }\n }\n\n if (coords.isEqual(this.getBottomRightCorner())) {\n return this.getTopLeftCorner();\n } else if (coords.isEqual(this.getTopLeftCorner())) {\n return this.getBottomRightCorner();\n } else if (coords.isEqual(this.getTopRightCorner())) {\n return this.getBottomLeftCorner();\n } else if (coords.isEqual(this.getBottomLeftCorner())) {\n return this.getTopRightCorner();\n }\n }\n\n /**\n * @param {CellRange} range\n * @returns {Array}\n */\n\n }, {\n key: 'getBordersSharedWith',\n value: function getBordersSharedWith(range) {\n if (!this.includesRange(range)) {\n return [];\n }\n\n var thisBorders = {\n top: Math.min(this.from.row, this.to.row),\n bottom: Math.max(this.from.row, this.to.row),\n left: Math.min(this.from.col, this.to.col),\n right: Math.max(this.from.col, this.to.col)\n };\n var rangeBorders = {\n top: Math.min(range.from.row, range.to.row),\n bottom: Math.max(range.from.row, range.to.row),\n left: Math.min(range.from.col, range.to.col),\n right: Math.max(range.from.col, range.to.col)\n };\n var result = [];\n\n if (thisBorders.top === rangeBorders.top) {\n result.push('top');\n }\n if (thisBorders.right === rangeBorders.right) {\n result.push('right');\n }\n if (thisBorders.bottom === rangeBorders.bottom) {\n result.push('bottom');\n }\n if (thisBorders.left === rangeBorders.left) {\n result.push('left');\n }\n\n return result;\n }\n\n /**\n * Get inner selected cell coords defined by this range\n *\n * @returns {Array}\n */\n\n }, {\n key: 'getInner',\n value: function getInner() {\n var topLeft = this.getTopLeftCorner();\n var bottomRight = this.getBottomRightCorner();\n var out = [];\n\n for (var r = topLeft.row; r <= bottomRight.row; r++) {\n for (var c = topLeft.col; c <= bottomRight.col; c++) {\n if (!(this.from.row === r && this.from.col === c) && !(this.to.row === r && this.to.col === c)) {\n out.push(new _coords2.default(r, c));\n }\n }\n }\n return out;\n }\n\n /**\n * Get all selected cell coords defined by this range\n *\n * @returns {Array}\n */\n\n }, {\n key: 'getAll',\n value: function getAll() {\n var topLeft = this.getTopLeftCorner();\n var bottomRight = this.getBottomRightCorner();\n var out = [];\n\n for (var r = topLeft.row; r <= bottomRight.row; r++) {\n for (var c = topLeft.col; c <= bottomRight.col; c++) {\n if (topLeft.row === r && topLeft.col === c) {\n out.push(topLeft);\n } else if (bottomRight.row === r && bottomRight.col === c) {\n out.push(bottomRight);\n } else {\n out.push(new _coords2.default(r, c));\n }\n }\n }\n\n return out;\n }\n\n /**\n * Runs a callback function against all cells in the range. You can break the iteration by returning\n * `false` in the callback function\n *\n * @param callback {Function}\n */\n\n }, {\n key: 'forAll',\n value: function forAll(callback) {\n var topLeft = this.getTopLeftCorner();\n var bottomRight = this.getBottomRightCorner();\n\n for (var r = topLeft.row; r <= bottomRight.row; r++) {\n for (var c = topLeft.col; c <= bottomRight.col; c++) {\n var breakIteration = callback(r, c);\n\n if (breakIteration === false) {\n return;\n }\n }\n }\n }\n\n /**\n * Convert CellRange to literal object.\n *\n * @return {Object} Returns a literal object with `from` and `to` properties which each of that object\n * contains `row` and `col` keys.\n */\n\n }, {\n key: 'toObject',\n value: function toObject() {\n return {\n from: this.from.toObject(),\n to: this.to.toObject()\n };\n }\n }]);\n\n return CellRange;\n}();\n\nexports.default = CellRange;\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * @class ColumnFilter\n */\nvar ColumnFilter = function () {\n /**\n * @param {Number} offset\n * @param {Number} total\n * @param {Number} countTH\n */\n function ColumnFilter(offset, total, countTH) {\n _classCallCheck(this, ColumnFilter);\n\n this.offset = offset;\n this.total = total;\n this.countTH = countTH;\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n\n _createClass(ColumnFilter, [{\n key: \"offsetted\",\n value: function offsetted(index) {\n return index + this.offset;\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n }, {\n key: \"unOffsetted\",\n value: function unOffsetted(index) {\n return index - this.offset;\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n }, {\n key: \"renderedToSource\",\n value: function renderedToSource(index) {\n return this.offsetted(index);\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n }, {\n key: \"sourceToRendered\",\n value: function sourceToRendered(index) {\n return this.unOffsetted(index);\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n }, {\n key: \"offsettedTH\",\n value: function offsettedTH(index) {\n return index - this.countTH;\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n }, {\n key: \"unOffsettedTH\",\n value: function unOffsettedTH(index) {\n return index + this.countTH;\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n }, {\n key: \"visibleRowHeadedColumnToSourceColumn\",\n value: function visibleRowHeadedColumnToSourceColumn(index) {\n return this.renderedToSource(this.offsettedTH(index));\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n }, {\n key: \"sourceColumnToVisibleRowHeadedColumn\",\n value: function sourceColumnToVisibleRowHeadedColumn(index) {\n return this.unOffsettedTH(this.sourceToRendered(index));\n }\n }]);\n\n return ColumnFilter;\n}();\n\nexports.default = ColumnFilter;\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * @class RowFilter\n */\nvar RowFilter = function () {\n /**\n * @param {Number} offset\n * @param {Number} total\n * @param {Number} countTH\n */\n function RowFilter(offset, total, countTH) {\n _classCallCheck(this, RowFilter);\n\n this.offset = offset;\n this.total = total;\n this.countTH = countTH;\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n\n _createClass(RowFilter, [{\n key: \"offsetted\",\n value: function offsetted(index) {\n return index + this.offset;\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n }, {\n key: \"unOffsetted\",\n value: function unOffsetted(index) {\n return index - this.offset;\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n }, {\n key: \"renderedToSource\",\n value: function renderedToSource(index) {\n return this.offsetted(index);\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n }, {\n key: \"sourceToRendered\",\n value: function sourceToRendered(index) {\n return this.unOffsetted(index);\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n }, {\n key: \"offsettedTH\",\n value: function offsettedTH(index) {\n return index - this.countTH;\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n }, {\n key: \"unOffsettedTH\",\n value: function unOffsettedTH(index) {\n return index + this.countTH;\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n }, {\n key: \"visibleColHeadedRowToSourceRow\",\n value: function visibleColHeadedRowToSourceRow(index) {\n return this.renderedToSource(this.offsettedTH(index));\n }\n\n /**\n * @param index\n * @returns {Number}\n */\n\n }, {\n key: \"sourceRowToVisibleColHeadedRow\",\n value: function sourceRowToVisibleColHeadedRow(index) {\n return this.unOffsettedTH(this.sourceToRendered(index));\n }\n }]);\n\n return RowFilter;\n}();\n\nexports.default = RowFilter;\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nvar _element = __webpack_require__(0);\n\nvar _object = __webpack_require__(1);\n\nvar _string = __webpack_require__(33);\n\nvar _event = __webpack_require__(182);\n\nvar _event2 = _interopRequireDefault(_event);\n\nvar _overlays = __webpack_require__(183);\n\nvar _overlays2 = _interopRequireDefault(_overlays);\n\nvar _scroll = __webpack_require__(184);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _settings = __webpack_require__(185);\n\nvar _settings2 = _interopRequireDefault(_settings);\n\nvar _table = __webpack_require__(186);\n\nvar _table2 = _interopRequireDefault(_table);\n\nvar _viewport = __webpack_require__(188);\n\nvar _viewport2 = _interopRequireDefault(_viewport);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * @class Walkontable\n */\nvar Walkontable = function () {\n /**\n * @param {Object} settings\n */\n function Walkontable(settings) {\n _classCallCheck(this, Walkontable);\n\n var originalHeaders = [];\n\n // this is the namespace for global events\n this.guid = 'wt_' + (0, _string.randomString)();\n\n // bootstrap from settings\n if (settings.cloneSource) {\n this.cloneSource = settings.cloneSource;\n this.cloneOverlay = settings.cloneOverlay;\n this.wtSettings = settings.cloneSource.wtSettings;\n this.wtTable = new _table2.default(this, settings.table, settings.wtRootElement);\n this.wtScroll = new _scroll2.default(this);\n this.wtViewport = settings.cloneSource.wtViewport;\n this.wtEvent = new _event2.default(this);\n this.selections = this.cloneSource.selections;\n } else {\n this.wtSettings = new _settings2.default(this, settings);\n this.wtTable = new _table2.default(this, settings.table);\n this.wtScroll = new _scroll2.default(this);\n this.wtViewport = new _viewport2.default(this);\n this.wtEvent = new _event2.default(this);\n this.selections = this.getSetting('selections');\n this.wtOverlays = new _overlays2.default(this);\n this.exportSettingsAsClassNames();\n }\n\n // find original headers\n if (this.wtTable.THEAD.childNodes.length && this.wtTable.THEAD.childNodes[0].childNodes.length) {\n for (var c = 0, clen = this.wtTable.THEAD.childNodes[0].childNodes.length; c < clen; c++) {\n originalHeaders.push(this.wtTable.THEAD.childNodes[0].childNodes[c].innerHTML);\n }\n if (!this.getSetting('columnHeaders').length) {\n this.update('columnHeaders', [function (column, TH) {\n (0, _element.fastInnerText)(TH, originalHeaders[column]);\n }]);\n }\n }\n this.drawn = false;\n this.drawInterrupted = false;\n }\n\n /**\n * Force rerender of Walkontable\n *\n * @param {Boolean} [fastDraw=false] When `true`, try to refresh only the positions of borders without rerendering\n * the data. It will only work if Table.draw() does not force\n * rendering anyway\n * @returns {Walkontable}\n */\n\n\n _createClass(Walkontable, [{\n key: 'draw',\n value: function draw() {\n var fastDraw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n this.drawInterrupted = false;\n\n if (!fastDraw && !(0, _element.isVisible)(this.wtTable.TABLE)) {\n // draw interrupted because TABLE is not visible\n this.drawInterrupted = true;\n } else {\n this.wtTable.draw(fastDraw);\n }\n\n return this;\n }\n\n /**\n * Returns the TD at coords. If topmost is set to true, returns TD from the topmost overlay layer,\n * if not set or set to false, returns TD from the master table.\n *\n * @param {CellCoords} coords\n * @param {Boolean} [topmost=false]\n * @returns {Object}\n */\n\n }, {\n key: 'getCell',\n value: function getCell(coords) {\n var topmost = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!topmost) {\n return this.wtTable.getCell(coords);\n }\n\n var totalRows = this.wtSettings.getSetting('totalRows');\n var fixedRowsTop = this.wtSettings.getSetting('fixedRowsTop');\n var fixedRowsBottom = this.wtSettings.getSetting('fixedRowsBottom');\n var fixedColumns = this.wtSettings.getSetting('fixedColumnsLeft');\n\n if (coords.row < fixedRowsTop && coords.col < fixedColumns) {\n return this.wtOverlays.topLeftCornerOverlay.clone.wtTable.getCell(coords);\n } else if (coords.row < fixedRowsTop) {\n return this.wtOverlays.topOverlay.clone.wtTable.getCell(coords);\n } else if (coords.col < fixedColumns && coords.row >= totalRows - fixedRowsBottom) {\n if (this.wtOverlays.bottomLeftCornerOverlay && this.wtOverlays.bottomLeftCornerOverlay.clone) {\n return this.wtOverlays.bottomLeftCornerOverlay.clone.wtTable.getCell(coords);\n }\n } else if (coords.col < fixedColumns) {\n return this.wtOverlays.leftOverlay.clone.wtTable.getCell(coords);\n } else if (coords.row < totalRows && coords.row > totalRows - fixedRowsBottom) {\n if (this.wtOverlays.bottomOverlay && this.wtOverlays.bottomOverlay.clone) {\n return this.wtOverlays.bottomOverlay.clone.wtTable.getCell(coords);\n }\n }\n\n return this.wtTable.getCell(coords);\n }\n\n /**\n * @param {Object} settings\n * @param {*} value\n * @returns {Walkontable}\n */\n\n }, {\n key: 'update',\n value: function update(settings, value) {\n return this.wtSettings.update(settings, value);\n }\n\n /**\n * Scrolls the viewport to a cell (rerenders if needed).\n *\n * @param {CellCoords} coords\n * @param {Boolean} [snapToTop]\n * @param {Boolean} [snapToRight]\n * @param {Boolean} [snapToBottom]\n * @param {Boolean} [snapToLeft]\n * @returns {Boolean}\n */\n\n }, {\n key: 'scrollViewport',\n value: function scrollViewport(coords, snapToTop, snapToRight, snapToBottom, snapToLeft) {\n return this.wtScroll.scrollViewport(coords, snapToTop, snapToRight, snapToBottom, snapToLeft);\n }\n\n /**\n * Scrolls the viewport to a column (rerenders if needed).\n *\n * @param {Number} column Visual column index.\n * @param {Boolean} [snapToRight]\n * @param {Boolean} [snapToLeft]\n * @returns {Boolean}\n */\n\n }, {\n key: 'scrollViewportHorizontally',\n value: function scrollViewportHorizontally(column, snapToRight, snapToLeft) {\n return this.wtScroll.scrollViewportHorizontally(column, snapToRight, snapToLeft);\n }\n\n /**\n * Scrolls the viewport to a row (rerenders if needed).\n *\n * @param {Number} row Visual row index.\n * @param {Boolean} [snapToTop]\n * @param {Boolean} [snapToBottom]\n * @returns {Boolean}\n */\n\n }, {\n key: 'scrollViewportVertically',\n value: function scrollViewportVertically(row, snapToTop, snapToBottom) {\n return this.wtScroll.scrollViewportVertically(row, snapToTop, snapToBottom);\n }\n\n /**\n * @returns {Array}\n */\n\n }, {\n key: 'getViewport',\n value: function getViewport() {\n return [this.wtTable.getFirstVisibleRow(), this.wtTable.getFirstVisibleColumn(), this.wtTable.getLastVisibleRow(), this.wtTable.getLastVisibleColumn()];\n }\n\n /**\n * Get overlay name\n *\n * @returns {String}\n */\n\n }, {\n key: 'getOverlayName',\n value: function getOverlayName() {\n return this.cloneOverlay ? this.cloneOverlay.type : 'master';\n }\n\n /**\n * Check overlay type of this Walkontable instance.\n *\n * @param {String} name Clone type @see {Overlay.CLONE_TYPES}.\n * @returns {Boolean}\n */\n\n }, {\n key: 'isOverlayName',\n value: function isOverlayName(name) {\n if (this.cloneOverlay) {\n return this.cloneOverlay.type === name;\n }\n\n return false;\n }\n\n /**\n * Export settings as class names added to the parent element of the table.\n */\n\n }, {\n key: 'exportSettingsAsClassNames',\n value: function exportSettingsAsClassNames() {\n var _this = this;\n\n var toExport = {\n rowHeaders: ['array'],\n columnHeaders: ['array']\n };\n var allClassNames = [];\n var newClassNames = [];\n\n (0, _object.objectEach)(toExport, function (optionType, key) {\n if (optionType.indexOf('array') > -1 && _this.getSetting(key).length) {\n newClassNames.push('ht' + (0, _string.toUpperCaseFirst)(key));\n }\n allClassNames.push('ht' + (0, _string.toUpperCaseFirst)(key));\n });\n (0, _element.removeClass)(this.wtTable.wtRootElement.parentNode, allClassNames);\n (0, _element.addClass)(this.wtTable.wtRootElement.parentNode, newClassNames);\n }\n\n /**\n * Get/Set Walkontable instance setting\n *\n * @param {String} key\n * @param {*} [param1]\n * @param {*} [param2]\n * @param {*} [param3]\n * @param {*} [param4]\n * @returns {*}\n */\n\n }, {\n key: 'getSetting',\n value: function getSetting(key, param1, param2, param3, param4) {\n // this is faster than .apply - https://github.com/handsontable/handsontable/wiki/JavaScript-&-DOM-performance-tips\n return this.wtSettings.getSetting(key, param1, param2, param3, param4);\n }\n\n /**\n * Checks if setting exists\n *\n * @param {String} key\n * @returns {Boolean}\n */\n\n }, {\n key: 'hasSetting',\n value: function hasSetting(key) {\n return this.wtSettings.has(key);\n }\n\n /**\n * Destroy instance\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this.wtOverlays.destroy();\n this.wtEvent.destroy();\n }\n }]);\n\n return Walkontable;\n}();\n\nexports.default = Walkontable;\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _element = __webpack_require__(0);\n\nvar _function = __webpack_require__(43);\n\nvar _browser = __webpack_require__(39);\n\nvar _eventManager = __webpack_require__(5);\n\nvar _eventManager2 = _interopRequireDefault(_eventManager);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n *\n */\nfunction Event(instance) {\n var that = this;\n var eventManager = new _eventManager2.default(instance);\n var selectedCellBeforeTouchEnd = void 0;\n\n this.instance = instance;\n\n var dblClickOrigin = [null, null];\n this.dblClickTimeout = [null, null];\n\n var onMouseDown = function onMouseDown(event) {\n var activeElement = document.activeElement;\n var getParentNode = (0, _function.partial)(_element.getParent, event.realTarget);\n var realTarget = event.realTarget;\n\n // ignore focusable element from mouse down processing (https://github.com/handsontable/handsontable/issues/3555)\n if (realTarget === activeElement || getParentNode(0) === activeElement || getParentNode(1) === activeElement) {\n return;\n }\n\n var cell = that.parentCell(realTarget);\n\n if ((0, _element.hasClass)(realTarget, 'corner')) {\n that.instance.getSetting('onCellCornerMouseDown', event, realTarget);\n } else if (cell.TD) {\n if (that.instance.hasSetting('onCellMouseDown')) {\n that.instance.getSetting('onCellMouseDown', event, cell.coords, cell.TD, that.instance);\n }\n }\n\n if (event.button !== 2) {\n // if not right mouse button\n if (cell.TD) {\n dblClickOrigin[0] = cell.TD;\n clearTimeout(that.dblClickTimeout[0]);\n that.dblClickTimeout[0] = setTimeout(function () {\n dblClickOrigin[0] = null;\n }, 1000);\n }\n }\n };\n\n var onContextMenu = function onContextMenu(event) {\n if (that.instance.hasSetting('onCellContextMenu')) {\n var cell = that.parentCell(event.realTarget);\n\n if (cell.TD) {\n that.instance.getSetting('onCellContextMenu', event, cell.coords, cell.TD, that.instance);\n }\n }\n };\n\n var onTouchMove = function onTouchMove() {\n that.instance.touchMoving = true;\n };\n\n var onTouchStart = function onTouchStart(event) {\n eventManager.addEventListener(this, 'touchmove', onTouchMove);\n\n // Prevent cell selection when scrolling with touch event - not the best solution performance-wise\n that.checkIfTouchMove = setTimeout(function () {\n if (that.instance.touchMoving === true) {\n that.instance.touchMoving = void 0;\n\n eventManager.removeEventListener('touchmove', onTouchMove, false);\n }\n\n onMouseDown(event);\n }, 30);\n };\n\n var onMouseOver = function onMouseOver(event) {\n var table = void 0;\n var td = void 0;\n var mainWOT = void 0;\n\n if (that.instance.hasSetting('onCellMouseOver')) {\n table = that.instance.wtTable.TABLE;\n td = (0, _element.closestDown)(event.realTarget, ['TD', 'TH'], table);\n mainWOT = that.instance.cloneSource || that.instance;\n\n if (td && td !== mainWOT.lastMouseOver && (0, _element.isChildOf)(td, table)) {\n mainWOT.lastMouseOver = td;\n\n that.instance.getSetting('onCellMouseOver', event, that.instance.wtTable.getCoords(td), td, that.instance);\n }\n }\n };\n\n var onMouseOut = function onMouseOut(event) {\n var table = void 0;\n var lastTD = void 0;\n var nextTD = void 0;\n\n if (that.instance.hasSetting('onCellMouseOut')) {\n table = that.instance.wtTable.TABLE;\n lastTD = (0, _element.closestDown)(event.realTarget, ['TD', 'TH'], table);\n nextTD = (0, _element.closestDown)(event.relatedTarget, ['TD', 'TH'], table);\n\n if (lastTD && lastTD !== nextTD && (0, _element.isChildOf)(lastTD, table)) {\n that.instance.getSetting('onCellMouseOut', event, that.instance.wtTable.getCoords(lastTD), lastTD, that.instance);\n }\n }\n };\n\n var onMouseUp = function onMouseUp(event) {\n if (event.button !== 2) {\n // if not right mouse button\n var cell = that.parentCell(event.realTarget);\n\n if (cell.TD === dblClickOrigin[0] && cell.TD === dblClickOrigin[1]) {\n if ((0, _element.hasClass)(event.realTarget, 'corner')) {\n that.instance.getSetting('onCellCornerDblClick', event, cell.coords, cell.TD, that.instance);\n } else {\n that.instance.getSetting('onCellDblClick', event, cell.coords, cell.TD, that.instance);\n }\n\n dblClickOrigin[0] = null;\n dblClickOrigin[1] = null;\n } else if (cell.TD === dblClickOrigin[0]) {\n that.instance.getSetting('onCellMouseUp', event, cell.coords, cell.TD, that.instance);\n\n dblClickOrigin[1] = cell.TD;\n clearTimeout(that.dblClickTimeout[1]);\n that.dblClickTimeout[1] = setTimeout(function () {\n dblClickOrigin[1] = null;\n }, 500);\n } else if (cell.TD && that.instance.hasSetting('onCellMouseUp')) {\n that.instance.getSetting('onCellMouseUp', event, cell.coords, cell.TD, that.instance);\n }\n }\n };\n\n var selectedCellWasTouched = function selectedCellWasTouched(touchTarget) {\n var cellUnderFinger = that.parentCell(touchTarget);\n var coordsOfCellUnderFinger = cellUnderFinger.coords;\n\n if (selectedCellBeforeTouchEnd && coordsOfCellUnderFinger) {\n var _ref = [coordsOfCellUnderFinger.row, selectedCellBeforeTouchEnd.from.row],\n rowTouched = _ref[0],\n rowSelected = _ref[1];\n var _ref2 = [coordsOfCellUnderFinger.col, selectedCellBeforeTouchEnd.from.col],\n colTouched = _ref2[0],\n colSelected = _ref2[1];\n\n\n return rowTouched === rowSelected && colTouched === colSelected;\n }\n\n return false;\n };\n\n var onTouchEnd = function onTouchEnd(event) {\n var excludeTags = ['A', 'BUTTON', 'INPUT'];\n var target = event.target;\n\n // touched link which was placed inside a cell (a cell with DOM `a` element) WILL NOT trigger the below function calls\n // and as consequence will behave as standard (open the link).\n if (selectedCellWasTouched(target) === false || excludeTags.includes(target.tagName) === false) {\n event.preventDefault();\n onMouseUp(event);\n }\n };\n\n eventManager.addEventListener(this.instance.wtTable.holder, 'mousedown', onMouseDown);\n eventManager.addEventListener(this.instance.wtTable.holder, 'contextmenu', onContextMenu);\n eventManager.addEventListener(this.instance.wtTable.TABLE, 'mouseover', onMouseOver);\n eventManager.addEventListener(this.instance.wtTable.TABLE, 'mouseout', onMouseOut);\n eventManager.addEventListener(this.instance.wtTable.holder, 'mouseup', onMouseUp);\n\n // check if full HOT instance, or detached WOT AND run on mobile device\n if (this.instance.wtTable.holder.parentNode.parentNode && (0, _browser.isMobileBrowser)() && !that.instance.wtTable.isWorkingOnClone()) {\n var classSelector = '.' + this.instance.wtTable.holder.parentNode.className.split(' ').join('.');\n\n eventManager.addEventListener(this.instance.wtTable.holder, 'touchstart', function (event) {\n selectedCellBeforeTouchEnd = instance.selections.getCell().cellRange;\n\n that.instance.touchApplied = true;\n if ((0, _element.isChildOf)(event.target, classSelector)) {\n onTouchStart.call(event.target, event);\n }\n });\n eventManager.addEventListener(this.instance.wtTable.holder, 'touchend', function (event) {\n that.instance.touchApplied = false;\n if ((0, _element.isChildOf)(event.target, classSelector)) {\n onTouchEnd.call(event.target, event);\n }\n });\n\n if (!that.instance.momentumScrolling) {\n that.instance.momentumScrolling = {};\n }\n eventManager.addEventListener(this.instance.wtTable.holder, 'scroll', function () {\n clearTimeout(that.instance.momentumScrolling._timeout);\n\n if (!that.instance.momentumScrolling.ongoing) {\n that.instance.getSetting('onBeforeTouchScroll');\n }\n that.instance.momentumScrolling.ongoing = true;\n\n that.instance.momentumScrolling._timeout = setTimeout(function () {\n if (!that.instance.touchApplied) {\n that.instance.momentumScrolling.ongoing = false;\n\n that.instance.getSetting('onAfterMomentumScroll');\n }\n }, 200);\n });\n }\n\n eventManager.addEventListener(window, 'resize', function () {\n if (that.instance.getSetting('stretchH') !== 'none') {\n that.instance.draw();\n }\n });\n\n this.destroy = function () {\n clearTimeout(this.dblClickTimeout[0]);\n clearTimeout(this.dblClickTimeout[1]);\n\n eventManager.destroy();\n };\n}\n\nEvent.prototype.parentCell = function (elem) {\n var cell = {};\n var TABLE = this.instance.wtTable.TABLE;\n var TD = (0, _element.closestDown)(elem, ['TD', 'TH'], TABLE);\n\n if (TD) {\n cell.coords = this.instance.wtTable.getCoords(TD);\n cell.TD = TD;\n } else if ((0, _element.hasClass)(elem, 'wtBorder') && (0, _element.hasClass)(elem, 'current')) {\n cell.coords = this.instance.selections.getCell().cellRange.highlight;\n cell.TD = this.instance.wtTable.getCell(cell.coords);\n } else if ((0, _element.hasClass)(elem, 'wtBorder') && (0, _element.hasClass)(elem, 'area')) {\n if (this.instance.selections.createOrGetArea().cellRange) {\n cell.coords = this.instance.selections.createOrGetArea().cellRange.to;\n cell.TD = this.instance.wtTable.getCell(cell.coords);\n }\n }\n\n return cell;\n};\n\nexports.default = Event;\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nvar _element = __webpack_require__(0);\n\nvar _array = __webpack_require__(2);\n\nvar _unicode = __webpack_require__(21);\n\nvar _browser = __webpack_require__(39);\n\nvar _eventManager = __webpack_require__(5);\n\nvar _eventManager2 = _interopRequireDefault(_eventManager);\n\nvar _base = __webpack_require__(41);\n\nvar _base2 = _interopRequireDefault(_base);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * @class Overlays\n */\nvar Overlays = function () {\n /**\n * @param {Walkontable} wotInstance\n */\n function Overlays(wotInstance) {\n _classCallCheck(this, Overlays);\n\n /**\n * Sometimes `line-height` might be set to 'normal'. In that case, a default `font-size` should be multiplied by roughly 1.2.\n * https://developer.mozilla.org/pl/docs/Web/CSS/line-height#Values\n */\n var BODY_LINE_HEIGHT = parseInt(getComputedStyle(document.body).lineHeight, 10);\n var FALLBACK_BODY_LINE_HEIGHT = parseInt(getComputedStyle(document.body).fontSize, 10) * 1.2;\n\n this.wot = wotInstance;\n\n // legacy support\n this.instance = this.wot;\n this.eventManager = new _eventManager2.default(this.wot);\n\n this.wot.update('scrollbarWidth', (0, _element.getScrollbarWidth)());\n this.wot.update('scrollbarHeight', (0, _element.getScrollbarWidth)());\n\n this.scrollableElement = (0, _element.getScrollableElement)(this.wot.wtTable.TABLE);\n\n this.prepareOverlays();\n\n this.destroyed = false;\n this.keyPressed = false;\n this.spreaderLastSize = {\n width: null,\n height: null\n };\n this.overlayScrollPositions = {\n master: {\n top: 0,\n left: 0\n },\n top: {\n top: null,\n left: 0\n },\n bottom: {\n top: null,\n left: 0\n },\n left: {\n top: 0,\n left: null\n }\n };\n\n this.pendingScrollCallbacks = {\n master: {\n top: 0,\n left: 0\n },\n top: {\n left: 0\n },\n bottom: {\n left: 0\n },\n left: {\n top: 0\n }\n };\n\n this.verticalScrolling = false;\n this.horizontalScrolling = false;\n this.delegatedScrollCallback = false;\n\n this.registeredListeners = [];\n\n this.browserLineHeight = BODY_LINE_HEIGHT || FALLBACK_BODY_LINE_HEIGHT;\n\n this.registerListeners();\n }\n\n /**\n * Prepare overlays based on user settings.\n *\n * @returns {Boolean} Returns `true` if changes applied to overlay needs scroll synchronization.\n */\n\n\n _createClass(Overlays, [{\n key: 'prepareOverlays',\n value: function prepareOverlays() {\n var syncScroll = false;\n\n if (this.topOverlay) {\n syncScroll = this.topOverlay.updateStateOfRendering() || syncScroll;\n } else {\n this.topOverlay = _base2.default.createOverlay(_base2.default.CLONE_TOP, this.wot);\n }\n\n if (!_base2.default.hasOverlay(_base2.default.CLONE_BOTTOM)) {\n this.bottomOverlay = {\n needFullRender: false,\n updateStateOfRendering: function updateStateOfRendering() {\n return false;\n }\n };\n }\n if (!_base2.default.hasOverlay(_base2.default.CLONE_BOTTOM_LEFT_CORNER)) {\n this.bottomLeftCornerOverlay = {\n needFullRender: false,\n updateStateOfRendering: function updateStateOfRendering() {\n return false;\n }\n };\n }\n\n if (this.bottomOverlay) {\n syncScroll = this.bottomOverlay.updateStateOfRendering() || syncScroll;\n } else {\n this.bottomOverlay = _base2.default.createOverlay(_base2.default.CLONE_BOTTOM, this.wot);\n }\n\n if (this.leftOverlay) {\n syncScroll = this.leftOverlay.updateStateOfRendering() || syncScroll;\n } else {\n this.leftOverlay = _base2.default.createOverlay(_base2.default.CLONE_LEFT, this.wot);\n }\n\n if (this.topOverlay.needFullRender && this.leftOverlay.needFullRender) {\n if (this.topLeftCornerOverlay) {\n syncScroll = this.topLeftCornerOverlay.updateStateOfRendering() || syncScroll;\n } else {\n this.topLeftCornerOverlay = _base2.default.createOverlay(_base2.default.CLONE_TOP_LEFT_CORNER, this.wot);\n }\n }\n\n if (this.bottomOverlay.needFullRender && this.leftOverlay.needFullRender) {\n if (this.bottomLeftCornerOverlay) {\n syncScroll = this.bottomLeftCornerOverlay.updateStateOfRendering() || syncScroll;\n } else {\n this.bottomLeftCornerOverlay = _base2.default.createOverlay(_base2.default.CLONE_BOTTOM_LEFT_CORNER, this.wot);\n }\n }\n\n if (this.wot.getSetting('debug') && !this.debug) {\n this.debug = _base2.default.createOverlay(_base2.default.CLONE_DEBUG, this.wot);\n }\n\n return syncScroll;\n }\n\n /**\n * Refresh and redraw table\n */\n\n }, {\n key: 'refreshAll',\n value: function refreshAll() {\n if (!this.wot.drawn) {\n return;\n }\n if (!this.wot.wtTable.holder.parentNode) {\n // Walkontable was detached from DOM, but this handler was not removed\n this.destroy();\n\n return;\n }\n this.wot.draw(true);\n\n if (this.verticalScrolling) {\n this.leftOverlay.onScroll();\n }\n\n if (this.horizontalScrolling) {\n this.topOverlay.onScroll();\n }\n\n this.verticalScrolling = false;\n this.horizontalScrolling = false;\n }\n\n /**\n * Register all necessary event listeners.\n */\n\n }, {\n key: 'registerListeners',\n value: function registerListeners() {\n var _this = this;\n\n var topOverlayScrollable = this.topOverlay.mainTableScrollableElement;\n var leftOverlayScrollable = this.leftOverlay.mainTableScrollableElement;\n\n var listenersToRegister = [];\n listenersToRegister.push([document.documentElement, 'keydown', function (event) {\n return _this.onKeyDown(event);\n }]);\n listenersToRegister.push([document.documentElement, 'keyup', function () {\n return _this.onKeyUp();\n }]);\n listenersToRegister.push([document, 'visibilitychange', function () {\n return _this.onKeyUp();\n }]);\n listenersToRegister.push([topOverlayScrollable, 'scroll', function (event) {\n return _this.onTableScroll(event);\n }]);\n\n if (topOverlayScrollable !== leftOverlayScrollable) {\n listenersToRegister.push([leftOverlayScrollable, 'scroll', function (event) {\n return _this.onTableScroll(event);\n }]);\n }\n\n var isHighPixelRatio = window.devicePixelRatio && window.devicePixelRatio > 1;\n\n if (isHighPixelRatio || !(0, _browser.isChrome)()) {\n listenersToRegister.push([this.instance.wtTable.wtRootElement.parentNode, 'wheel', function (event) {\n return _this.onCloneWheel(event);\n }]);\n } else {\n if (this.topOverlay.needFullRender) {\n listenersToRegister.push([this.topOverlay.clone.wtTable.holder, 'wheel', function (event) {\n return _this.onCloneWheel(event);\n }]);\n }\n\n if (this.bottomOverlay.needFullRender) {\n listenersToRegister.push([this.bottomOverlay.clone.wtTable.holder, 'wheel', function (event) {\n return _this.onCloneWheel(event);\n }]);\n }\n\n if (this.leftOverlay.needFullRender) {\n listenersToRegister.push([this.leftOverlay.clone.wtTable.holder, 'wheel', function (event) {\n return _this.onCloneWheel(event);\n }]);\n }\n\n if (this.topLeftCornerOverlay && this.topLeftCornerOverlay.needFullRender) {\n listenersToRegister.push([this.topLeftCornerOverlay.clone.wtTable.holder, 'wheel', function (event) {\n return _this.onCloneWheel(event);\n }]);\n }\n\n if (this.bottomLeftCornerOverlay && this.bottomLeftCornerOverlay.needFullRender) {\n listenersToRegister.push([this.bottomLeftCornerOverlay.clone.wtTable.holder, 'wheel', function (event) {\n return _this.onCloneWheel(event);\n }]);\n }\n }\n\n if (this.topOverlay.trimmingContainer !== window && this.leftOverlay.trimmingContainer !== window) {\n // This is necessary?\n // eventManager.addEventListener(window, 'scroll', (event) => this.refreshAll(event));\n listenersToRegister.push([window, 'wheel', function (event) {\n var overlay = void 0;\n var deltaY = event.wheelDeltaY || event.deltaY;\n var deltaX = event.wheelDeltaX || event.deltaX;\n\n if (_this.topOverlay.clone.wtTable.holder.contains(event.realTarget)) {\n overlay = 'top';\n } else if (_this.bottomOverlay.clone && _this.bottomOverlay.clone.wtTable.holder.contains(event.realTarget)) {\n overlay = 'bottom';\n } else if (_this.leftOverlay.clone.wtTable.holder.contains(event.realTarget)) {\n overlay = 'left';\n } else if (_this.topLeftCornerOverlay && _this.topLeftCornerOverlay.clone && _this.topLeftCornerOverlay.clone.wtTable.holder.contains(event.realTarget)) {\n overlay = 'topLeft';\n } else if (_this.bottomLeftCornerOverlay && _this.bottomLeftCornerOverlay.clone && _this.bottomLeftCornerOverlay.clone.wtTable.holder.contains(event.realTarget)) {\n overlay = 'bottomLeft';\n }\n\n if (overlay === 'top' && deltaY !== 0 || overlay === 'left' && deltaX !== 0 || overlay === 'bottom' && deltaY !== 0 || (overlay === 'topLeft' || overlay === 'bottomLeft') && (deltaY !== 0 || deltaX !== 0)) {\n\n event.preventDefault();\n }\n }]);\n }\n\n while (listenersToRegister.length) {\n var listener = listenersToRegister.pop();\n this.eventManager.addEventListener(listener[0], listener[1], listener[2]);\n\n this.registeredListeners.push(listener);\n }\n }\n\n /**\n * Deregister all previously registered listeners.\n */\n\n }, {\n key: 'deregisterListeners',\n value: function deregisterListeners() {\n while (this.registeredListeners.length) {\n var listener = this.registeredListeners.pop();\n this.eventManager.removeEventListener(listener[0], listener[1], listener[2]);\n }\n }\n\n /**\n * Scroll listener\n *\n * @param {Event} event\n */\n\n }, {\n key: 'onTableScroll',\n value: function onTableScroll(event) {\n // There was if statement which controlled flow of this function. It avoided the execution of the next lines\n // on mobile devices. It was changed. Broader description of this case is included within issue #4856.\n\n var masterHorizontal = this.leftOverlay.mainTableScrollableElement;\n var masterVertical = this.topOverlay.mainTableScrollableElement;\n var target = event.target;\n\n // For key press, sync only master -> overlay position because while pressing Walkontable.render is triggered\n // by hot.refreshBorder\n if (this.keyPressed) {\n if (masterVertical !== window && target !== window && !event.target.contains(masterVertical) || masterHorizontal !== window && target !== window && !event.target.contains(masterHorizontal)) {\n return;\n }\n }\n\n this.syncScrollPositions(event);\n }\n\n /**\n * Wheel listener for cloned overlays.\n *\n * @param {Event} event\n */\n\n }, {\n key: 'onCloneWheel',\n value: function onCloneWheel(event) {\n if (this.scrollableElement !== window) {\n event.preventDefault();\n }\n // There was if statement which controlled flow of this function. It avoided the execution of the next lines\n // on mobile devices. It was changed. Broader description of this case is included within issue #4856.\n\n var masterHorizontal = this.leftOverlay.mainTableScrollableElement;\n var masterVertical = this.topOverlay.mainTableScrollableElement;\n var target = event.target;\n\n // For key press, sync only master -> overlay position because while pressing Walkontable.render is triggered\n // by hot.refreshBorder\n var shouldNotWheelVertically = masterVertical !== window && target !== window && !event.target.contains(masterVertical);\n var shouldNotWheelHorizontally = masterHorizontal !== window && target !== window && !event.target.contains(masterHorizontal);\n\n if (this.keyPressed && (shouldNotWheelVertically || shouldNotWheelHorizontally)) {\n return;\n }\n\n this.translateMouseWheelToScroll(event);\n }\n\n /**\n * Key down listener\n */\n\n }, {\n key: 'onKeyDown',\n value: function onKeyDown(event) {\n this.keyPressed = (0, _unicode.isKey)(event.keyCode, 'ARROW_UP|ARROW_RIGHT|ARROW_DOWN|ARROW_LEFT');\n }\n\n /**\n * Key up listener\n */\n\n }, {\n key: 'onKeyUp',\n value: function onKeyUp() {\n this.keyPressed = false;\n }\n\n /**\n * Translate wheel event into scroll event and sync scroll overlays position\n *\n * @private\n * @param {Event} event\n * @returns {Boolean}\n */\n\n }, {\n key: 'translateMouseWheelToScroll',\n value: function translateMouseWheelToScroll(event) {\n var deltaY = isNaN(event.deltaY) ? -1 * event.wheelDeltaY : event.deltaY;\n var deltaX = isNaN(event.deltaX) ? -1 * event.wheelDeltaX : event.deltaX;\n\n if (event.deltaMode === 1) {\n deltaX += deltaX * this.browserLineHeight;\n deltaY += deltaY * this.browserLineHeight;\n }\n\n this.scrollVertically(deltaY);\n this.scrollHorizontally(deltaX);\n\n return false;\n }\n }, {\n key: 'scrollVertically',\n value: function scrollVertically(distance) {\n if (distance === 0) {\n return 0;\n }\n this.scrollableElement.scrollTop += distance;\n }\n }, {\n key: 'scrollHorizontally',\n value: function scrollHorizontally(distance) {\n if (distance === 0) {\n return 0;\n }\n this.scrollableElement.scrollLeft += distance;\n }\n\n /**\n * Synchronize scroll position between master table and overlay table.\n *\n * @private\n * @param {Event|Object} event\n */\n\n }, {\n key: 'syncScrollPositions',\n value: function syncScrollPositions() {\n if (this.destroyed) {\n return;\n }\n\n var topHolder = this.topOverlay.clone.wtTable.holder;\n var leftHolder = this.leftOverlay.clone.wtTable.holder;\n\n var _ref = [this.scrollableElement.scrollLeft, this.scrollableElement.scrollTop],\n scrollLeft = _ref[0],\n scrollTop = _ref[1];\n\n\n this.horizontalScrolling = topHolder.scrollLeft !== scrollLeft;\n this.verticalScrolling = leftHolder.scrollTop !== scrollTop;\n\n if (this.horizontalScrolling) {\n topHolder.scrollLeft = scrollLeft;\n\n var bottomHolder = this.bottomOverlay.needFullRender ? this.bottomOverlay.clone.wtTable.holder : null;\n\n if (bottomHolder) {\n bottomHolder.scrollLeft = scrollLeft;\n }\n }\n\n if (this.verticalScrolling) {\n leftHolder.scrollTop = scrollTop;\n }\n\n this.refreshAll();\n }\n\n /**\n * Synchronize overlay scrollbars with the master scrollbar\n */\n\n }, {\n key: 'syncScrollWithMaster',\n value: function syncScrollWithMaster() {\n var master = this.topOverlay.mainTableScrollableElement;\n var scrollLeft = master.scrollLeft,\n scrollTop = master.scrollTop;\n\n\n if (this.topOverlay.needFullRender) {\n this.topOverlay.clone.wtTable.holder.scrollLeft = scrollLeft;\n }\n if (this.bottomOverlay.needFullRender) {\n this.bottomOverlay.clone.wtTable.holder.scrollLeft = scrollLeft;\n }\n if (this.leftOverlay.needFullRender) {\n this.leftOverlay.clone.wtTable.holder.scrollTop = scrollTop;\n }\n }\n\n /**\n * Update the main scrollable elements for all the overlays.\n */\n\n }, {\n key: 'updateMainScrollableElements',\n value: function updateMainScrollableElements() {\n this.deregisterListeners();\n\n this.leftOverlay.updateMainScrollableElement();\n this.topOverlay.updateMainScrollableElement();\n\n if (this.bottomOverlay.needFullRender) {\n this.bottomOverlay.updateMainScrollableElement();\n }\n\n this.scrollableElement = (0, _element.getScrollableElement)(this.wot.wtTable.TABLE);\n\n this.registerListeners();\n }\n\n /**\n *\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this.eventManager.destroy();\n this.topOverlay.destroy();\n\n if (this.bottomOverlay.clone) {\n this.bottomOverlay.destroy();\n }\n this.leftOverlay.destroy();\n\n if (this.topLeftCornerOverlay) {\n this.topLeftCornerOverlay.destroy();\n }\n\n if (this.bottomLeftCornerOverlay && this.bottomLeftCornerOverlay.clone) {\n this.bottomLeftCornerOverlay.destroy();\n }\n\n if (this.debug) {\n this.debug.destroy();\n }\n this.destroyed = true;\n }\n\n /**\n * @param {Boolean} [fastDraw=false]\n */\n\n }, {\n key: 'refresh',\n value: function refresh() {\n var fastDraw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (this.topOverlay.areElementSizesAdjusted && this.leftOverlay.areElementSizesAdjusted) {\n var container = this.wot.wtTable.wtRootElement.parentNode || this.wot.wtTable.wtRootElement;\n var width = container.clientWidth;\n var height = container.clientHeight;\n\n if (width !== this.spreaderLastSize.width || height !== this.spreaderLastSize.height) {\n this.spreaderLastSize.width = width;\n this.spreaderLastSize.height = height;\n this.adjustElementsSize();\n }\n }\n\n if (this.bottomOverlay.clone) {\n this.bottomOverlay.refresh(fastDraw);\n }\n\n this.leftOverlay.refresh(fastDraw);\n this.topOverlay.refresh(fastDraw);\n\n if (this.topLeftCornerOverlay) {\n this.topLeftCornerOverlay.refresh(fastDraw);\n }\n\n if (this.bottomLeftCornerOverlay && this.bottomLeftCornerOverlay.clone) {\n this.bottomLeftCornerOverlay.refresh(fastDraw);\n }\n\n if (this.debug) {\n this.debug.refresh(fastDraw);\n }\n }\n\n /**\n * Adjust overlays elements size and master table size\n *\n * @param {Boolean} [force=false]\n */\n\n }, {\n key: 'adjustElementsSize',\n value: function adjustElementsSize() {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var totalColumns = this.wot.getSetting('totalColumns');\n var totalRows = this.wot.getSetting('totalRows');\n var headerRowSize = this.wot.wtViewport.getRowHeaderWidth();\n var headerColumnSize = this.wot.wtViewport.getColumnHeaderHeight();\n var hiderStyle = this.wot.wtTable.hider.style;\n\n hiderStyle.width = headerRowSize + this.leftOverlay.sumCellSizes(0, totalColumns) + 'px';\n hiderStyle.height = headerColumnSize + this.topOverlay.sumCellSizes(0, totalRows) + 1 + 'px';\n\n this.topOverlay.adjustElementsSize(force);\n this.leftOverlay.adjustElementsSize(force);\n\n if (this.bottomOverlay.clone) {\n this.bottomOverlay.adjustElementsSize(force);\n }\n }\n\n /**\n *\n */\n\n }, {\n key: 'applyToDOM',\n value: function applyToDOM() {\n if (!this.topOverlay.areElementSizesAdjusted || !this.leftOverlay.areElementSizesAdjusted) {\n this.adjustElementsSize();\n }\n this.topOverlay.applyToDOM();\n\n if (this.bottomOverlay.clone) {\n this.bottomOverlay.applyToDOM();\n }\n\n this.leftOverlay.applyToDOM();\n }\n\n /**\n * Get the parent overlay of the provided element.\n *\n * @param {HTMLElement} element\n * @returns {Object|null}\n */\n\n }, {\n key: 'getParentOverlay',\n value: function getParentOverlay(element) {\n if (!element) {\n return null;\n }\n\n var overlays = [this.topOverlay, this.leftOverlay, this.bottomOverlay, this.topLeftCornerOverlay, this.bottomLeftCornerOverlay];\n var result = null;\n\n (0, _array.arrayEach)(overlays, function (elem) {\n if (!elem) {\n return;\n }\n\n if (elem.clone && elem.clone.wtTable.TABLE.contains(element)) {\n result = elem.clone;\n }\n });\n\n return result;\n }\n }]);\n\n return Overlays;\n}();\n\nexports.default = Overlays;\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nvar _element = __webpack_require__(0);\n\nvar _number = __webpack_require__(6);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * @class Scroll\n */\nvar Scroll = function () {\n /**\n * @param {Walkontable} wotInstance\n */\n function Scroll(wotInstance) {\n _classCallCheck(this, Scroll);\n\n this.wot = wotInstance;\n\n // legacy support\n this.instance = wotInstance;\n }\n\n /**\n * Scrolls viewport to a cell.\n *\n * @param {CellCoords} coords\n * @param {Boolean} [snapToTop]\n * @param {Boolean} [snapToRight]\n * @param {Boolean} [snapToBottom]\n * @param {Boolean} [snapToLeft]\n * @returns {Boolean}\n */\n\n\n _createClass(Scroll, [{\n key: 'scrollViewport',\n value: function scrollViewport(coords, snapToTop, snapToRight, snapToBottom, snapToLeft) {\n var scrolledHorizontally = this.scrollViewportHorizontally(coords.col, snapToRight, snapToLeft);\n var scrolledVertically = this.scrollViewportVertically(coords.row, snapToTop, snapToBottom);\n\n return scrolledHorizontally || scrolledVertically;\n }\n\n /**\n * Scrolls viewport to a column.\n *\n * @param {Number} column Visual column index.\n * @param {Boolean} [snapToRight]\n * @param {Boolean} [snapToLeft]\n * @returns {Boolean}\n */\n\n }, {\n key: 'scrollViewportHorizontally',\n value: function scrollViewportHorizontally(column, snapToRight, snapToLeft) {\n if (!this.wot.drawn) {\n return false;\n }\n\n var _getVariables2 = this._getVariables(),\n fixedColumnsLeft = _getVariables2.fixedColumnsLeft,\n leftOverlay = _getVariables2.leftOverlay,\n totalColumns = _getVariables2.totalColumns;\n\n var result = false;\n\n if (column >= 0 && column <= Math.max(totalColumns - 1, 0)) {\n if (column >= fixedColumnsLeft && (column < this.getFirstVisibleColumn() || snapToLeft)) {\n result = leftOverlay.scrollTo(column);\n } else if (column > this.getLastVisibleColumn() || snapToRight) {\n result = leftOverlay.scrollTo(column, true);\n }\n }\n\n return result;\n }\n\n /**\n * Scrolls viewport to a row.\n *\n * @param {Number} row Visual row index.\n * @param {Boolean} [snapToTop]\n * @param {Boolean} [snapToBottom]\n * @returns {Boolean}\n */\n\n }, {\n key: 'scrollViewportVertically',\n value: function scrollViewportVertically(row, snapToTop, snapToBottom) {\n if (!this.wot.drawn) {\n return false;\n }\n\n var _getVariables3 = this._getVariables(),\n fixedRowsBottom = _getVariables3.fixedRowsBottom,\n fixedRowsTop = _getVariables3.fixedRowsTop,\n topOverlay = _getVariables3.topOverlay,\n totalRows = _getVariables3.totalRows;\n\n var result = false;\n\n if (row >= 0 && row <= Math.max(totalRows - 1, 0)) {\n if (row >= fixedRowsTop && (row < this.getFirstVisibleRow() || snapToTop)) {\n result = topOverlay.scrollTo(row);\n } else if (row > this.getLastVisibleRow() && row < totalRows - fixedRowsBottom || snapToBottom) {\n result = topOverlay.scrollTo(row, true);\n }\n }\n\n return result;\n }\n\n /**\n * Get first visible row based on virtual dom and how table is visible in browser window viewport.\n *\n * @returns {Number}\n */\n\n }, {\n key: 'getFirstVisibleRow',\n value: function getFirstVisibleRow() {\n var _getVariables4 = this._getVariables(),\n topOverlay = _getVariables4.topOverlay,\n wtTable = _getVariables4.wtTable,\n wtViewport = _getVariables4.wtViewport,\n totalRows = _getVariables4.totalRows,\n fixedRowsTop = _getVariables4.fixedRowsTop;\n\n var firstVisibleRow = wtTable.getFirstVisibleRow();\n\n if (topOverlay.mainTableScrollableElement === window) {\n var rootElementOffset = (0, _element.offset)(wtTable.wtRootElement);\n var totalTableHeight = (0, _element.innerHeight)(wtTable.hider);\n var windowHeight = (0, _element.innerHeight)(window);\n var windowScrollTop = (0, _element.getScrollTop)(window);\n\n // Only calculate firstVisibleRow when table didn't filled (from up) whole viewport space\n if (rootElementOffset.top + totalTableHeight - windowHeight <= windowScrollTop) {\n var rowsHeight = wtViewport.getColumnHeaderHeight();\n\n rowsHeight += topOverlay.sumCellSizes(0, fixedRowsTop);\n\n (0, _number.rangeEachReverse)(totalRows, 1, function (row) {\n rowsHeight += topOverlay.sumCellSizes(row - 1, row);\n\n if (rootElementOffset.top + totalTableHeight - rowsHeight <= windowScrollTop) {\n // Return physical row + 1\n firstVisibleRow = row;\n\n return false;\n }\n });\n }\n }\n\n return firstVisibleRow;\n }\n\n /**\n * Get last visible row based on virtual dom and how table is visible in browser window viewport.\n *\n * @returns {Number}\n */\n\n }, {\n key: 'getLastVisibleRow',\n value: function getLastVisibleRow() {\n var _getVariables5 = this._getVariables(),\n topOverlay = _getVariables5.topOverlay,\n wtTable = _getVariables5.wtTable,\n wtViewport = _getVariables5.wtViewport,\n totalRows = _getVariables5.totalRows;\n\n var lastVisibleRow = wtTable.getLastVisibleRow();\n\n if (topOverlay.mainTableScrollableElement === window) {\n var rootElementOffset = (0, _element.offset)(wtTable.wtRootElement);\n var windowHeight = (0, _element.innerHeight)(window);\n var windowScrollTop = (0, _element.getScrollTop)(window);\n\n // Only calculate lastVisibleRow when table didn't filled (from bottom) whole viewport space\n if (rootElementOffset.top > windowScrollTop) {\n var rowsHeight = wtViewport.getColumnHeaderHeight();\n\n (0, _number.rangeEach)(1, totalRows, function (row) {\n rowsHeight += topOverlay.sumCellSizes(row - 1, row);\n\n if (rootElementOffset.top + rowsHeight - windowScrollTop >= windowHeight) {\n // Return physical row - 1 (-2 because rangeEach gives row index + 1 - sumCellSizes requirements)\n lastVisibleRow = row - 2;\n\n return false;\n }\n });\n }\n }\n\n return lastVisibleRow;\n }\n\n /**\n * Get first visible column based on virtual dom and how table is visible in browser window viewport.\n *\n * @returns {Number}\n */\n\n }, {\n key: 'getFirstVisibleColumn',\n value: function getFirstVisibleColumn() {\n var _getVariables6 = this._getVariables(),\n leftOverlay = _getVariables6.leftOverlay,\n wtTable = _getVariables6.wtTable,\n wtViewport = _getVariables6.wtViewport,\n totalColumns = _getVariables6.totalColumns;\n\n var firstVisibleColumn = wtTable.getFirstVisibleColumn();\n\n if (leftOverlay.mainTableScrollableElement === window) {\n var rootElementOffset = (0, _element.offset)(wtTable.wtRootElement);\n var totalTableWidth = (0, _element.innerWidth)(wtTable.hider);\n var windowWidth = (0, _element.innerWidth)(window);\n var windowScrollLeft = (0, _element.getScrollLeft)(window);\n\n // Only calculate firstVisibleColumn when table didn't filled (from left) whole viewport space\n if (rootElementOffset.left + totalTableWidth - windowWidth <= windowScrollLeft) {\n var columnsWidth = wtViewport.getRowHeaderWidth();\n\n (0, _number.rangeEachReverse)(totalColumns, 1, function (column) {\n columnsWidth += leftOverlay.sumCellSizes(column - 1, column);\n\n if (rootElementOffset.left + totalTableWidth - columnsWidth <= windowScrollLeft) {\n // Return physical column + 1\n firstVisibleColumn = column;\n\n return false;\n }\n });\n }\n }\n\n return firstVisibleColumn;\n }\n\n /**\n * Get last visible column based on virtual dom and how table is visible in browser window viewport.\n *\n * @returns {Number}\n */\n\n }, {\n key: 'getLastVisibleColumn',\n value: function getLastVisibleColumn() {\n var _getVariables7 = this._getVariables(),\n leftOverlay = _getVariables7.leftOverlay,\n wtTable = _getVariables7.wtTable,\n wtViewport = _getVariables7.wtViewport,\n totalColumns = _getVariables7.totalColumns;\n\n var lastVisibleColumn = wtTable.getLastVisibleColumn();\n\n if (leftOverlay.mainTableScrollableElement === window) {\n var rootElementOffset = (0, _element.offset)(wtTable.wtRootElement);\n var windowWidth = (0, _element.innerWidth)(window);\n var windowScrollLeft = (0, _element.getScrollLeft)(window);\n\n // Only calculate lastVisibleColumn when table didn't filled (from right) whole viewport space\n if (rootElementOffset.left > windowScrollLeft) {\n var columnsWidth = wtViewport.getRowHeaderWidth();\n\n (0, _number.rangeEach)(1, totalColumns, function (column) {\n columnsWidth += leftOverlay.sumCellSizes(column - 1, column);\n\n if (rootElementOffset.left + columnsWidth - windowScrollLeft >= windowWidth) {\n // Return physical column - 1 (-2 because rangeEach gives column index + 1 - sumCellSizes requirements)\n lastVisibleColumn = column - 2;\n\n return false;\n }\n });\n }\n }\n\n return lastVisibleColumn;\n }\n\n /**\n * Returns collection of variables used to rows and columns visibility calculations.\n *\n * @returns {Object}\n * @private\n */\n\n }, {\n key: '_getVariables',\n value: function _getVariables() {\n var wot = this.wot;\n var topOverlay = wot.wtOverlays.topOverlay;\n var leftOverlay = wot.wtOverlays.leftOverlay;\n var wtTable = wot.wtTable;\n var wtViewport = wot.wtViewport;\n var totalRows = wot.getSetting('totalRows');\n var totalColumns = wot.getSetting('totalColumns');\n var fixedRowsTop = wot.getSetting('fixedRowsTop');\n var fixedRowsBottom = wot.getSetting('fixedRowsBottom');\n var fixedColumnsLeft = wot.getSetting('fixedColumnsLeft');\n\n return {\n topOverlay: topOverlay,\n leftOverlay: leftOverlay,\n wtTable: wtTable,\n wtViewport: wtViewport,\n totalRows: totalRows,\n totalColumns: totalColumns,\n fixedRowsTop: fixedRowsTop,\n fixedRowsBottom: fixedRowsBottom,\n fixedColumnsLeft: fixedColumnsLeft\n };\n }\n }]);\n\n return Scroll;\n}();\n\nexports.default = Scroll;\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nvar _element = __webpack_require__(0);\n\nvar _object = __webpack_require__(1);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * @class Settings\n */\nvar Settings = function () {\n /**\n * @param {Walkontable} wotInstance\n * @param {Object} settings\n */\n function Settings(wotInstance, settings) {\n var _this = this;\n\n _classCallCheck(this, Settings);\n\n this.wot = wotInstance;\n\n // legacy support\n this.instance = wotInstance;\n\n // default settings. void 0 means it is required, null means it can be empty\n this.defaults = {\n table: void 0,\n debug: false, // shows WalkontableDebugOverlay\n\n // presentation mode\n externalRowCalculator: false,\n stretchH: 'none', // values: all, last, none\n currentRowClassName: null,\n currentColumnClassName: null,\n preventOverflow: function preventOverflow() {\n return false;\n },\n\n\n // data source\n data: void 0,\n freezeOverlays: false,\n fixedColumnsLeft: 0,\n fixedRowsTop: 0,\n fixedRowsBottom: 0,\n minSpareRows: 0,\n\n // this must be array of functions: [function (row, TH) {}]\n rowHeaders: function rowHeaders() {\n return [];\n },\n\n\n // this must be array of functions: [function (column, TH) {}]\n columnHeaders: function columnHeaders() {\n return [];\n },\n\n totalRows: void 0,\n totalColumns: void 0,\n cellRenderer: function cellRenderer(row, column, TD) {\n var cellData = _this.getSetting('data', row, column);\n\n (0, _element.fastInnerText)(TD, cellData === void 0 || cellData === null ? '' : cellData);\n },\n\n // columnWidth: 50,\n columnWidth: function columnWidth() {\n // return undefined means use default size for the rendered cell content\n },\n rowHeight: function rowHeight() {\n // return undefined means use default size for the rendered cell content\n },\n\n defaultRowHeight: 23,\n defaultColumnWidth: 50,\n selections: null,\n hideBorderOnMouseDownOver: false,\n viewportRowCalculatorOverride: null,\n viewportColumnCalculatorOverride: null,\n\n // callbacks\n onCellMouseDown: null,\n onCellContextMenu: null,\n onCellMouseOver: null,\n onCellMouseOut: null,\n onCellMouseUp: null,\n\n // onCellMouseOut: null,\n onCellDblClick: null,\n onCellCornerMouseDown: null,\n onCellCornerDblClick: null,\n beforeDraw: null,\n onDraw: null,\n onBeforeRemoveCellClassNames: null,\n onAfterDrawSelection: null,\n onBeforeDrawBorders: null,\n onScrollVertically: null,\n onScrollHorizontally: null,\n onBeforeTouchScroll: null,\n onAfterMomentumScroll: null,\n onBeforeStretchingColumnWidth: function onBeforeStretchingColumnWidth(width) {\n return width;\n },\n onModifyRowHeaderWidth: null,\n onModifyGetCellCoords: null,\n\n // constants\n scrollbarWidth: 10,\n scrollbarHeight: 10,\n\n renderAllRows: false,\n groups: false,\n rowHeaderWidth: null,\n columnHeaderHeight: null,\n headerClassName: null\n };\n\n // reference to settings\n this.settings = {};\n\n (0, _object.objectEach)(this.defaults, function (value, key) {\n if (settings[key] !== void 0) {\n _this.settings[key] = settings[key];\n } else if (value === void 0) {\n throw new Error('A required setting \"' + key + '\" was not provided');\n } else {\n _this.settings[key] = value;\n }\n });\n }\n\n /**\n * Update settings\n *\n * @param {Object} settings\n * @param {*} value\n * @returns {Walkontable}\n */\n\n\n _createClass(Settings, [{\n key: 'update',\n value: function update(settings, value) {\n var _this2 = this;\n\n if (value === void 0) {\n // settings is object\n (0, _object.objectEach)(settings, function (settingValue, key) {\n _this2.settings[key] = settingValue;\n });\n } else {\n // if value is defined then settings is the key\n this.settings[settings] = value;\n }\n return this.wot;\n }\n\n /**\n * Get setting by name\n *\n * @param {String} key\n * @param {*} param1\n * @param {*} param2\n * @param {*} param3\n * @param {*} param4\n * @returns {*}\n */\n\n }, {\n key: 'getSetting',\n value: function getSetting(key, param1, param2, param3, param4) {\n if (typeof this.settings[key] === 'function') {\n // this is faster than .apply - https://github.com/handsontable/handsontable/wiki/JavaScript-&-DOM-performance-tips\n return this.settings[key](param1, param2, param3, param4);\n } else if (param1 !== void 0 && Array.isArray(this.settings[key])) {\n // perhaps this can be removed, it is only used in tests\n return this.settings[key][param1];\n }\n\n return this.settings[key];\n }\n\n /**\n * Checks if setting exists\n *\n * @param {Boolean} key\n * @returns {Boolean}\n */\n\n }, {\n key: 'has',\n value: function has(key) {\n return !!this.settings[key];\n }\n }]);\n\n return Settings;\n}();\n\nexports.default = Settings;\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _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; }; }();\n\nvar _element = __webpack_require__(0);\n\nvar _function = __webpack_require__(43);\n\nvar _coords = __webpack_require__(56);\n\nvar _coords2 = _interopRequireDefault(_coords);\n\nvar _column = __webpack_require__(179);\n\nvar _column2 = _interopRequireDefault(_column);\n\nvar _row = __webpack_require__(180);\n\nvar _row2 = _interopRequireDefault(_row);\n\nvar _tableRenderer = __webpack_require__(187);\n\nvar _tableRenderer2 = _interopRequireDefault(_tableRenderer);\n\nvar _base = __webpack_require__(41);\n\nvar _base2 = _interopRequireDefault(_base);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n *\n */\nvar Table = function () {\n /**\n * @param {Walkontable} wotInstance\n * @param {HTMLTableElement} table\n */\n function Table(wotInstance, table) {\n var _this = this;\n\n _classCallCheck(this, Table);\n\n this.wot = wotInstance;\n\n // legacy support\n this.instance = this.wot;\n this.TABLE = table;\n this.TBODY = null;\n this.THEAD = null;\n this.COLGROUP = null;\n this.tableOffset = 0;\n this.holderOffset = 0;\n\n (0, _element.removeTextNodes)(this.TABLE);\n\n this.spreader = this.createSpreader(this.TABLE);\n this.hider = this.createHider(this.spreader);\n this.holder = this.createHolder(this.hider);\n\n this.wtRootElement = this.holder.parentNode;\n this.alignOverlaysWithTrimmingContainer();\n this.fixTableDomTree();\n\n this.colgroupChildrenLength = this.COLGROUP.childNodes.length;\n this.theadChildrenLength = this.THEAD.firstChild ? this.THEAD.firstChild.childNodes.length : 0;\n this.tbodyChildrenLength = this.TBODY.childNodes.length;\n\n this.rowFilter = null;\n this.columnFilter = null;\n this.correctHeaderWidth = false;\n\n var origRowHeaderWidth = this.wot.wtSettings.settings.rowHeaderWidth;\n\n // Fix for jumping row headers (https://github.com/handsontable/handsontable/issues/3850)\n this.wot.wtSettings.settings.rowHeaderWidth = function () {\n return _this._modifyRowHeaderWidth(origRowHeaderWidth);\n };\n }\n\n /**\n *\n */\n\n\n _createClass(Table, [{\n key: 'fixTableDomTree',\n value: function fixTableDomTree() {\n this.TBODY = this.TABLE.querySelector('tbody');\n\n if (!this.TBODY) {\n this.TBODY = document.createElement('tbody');\n this.TABLE.appendChild(this.TBODY);\n }\n this.THEAD = this.TABLE.querySelector('thead');\n\n if (!this.THEAD) {\n this.THEAD = document.createElement('thead');\n this.TABLE.insertBefore(this.THEAD, this.TBODY);\n }\n this.COLGROUP = this.TABLE.querySelector('colgroup');\n\n if (!this.COLGROUP) {\n this.COLGROUP = document.createElement('colgroup');\n this.TABLE.insertBefore(this.COLGROUP, this.THEAD);\n }\n\n if (this.wot.getSetting('columnHeaders').length && !this.THEAD.childNodes.length) {\n this.THEAD.appendChild(document.createElement('TR'));\n }\n }\n\n /**\n * @param table\n * @returns {HTMLElement}\n */\n\n }, {\n key: 'createSpreader',\n value: function createSpreader(table) {\n var parent = table.parentNode;\n var spreader = void 0;\n\n if (!parent || parent.nodeType !== 1 || !(0, _element.hasClass)(parent, 'wtHolder')) {\n spreader = document.createElement('div');\n spreader.className = 'wtSpreader';\n\n if (parent) {\n // if TABLE is detached (e.g. in Jasmine test), it has no parentNode so we cannot attach holder to it\n parent.insertBefore(spreader, table);\n }\n spreader.appendChild(table);\n }\n spreader.style.position = 'relative';\n\n return spreader;\n }\n\n /**\n * @param spreader\n * @returns {HTMLElement}\n */\n\n }, {\n key: 'createHider',\n value: function createHider(spreader) {\n var parent = spreader.parentNode;\n var hider = void 0;\n\n if (!parent || parent.nodeType !== 1 || !(0, _element.hasClass)(parent, 'wtHolder')) {\n hider = document.createElement('div');\n hider.className = 'wtHider';\n\n if (parent) {\n // if TABLE is detached (e.g. in Jasmine test), it has no parentNode so we cannot attach holder to it\n parent.insertBefore(hider, spreader);\n }\n hider.appendChild(spreader);\n }\n\n return hider;\n }\n\n /**\n *\n * @param hider\n * @returns {HTMLElement}\n */\n\n }, {\n key: 'createHolder',\n value: function createHolder(hider) {\n var parent = hider.parentNode;\n var holder = void 0;\n\n if (!parent || parent.nodeType !== 1 || !(0, _element.hasClass)(parent, 'wtHolder')) {\n holder = document.createElement('div');\n holder.style.position = 'relative';\n holder.className = 'wtHolder';\n\n if (parent) {\n // if TABLE is detached (e.g. in Jasmine test), it has no parentNode so we cannot attach holder to it\n parent.insertBefore(holder, hider);\n }\n if (!this.isWorkingOnClone()) {\n holder.parentNode.className += 'ht_master handsontable';\n }\n holder.appendChild(hider);\n }\n\n return holder;\n }\n }, {\n key: 'alignOverlaysWithTrimmingContainer',\n value: function alignOverlaysWithTrimmingContainer() {\n var trimmingElement = (0, _element.getTrimmingContainer)(this.wtRootElement);\n\n if (!this.isWorkingOnClone()) {\n this.holder.parentNode.style.position = 'relative';\n\n if (trimmingElement === window) {\n var preventOverflow = this.wot.getSetting('preventOverflow');\n\n if (!preventOverflow) {\n this.holder.style.overflow = 'visible';\n this.wtRootElement.style.overflow = 'visible';\n }\n } else {\n this.holder.style.width = (0, _element.getStyle)(trimmingElement, 'width');\n this.holder.style.height = (0, _element.getStyle)(trimmingElement, 'height');\n this.holder.style.overflow = '';\n }\n }\n }\n }, {\n key: 'isWorkingOnClone',\n value: function isWorkingOnClone() {\n return !!this.wot.cloneSource;\n }\n\n /**\n * Redraws the table\n *\n * @param {Boolean} fastDraw If TRUE, will try to avoid full redraw and only update the border positions. If FALSE or UNDEFINED, will perform a full redraw\n * @returns {Table}\n */\n\n }, {\n key: 'draw',\n value: function draw(fastDraw) {\n var _wot = this.wot,\n wtOverlays = _wot.wtOverlays,\n wtViewport = _wot.wtViewport;\n\n var totalRows = this.instance.getSetting('totalRows');\n var rowHeaders = this.wot.getSetting('rowHeaders').length;\n var columnHeaders = this.wot.getSetting('columnHeaders').length;\n var syncScroll = false;\n var runFastDraw = fastDraw;\n\n if (!this.isWorkingOnClone()) {\n this.holderOffset = (0, _element.offset)(this.holder);\n runFastDraw = wtViewport.createRenderCalculators(runFastDraw);\n\n if (rowHeaders && !this.wot.getSetting('fixedColumnsLeft')) {\n var leftScrollPos = wtOverlays.leftOverlay.getScrollPosition();\n var previousState = this.correctHeaderWidth;\n\n this.correctHeaderWidth = leftScrollPos > 0;\n\n if (previousState !== this.correctHeaderWidth) {\n runFastDraw = false;\n }\n }\n }\n\n if (!this.isWorkingOnClone()) {\n syncScroll = wtOverlays.prepareOverlays();\n }\n\n if (runFastDraw) {\n if (!this.isWorkingOnClone()) {\n // in case we only scrolled without redraw, update visible rows information in oldRowsCalculator\n wtViewport.createVisibleCalculators();\n }\n if (wtOverlays) {\n wtOverlays.refresh(true);\n }\n } else {\n if (this.isWorkingOnClone()) {\n this.tableOffset = this.wot.cloneSource.wtTable.tableOffset;\n } else {\n this.tableOffset = (0, _element.offset)(this.TABLE);\n }\n var startRow = void 0;\n\n if (_base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_DEBUG) || _base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_TOP) || _base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_TOP_LEFT_CORNER)) {\n startRow = 0;\n } else if (_base2.default.isOverlayTypeOf(this.instance.cloneOverlay, _base2.default.CLONE_BOTTOM) || _base2.default.isOverlayTypeOf(this.instance.cloneOverlay, _base2.default.CLONE_BOTTOM_LEFT_CORNER)) {\n startRow = Math.max(totalRows - this.wot.getSetting('fixedRowsBottom'), 0);\n } else {\n startRow = wtViewport.rowsRenderCalculator.startRow;\n }\n var startColumn = void 0;\n\n if (_base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_DEBUG) || _base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_LEFT) || _base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_TOP_LEFT_CORNER) || _base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_BOTTOM_LEFT_CORNER)) {\n startColumn = 0;\n } else {\n startColumn = wtViewport.columnsRenderCalculator.startColumn;\n }\n this.rowFilter = new _row2.default(startRow, totalRows, columnHeaders);\n this.columnFilter = new _column2.default(startColumn, this.wot.getSetting('totalColumns'), rowHeaders);\n\n this.alignOverlaysWithTrimmingContainer();\n this._doDraw(); // creates calculator after draw\n }\n this.refreshSelections(runFastDraw);\n\n if (!this.isWorkingOnClone()) {\n wtOverlays.topOverlay.resetFixedPosition();\n\n if (wtOverlays.bottomOverlay.clone) {\n wtOverlays.bottomOverlay.resetFixedPosition();\n }\n\n wtOverlays.leftOverlay.resetFixedPosition();\n\n if (wtOverlays.topLeftCornerOverlay) {\n wtOverlays.topLeftCornerOverlay.resetFixedPosition();\n }\n\n if (wtOverlays.bottomLeftCornerOverlay && wtOverlays.bottomLeftCornerOverlay.clone) {\n wtOverlays.bottomLeftCornerOverlay.resetFixedPosition();\n }\n }\n if (syncScroll) {\n wtOverlays.syncScrollWithMaster();\n }\n this.wot.drawn = true;\n\n return this;\n }\n }, {\n key: '_doDraw',\n value: function _doDraw() {\n var wtRenderer = new _tableRenderer2.default(this);\n\n wtRenderer.render();\n }\n }, {\n key: 'removeClassFromCells',\n value: function removeClassFromCells(className) {\n var nodes = this.TABLE.querySelectorAll('.' + className);\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n (0, _element.removeClass)(nodes[i], className);\n }\n }\n\n /**\n * Refresh the table selection by re-rendering Selection instances connected with that instance.\n *\n * @param {Boolean} fastDraw If fast drawing is enabled than additionally className clearing is applied.\n */\n\n }, {\n key: 'refreshSelections',\n value: function refreshSelections(fastDraw) {\n if (!this.wot.selections) {\n return;\n }\n var highlights = Array.from(this.wot.selections);\n var len = highlights.length;\n\n if (fastDraw) {\n var classesToRemove = [];\n\n for (var i = 0; i < len; i++) {\n var _highlights$i$setting = highlights[i].settings,\n highlightHeaderClassName = _highlights$i$setting.highlightHeaderClassName,\n highlightRowClassName = _highlights$i$setting.highlightRowClassName,\n highlightColumnClassName = _highlights$i$setting.highlightColumnClassName;\n\n var classNames = highlights[i].classNames;\n var classNamesLength = classNames.length;\n\n for (var j = 0; j < classNamesLength; j++) {\n if (!classesToRemove.includes(classNames[j])) {\n classesToRemove.push(classNames[j]);\n }\n }\n\n if (highlightHeaderClassName && !classesToRemove.includes(highlightHeaderClassName)) {\n classesToRemove.push(highlightHeaderClassName);\n }\n if (highlightRowClassName && !classesToRemove.includes(highlightRowClassName)) {\n classesToRemove.push(highlightRowClassName);\n }\n if (highlightColumnClassName && !classesToRemove.includes(highlightColumnClassName)) {\n classesToRemove.push(highlightColumnClassName);\n }\n }\n\n var additionalClassesToRemove = this.wot.getSetting('onBeforeRemoveCellClassNames');\n\n if (Array.isArray(additionalClassesToRemove)) {\n for (var _i = 0; _i < additionalClassesToRemove.length; _i++) {\n classesToRemove.push(additionalClassesToRemove[_i]);\n }\n }\n\n var classesToRemoveLength = classesToRemove.length;\n\n for (var _i2 = 0; _i2 < classesToRemoveLength; _i2++) {\n // there was no rerender, so we need to remove classNames by ourselves\n this.removeClassFromCells(classesToRemove[_i2]);\n }\n }\n\n for (var _i3 = 0; _i3 < len; _i3++) {\n highlights[_i3].draw(this.wot, fastDraw);\n }\n }\n\n /**\n * Get cell element at coords.\n *\n * @param {CellCoords} coords\n * @returns {HTMLElement|Number} HTMLElement on success or Number one of the exit codes on error:\n * -1 row before viewport\n * -2 row after viewport\n */\n\n }, {\n key: 'getCell',\n value: function getCell(coords) {\n var row = coords.row;\n var column = coords.col;\n var hookResult = this.wot.getSetting('onModifyGetCellCoords', row, column);\n\n if (hookResult && Array.isArray(hookResult)) {\n var _hookResult = _slicedToArray(hookResult, 2);\n\n row = _hookResult[0];\n column = _hookResult[1];\n }\n\n if (this.isRowBeforeRenderedRows(row)) {\n // row before rendered rows\n return -1;\n } else if (this.isRowAfterRenderedRows(row)) {\n // row after rendered rows\n return -2;\n }\n\n var TR = this.TBODY.childNodes[this.rowFilter.sourceToRendered(row)];\n\n if (TR) {\n return TR.childNodes[this.columnFilter.sourceColumnToVisibleRowHeadedColumn(column)];\n }\n }\n\n /**\n * getColumnHeader\n *\n * @param {Number} col Column index\n * @param {Number} [level=0] Header level (0 = most distant to the table)\n * @returns {Object} HTMLElement on success or undefined on error\n */\n\n }, {\n key: 'getColumnHeader',\n value: function getColumnHeader(col) {\n var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var TR = this.THEAD.childNodes[level];\n\n if (TR) {\n return TR.childNodes[this.columnFilter.sourceColumnToVisibleRowHeadedColumn(col)];\n }\n }\n\n /**\n * getRowHeader\n *\n * @param {Number} row Row index\n * @returns {HTMLElement} HTMLElement on success or Number one of the exit codes on error: `null table doesn't have row headers`\n */\n\n }, {\n key: 'getRowHeader',\n value: function getRowHeader(row) {\n if (this.columnFilter.sourceColumnToVisibleRowHeadedColumn(0) === 0) {\n return null;\n }\n var TR = this.TBODY.childNodes[this.rowFilter.sourceToRendered(row)];\n\n if (TR) {\n return TR.childNodes[0];\n }\n }\n\n /**\n * Returns cell coords object for a given TD (or a child element of a TD element).\n *\n * @param {HTMLTableCellElement} TD A cell DOM element (or a child of one).\n * @returns {CellCoords|null} The coordinates of the provided TD element (or the closest TD element) or null, if the provided element is not applicable.\n */\n\n }, {\n key: 'getCoords',\n value: function getCoords(TD) {\n var cellElement = TD;\n\n if (cellElement.nodeName !== 'TD' && cellElement.nodeName !== 'TH') {\n cellElement = (0, _element.closest)(cellElement, ['TD', 'TH']);\n }\n\n if (cellElement === null) {\n return null;\n }\n\n var TR = cellElement.parentNode;\n var CONTAINER = TR.parentNode;\n var row = (0, _element.index)(TR);\n var col = cellElement.cellIndex;\n\n if ((0, _element.overlayContainsElement)(_base2.default.CLONE_TOP_LEFT_CORNER, cellElement) || (0, _element.overlayContainsElement)(_base2.default.CLONE_TOP, cellElement)) {\n if (CONTAINER.nodeName === 'THEAD') {\n row -= CONTAINER.childNodes.length;\n }\n } else if (CONTAINER === this.THEAD) {\n row = this.rowFilter.visibleColHeadedRowToSourceRow(row);\n } else {\n row = this.rowFilter.renderedToSource(row);\n }\n\n if ((0, _element.overlayContainsElement)(_base2.default.CLONE_TOP_LEFT_CORNER, cellElement) || (0, _element.overlayContainsElement)(_base2.default.CLONE_LEFT, cellElement)) {\n col = this.columnFilter.offsettedTH(col);\n } else {\n col = this.columnFilter.visibleRowHeadedColumnToSourceColumn(col);\n }\n\n return new _coords2.default(row, col);\n }\n }, {\n key: 'getTrForRow',\n value: function getTrForRow(row) {\n return this.TBODY.childNodes[this.rowFilter.sourceToRendered(row)];\n }\n }, {\n key: 'getFirstRenderedRow',\n value: function getFirstRenderedRow() {\n return this.wot.wtViewport.rowsRenderCalculator.startRow;\n }\n }, {\n key: 'getFirstVisibleRow',\n value: function getFirstVisibleRow() {\n return this.wot.wtViewport.rowsVisibleCalculator.startRow;\n }\n }, {\n key: 'getFirstRenderedColumn',\n value: function getFirstRenderedColumn() {\n return this.wot.wtViewport.columnsRenderCalculator.startColumn;\n }\n\n /**\n * @returns {Number} Returns -1 if no row is visible\n */\n\n }, {\n key: 'getFirstVisibleColumn',\n value: function getFirstVisibleColumn() {\n return this.wot.wtViewport.columnsVisibleCalculator.startColumn;\n }\n\n /**\n * @returns {Number} Returns -1 if no row is visible\n */\n\n }, {\n key: 'getLastRenderedRow',\n value: function getLastRenderedRow() {\n return this.wot.wtViewport.rowsRenderCalculator.endRow;\n }\n }, {\n key: 'getLastVisibleRow',\n value: function getLastVisibleRow() {\n return this.wot.wtViewport.rowsVisibleCalculator.endRow;\n }\n }, {\n key: 'getLastRenderedColumn',\n value: function getLastRenderedColumn() {\n return this.wot.wtViewport.columnsRenderCalculator.endColumn;\n }\n\n /**\n * @returns {Number} Returns -1 if no column is visible\n */\n\n }, {\n key: 'getLastVisibleColumn',\n value: function getLastVisibleColumn() {\n return this.wot.wtViewport.columnsVisibleCalculator.endColumn;\n }\n }, {\n key: 'isRowBeforeRenderedRows',\n value: function isRowBeforeRenderedRows(row) {\n return this.rowFilter && this.rowFilter.sourceToRendered(row) < 0 && row >= 0;\n }\n }, {\n key: 'isRowAfterViewport',\n value: function isRowAfterViewport(row) {\n return this.rowFilter && this.rowFilter.sourceToRendered(row) > this.getLastVisibleRow();\n }\n }, {\n key: 'isRowAfterRenderedRows',\n value: function isRowAfterRenderedRows(row) {\n return this.rowFilter && this.rowFilter.sourceToRendered(row) > this.getLastRenderedRow();\n }\n }, {\n key: 'isColumnBeforeViewport',\n value: function isColumnBeforeViewport(column) {\n return this.columnFilter && this.columnFilter.sourceToRendered(column) < 0 && column >= 0;\n }\n }, {\n key: 'isColumnAfterViewport',\n value: function isColumnAfterViewport(column) {\n return this.columnFilter && this.columnFilter.sourceToRendered(column) > this.getLastVisibleColumn();\n }\n }, {\n key: 'isLastRowFullyVisible',\n value: function isLastRowFullyVisible() {\n return this.getLastVisibleRow() === this.getLastRenderedRow();\n }\n }, {\n key: 'isLastColumnFullyVisible',\n value: function isLastColumnFullyVisible() {\n return this.getLastVisibleColumn() === this.getLastRenderedColumn();\n }\n }, {\n key: 'getRenderedColumnsCount',\n value: function getRenderedColumnsCount() {\n var columnsCount = this.wot.wtViewport.columnsRenderCalculator.count;\n var totalColumns = this.wot.getSetting('totalColumns');\n\n if (this.wot.isOverlayName(_base2.default.CLONE_DEBUG)) {\n columnsCount = totalColumns;\n } else if (this.wot.isOverlayName(_base2.default.CLONE_LEFT) || this.wot.isOverlayName(_base2.default.CLONE_TOP_LEFT_CORNER) || this.wot.isOverlayName(_base2.default.CLONE_BOTTOM_LEFT_CORNER)) {\n return Math.min(this.wot.getSetting('fixedColumnsLeft'), totalColumns);\n }\n\n return columnsCount;\n }\n }, {\n key: 'getRenderedRowsCount',\n value: function getRenderedRowsCount() {\n var rowsCount = this.wot.wtViewport.rowsRenderCalculator.count;\n var totalRows = this.wot.getSetting('totalRows');\n\n if (this.wot.isOverlayName(_base2.default.CLONE_DEBUG)) {\n rowsCount = totalRows;\n } else if (this.wot.isOverlayName(_base2.default.CLONE_TOP) || this.wot.isOverlayName(_base2.default.CLONE_TOP_LEFT_CORNER)) {\n rowsCount = Math.min(this.wot.getSetting('fixedRowsTop'), totalRows);\n } else if (this.wot.isOverlayName(_base2.default.CLONE_BOTTOM) || this.wot.isOverlayName(_base2.default.CLONE_BOTTOM_LEFT_CORNER)) {\n rowsCount = Math.min(this.wot.getSetting('fixedRowsBottom'), totalRows);\n }\n\n return rowsCount;\n }\n }, {\n key: 'getVisibleRowsCount',\n value: function getVisibleRowsCount() {\n return this.wot.wtViewport.rowsVisibleCalculator.count;\n }\n }, {\n key: 'allRowsInViewport',\n value: function allRowsInViewport() {\n return this.wot.getSetting('totalRows') === this.getVisibleRowsCount();\n }\n\n /**\n * Checks if any of the row's cells content exceeds its initial height, and if so, returns the oversized height\n *\n * @param {Number} sourceRow\n * @returns {Number}\n */\n\n }, {\n key: 'getRowHeight',\n value: function getRowHeight(sourceRow) {\n var height = this.wot.wtSettings.settings.rowHeight(sourceRow);\n var oversizedHeight = this.wot.wtViewport.oversizedRows[sourceRow];\n\n if (oversizedHeight !== void 0) {\n height = height === void 0 ? oversizedHeight : Math.max(height, oversizedHeight);\n }\n\n return height;\n }\n }, {\n key: 'getColumnHeaderHeight',\n value: function getColumnHeaderHeight(level) {\n var height = this.wot.wtSettings.settings.defaultRowHeight;\n var oversizedHeight = this.wot.wtViewport.oversizedColumnHeaders[level];\n\n if (oversizedHeight !== void 0) {\n height = height ? Math.max(height, oversizedHeight) : oversizedHeight;\n }\n\n return height;\n }\n }, {\n key: 'getVisibleColumnsCount',\n value: function getVisibleColumnsCount() {\n return this.wot.wtViewport.columnsVisibleCalculator.count;\n }\n }, {\n key: 'allColumnsInViewport',\n value: function allColumnsInViewport() {\n return this.wot.getSetting('totalColumns') === this.getVisibleColumnsCount();\n }\n }, {\n key: 'getColumnWidth',\n value: function getColumnWidth(sourceColumn) {\n var width = this.wot.wtSettings.settings.columnWidth;\n\n if (typeof width === 'function') {\n width = width(sourceColumn);\n } else if ((typeof width === 'undefined' ? 'undefined' : _typeof(width)) === 'object') {\n width = width[sourceColumn];\n }\n\n return width || this.wot.wtSettings.settings.defaultColumnWidth;\n }\n }, {\n key: 'getStretchedColumnWidth',\n value: function getStretchedColumnWidth(sourceColumn) {\n var columnWidth = this.getColumnWidth(sourceColumn);\n var width = columnWidth === null || columnWidth === void 0 ? this.instance.wtSettings.settings.defaultColumnWidth : columnWidth;\n var calculator = this.wot.wtViewport.columnsRenderCalculator;\n\n if (calculator) {\n var stretchedWidth = calculator.getStretchedColumnWidth(sourceColumn, width);\n\n if (stretchedWidth) {\n width = stretchedWidth;\n }\n }\n\n return width;\n }\n\n /**\n * Modify row header widths provided by user in class contructor.\n *\n * @private\n */\n\n }, {\n key: '_modifyRowHeaderWidth',\n value: function _modifyRowHeaderWidth(rowHeaderWidthFactory) {\n var widths = (0, _function.isFunction)(rowHeaderWidthFactory) ? rowHeaderWidthFactory() : null;\n\n if (Array.isArray(widths)) {\n widths = [].concat(_toConsumableArray(widths));\n widths[widths.length - 1] = this._correctRowHeaderWidth(widths[widths.length - 1]);\n } else {\n widths = this._correctRowHeaderWidth(widths);\n }\n\n return widths;\n }\n\n /**\n * Correct row header width if necessary.\n *\n * @private\n */\n\n }, {\n key: '_correctRowHeaderWidth',\n value: function _correctRowHeaderWidth(width) {\n var rowHeaderWidth = width;\n\n if (typeof width !== 'number') {\n rowHeaderWidth = this.wot.getSetting('defaultColumnWidth');\n }\n if (this.correctHeaderWidth) {\n rowHeaderWidth += 1;\n }\n\n return rowHeaderWidth;\n }\n }]);\n\n return Table;\n}();\n\nexports.default = Table;\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['Performance tip: Handsontable rendered more than 1000 visible rows. Consider limiting the number \\n of rendered rows by specifying the table height and/or turning off the \"renderAllRows\" option.'], ['Performance tip: Handsontable rendered more than 1000 visible rows. Consider limiting the number \\n of rendered rows by specifying the table height and/or turning off the \"renderAllRows\" option.']);\n\nvar _element = __webpack_require__(0);\n\nvar _console = __webpack_require__(58);\n\nvar _templateLiteralTag = __webpack_require__(42);\n\nvar _base = __webpack_require__(41);\n\nvar _base2 = _interopRequireDefault(_base);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar performanceWarningAppeared = false;\n\n/**\n * @class TableRenderer\n */\n\nvar TableRenderer = function () {\n /**\n * @param {WalkontableTable} wtTable\n */\n function TableRenderer(wtTable) {\n _classCallCheck(this, TableRenderer);\n\n this.wtTable = wtTable;\n this.wot = wtTable.instance;\n\n // legacy support\n this.instance = wtTable.instance;\n\n this.rowFilter = wtTable.rowFilter;\n this.columnFilter = wtTable.columnFilter;\n\n this.TABLE = wtTable.TABLE;\n this.THEAD = wtTable.THEAD;\n this.TBODY = wtTable.TBODY;\n this.COLGROUP = wtTable.COLGROUP;\n\n this.rowHeaders = [];\n this.rowHeaderCount = 0;\n this.columnHeaders = [];\n this.columnHeaderCount = 0;\n this.fixedRowsTop = 0;\n this.fixedRowsBottom = 0;\n }\n\n /**\n *\n */\n\n\n _createClass(TableRenderer, [{\n key: 'render',\n value: function render() {\n if (!this.wtTable.isWorkingOnClone()) {\n var skipRender = {};\n this.wot.getSetting('beforeDraw', true, skipRender);\n\n if (skipRender.skipRender === true) {\n return;\n }\n }\n\n this.rowHeaders = this.wot.getSetting('rowHeaders');\n this.rowHeaderCount = this.rowHeaders.length;\n this.fixedRowsTop = this.wot.getSetting('fixedRowsTop');\n this.fixedRowsBottom = this.wot.getSetting('fixedRowsBottom');\n this.columnHeaders = this.wot.getSetting('columnHeaders');\n this.columnHeaderCount = this.columnHeaders.length;\n\n var columnsToRender = this.wtTable.getRenderedColumnsCount();\n var rowsToRender = this.wtTable.getRenderedRowsCount();\n var totalColumns = this.wot.getSetting('totalColumns');\n var totalRows = this.wot.getSetting('totalRows');\n var workspaceWidth = void 0;\n var adjusted = false;\n\n if (_base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_BOTTOM) || _base2.default.isOverlayTypeOf(this.wot.cloneOverlay, _base2.default.CLONE_BOTTOM_LEFT_CORNER)) {\n\n // do NOT render headers on the bottom or bottom-left corner overlay\n this.columnHeaders = [];\n this.columnHeaderCount = 0;\n }\n\n if (totalColumns >= 0) {\n // prepare COL and TH elements for rendering\n this.adjustAvailableNodes();\n adjusted = true;\n\n // adjust column widths according to user widths settings\n this.renderColumnHeaders();\n\n // Render table rows\n this.renderRows(totalRows, rowsToRender, columnsToRender);\n\n if (!this.wtTable.isWorkingOnClone()) {\n workspaceWidth = this.wot.wtViewport.getWorkspaceWidth();\n this.wot.wtViewport.containerWidth = null;\n }\n\n this.adjustColumnWidths(columnsToRender);\n this.markOversizedColumnHeaders();\n this.adjustColumnHeaderHeights();\n }\n\n if (!adjusted) {\n this.adjustAvailableNodes();\n }\n this.removeRedundantRows(rowsToRender);\n\n if (!this.wtTable.isWorkingOnClone() || this.wot.isOverlayName(_base2.default.CLONE_BOTTOM)) {\n this.markOversizedRows();\n }\n if (!this.wtTable.isWorkingOnClone()) {\n this.wot.wtViewport.createVisibleCalculators();\n this.wot.wtOverlays.refresh(false);\n\n this.wot.wtOverlays.applyToDOM();\n\n var hiderWidth = (0, _element.outerWidth)(this.wtTable.hider);\n var tableWidth = (0, _element.outerWidth)(this.wtTable.TABLE);\n\n if (hiderWidth !== 0 && tableWidth !== hiderWidth) {\n // Recalculate the column widths, if width changes made in the overlays removed the scrollbar, thus changing the viewport width.\n this.adjustColumnWidths(columnsToRender);\n }\n\n if (workspaceWidth !== this.wot.wtViewport.getWorkspaceWidth()) {\n // workspace width changed though to shown/hidden vertical scrollbar. Let's reapply stretching\n this.wot.wtViewport.containerWidth = null;\n\n var firstRendered = this.wtTable.getFirstRenderedColumn();\n var lastRendered = this.wtTable.getLastRenderedColumn();\n var defaultColumnWidth = this.wot.getSetting('defaultColumnWidth');\n var rowHeaderWidthSetting = this.wot.getSetting('rowHeaderWidth');\n\n rowHeaderWidthSetting = this.instance.getSetting('onModifyRowHeaderWidth', rowHeaderWidthSetting);\n\n if (rowHeaderWidthSetting !== null && rowHeaderWidthSetting !== void 0) {\n for (var i = 0; i < this.rowHeaderCount; i++) {\n var width = Array.isArray(rowHeaderWidthSetting) ? rowHeaderWidthSetting[i] : rowHeaderWidthSetting;\n\n width = width === null || width === void 0 ? defaultColumnWidth : width;\n\n this.COLGROUP.childNodes[i].style.width = width + 'px';\n }\n }\n\n for (var _i = firstRendered; _i < lastRendered; _i++) {\n var _width = this.wtTable.getStretchedColumnWidth(_i);\n var renderedIndex = this.columnFilter.sourceToRendered(_i);\n\n this.COLGROUP.childNodes[renderedIndex + this.rowHeaderCount].style.width = _width + 'px';\n }\n }\n\n this.wot.getSetting('onDraw', true);\n } else if (this.wot.isOverlayName(_base2.default.CLONE_BOTTOM)) {\n this.wot.cloneSource.wtOverlays.adjustElementsSize();\n }\n }\n\n /**\n * @param {Number} renderedRowsCount\n */\n\n }, {\n key: 'removeRedundantRows',\n value: function removeRedundantRows(renderedRowsCount) {\n while (this.wtTable.tbodyChildrenLength > renderedRowsCount) {\n this.TBODY.removeChild(this.TBODY.lastChild);\n this.wtTable.tbodyChildrenLength -= 1;\n }\n }\n\n /**\n * @param {Number} totalRows\n * @param {Number} rowsToRender\n * @param {Number} columnsToRender\n */\n\n }, {\n key: 'renderRows',\n value: function renderRows(totalRows, rowsToRender, columnsToRender) {\n var TR = void 0;\n var visibleRowIndex = 0;\n var sourceRowIndex = this.rowFilter.renderedToSource(visibleRowIndex);\n var isWorkingOnClone = this.wtTable.isWorkingOnClone();\n\n while (sourceRowIndex < totalRows && sourceRowIndex >= 0) {\n if (!performanceWarningAppeared && visibleRowIndex > 1000) {\n performanceWarningAppeared = true;\n (0, _console.warn)((0, _templateLiteralTag.toSingleLine)(_templateObject));\n }\n if (rowsToRender !== void 0 && visibleRowIndex === rowsToRender) {\n // We have as much rows as needed for this clone\n break;\n }\n TR = this.getOrCreateTrForRow(visibleRowIndex, TR);\n\n // Render row headers\n this.renderRowHeaders(sourceRowIndex, TR);\n // Add and/or remove TDs to TR to match the desired number\n this.adjustColumns(TR, columnsToRender + this.rowHeaderCount);\n // Render cells\n this.renderCells(sourceRowIndex, TR, columnsToRender);\n\n if (!isWorkingOnClone ||\n // Necessary to refresh oversized row heights after editing cell in overlays\n this.wot.isOverlayName(_base2.default.CLONE_BOTTOM)) {\n // Reset the oversized row cache for this row\n this.resetOversizedRow(sourceRowIndex);\n }\n\n if (TR.firstChild) {\n // if I have 2 fixed columns with one-line content and the 3rd column has a multiline content, this is\n // the way to make sure that the overlay will has same row height\n var height = this.wot.wtTable.getRowHeight(sourceRowIndex);\n\n if (height) {\n // Decrease height. 1 pixel will be \"replaced\" by 1px border top\n height -= 1;\n TR.firstChild.style.height = height + 'px';\n } else {\n TR.firstChild.style.height = '';\n }\n }\n visibleRowIndex += 1;\n sourceRowIndex = this.rowFilter.renderedToSource(visibleRowIndex);\n }\n }\n\n /**\n * Reset the oversized row cache for the provided index\n *\n * @param {Number} sourceRow Row index\n */\n\n }, {\n key: 'resetOversizedRow',\n value: function resetOversizedRow(sourceRow) {\n if (this.wot.getSetting('externalRowCalculator')) {\n return;\n }\n if (this.wot.wtViewport.oversizedRows && this.wot.wtViewport.oversizedRows[sourceRow]) {\n this.wot.wtViewport.oversizedRows[sourceRow] = void 0;\n }\n }\n\n /**\n * Check if any of the rendered rows is higher than expected, and if so, cache them\n */\n\n }, {\n key: 'markOversizedRows',\n value: function markOversizedRows() {\n if (this.wot.getSetting('externalRowCalculator')) {\n return;\n }\n var rowCount = this.instance.wtTable.TBODY.childNodes.length;\n var expectedTableHeight = rowCount * this.instance.wtSettings.settings.defaultRowHeight;\n var actualTableHeight = (0, _element.innerHeight)(this.instance.wtTable.TBODY) - 1;\n var previousRowHeight = void 0;\n var rowInnerHeight = void 0;\n var sourceRowIndex = void 0;\n var currentTr = void 0;\n var rowHeader = void 0;\n\n if (expectedTableHeight === actualTableHeight && !this.instance.getSetting('fixedRowsBottom')) {\n // If the actual table height equals rowCount * default single row height, no row is oversized -> no need to iterate over them\n return;\n }\n\n while (rowCount) {\n rowCount -= 1;\n sourceRowIndex = this.instance.wtTable.rowFilter.renderedToSource(rowCount);\n previousRowHeight = this.instance.wtTable.getRowHeight(sourceRowIndex);\n currentTr = this.instance.wtTable.getTrForRow(sourceRowIndex);\n rowHeader = currentTr.querySelector('th');\n\n if (rowHeader) {\n rowInnerHeight = (0, _element.innerHeight)(rowHeader);\n } else {\n rowInnerHeight = (0, _element.innerHeight)(currentTr) - 1;\n }\n\n if (!previousRowHeight && this.instance.wtSettings.settings.defaultRowHeight < rowInnerHeight || previousRowHeight < rowInnerHeight) {\n rowInnerHeight += 1;\n this.instance.wtViewport.oversizedRows[sourceRowIndex] = rowInnerHeight;\n }\n }\n }\n\n /**\n * Check if any of the rendered columns is higher than expected, and if so, cache them.\n */\n\n }, {\n key: 'markOversizedColumnHeaders',\n value: function markOversizedColumnHeaders() {\n var overlayName = this.wot.getOverlayName();\n\n if (!this.columnHeaderCount || this.wot.wtViewport.hasOversizedColumnHeadersMarked[overlayName] || this.wtTable.isWorkingOnClone()) {\n return;\n }\n var columnCount = this.wtTable.getRenderedColumnsCount();\n\n for (var i = 0; i < this.columnHeaderCount; i++) {\n for (var renderedColumnIndex = -1 * this.rowHeaderCount; renderedColumnIndex < columnCount; renderedColumnIndex++) {\n this.markIfOversizedColumnHeader(renderedColumnIndex);\n }\n }\n this.wot.wtViewport.hasOversizedColumnHeadersMarked[overlayName] = true;\n }\n\n /**\n *\n */\n\n }, {\n key: 'adjustColumnHeaderHeights',\n value: function adjustColumnHeaderHeights() {\n var columnHeaders = this.wot.getSetting('columnHeaders');\n var children = this.wot.wtTable.THEAD.childNodes;\n var oversizedColumnHeaders = this.wot.wtViewport.oversizedColumnHeaders;\n\n for (var i = 0, len = columnHeaders.length; i < len; i++) {\n if (oversizedColumnHeaders[i]) {\n if (!children[i] || children[i].childNodes.length === 0) {\n return;\n }\n children[i].childNodes[0].style.height = oversizedColumnHeaders[i] + 'px';\n }\n }\n }\n\n /**\n * Check if column header for the specified column is higher than expected, and if so, cache it\n *\n * @param {Number} col Index of column\n */\n\n }, {\n key: 'markIfOversizedColumnHeader',\n value: function markIfOversizedColumnHeader(col) {\n var sourceColIndex = this.wot.wtTable.columnFilter.renderedToSource(col);\n var level = this.columnHeaderCount;\n var defaultRowHeight = this.wot.wtSettings.settings.defaultRowHeight;\n var previousColHeaderHeight = void 0;\n var currentHeader = void 0;\n var currentHeaderHeight = void 0;\n var columnHeaderHeightSetting = this.wot.getSetting('columnHeaderHeight') || [];\n\n while (level) {\n level -= 1;\n\n previousColHeaderHeight = this.wot.wtTable.getColumnHeaderHeight(level);\n currentHeader = this.wot.wtTable.getColumnHeader(sourceColIndex, level);\n\n if (!currentHeader) {\n /* eslint-disable no-continue */\n continue;\n }\n currentHeaderHeight = (0, _element.innerHeight)(currentHeader);\n\n if (!previousColHeaderHeight && defaultRowHeight < currentHeaderHeight || previousColHeaderHeight < currentHeaderHeight) {\n this.wot.wtViewport.oversizedColumnHeaders[level] = currentHeaderHeight;\n }\n\n if (Array.isArray(columnHeaderHeightSetting)) {\n if (columnHeaderHeightSetting[level] !== null && columnHeaderHeightSetting[level] !== void 0) {\n this.wot.wtViewport.oversizedColumnHeaders[level] = columnHeaderHeightSetting[level];\n }\n } else if (!isNaN(columnHeaderHeightSetting)) {\n this.wot.wtViewport.oversizedColumnHeaders[level] = columnHeaderHeightSetting;\n }\n\n if (this.wot.wtViewport.oversizedColumnHeaders[level] < (columnHeaderHeightSetting[level] || columnHeaderHeightSetting)) {\n this.wot.wtViewport.oversizedColumnHeaders[level] = columnHeaderHeightSetting[level] || columnHeaderHeightSetting;\n }\n }\n }\n\n /**\n * @param {Number} sourceRowIndex\n * @param {HTMLTableRowElement} TR\n * @param {Number} columnsToRender\n * @returns {HTMLTableCellElement}\n */\n\n }, {\n key: 'renderCells',\n value: function renderCells(sourceRowIndex, TR, columnsToRender) {\n var TD = void 0;\n var sourceColIndex = void 0;\n\n for (var visibleColIndex = 0; visibleColIndex < columnsToRender; visibleColIndex++) {\n sourceColIndex = this.columnFilter.renderedToSource(visibleColIndex);\n\n if (visibleColIndex === 0) {\n TD = TR.childNodes[this.columnFilter.sourceColumnToVisibleRowHeadedColumn(sourceColIndex)];\n } else {\n TD = TD.nextSibling; // http://jsperf.com/nextsibling-vs-indexed-childnodes\n }\n // If the number of headers has been reduced, we need to replace excess TH with TD\n if (TD.nodeName === 'TH') {\n TD = replaceThWithTd(TD, TR);\n }\n if (!(0, _element.hasClass)(TD, 'hide')) {\n TD.className = '';\n }\n TD.removeAttribute('style');\n this.wot.wtSettings.settings.cellRenderer(sourceRowIndex, sourceColIndex, TD);\n }\n\n return TD;\n }\n\n /**\n * @param {Number} columnsToRender Number of columns to render.\n */\n\n }, {\n key: 'adjustColumnWidths',\n value: function adjustColumnWidths(columnsToRender) {\n var scrollbarCompensation = 0;\n var sourceInstance = this.wot.cloneSource ? this.wot.cloneSource : this.wot;\n var mainHolder = sourceInstance.wtTable.holder;\n var defaultColumnWidth = this.wot.getSetting('defaultColumnWidth');\n var rowHeaderWidthSetting = this.wot.getSetting('rowHeaderWidth');\n\n if (mainHolder.offsetHeight < mainHolder.scrollHeight) {\n scrollbarCompensation = (0, _element.getScrollbarWidth)();\n }\n this.wot.wtViewport.columnsRenderCalculator.refreshStretching(this.wot.wtViewport.getViewportWidth() - scrollbarCompensation);\n\n rowHeaderWidthSetting = this.instance.getSetting('onModifyRowHeaderWidth', rowHeaderWidthSetting);\n\n if (rowHeaderWidthSetting !== null && rowHeaderWidthSetting !== void 0) {\n for (var i = 0; i < this.rowHeaderCount; i++) {\n var width = Array.isArray(rowHeaderWidthSetting) ? rowHeaderWidthSetting[i] : rowHeaderWidthSetting;\n\n width = width === null || width === void 0 ? defaultColumnWidth : width;\n\n this.COLGROUP.childNodes[i].style.width = width + 'px';\n }\n }\n\n for (var renderedColIndex = 0; renderedColIndex < columnsToRender; renderedColIndex++) {\n var _width2 = this.wtTable.getStretchedColumnWidth(this.columnFilter.renderedToSource(renderedColIndex));\n\n this.COLGROUP.childNodes[renderedColIndex + this.rowHeaderCount].style.width = _width2 + 'px';\n }\n }\n\n /**\n * @param {HTMLTableCellElement} TR\n */\n\n }, {\n key: 'appendToTbody',\n value: function appendToTbody(TR) {\n this.TBODY.appendChild(TR);\n this.wtTable.tbodyChildrenLength += 1;\n }\n\n /**\n * @param {Number} rowIndex\n * @param {HTMLTableRowElement} currentTr\n * @returns {HTMLTableCellElement}\n */\n\n }, {\n key: 'getOrCreateTrForRow',\n value: function getOrCreateTrForRow(rowIndex, currentTr) {\n var TR = void 0;\n\n if (rowIndex >= this.wtTable.tbodyChildrenLength) {\n TR = this.createRow();\n this.appendToTbody(TR);\n } else if (rowIndex === 0) {\n TR = this.TBODY.firstChild;\n } else {\n // http://jsperf.com/nextsibling-vs-indexed-childnodes\n TR = currentTr.nextSibling;\n }\n if (TR.className) {\n TR.removeAttribute('class');\n }\n\n return TR;\n }\n\n /**\n * @returns {HTMLTableCellElement}\n */\n\n }, {\n key: 'createRow',\n value: function createRow() {\n var TR = document.createElement('TR');\n\n for (var visibleColIndex = 0; visibleColIndex < this.rowHeaderCount; visibleColIndex++) {\n TR.appendChild(document.createElement('TH'));\n }\n\n return TR;\n }\n\n /**\n * @param {Number} row\n * @param {Number} col\n * @param {HTMLTableCellElement} TH\n */\n\n }, {\n key: 'renderRowHeader',\n value: function renderRowHeader(row, col, TH) {\n TH.className = '';\n TH.removeAttribute('style');\n this.rowHeaders[col](row, TH, col);\n }\n\n /**\n * @param {Number} row\n * @param {HTMLTableCellElement} TR\n */\n\n }, {\n key: 'renderRowHeaders',\n value: function renderRowHeaders(row, TR) {\n for (var TH = TR.firstChild, visibleColIndex = 0; visibleColIndex < this.rowHeaderCount; visibleColIndex++) {\n // If the number of row headers increased we need to create TH or replace an existing TD node with TH\n if (!TH) {\n TH = document.createElement('TH');\n TR.appendChild(TH);\n } else if (TH.nodeName === 'TD') {\n TH = replaceTdWithTh(TH, TR);\n }\n this.renderRowHeader(row, visibleColIndex, TH);\n // http://jsperf.com/nextsibling-vs-indexed-childnodes\n TH = TH.nextSibling;\n }\n }\n\n /**\n * Adjust the number of COL and TH elements to match the number of columns and headers that need to be rendered\n */\n\n }, {\n key: 'adjustAvailableNodes',\n value: function adjustAvailableNodes() {\n this.adjustColGroups();\n this.adjustThead();\n }\n\n /**\n * Renders the column headers\n */\n\n }, {\n key: 'renderColumnHeaders',\n value: function renderColumnHeaders() {\n if (!this.columnHeaderCount) {\n return;\n }\n var columnCount = this.wtTable.getRenderedColumnsCount();\n\n for (var i = 0; i < this.columnHeaderCount; i++) {\n var TR = this.getTrForColumnHeaders(i);\n\n for (var renderedColumnIndex = -1 * this.rowHeaderCount; renderedColumnIndex < columnCount; renderedColumnIndex++) {\n var sourceCol = this.columnFilter.renderedToSource(renderedColumnIndex);\n\n this.renderColumnHeader(i, sourceCol, TR.childNodes[renderedColumnIndex + this.rowHeaderCount]);\n }\n }\n }\n\n /**\n * Adjusts the number of COL elements to match the number of columns that need to be rendered\n */\n\n }, {\n key: 'adjustColGroups',\n value: function adjustColGroups() {\n var columnCount = this.wtTable.getRenderedColumnsCount();\n\n while (this.wtTable.colgroupChildrenLength < columnCount + this.rowHeaderCount) {\n this.COLGROUP.appendChild(document.createElement('COL'));\n this.wtTable.colgroupChildrenLength += 1;\n }\n while (this.wtTable.colgroupChildrenLength > columnCount + this.rowHeaderCount) {\n this.COLGROUP.removeChild(this.COLGROUP.lastChild);\n this.wtTable.colgroupChildrenLength -= 1;\n }\n if (this.rowHeaderCount) {\n (0, _element.addClass)(this.COLGROUP.childNodes[0], 'rowHeader');\n }\n }\n\n /**\n * Adjusts the number of TH elements in THEAD to match the number of headers and columns that need to be rendered\n */\n\n }, {\n key: 'adjustThead',\n value: function adjustThead() {\n var columnCount = this.wtTable.getRenderedColumnsCount();\n var TR = this.THEAD.firstChild;\n\n if (this.columnHeaders.length) {\n for (var i = 0, len = this.columnHeaders.length; i < len; i++) {\n TR = this.THEAD.childNodes[i];\n\n if (!TR) {\n TR = document.createElement('TR');\n this.THEAD.appendChild(TR);\n }\n this.theadChildrenLength = TR.childNodes.length;\n\n while (this.theadChildrenLength < columnCount + this.rowHeaderCount) {\n TR.appendChild(document.createElement('TH'));\n this.theadChildrenLength += 1;\n }\n while (this.theadChildrenLength > columnCount + this.rowHeaderCount) {\n TR.removeChild(TR.lastChild);\n this.theadChildrenLength -= 1;\n }\n }\n var theadChildrenLength = this.THEAD.childNodes.length;\n\n if (theadChildrenLength > this.columnHeaders.length) {\n for (var _i2 = this.columnHeaders.length; _i2 < theadChildrenLength; _i2++) {\n this.THEAD.removeChild(this.THEAD.lastChild);\n }\n }\n } else if (TR) {\n (0, _element.empty)(TR);\n }\n }\n\n /**\n * @param {Number} index\n * @returns {HTMLTableCellElement}\n */\n\n }, {\n key: 'getTrForColumnHeaders',\n value: function getTrForColumnHeaders(index) {\n return this.THEAD.childNodes[index];\n }\n\n /**\n * @param {Number} row\n * @param {Number} col\n * @param {HTMLTableCellElement} TH\n * @returns {*}\n */\n\n }, {\n key: 'renderColumnHeader',\n value: function renderColumnHeader(row, col, TH) {\n TH.className = '';\n TH.removeAttribute('style');\n\n return this.columnHeaders[row](col, TH, row);\n }\n\n /**\n * Add and/or remove the TDs to match the desired number\n *\n * @param {HTMLTableCellElement} TR Table row in question\n * @param {Number} desiredCount The desired number of TDs in the TR\n */\n\n }, {\n key: 'adjustColumns',\n value: function adjustColumns(TR, desiredCount) {\n var count = TR.childNodes.length;\n\n while (count < desiredCount) {\n var TD = document.createElement('TD');\n\n TR.appendChild(TD);\n count += 1;\n }\n while (count > desiredCount) {\n TR.removeChild(TR.lastChild);\n count -= 1;\n }\n }\n\n /**\n * @param {Number} columnsToRender\n */\n\n }, {\n key: 'removeRedundantColumns',\n value: function removeRedundantColumns(columnsToRender) {\n while (this.wtTable.tbodyChildrenLength > columnsToRender) {\n this.TBODY.removeChild(this.TBODY.lastChild);\n this.wtTable.tbodyChildrenLength -= 1;\n }\n }\n }]);\n\n return TableRenderer;\n}();\n\nfunction replaceTdWithTh(TD, TR) {\n var TH = document.createElement('TH');\n\n TR.insertBefore(TH, TD);\n TR.removeChild(TD);\n\n return TH;\n}\n\nfunction replaceThWithTd(TH, TR) {\n var TD = document.createElement('TD');\n\n TR.insertBefore(TD, TH);\n TR.removeChild(TH);\n\n return TD;\n}\n\nexports.default = TableRenderer;\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _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; }; }();\n\nvar _element = __webpack_require__(0);\n\nvar _object = __webpack_require__(1);\n\nvar _eventManager = __webpack_require__(5);\n\nvar _eventManager2 = _interopRequireDefault(_eventManager);\n\nvar _viewportColumns = __webpack_require__(176);\n\nvar _viewportColumns2 = _interopRequireDefault(_viewportColumns);\n\nvar _viewportRows = __webpack_require__(177);\n\nvar _viewportRows2 = _interopRequireDefault(_viewportRows);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * @class Viewport\n */\nvar Viewport = function () {\n /**\n * @param wotInstance\n */\n function Viewport(wotInstance) {\n var _this = this;\n\n _classCallCheck(this, Viewport);\n\n this.wot = wotInstance;\n // legacy support\n this.instance = this.wot;\n\n this.oversizedRows = [];\n this.oversizedColumnHeaders = [];\n this.hasOversizedColumnHeadersMarked = {};\n this.clientHeight = 0;\n this.containerWidth = NaN;\n this.rowHeaderWidth = NaN;\n this.rowsVisibleCalculator = null;\n this.columnsVisibleCalculator = null;\n\n this.eventManager = new _eventManager2.default(this.wot);\n this.eventManager.addEventListener(window, 'resize', function () {\n _this.clientHeight = _this.getWorkspaceHeight();\n });\n }\n\n /**\n * @returns {number}\n */\n\n\n _createClass(Viewport, [{\n key: 'getWorkspaceHeight',\n value: function getWorkspaceHeight() {\n var trimmingContainer = this.instance.wtOverlays.topOverlay.trimmingContainer;\n var elemHeight = void 0;\n var height = 0;\n\n if (trimmingContainer === window) {\n height = document.documentElement.clientHeight;\n } else {\n elemHeight = (0, _element.outerHeight)(trimmingContainer);\n // returns height without DIV scrollbar\n height = elemHeight > 0 && trimmingContainer.clientHeight > 0 ? trimmingContainer.clientHeight : Infinity;\n }\n\n return height;\n }\n }, {\n key: 'getWorkspaceWidth',\n value: function getWorkspaceWidth() {\n var width = void 0;\n var totalColumns = this.wot.getSetting('totalColumns');\n var trimmingContainer = this.instance.wtOverlays.leftOverlay.trimmingContainer;\n var overflow = void 0;\n var stretchSetting = this.wot.getSetting('stretchH');\n var docOffsetWidth = document.documentElement.offsetWidth;\n var preventOverflow = this.wot.getSetting('preventOverflow');\n\n if (preventOverflow) {\n return (0, _element.outerWidth)(this.instance.wtTable.wtRootElement);\n }\n\n if (this.wot.getSetting('freezeOverlays')) {\n width = Math.min(docOffsetWidth - this.getWorkspaceOffset().left, docOffsetWidth);\n } else {\n width = Math.min(this.getContainerFillWidth(), docOffsetWidth - this.getWorkspaceOffset().left, docOffsetWidth);\n }\n\n if (trimmingContainer === window && totalColumns > 0 && this.sumColumnWidths(0, totalColumns - 1) > width) {\n // in case sum of column widths is higher than available stylesheet width, let's assume using the whole window\n // otherwise continue below, which will allow stretching\n // this is used in `scroll_window.html`\n // TODO test me\n return document.documentElement.clientWidth;\n }\n\n if (trimmingContainer !== window) {\n overflow = (0, _element.getStyle)(this.instance.wtOverlays.leftOverlay.trimmingContainer, 'overflow');\n\n if (overflow === 'scroll' || overflow === 'hidden' || overflow === 'auto') {\n // this is used in `scroll.html`\n // TODO test me\n return Math.max(width, trimmingContainer.clientWidth);\n }\n }\n\n if (stretchSetting === 'none' || !stretchSetting) {\n // if no stretching is used, return the maximum used workspace width\n return Math.max(width, (0, _element.outerWidth)(this.instance.wtTable.TABLE));\n }\n\n // if stretching is used, return the actual container width, so the columns can fit inside it\n return width;\n }\n\n /**\n * Checks if viewport has vertical scroll\n *\n * @returns {Boolean}\n */\n\n }, {\n key: 'hasVerticalScroll',\n value: function hasVerticalScroll() {\n return this.getWorkspaceActualHeight() > this.getWorkspaceHeight();\n }\n\n /**\n * Checks if viewport has horizontal scroll\n *\n * @returns {Boolean}\n */\n\n }, {\n key: 'hasHorizontalScroll',\n value: function hasHorizontalScroll() {\n return this.getWorkspaceActualWidth() > this.getWorkspaceWidth();\n }\n\n /**\n * @param from\n * @param length\n * @returns {Number}\n */\n\n }, {\n key: 'sumColumnWidths',\n value: function sumColumnWidths(from, length) {\n var wtTable = this.wot.wtTable;\n var sum = 0;\n var column = from;\n\n while (column < length) {\n sum += wtTable.getColumnWidth(column);\n column += 1;\n }\n\n return sum;\n }\n\n /**\n * @returns {Number}\n */\n\n }, {\n key: 'getContainerFillWidth',\n value: function getContainerFillWidth() {\n if (this.containerWidth) {\n return this.containerWidth;\n }\n\n var mainContainer = this.instance.wtTable.holder;\n var dummyElement = document.createElement('div');\n\n dummyElement.style.width = '100%';\n dummyElement.style.height = '1px';\n mainContainer.appendChild(dummyElement);\n\n var fillWidth = dummyElement.offsetWidth;\n\n this.containerWidth = fillWidth;\n mainContainer.removeChild(dummyElement);\n\n return fillWidth;\n }\n\n /**\n * @returns {Number}\n */\n\n }, {\n key: 'getWorkspaceOffset',\n value: function getWorkspaceOffset() {\n return (0, _element.offset)(this.wot.wtTable.TABLE);\n }\n\n /**\n * @returns {Number}\n */\n\n }, {\n key: 'getWorkspaceActualHeight',\n value: function getWorkspaceActualHeight() {\n return (0, _element.outerHeight)(this.wot.wtTable.TABLE);\n }\n\n /**\n * @returns {Number}\n */\n\n }, {\n key: 'getWorkspaceActualWidth',\n value: function getWorkspaceActualWidth() {\n return (0, _element.outerWidth)(this.wot.wtTable.TABLE) || (0, _element.outerWidth)(this.wot.wtTable.TBODY) || (0, _element.outerWidth)(this.wot.wtTable.THEAD); // IE8 reports 0 as <table> offsetWidth;\n }\n\n /**\n * @returns {Number}\n */\n\n }, {\n key: 'getColumnHeaderHeight',\n value: function getColumnHeaderHeight() {\n if (isNaN(this.columnHeaderHeight)) {\n this.columnHeaderHeight = (0, _element.outerHeight)(this.wot.wtTable.THEAD);\n }\n\n return this.columnHeaderHeight;\n }\n\n /**\n * @returns {Number}\n */\n\n }, {\n key: 'getViewportHeight',\n value: function getViewportHeight() {\n var containerHeight = this.getWorkspaceHeight();\n\n if (containerHeight === Infinity) {\n return containerHeight;\n }\n\n var columnHeaderHeight = this.getColumnHeaderHeight();\n\n if (columnHeaderHeight > 0) {\n containerHeight -= columnHeaderHeight;\n }\n\n return containerHeight;\n }\n\n /**\n * @returns {Number}\n */\n\n }, {\n key: 'getRowHeaderWidth',\n value: function getRowHeaderWidth() {\n var rowHeadersHeightSetting = this.instance.getSetting('rowHeaderWidth');\n var rowHeaders = this.instance.getSetting('rowHeaders');\n\n if (rowHeadersHeightSetting) {\n this.rowHeaderWidth = 0;\n\n for (var i = 0, len = rowHeaders.length; i < len; i++) {\n this.rowHeaderWidth += rowHeadersHeightSetting[i] || rowHeadersHeightSetting;\n }\n }\n\n if (this.wot.cloneSource) {\n return this.wot.cloneSource.wtViewport.getRowHeaderWidth();\n }\n\n if (isNaN(this.rowHeaderWidth)) {\n\n if (rowHeaders.length) {\n var TH = this.instance.wtTable.TABLE.querySelector('TH');\n this.rowHeaderWidth = 0;\n\n for (var _i = 0, _len = rowHeaders.length; _i < _len; _i++) {\n if (TH) {\n this.rowHeaderWidth += (0, _element.outerWidth)(TH);\n TH = TH.nextSibling;\n } else {\n // yes this is a cheat but it worked like that before, just taking assumption from CSS instead of measuring.\n // TODO: proper fix\n this.rowHeaderWidth += 50;\n }\n }\n } else {\n this.rowHeaderWidth = 0;\n }\n }\n\n this.rowHeaderWidth = this.instance.getSetting('onModifyRowHeaderWidth', this.rowHeaderWidth) || this.rowHeaderWidth;\n\n return this.rowHeaderWidth;\n }\n\n /**\n * @returns {Number}\n */\n\n }, {\n key: 'getViewportWidth',\n value: function getViewportWidth() {\n var containerWidth = this.getWorkspaceWidth();\n\n if (containerWidth === Infinity) {\n return containerWidth;\n }\n\n var rowHeaderWidth = this.getRowHeaderWidth();\n\n if (rowHeaderWidth > 0) {\n return containerWidth - rowHeaderWidth;\n }\n\n return containerWidth;\n }\n\n /**\n * Creates:\n * - rowsRenderCalculator (before draw, to qualify rows for rendering)\n * - rowsVisibleCalculator (after draw, to measure which rows are actually visible)\n *\n * @returns {ViewportRowsCalculator}\n */\n\n }, {\n key: 'createRowsCalculator',\n value: function createRowsCalculator() {\n var _this2 = this;\n\n var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var height = void 0;\n var scrollbarHeight = void 0;\n var fixedRowsHeight = void 0;\n\n this.rowHeaderWidth = NaN;\n\n if (this.wot.wtSettings.settings.renderAllRows && !visible) {\n height = Infinity;\n } else {\n height = this.getViewportHeight();\n }\n\n var pos = this.wot.wtOverlays.topOverlay.getScrollPosition() - this.wot.wtOverlays.topOverlay.getTableParentOffset();\n\n if (pos < 0) {\n pos = 0;\n }\n\n var fixedRowsTop = this.wot.getSetting('fixedRowsTop');\n var fixedRowsBottom = this.wot.getSetting('fixedRowsBottom');\n var totalRows = this.wot.getSetting('totalRows');\n\n if (fixedRowsTop) {\n fixedRowsHeight = this.wot.wtOverlays.topOverlay.sumCellSizes(0, fixedRowsTop);\n pos += fixedRowsHeight;\n height -= fixedRowsHeight;\n }\n\n if (fixedRowsBottom && this.wot.wtOverlays.bottomOverlay.clone) {\n fixedRowsHeight = this.wot.wtOverlays.bottomOverlay.sumCellSizes(totalRows - fixedRowsBottom, totalRows);\n\n height -= fixedRowsHeight;\n }\n\n if (this.wot.wtTable.holder.clientHeight === this.wot.wtTable.holder.offsetHeight) {\n scrollbarHeight = 0;\n } else {\n scrollbarHeight = (0, _element.getScrollbarWidth)();\n }\n\n return new _viewportRows2.default(height, pos, this.wot.getSetting('totalRows'), function (sourceRow) {\n return _this2.wot.wtTable.getRowHeight(sourceRow);\n }, visible ? null : this.wot.wtSettings.settings.viewportRowCalculatorOverride, visible, scrollbarHeight);\n }\n\n /**\n * Creates:\n * - columnsRenderCalculator (before draw, to qualify columns for rendering)\n * - columnsVisibleCalculator (after draw, to measure which columns are actually visible)\n *\n * @returns {ViewportRowsCalculator}\n */\n\n }, {\n key: 'createColumnsCalculator',\n value: function createColumnsCalculator() {\n var _this3 = this;\n\n var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var width = this.getViewportWidth();\n var pos = this.wot.wtOverlays.leftOverlay.getScrollPosition() - this.wot.wtOverlays.leftOverlay.getTableParentOffset();\n\n this.columnHeaderHeight = NaN;\n\n if (pos < 0) {\n pos = 0;\n }\n\n var fixedColumnsLeft = this.wot.getSetting('fixedColumnsLeft');\n\n if (fixedColumnsLeft) {\n var fixedColumnsWidth = this.wot.wtOverlays.leftOverlay.sumCellSizes(0, fixedColumnsLeft);\n pos += fixedColumnsWidth;\n width -= fixedColumnsWidth;\n }\n if (this.wot.wtTable.holder.clientWidth !== this.wot.wtTable.holder.offsetWidth) {\n width -= (0, _element.getScrollbarWidth)();\n }\n\n return new _viewportColumns2.default(width, pos, this.wot.getSetting('totalColumns'), function (sourceCol) {\n return _this3.wot.wtTable.getColumnWidth(sourceCol);\n }, visible ? null : this.wot.wtSettings.settings.viewportColumnCalculatorOverride, visible, this.wot.getSetting('stretchH'), function (stretchedWidth, column) {\n return _this3.wot.getSetting('onBeforeStretchingColumnWidth', stretchedWidth, column);\n });\n }\n\n /**\n * Creates rowsRenderCalculator and columnsRenderCalculator (before draw, to determine what rows and\n * cols should be rendered)\n *\n * @param fastDraw {Boolean} If `true`, will try to avoid full redraw and only update the border positions.\n * If `false` or `undefined`, will perform a full redraw\n * @returns fastDraw {Boolean} The fastDraw value, possibly modified\n */\n\n }, {\n key: 'createRenderCalculators',\n value: function createRenderCalculators() {\n var fastDraw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var runFastDraw = fastDraw;\n\n if (runFastDraw) {\n var proposedRowsVisibleCalculator = this.createRowsCalculator(true);\n var proposedColumnsVisibleCalculator = this.createColumnsCalculator(true);\n\n if (!(this.areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator) && this.areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator))) {\n runFastDraw = false;\n }\n }\n\n if (!runFastDraw) {\n this.rowsRenderCalculator = this.createRowsCalculator();\n this.columnsRenderCalculator = this.createColumnsCalculator();\n }\n // delete temporarily to make sure that renderers always use rowsRenderCalculator, not rowsVisibleCalculator\n this.rowsVisibleCalculator = null;\n this.columnsVisibleCalculator = null;\n\n return runFastDraw;\n }\n\n /**\n * Creates rowsVisibleCalculator and columnsVisibleCalculator (after draw, to determine what are\n * the actually visible rows and columns)\n */\n\n }, {\n key: 'createVisibleCalculators',\n value: function createVisibleCalculators() {\n this.rowsVisibleCalculator = this.createRowsCalculator(true);\n this.columnsVisibleCalculator = this.createColumnsCalculator(true);\n }\n\n /**\n * Returns information whether proposedRowsVisibleCalculator viewport\n * is contained inside rows rendered in previous draw (cached in rowsRenderCalculator)\n *\n * @param {Object} proposedRowsVisibleCalculator\n * @returns {Boolean} Returns `true` if all proposed visible rows are already rendered (meaning: redraw is not needed).\n * Returns `false` if at least one proposed visible row is not already rendered (meaning: redraw is needed)\n */\n\n }, {\n key: 'areAllProposedVisibleRowsAlreadyRendered',\n value: function areAllProposedVisibleRowsAlreadyRendered(proposedRowsVisibleCalculator) {\n if (this.rowsVisibleCalculator) {\n if (proposedRowsVisibleCalculator.startRow < this.rowsRenderCalculator.startRow || proposedRowsVisibleCalculator.startRow === this.rowsRenderCalculator.startRow && proposedRowsVisibleCalculator.startRow > 0) {\n return false;\n } else if (proposedRowsVisibleCalculator.endRow > this.rowsRenderCalculator.endRow || proposedRowsVisibleCalculator.endRow === this.rowsRenderCalculator.endRow && proposedRowsVisibleCalculator.endRow < this.wot.getSetting('totalRows') - 1) {\n return false;\n }\n return true;\n }\n\n return false;\n }\n\n /**\n * Returns information whether proposedColumnsVisibleCalculator viewport\n * is contained inside column rendered in previous draw (cached in columnsRenderCalculator)\n *\n * @param {Object} proposedColumnsVisibleCalculator\n * @returns {Boolean} Returns `true` if all proposed visible columns are already rendered (meaning: redraw is not needed).\n * Returns `false` if at least one proposed visible column is not already rendered (meaning: redraw is needed)\n */\n\n }, {\n key: 'areAllProposedVisibleColumnsAlreadyRendered',\n value: function areAllProposedVisibleColumnsAlreadyRendered(proposedColumnsVisibleCalculator) {\n if (this.columnsVisibleCalculator) {\n if (proposedColumnsVisibleCalculator.startColumn < this.columnsRenderCalculator.startColumn || proposedColumnsVisibleCalculator.startColumn === this.columnsRenderCalculator.startColumn && proposedColumnsVisibleCalculator.startColumn > 0) {\n return false;\n } else if (proposedColumnsVisibleCalculator.endColumn > this.columnsRenderCalculator.endColumn || proposedColumnsVisibleCalculator.endColumn === this.columnsRenderCalculator.endColumn && proposedColumnsVisibleCalculator.endColumn < this.wot.getSetting('totalColumns') - 1) {\n return false;\n }\n return true;\n }\n\n return false;\n }\n\n /**\n * Resets values in keys of the hasOversizedColumnHeadersMarked object after updateSettings.\n */\n\n }, {\n key: 'resetHasOversizedColumnHeadersMarked',\n value: function resetHasOversizedColumnHeadersMarked() {\n (0, _object.objectEach)(this.hasOversizedColumnHeadersMarked, function (value, key, object) {\n object[key] = void 0;\n });\n }\n }]);\n\n return Viewport;\n}();\n\nexports.default = Viewport;\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _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; }; }();\n\nvar _element = __webpack_require__(0);\n\nvar _event = __webpack_require__(13);\n\nvar _object = __webpack_require__(1);\n\nvar _browser = __webpack_require__(39);\n\nvar _eventManager = __webpack_require__(5);\n\nvar _eventManager2 = _interopRequireDefault(_eventManager);\n\nvar _coords = __webpack_require__(56);\n\nvar _coords2 = _interopRequireDefault(_coords);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n *\n */\nvar Border = function () {\n /**\n * @param {Walkontable} wotInstance\n * @param {Object} settings\n */\n function Border(wotInstance, settings) {\n _classCallCheck(this, Border);\n\n if (!settings) {\n return;\n }\n this.eventManager = new _eventManager2.default(wotInstance);\n this.instance = wotInstance;\n this.wot = wotInstance;\n this.settings = settings;\n this.mouseDown = false;\n this.main = null;\n\n this.top = null;\n this.left = null;\n this.bottom = null;\n this.right = null;\n\n this.topStyle = null;\n this.leftStyle = null;\n this.bottomStyle = null;\n this.rightStyle = null;\n\n this.cornerDefaultStyle = {\n width: '6px',\n height: '6px',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: '#FFF'\n };\n this.corner = null;\n this.cornerStyle = null;\n\n this.createBorders(settings);\n this.registerListeners();\n }\n\n /**\n * Register all necessary events\n */\n\n\n _createClass(Border, [{\n key: 'registerListeners',\n value: function registerListeners() {\n var _this2 = this;\n\n this.eventManager.addEventListener(document.body, 'mousedown', function () {\n return _this2.onMouseDown();\n });\n this.eventManager.addEventListener(document.body, 'mouseup', function () {\n return _this2.onMouseUp();\n });\n\n var _loop = function _loop(c, len) {\n _this2.eventManager.addEventListener(_this2.main.childNodes[c], 'mouseenter', function (event) {\n return _this2.onMouseEnter(event, _this2.main.childNodes[c]);\n });\n };\n\n for (var c = 0, len = this.main.childNodes.length; c < len; c++) {\n _loop(c, len);\n }\n }\n\n /**\n * Mouse down listener\n *\n * @private\n */\n\n }, {\n key: 'onMouseDown',\n value: function onMouseDown() {\n this.mouseDown = true;\n }\n\n /**\n * Mouse up listener\n *\n * @private\n */\n\n }, {\n key: 'onMouseUp',\n value: function onMouseUp() {\n this.mouseDown = false;\n }\n\n /**\n * Mouse enter listener for fragment selection functionality.\n *\n * @private\n * @param {Event} event Dom event\n * @param {HTMLElement} parentElement Part of border element.\n */\n\n }, {\n key: 'onMouseEnter',\n value: function onMouseEnter(event, parentElement) {\n if (!this.mouseDown || !this.wot.getSetting('hideBorderOnMouseDownOver')) {\n return;\n }\n event.preventDefault();\n (0, _event.stopImmediatePropagation)(event);\n\n var _this = this;\n var bounds = parentElement.getBoundingClientRect();\n // Hide border to prevents selection jumping when fragmentSelection is enabled.\n parentElement.style.display = 'none';\n\n function isOutside(mouseEvent) {\n if (mouseEvent.clientY < Math.floor(bounds.top)) {\n return true;\n }\n if (mouseEvent.clientY > Math.ceil(bounds.top + bounds.height)) {\n return true;\n }\n if (mouseEvent.clientX < Math.floor(bounds.left)) {\n return true;\n }\n if (mouseEvent.clientX > Math.ceil(bounds.left + bounds.width)) {\n return true;\n }\n }\n\n function handler(handlerEvent) {\n if (isOutside(handlerEvent)) {\n _this.eventManager.removeEventListener(document.body, 'mousemove', handler);\n parentElement.style.display = 'block';\n }\n }\n\n this.eventManager.addEventListener(document.body, 'mousemove', handler);\n }\n\n /**\n * Create border elements\n *\n * @param {Object} settings\n */\n\n }, {\n key: 'createBorders',\n value: function createBorders(settings) {\n this.main = document.createElement('div');\n\n var borderDivs = ['top', 'left', 'bottom', 'right', 'corner'];\n var style = this.main.style;\n style.position = 'absolute';\n style.top = 0;\n style.left = 0;\n\n for (var i = 0; i < 5; i++) {\n var position = borderDivs[i];\n var div = document.createElement('div');\n\n div.className = 'wtBorder ' + (this.settings.className || ''); // + borderDivs[i];\n\n if (this.settings[position] && this.settings[position].hide) {\n div.className += ' hidden';\n }\n style = div.style;\n style.backgroundColor = this.settings[position] && this.settings[position].color ? this.settings[position].color : settings.border.color;\n style.height = this.settings[position] && this.settings[position].width ? this.settings[position].width + 'px' : settings.border.width + 'px';\n style.width = this.settings[position] && this.settings[position].width ? this.settings[position].width + 'px' : settings.border.width + 'px';\n\n this.main.appendChild(div);\n }\n this.top = this.main.childNodes[0];\n this.left = this.main.childNodes[1];\n this.bottom = this.main.childNodes[2];\n this.right = this.main.childNodes[3];\n\n this.topStyle = this.top.style;\n this.leftStyle = this.left.style;\n this.bottomStyle = this.bottom.style;\n this.rightStyle = this.right.style;\n\n this.corner = this.main.childNodes[4];\n this.corner.className += ' corner';\n this.cornerStyle = this.corner.style;\n this.cornerStyle.width = this.cornerDefaultStyle.width;\n this.cornerStyle.height = this.cornerDefaultStyle.height;\n this.cornerStyle.border = [this.cornerDefaultStyle.borderWidth, this.cornerDefaultStyle.borderStyle, this.cornerDefaultStyle.borderColor].join(' ');\n\n if ((0, _browser.isMobileBrowser)()) {\n this.createMultipleSelectorHandles();\n }\n this.disappear();\n\n var bordersHolder = this.wot.wtTable.bordersHolder;\n\n if (!bordersHolder) {\n bordersHolder = document.createElement('div');\n bordersHolder.className = 'htBorders';\n this.wot.wtTable.bordersHolder = bordersHolder;\n this.wot.wtTable.spreader.appendChild(bordersHolder);\n }\n bordersHolder.appendChild(this.main);\n }\n\n /**\n * Create multiple selector handler for mobile devices\n */\n\n }, {\n key: 'createMultipleSelectorHandles',\n value: function createMultipleSelectorHandles() {\n var _this3 = this;\n\n this.selectionHandles = {\n topLeft: document.createElement('DIV'),\n topLeftHitArea: document.createElement('DIV'),\n bottomRight: document.createElement('DIV'),\n bottomRightHitArea: document.createElement('DIV')\n };\n var width = 10;\n var hitAreaWidth = 40;\n\n this.selectionHandles.topLeft.className = 'topLeftSelectionHandle';\n this.selectionHandles.topLeftHitArea.className = 'topLeftSelectionHandle-HitArea';\n this.selectionHandles.bottomRight.className = 'bottomRightSelectionHandle';\n this.selectionHandles.bottomRightHitArea.className = 'bottomRightSelectionHandle-HitArea';\n\n this.selectionHandles.styles = {\n topLeft: this.selectionHandles.topLeft.style,\n topLeftHitArea: this.selectionHandles.topLeftHitArea.style,\n bottomRight: this.selectionHandles.bottomRight.style,\n bottomRightHitArea: this.selectionHandles.bottomRightHitArea.style\n };\n\n var hitAreaStyle = {\n position: 'absolute',\n height: hitAreaWidth + 'px',\n width: hitAreaWidth + 'px',\n 'border-radius': parseInt(hitAreaWidth / 1.5, 10) + 'px'\n };\n\n (0, _object.objectEach)(hitAreaStyle, function (value, key) {\n _this3.selectionHandles.styles.bottomRightHitArea[key] = value;\n _this3.selectionHandles.styles.topLeftHitArea[key] = value;\n });\n\n var handleStyle = {\n position: 'absolute',\n height: width + 'px',\n width: width + 'px',\n 'border-radius': parseInt(width / 1.5, 10) + 'px',\n background: '#F5F5FF',\n border: '1px solid #4285c8'\n };\n\n (0, _object.objectEach)(handleStyle, function (value, key) {\n _this3.selectionHandles.styles.bottomRight[key] = value;\n _this3.selectionHandles.styles.topLeft[key] = value;\n });\n\n this.main.appendChild(this.selectionHandles.topLeft);\n this.main.appendChild(this.selectionHandles.bottomRight);\n this.main.appendChild(this.selectionHandles.topLeftHitArea);\n this.main.appendChild(this.selectionHandles.bottomRightHitArea);\n }\n }, {\n key: 'isPartRange',\n value: function isPartRange(row, col) {\n var areaSelection = this.wot.selections.createOrGetArea();\n\n if (areaSelection.cellRange) {\n if (row !== areaSelection.cellRange.to.row || col !== areaSelection.cellRange.to.col) {\n return true;\n }\n }\n\n return false;\n }\n }, {\n key: 'updateMultipleSelectionHandlesPosition',\n value: function updateMultipleSelectionHandlesPosition(row, col, top, left, width, height) {\n var handleWidth = parseInt(this.selectionHandles.styles.topLeft.width, 10);\n var hitAreaWidth = parseInt(this.selectionHandles.styles.topLeftHitArea.width, 10);\n\n this.selectionHandles.styles.topLeft.top = parseInt(top - handleWidth, 10) + 'px';\n this.selectionHandles.styles.topLeft.left = parseInt(left - handleWidth, 10) + 'px';\n\n this.selectionHandles.styles.topLeftHitArea.top = parseInt(top - hitAreaWidth / 4 * 3, 10) + 'px';\n this.selectionHandles.styles.topLeftHitArea.left = parseInt(left - hitAreaWidth / 4 * 3, 10) + 'px';\n\n this.selectionHandles.styles.bottomRight.top = parseInt(top + height, 10) + 'px';\n this.selectionHandles.styles.bottomRight.left = parseInt(left + width, 10) + 'px';\n\n this.selectionHandles.styles.bottomRightHitArea.top = parseInt(top + height - hitAreaWidth / 4, 10) + 'px';\n this.selectionHandles.styles.bottomRightHitArea.left = parseInt(left + width - hitAreaWidth / 4, 10) + 'px';\n\n if (this.settings.border.cornerVisible && this.settings.border.cornerVisible()) {\n this.selectionHandles.styles.topLeft.display = 'block';\n this.selectionHandles.styles.topLeftHitArea.display = 'block';\n\n if (this.isPartRange(row, col)) {\n this.selectionHandles.styles.bottomRight.display = 'none';\n this.selectionHandles.styles.bottomRightHitArea.display = 'none';\n } else {\n this.selectionHandles.styles.bottomRight.display = 'block';\n this.selectionHandles.styles.bottomRightHitArea.display = 'block';\n }\n } else {\n this.selectionHandles.styles.topLeft.display = 'none';\n this.selectionHandles.styles.bottomRight.display = 'none';\n this.selectionHandles.styles.topLeftHitArea.display = 'none';\n this.selectionHandles.styles.bottomRightHitArea.display = 'none';\n }\n\n if (row === this.wot.wtSettings.getSetting('fixedRowsTop') || col === this.wot.wtSettings.getSetting('fixedColumnsLeft')) {\n this.selectionHandles.styles.topLeft.zIndex = '9999';\n this.selectionHandles.styles.topLeftHitArea.zIndex = '9999';\n } else {\n this.selectionHandles.styles.topLeft.zIndex = '';\n this.selectionHandles.styles.topLeftHitArea.zIndex = '';\n }\n }\n\n /**\n * Show border around one or many cells\n *\n * @param {Array} corners\n */\n\n }, {\n key: 'appear',\n value: function appear(corners) {\n if (this.disabled) {\n return;\n }\n\n var fromRow = void 0;\n var toRow = void 0;\n var fromColumn = void 0;\n var toColumn = void 0;\n\n var rowsCount = this.wot.wtTable.getRenderedRowsCount();\n\n for (var i = 0; i < rowsCount; i += 1) {\n var s = this.wot.wtTable.rowFilter.renderedToSource(i);\n\n if (s >= corners[0] && s <= corners[2]) {\n fromRow = s;\n break;\n }\n }\n\n for (var _i = rowsCount - 1; _i >= 0; _i -= 1) {\n var _s = this.wot.wtTable.rowFilter.renderedToSource(_i);\n\n if (_s >= corners[0] && _s <= corners[2]) {\n toRow = _s;\n break;\n }\n }\n\n var columnsCount = this.wot.wtTable.getRenderedColumnsCount();\n\n for (var _i2 = 0; _i2 < columnsCount; _i2 += 1) {\n var _s2 = this.wot.wtTable.columnFilter.renderedToSource(_i2);\n\n if (_s2 >= corners[1] && _s2 <= corners[3]) {\n fromColumn = _s2;\n break;\n }\n }\n\n for (var _i3 = columnsCount - 1; _i3 >= 0; _i3 -= 1) {\n var _s3 = this.wot.wtTable.columnFilter.renderedToSource(_i3);\n\n if (_s3 >= corners[1] && _s3 <= corners[3]) {\n toColumn = _s3;\n break;\n }\n }\n if (fromRow === void 0 || fromColumn === void 0) {\n this.disappear();\n\n return;\n }\n var fromTD = this.wot.wtTable.getCell(new _coords2.default(fromRow, fromColumn));\n var isMultiple = fromRow !== toRow || fromColumn !== toColumn;\n var toTD = isMultiple ? this.wot.wtTable.getCell(new _coords2.default(toRow, toColumn)) : fromTD;\n var fromOffset = (0, _element.offset)(fromTD);\n var toOffset = isMultiple ? (0, _element.offset)(toTD) : fromOffset;\n var containerOffset = (0, _element.offset)(this.wot.wtTable.TABLE);\n var minTop = fromOffset.top;\n var minLeft = fromOffset.left;\n\n var left = minLeft - containerOffset.left - 1;\n var width = toOffset.left + (0, _element.outerWidth)(toTD) - minLeft;\n\n if (this.isEntireColumnSelected(fromRow, toRow)) {\n var modifiedValues = this.getDimensionsFromHeader('columns', fromColumn, toColumn, containerOffset);\n var fromTH = null;\n\n if (modifiedValues) {\n var _modifiedValues = _slicedToArray(modifiedValues, 3);\n\n fromTH = _modifiedValues[0];\n left = _modifiedValues[1];\n width = _modifiedValues[2];\n }\n\n if (fromTH) {\n fromTD = fromTH;\n }\n }\n\n var top = minTop - containerOffset.top - 1;\n var height = toOffset.top + (0, _element.outerHeight)(toTD) - minTop;\n\n if (this.isEntireRowSelected(fromColumn, toColumn)) {\n var _modifiedValues2 = this.getDimensionsFromHeader('rows', fromRow, toRow, containerOffset);\n var _fromTH = null;\n\n if (_modifiedValues2) {\n var _modifiedValues3 = _slicedToArray(_modifiedValues2, 3);\n\n _fromTH = _modifiedValues3[0];\n top = _modifiedValues3[1];\n height = _modifiedValues3[2];\n }\n\n if (_fromTH) {\n fromTD = _fromTH;\n }\n }\n\n var style = (0, _element.getComputedStyle)(fromTD);\n\n if (parseInt(style.borderTopWidth, 10) > 0) {\n top += 1;\n height = height > 0 ? height - 1 : 0;\n }\n if (parseInt(style.borderLeftWidth, 10) > 0) {\n left += 1;\n width = width > 0 ? width - 1 : 0;\n }\n\n this.topStyle.top = top + 'px';\n this.topStyle.left = left + 'px';\n this.topStyle.width = width + 'px';\n this.topStyle.display = 'block';\n\n this.leftStyle.top = top + 'px';\n this.leftStyle.left = left + 'px';\n this.leftStyle.height = height + 'px';\n this.leftStyle.display = 'block';\n\n var delta = Math.floor(this.settings.border.width / 2);\n\n this.bottomStyle.top = top + height - delta + 'px';\n this.bottomStyle.left = left + 'px';\n this.bottomStyle.width = width + 'px';\n this.bottomStyle.display = 'block';\n\n this.rightStyle.top = top + 'px';\n this.rightStyle.left = left + width - delta + 'px';\n this.rightStyle.height = height + 1 + 'px';\n this.rightStyle.display = 'block';\n\n var cornerVisibleSetting = this.settings.border.cornerVisible;\n cornerVisibleSetting = typeof cornerVisibleSetting === 'function' ? cornerVisibleSetting(this.settings.layerLevel) : cornerVisibleSetting;\n\n var hookResult = this.wot.getSetting('onModifyGetCellCoords', toRow, toColumn);\n var checkRow = toRow,\n checkCol = toColumn;\n\n\n if (hookResult && Array.isArray(hookResult)) {\n var _hookResult = _slicedToArray(hookResult, 4);\n\n checkRow = _hookResult[2];\n checkCol = _hookResult[3];\n }\n\n if ((0, _browser.isMobileBrowser)() || !cornerVisibleSetting || this.isPartRange(checkRow, checkCol)) {\n this.cornerStyle.display = 'none';\n } else {\n this.cornerStyle.top = top + height - 4 + 'px';\n this.cornerStyle.left = left + width - 4 + 'px';\n this.cornerStyle.borderRightWidth = this.cornerDefaultStyle.borderWidth;\n this.cornerStyle.width = this.cornerDefaultStyle.width;\n\n // Hide the fill handle, so the possible further adjustments won't force unneeded scrollbars.\n this.cornerStyle.display = 'none';\n\n var trimmingContainer = (0, _element.getTrimmingContainer)(this.wot.wtTable.TABLE);\n var trimToWindow = trimmingContainer === window;\n\n if (trimToWindow) {\n trimmingContainer = document.documentElement;\n }\n\n if (toColumn === this.wot.getSetting('totalColumns') - 1) {\n var toTdOffsetLeft = trimToWindow ? toTD.getBoundingClientRect().left : toTD.offsetLeft;\n var cornerRightEdge = toTdOffsetLeft + (0, _element.outerWidth)(toTD) + parseInt(this.cornerDefaultStyle.width, 10) / 2;\n var cornerOverlappingContainer = cornerRightEdge >= (0, _element.innerWidth)(trimmingContainer);\n\n if (cornerOverlappingContainer) {\n this.cornerStyle.left = Math.floor(left + width - 3 - parseInt(this.cornerDefaultStyle.width, 10) / 2) + 'px';\n this.cornerStyle.borderRightWidth = 0;\n }\n }\n\n if (toRow === this.wot.getSetting('totalRows') - 1) {\n var toTdOffsetTop = trimToWindow ? toTD.getBoundingClientRect().top : toTD.offsetTop;\n var cornerBottomEdge = toTdOffsetTop + (0, _element.outerHeight)(toTD) + parseInt(this.cornerDefaultStyle.height, 10) / 2;\n var _cornerOverlappingContainer = cornerBottomEdge >= (0, _element.innerHeight)(trimmingContainer);\n\n if (_cornerOverlappingContainer) {\n this.cornerStyle.top = Math.floor(top + height - 3 - parseInt(this.cornerDefaultStyle.height, 10) / 2) + 'px';\n this.cornerStyle.borderBottomWidth = 0;\n }\n }\n\n this.cornerStyle.display = 'block';\n }\n\n if ((0, _browser.isMobileBrowser)()) {\n this.updateMultipleSelectionHandlesPosition(toRow, toColumn, top, left, width, height);\n }\n }\n\n /**\n * Check whether an entire column of cells is selected.\n *\n * @private\n * @param {Number} startRowIndex Start row index.\n * @param {Number} endRowIndex End row index.\n */\n\n }, {\n key: 'isEntireColumnSelected',\n value: function isEntireColumnSelected(startRowIndex, endRowIndex) {\n return startRowIndex === this.wot.wtTable.getFirstRenderedRow() && endRowIndex === this.wot.wtTable.getLastRenderedRow();\n }\n\n /**\n * Check whether an entire row of cells is selected.\n *\n * @private\n * @param {Number} startColumnIndex Start column index.\n * @param {Number} endColumnIndex End column index.\n */\n\n }, {\n key: 'isEntireRowSelected',\n value: function isEntireRowSelected(startColumnIndex, endColumnIndex) {\n return startColumnIndex === this.wot.wtTable.getFirstRenderedColumn() && endColumnIndex === this.wot.wtTable.getLastRenderedColumn();\n }\n\n /**\n * Get left/top index and width/height depending on the `direction` provided.\n *\n * @private\n * @param {String} direction `rows` or `columns`, defines if an entire column or row is selected.\n * @param {Number} fromIndex Start index of the selection.\n * @param {Number} toIndex End index of the selection.\n * @param {Number} contain