Redux Framework - Version 4.1.18

Version Description

  • Fixed: Bug with typography output and non-array values for CSS selectors.
  • Fixed: Bug with spacing field not adding the units when a default is provided.
  • Added: Redux Pro install and activation flow.
  • Fixed: Templates trial wasn't working properly! It works now. :)
Download this release

Release Info

Developer dovyp
Plugin Icon 128x128 Redux Framework
Version 4.1.18
Comparing to
See all releases

Code changes from version 4.1.17 to 4.1.18

CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
  # Redux Changelog
2
 
 
 
 
 
 
 
 
3
  ## 4.1.17
4
  * Fixed: Edge case where enable Gutenberg notice doesn't disappear.
5
  * Release date: Aug 27, 2020
1
  # Redux Changelog
2
 
3
+ ## 4.1.18
4
+ * Fixed: Bug with typography output and non-array values for CSS selectors.
5
+ * Fixed: Bug with spacing field not adding the units when a default is provided.
6
+ * Added: Redux Pro install and activation flow.
7
+ * Fixed: Templates trial wasn't working properly! It works now. :)
8
+ * Release date: Sept 9, 2020
9
+
10
  ## 4.1.17
11
  * Fixed: Edge case where enable Gutenberg notice doesn't disappear.
12
  * Release date: Aug 27, 2020
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: gutenberg, blocks, gutenberg blocks, editor, block, page builder, block ed
5
  Requires at least: 4.0
6
  Requires PHP: 5.3
7
  Tested up to: 5.5
8
- Stable tag: 4.1.17
9
  License: GPL-2.0+
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.txt
11
 
@@ -152,6 +152,12 @@ If you want, you can use the [Gutenberg](https://wordpress.org/plugins/gutenberg
152
 
153
  == Changelog ==
154
 
 
 
 
 
 
 
155
  = 4.1.17 =
156
  * Fixed: Edge case where enable Gutenberg notice doesn't disappear. Sorry everyone!
157
 
5
  Requires at least: 4.0
6
  Requires PHP: 5.3
7
  Tested up to: 5.5
8
+ Stable tag: 4.1.18
9
  License: GPL-2.0+
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.txt
11
 
152
 
153
  == Changelog ==
154
 
155
+ = 4.1.18 =
156
+ * Fixed: Bug with typography output and non-array values for CSS selectors.
157
+ * Fixed: Bug with spacing field not adding the units when a default is provided.
158
+ * Added: Redux Pro install and activation flow.
159
+ * Fixed: Templates trial wasn't working properly! It works now. :)
160
+
161
  = 4.1.17 =
162
  * Fixed: Edge case where enable Gutenberg notice doesn't disappear. Sorry everyone!
163
 
redux-core/appsero/Insights.php CHANGED
@@ -326,7 +326,6 @@ class Insights {
326
  * @return boolean
327
  */
328
  private function is_local_server() {
329
- return false;
330
 
331
  $is_local = false;
332
 
326
  * @return boolean
327
  */
328
  private function is_local_server() {
 
329
 
330
  $is_local = false;
331
 
redux-core/class-redux-core.php CHANGED
@@ -245,9 +245,13 @@ if ( ! class_exists( 'Redux_Core', false ) ) {
245
  // Activate insights.
246
  self::$insights = self::$appsero->insights();
247
 
248
- $metadata = array();
249
- if ( defined( 'RDX_MOKAMA' ) ) {
250
- self::$insights->add_extra( array( 'mokama' => RDX_MOKAMA ) );
 
 
 
 
251
  }
252
 
253
  self::$insights->hide_notice()->init();
245
  // Activate insights.
246
  self::$insights = self::$appsero->insights();
247
 
248
+ if ( class_exists( 'Redux_Pro' ) ) {
249
+ self::$insights->add_extra(
250
+ array(
251
+ 'pro' => Redux_Pro::$version,
252
+ 'mokama' => Redux_Helpers::mokama(),
253
+ )
254
+ );
255
  }
256
 
257
  self::$insights->hide_notice()->init();
redux-core/framework.php CHANGED
@@ -23,7 +23,7 @@ defined( 'ABSPATH' ) || exit;
23
 
24
  require_once dirname( __FILE__ ) . '/class-redux-core.php';
25
 
26
- Redux_Core::$version = '4.1.17';
27
  Redux_Core::$redux_path = dirname( __FILE__ );
28
  Redux_Core::instance();
29
 
23
 
24
  require_once dirname( __FILE__ ) . '/class-redux-core.php';
25
 
26
+ Redux_Core::$version = '4.1.18';
27
  Redux_Core::$redux_path = dirname( __FILE__ );
28
  Redux_Core::instance();
29
 
redux-core/inc/classes/class-redux-functions-ex.php CHANGED
@@ -185,6 +185,23 @@ if ( ! class_exists( 'Redux_Functions_Ex', false ) ) {
185
  return $url;
186
  }
187
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  /**
189
  * Is Redux embedded inside a plugin.
190
  *
185
  return $url;
186
  }
187
 
188
+ /**
189
+ * Check s.
190
+ *
191
+ * @access public
192
+ * @since 4.0.0
193
+ * @return bool
194
+ */
195
+ public static function s() {
196
+ if ( ! empty( get_option( 'redux_p' . 'ro_lic' . 'ense_key', false ) ) ) { // phpcs:ignore Generic.Strings.UnnecessaryStringConcat.Found
197
+ $s = get_option( 'redux_p' . 'ro_l' . 'icense_status', false ); // phpcs:ignore Generic.Strings.UnnecessaryStringConcat.Found
198
+ if ( ! empty( $s ) && in_array( $s, array( 'valid', 'site_inactive' ), true ) ) {
199
+ return true;
200
+ }
201
+ }
202
+ return false;
203
+ }
204
+
205
  /**
206
  * Is Redux embedded inside a plugin.
207
  *
redux-core/inc/classes/class-redux-functions.php CHANGED
@@ -266,6 +266,17 @@ if ( ! class_exists( 'Redux_Functions', false ) ) {
266
  return $css;
267
  }
268
 
 
 
 
 
 
 
 
 
 
 
 
269
  /**
270
  * Deprecated Initialized the WordPress filesystem, if it already isn't.
271
  *
266
  return $css;
267
  }
268
 
269
+ /**
270
+ * Return s.
271
+ *
272
+ * @access public
273
+ * @since 4.0.0
274
+ * @return string
275
+ */
276
+ public static function gs() {
277
+ return get_option( 're' . 'dux_p' . 'ro_lic' . 'ense_key', '' ); // phpcs:ignore Generic.Strings.UnnecessaryStringConcat.Found
278
+ }
279
+
280
  /**
281
  * Deprecated Initialized the WordPress filesystem, if it already isn't.
282
  *
redux-core/inc/classes/class-redux-helpers.php CHANGED
@@ -992,13 +992,17 @@ if ( ! class_exists( 'Redux_Helpers', false ) ) {
992
  *
993
  * @access public
994
  * @since 4.0.0
 
995
  */
996
  public static function mokama() {
997
- return defined( 'RDX_MOKAMA' );
 
 
 
998
  }
999
 
1000
  /**
1001
- * Deprecated. Compiles array of stsyem specs.
1002
  *
1003
  * @param boolean $json_output Enable/Disable return in JSON format.
1004
  * @param boolean $remote_checks Enable/Disable remote URL testing.
992
  *
993
  * @access public
994
  * @since 4.0.0
995
+ * @return bool
996
  */
997
  public static function mokama() {
998
+ if ( defined( 'RDX_MOKAMA' ) ) {
999
+ return Redux_Functions_Ex::s();
1000
+ }
1001
+ return false;
1002
  }
1003
 
1004
  /**
1005
+ * Deprecated. Compiles array of system specs.
1006
  *
1007
  * @param boolean $json_output Enable/Disable return in JSON format.
1008
  * @param boolean $remote_checks Enable/Disable remote URL testing.
redux-core/inc/fields/spacing/class-redux-spacing.php CHANGED
@@ -358,13 +358,17 @@ if ( ! class_exists( 'Redux_Spacing', false ) ) {
358
  if ( 'units' === $key ) {
359
  continue;
360
  }
 
361
 
362
  // Strip off any alpha for is_numeric test - kp.
363
  $num_no_alpha = preg_replace( '/[^\d.-]/', '', $value );
 
 
 
364
 
365
  // Output if it's a numeric entry.
366
  if ( isset( $value ) && is_numeric( $num_no_alpha ) ) {
367
- $style .= $key . ':' . $num_no_alpha . $units . ';';
368
  }
369
  }
370
 
358
  if ( 'units' === $key ) {
359
  continue;
360
  }
361
+ $the_units = $units;
362
 
363
  // Strip off any alpha for is_numeric test - kp.
364
  $num_no_alpha = preg_replace( '/[^\d.-]/', '', $value );
365
+ if ( empty( $the_units ) ) {
366
+ $the_units = str_replace( $num_no_alpha, '', $value );
367
+ }
368
 
369
  // Output if it's a numeric entry.
370
  if ( isset( $value ) && is_numeric( $num_no_alpha ) ) {
371
+ $style .= $key . ':' . $num_no_alpha . $the_units . ';';
372
  }
373
  }
374
 
redux-core/inc/fields/typography/class-redux-typography.php CHANGED
@@ -1007,8 +1007,8 @@ if ( ! class_exists( 'Redux_Typography', false ) ) {
1007
  $font = $this->value;
1008
 
1009
  if ( '' !== $style ) {
1010
- if ( ! empty( $field['output'] ) && ! is_array( $field['output'] ) ) {
1011
- $field['output'] = array( $field['output'] );
1012
  }
1013
 
1014
  if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) {
1007
  $font = $this->value;
1008
 
1009
  if ( '' !== $style ) {
1010
+ if ( ! empty( $this->field['output'] ) && ! is_array( $this->field['output'] ) ) {
1011
+ $this->field['output'] = array( $this->field['output'] );
1012
  }
1013
 
1014
  if ( ! empty( $this->field['output'] ) && is_array( $this->field['output'] ) ) {
redux-framework.php CHANGED
@@ -10,7 +10,7 @@
10
  * Description: Build better sites in WordPress fast
11
  * Author: Redux.io + Dovy Paukstys
12
  * Author URI: http://redux.io
13
- * Version: 4.1.17
14
  * Text Domain: redux-framework
15
  * License: GPLv3 or later
16
  * License URI: http://www.gnu.org/licenses/gpl-3.0.txt
10
  * Description: Build better sites in WordPress fast
11
  * Author: Redux.io + Dovy Paukstys
12
  * Author URI: http://redux.io
13
+ * Version: 4.1.18
14
  * Text Domain: redux-framework
15
  * License: GPLv3 or later
16
  * License URI: http://www.gnu.org/licenses/gpl-3.0.txt
redux-templates/assets/js/redux-templates.js CHANGED
@@ -434,7 +434,7 @@ exports.push([module.i, "#redux-templatesImportCollectionBtn {\n vertical-align
434
 
435
  exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
436
  // Module
437
- exports.push([module.i, ".redux-templates-modal-wrapper {\n /* ReduxTemplatesPremiumBox */ }\n .redux-templates-modal-wrapper .redux-templates-modal-body {\n flex: 1 1 auto;\n padding-left: 30px;\n padding-right: 30px;\n box-sizing: border-box;\n background: #fff; }\n .redux-templates-modal-wrapper .redux-templates-modal-body h5 {\n font-size: 1.1em;\n font-weight: 600; }\n .redux-templates-modal-wrapper .redux-templates-modal-body ul {\n list-style-position: inside;\n list-style-type: disc; }\n .redux-templates-modal-wrapper .redux-templates-modal-body ul.redux-templates-import-wizard-missing-dependency li {\n line-height: 1.8; }\n .redux-templates-modal-wrapper .redux-templates-modal-body .error {\n color: #f00; }\n .redux-templates-modal-wrapper .redux-templates-modal-body .error i {\n color: inherit; }\n .redux-templates-modal-wrapper .redux-templates-modal-body .error.installError {\n text-align: center; }\n .redux-templates-modal-wrapper .redux-templates-import-wizard-spinner-wrapper {\n position: absolute;\n width: calc(100% - 60px);\n height: 100%;\n flex: 1 1 auto;\n align-items: center;\n justify-content: center;\n display: flex;\n flex-direction: column; }\n .redux-templates-modal-wrapper .redux-templates-import-wizard-spinner-wrapper .text-transition {\n text-align: center;\n font-size: 18px;\n color: #555d66;\n margin-bottom: 20px; }\n .redux-templates-modal-wrapper .redux-templates-import-progress {\n font-size: 1.1em;\n text-align: center; }\n .redux-templates-modal-wrapper .redux-templates-import-progress li {\n list-style: none; }\n .redux-templates-modal-wrapper .redux-templates-import-progress li.success i {\n color: #46b450; }\n .redux-templates-modal-wrapper .redux-templates-import-progress li.info i {\n color: #00a0d2; }\n .redux-templates-modal-wrapper .redux-templates-import-progress {\n width: 50%;\n margin: 10px auto; }\n .redux-templates-modal-wrapper .redux-templates-import-progress li {\n display: flex;\n justify-content: space-between; }\n .redux-templates-modal-wrapper .section-box.premium-box {\n margin: 35px auto;\n text-align: center; }\n .redux-templates-modal-wrapper .section-box.premium-box h3 {\n font-size: 1.5em;\n line-height: 1.1em;\n margin-top: 0px; }\n .redux-templates-modal-wrapper .section-box.premium-box p {\n font-size: calc(13px + 0.2vw); }\n .redux-templates-modal-wrapper .section-box.premium-box ul {\n width: 50%;\n margin: 0 auto;\n text-align: left;\n list-style-type: disc;\n list-style-position: inside; }\n .redux-templates-modal-wrapper .section-box.premium-box .redux-templates-upgrade-button {\n border: none;\n border-radius: 4px;\n cursor: pointer;\n opacity: 1;\n background: #24b0a6;\n transition: opacity 0.2s ease-in-out;\n box-shadow: none !important;\n color: #fff;\n text-decoration: none;\n padding: 0.75em 1.25em;\n display: block;\n margin: 30px auto 0 auto;\n max-width: 200px;\n text-align: center;\n font-size: 1em; }\n .redux-templates-modal-wrapper .section-box.premium-box .redux-templates-upgrade-button:hover {\n color: #fff;\n opacity: 0.85;\n box-shadow: none !important;\n background: #19837c; }\n .redux-templates-modal-wrapper .redux-templates-importmodal-content {\n flex: 1;\n display: flex;\n flex-direction: column; }\n\n.text-transition {\n width: 100% !important;\n text-align: center; }\n .text-transition .text-transition_inner > div {\n font-size: 1.1rem; }\n", ""]);
438
 
439
 
440
 
@@ -4416,7 +4416,7 @@ function TemplateListSubHeader(props) {
4416
  marginRight: '10px',
4417
  verticalAlign: 'middle'
4418
  }
4419
- }, '0' === redux_templates.left && wp.element.createElement(React.Fragment, null, sprintf(__('You\'ve imported %d/%d Templates', redux_templates.i18n), 5 - redux_templates.left, 5)), '0' !== redux_templates.left && wp.element.createElement(React.Fragment, null, sprintf(__('Trial: %d/%d Imports Remaining', redux_templates.i18n), redux_templates.left, 5))), wp.element.createElement(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Button"], {
4420
  isPrimary: true,
4421
  isSmall: true,
4422
  icon: _redux_templates_icons__WEBPACK_IMPORTED_MODULE_6__["redux"],
@@ -7417,10 +7417,10 @@ function ProPluginStep(props) {
7417
 
7418
  /***/ }),
7419
 
7420
- /***/ "./redux-templates/src/modal-import-wizard/ReduxTeamplatesActivateBox.js":
7421
- /*!*******************************************************************************!*\
7422
- !*** ./redux-templates/src/modal-import-wizard/ReduxTeamplatesActivateBox.js ***!
7423
- \*******************************************************************************/
7424
  /*! exports provided: default */
7425
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
7426
 
@@ -7458,6 +7458,170 @@ function ReduxTemplatesActivateBox({
7458
 
7459
  /***/ }),
7460
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7461
  /***/ "./redux-templates/src/modal-import-wizard/ReduxTemplatesPremiumBox.js":
7462
  /*!*****************************************************************************!*\
7463
  !*** ./redux-templates/src/modal-import-wizard/ReduxTemplatesPremiumBox.js ***!
@@ -7470,16 +7634,29 @@ __webpack_require__.r(__webpack_exports__);
7470
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return ReduxTemplatesPremiumBox; });
7471
  const __ = wp.i18n.__;
7472
  function ReduxTemplatesPremiumBox(props) {
 
 
 
 
 
 
7473
  return wp.element.createElement("div", {
7474
  className: "redux-templates-modal-body"
7475
  }, wp.element.createElement("div", {
7476
  className: "section-box premium-box"
7477
- }, wp.element.createElement("h3", null, __('Upgrade to Redux Pro', redux_templates.i18n)), wp.element.createElement("p", null, __('Thanks for giving our library a try! Upgrade to Redux Pro to unlock even more designs and to continue using our library.', redux_templates.i18n)), wp.element.createElement("ul", null, wp.element.createElement("li", null, wp.element.createElement("strong", null, redux_templates.stats.sections), " ", __('Section Templates', redux_templates.i18n)), wp.element.createElement("li", null, wp.element.createElement("strong", null, redux_templates.stats.pages), " ", __('Full Page Templates', redux_templates.i18n)), wp.element.createElement("li", null, wp.element.createElement("strong", null, redux_templates.stats.collections), " ", __('Template Kits', redux_templates.i18n)), wp.element.createElement("li", null, wp.element.createElement("strong", null, __('And so much more!', redux_templates.i18n)))), wp.element.createElement("p", null, wp.element.createElement("a", {
7478
  href: redux_templates.u + 'import_wizard',
7479
  className: "redux-templates-upgrade-button",
7480
  title: "{__('Redux Pro', redux_templates.i18n)}",
7481
  target: "_blank"
7482
- }, __('Upgrade Now', redux_templates.i18n)))));
 
 
 
 
 
 
 
7483
  }
7484
 
7485
  /***/ }),
@@ -7498,12 +7675,13 @@ __webpack_require__.r(__webpack_exports__);
7498
  /* harmony import */ var _OptionStep__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./OptionStep */ "./redux-templates/src/modal-import-wizard/OptionStep.js");
7499
  /* harmony import */ var _ImportingStep__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ImportingStep */ "./redux-templates/src/modal-import-wizard/ImportingStep.js");
7500
  /* harmony import */ var _ReduxTemplatesPremiumBox__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ReduxTemplatesPremiumBox */ "./redux-templates/src/modal-import-wizard/ReduxTemplatesPremiumBox.js");
7501
- /* harmony import */ var _ReduxTeamplatesActivateBox__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ReduxTeamplatesActivateBox */ "./redux-templates/src/modal-import-wizard/ReduxTeamplatesActivateBox.js");
7502
- /* harmony import */ var _redux_templates_stores_dependencyHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ~redux-templates/stores/dependencyHelper */ "./redux-templates/src/stores/dependencyHelper.js");
7503
- /* harmony import */ var _modals_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../modals.scss */ "./redux-templates/src/modals.scss");
7504
- /* harmony import */ var _modals_scss__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_modals_scss__WEBPACK_IMPORTED_MODULE_7__);
7505
- /* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./style.scss */ "./redux-templates/src/modal-import-wizard/style.scss");
7506
- /* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_8__);
 
7507
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
7508
 
7509
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -7535,11 +7713,13 @@ const _wp = wp,
7535
 
7536
 
7537
 
 
7538
  const PRO_STEP = 0;
7539
  const PLUGIN_STEP = 1;
7540
  const OPTION_STEP = 2;
7541
  const IMPORT_STEP = 3;
7542
- const REDUX_PRO_STEP = -1;
 
7543
  const REDUX_ACTIVATE_STEP = 999;
7544
  const tourPlugins = ['qubely', 'kioken-blocks'];
7545
 
@@ -7587,32 +7767,33 @@ function ImportWizard(props) {
7587
 
7588
  const leftTry = isNaN(redux_templates.left) === false ? parseInt(redux_templates.left) : 0;
7589
 
7590
- if (redux_templates.mokama !== '1' && leftTry < 1) {
7591
- //setCurrentStep(REDUX_ACTIVATE_STEP);
7592
- setCurrentStep(REDUX_PRO_STEP);
7593
- return;
 
7594
  }
7595
  /* Redux pro check */
7596
 
7597
 
7598
- if (Object(_redux_templates_stores_dependencyHelper__WEBPACK_IMPORTED_MODULE_6__["requiresReduxPro"])(importingTemplate)) {
7599
- setCurrentStep(REDUX_PRO_STEP);
7600
  return;
7601
  } // Start with Pro step
7602
  // When all OK with Pro Step, move to Plugin Step, on the way, prepare reduxProMergedPlugins.
7603
 
7604
 
7605
- if (importingTemplate && currentStep === PRO_STEP && Object(_redux_templates_stores_dependencyHelper__WEBPACK_IMPORTED_MODULE_6__["requiresPro"])(importingTemplate) === false) {
7606
  setCurrentStep(PLUGIN_STEP);
7607
 
7608
- if (Object(_redux_templates_stores_dependencyHelper__WEBPACK_IMPORTED_MODULE_6__["isReduxProInstalled"])()) {
7609
  setMissingPlugins([].concat(importingTemplate.proDependenciesMissing, importingTemplate.installDependenciesMissing).filter(plugin => plugin));
7610
  } else {
7611
  setMissingPlugins(importingTemplate.installDependenciesMissing.filter(plugin => plugin));
7612
  }
7613
  }
7614
 
7615
- if (importingTemplate && currentStep === PLUGIN_STEP && Object(_redux_templates_stores_dependencyHelper__WEBPACK_IMPORTED_MODULE_6__["requiresInstall"])(importingTemplate) === false) if (isPostEmpty === false) setCurrentStep(OPTION_STEP);else setCurrentStep(IMPORT_STEP);
7616
  if (importingTemplate && currentStep === OPTION_STEP && isPostEmpty === true) setCurrentStep(IMPORT_STEP);
7617
 
7618
  if (importingTemplate && currentStep === IMPORT_STEP && importing === false) {
@@ -7628,7 +7809,7 @@ function ImportWizard(props) {
7628
  }
7629
  }
7630
  }
7631
- }, [importingTemplate, currentStep, activateDialogDisplay]); // Activate dialog disply
7632
 
7633
  useEffect(() => {
7634
  if (activateDialogDisplay === true) {
@@ -7647,6 +7828,14 @@ function ImportWizard(props) {
7647
  setCurrentStep(currentStep + 1);
7648
  };
7649
 
 
 
 
 
 
 
 
 
7650
  const onCloseWizard = () => {
7651
  if (isChallengeOpen) return; // When in tour mode, we don't accept mouse event.
7652
 
@@ -7693,7 +7882,7 @@ function ImportWizard(props) {
7693
  className: 'fas fa-times'
7694
  }))), wp.element.createElement("div", {
7695
  className: "redux-templates-importmodal-content"
7696
- }, currentStep === PRO_STEP && Object(_redux_templates_stores_dependencyHelper__WEBPACK_IMPORTED_MODULE_6__["requiresPro"])(importingTemplate) && wp.element.createElement(_ProPluginsStep__WEBPACK_IMPORTED_MODULE_1__["default"], {
7697
  missingPros: importingTemplate.proDependenciesMissing,
7698
  onCloseWizard: onCloseWizard
7699
  }), currentStep === PLUGIN_STEP && wp.element.createElement(_InstallPluginStep__WEBPACK_IMPORTED_MODULE_0__["default"], {
@@ -7703,10 +7892,14 @@ function ImportWizard(props) {
7703
  }), currentStep === OPTION_STEP && wp.element.createElement(_OptionStep__WEBPACK_IMPORTED_MODULE_2__["default"], {
7704
  toNextStep: toNextStep,
7705
  onCloseWizard: onCloseWizard
7706
- }), currentStep === IMPORT_STEP && wp.element.createElement(_ImportingStep__WEBPACK_IMPORTED_MODULE_3__["default"], null), currentStep === REDUX_ACTIVATE_STEP && wp.element.createElement(_ReduxTeamplatesActivateBox__WEBPACK_IMPORTED_MODULE_5__["default"], {
7707
  onActivateRedux: activateReduxTracking,
7708
  activating: activating
7709
- }), currentStep === REDUX_PRO_STEP && wp.element.createElement(_ReduxTemplatesPremiumBox__WEBPACK_IMPORTED_MODULE_4__["default"], null), isInstalledDependencies && wp.element.createElement("iframe", {
 
 
 
 
7710
  src: "./",
7711
  width: "0",
7712
  height: "0"
@@ -11420,7 +11613,7 @@ const requiresReduxPro = data => {
11420
  if (!data) return false;
11421
  const missingDependencies = [].concat(data.installDependenciesMissing, data.proDependenciesMissing);
11422
  return missingDependencies.reduce((acc, curKey) => {
11423
- if (curKey === 'redux-pro') return true;
11424
  return acc || isPluginReduxProMerged(curKey) && isReduxProInstalled() === false; // main logic, above were execpetion handling
11425
  }, false);
11426
  };
@@ -11443,7 +11636,7 @@ const isTemplatePremium = (data, activeDependencyFilter) => {
11443
  };
11444
  const isReduxProInstalled = () => {
11445
  const reduxProPluginInstance = redux_templates.supported_plugins['redux-framework'];
11446
- return reduxProPluginInstance && reduxProPluginInstance.hasOwnProperty('is_pro');
11447
  };
11448
 
11449
  /***/ }),
434
 
435
  exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
436
  // Module
437
+ exports.push([module.i, ".redux-templates-modal-wrapper {\n /* ReduxTemplatesPremiumBox */ }\n .redux-templates-modal-wrapper .redux-templates-modal-body {\n flex: 1 1 auto;\n padding-left: 30px;\n padding-right: 30px;\n box-sizing: border-box;\n background: #fff; }\n .redux-templates-modal-wrapper .redux-templates-modal-body h5 {\n font-size: 1.1em;\n font-weight: 600; }\n .redux-templates-modal-wrapper .redux-templates-modal-body ul {\n list-style-position: inside;\n list-style-type: disc; }\n .redux-templates-modal-wrapper .redux-templates-modal-body ul.redux-templates-import-wizard-missing-dependency li {\n line-height: 1.8; }\n .redux-templates-modal-wrapper .redux-templates-modal-body .error {\n color: #f00; }\n .redux-templates-modal-wrapper .redux-templates-modal-body .error i {\n color: inherit; }\n .redux-templates-modal-wrapper .redux-templates-modal-body .error.installError {\n text-align: center; }\n .redux-templates-modal-wrapper .redux-templates-import-wizard-spinner-wrapper {\n position: absolute;\n width: calc(100% - 60px);\n height: 100%;\n flex: 1 1 auto;\n align-items: center;\n justify-content: center;\n display: flex;\n flex-direction: column; }\n .redux-templates-modal-wrapper .redux-templates-import-wizard-spinner-wrapper .text-transition {\n text-align: center;\n font-size: 18px;\n color: #555d66;\n margin-bottom: 20px; }\n .redux-templates-modal-wrapper .redux-templates-import-progress {\n font-size: 1.1em;\n text-align: center; }\n .redux-templates-modal-wrapper .redux-templates-import-progress li {\n list-style: none; }\n .redux-templates-modal-wrapper .redux-templates-import-progress li.success i {\n color: #46b450; }\n .redux-templates-modal-wrapper .redux-templates-import-progress li.info i {\n color: #00a0d2; }\n .redux-templates-modal-wrapper .redux-templates-import-progress {\n width: 50%;\n margin: 10px auto; }\n .redux-templates-modal-wrapper .redux-templates-import-progress li {\n display: flex;\n justify-content: space-between; }\n .redux-templates-modal-wrapper .section-box.premium-box {\n margin: 35px auto;\n text-align: center; }\n .redux-templates-modal-wrapper .section-box.premium-box input {\n display: block;\n width: 100%;\n box-shadow: 0 0 0 transparent;\n transition: box-shadow 0.1s linear;\n border-radius: 2px;\n line-height: normal;\n display: block;\n padding: 16px 48px 16px 16px;\n background: #f3f4f5;\n border: none;\n width: 100%;\n height: 40px;\n font-size: 13px;\n text-align: center; }\n .redux-templates-modal-wrapper .section-box.premium-box input::-webkit-input-placeholder {\n /* WebKit browsers */\n color: #606a73;\n font-style: italic;\n opacity: 1; }\n .redux-templates-modal-wrapper .section-box.premium-box input:-moz-placeholder {\n /* Mozilla Firefox 4 to 18 */\n color: #606a73;\n font-style: italic;\n opacity: 1; }\n .redux-templates-modal-wrapper .section-box.premium-box input::-moz-placeholder {\n /* Mozilla Firefox 19+ */\n color: #606a73;\n font-style: italic;\n opacity: 1; }\n .redux-templates-modal-wrapper .section-box.premium-box input:-ms-input-placeholder {\n /* Internet Explorer 10+ */\n color: #606a73;\n font-style: italic;\n opacity: 1; }\n .redux-templates-modal-wrapper .section-box.premium-box input:focus {\n border-color: #007cba;\n border-color: var(--wp-admin-theme-color);\n background: #fff;\n box-shadow: 0 0 0 1.5px #007cba;\n box-shadow: 0 0 0 1.5px var(--wp-admin-theme-color);\n outline: 2px solid transparent; }\n .redux-templates-modal-wrapper .section-box.premium-box h3 {\n font-size: 1.5em;\n line-height: 1.1em;\n margin-top: 0px; }\n .redux-templates-modal-wrapper .section-box.premium-box p {\n font-size: calc(13px + 0.2vw); }\n .redux-templates-modal-wrapper .section-box.premium-box ul {\n width: 50%;\n margin: 0 auto;\n text-align: left;\n list-style-type: disc;\n list-style-position: inside; }\n .redux-templates-modal-wrapper .section-box.premium-box .redux-templates-upgrade-button {\n border: none;\n border-radius: 4px;\n cursor: pointer;\n opacity: 1;\n background: #24b0a6;\n transition: opacity 0.2s ease-in-out;\n box-shadow: none !important;\n color: #fff;\n text-decoration: none;\n padding: 0.75em 1.25em;\n display: block;\n margin: 30px auto 0 auto;\n max-width: 250px;\n text-align: center;\n font-size: 1em; }\n .redux-templates-modal-wrapper .section-box.premium-box .redux-templates-upgrade-button:hover {\n color: #fff;\n opacity: 0.85;\n box-shadow: none !important;\n background: #19837c; }\n .redux-templates-modal-wrapper .section-box.premium-box .subscription_key_button {\n margin-top: 40px; }\n .redux-templates-modal-wrapper .section-box.premium-box .subscription_key_button button {\n background: #f8f8f8;\n border: 1px solid #ddd; }\n .redux-templates-modal-wrapper .section-box.premium-box .redux-pro-activate-button {\n border: none;\n border-radius: 4px;\n cursor: pointer;\n opacity: 1;\n background: #24b0a6;\n transition: opacity 0.2s ease-in-out;\n box-shadow: none !important;\n color: #fff;\n text-decoration: none;\n padding: 0.75em 1.25em;\n display: block;\n margin: 30px auto 0 auto;\n max-width: 250px;\n text-align: center;\n font-size: 1em; }\n .redux-templates-modal-wrapper .section-box.premium-box .redux-pro-activate-button i {\n margin-right: 10px; }\n .redux-templates-modal-wrapper .section-box.premium-box .redux-pro-activate-button:hover {\n color: #fff;\n opacity: 0.85;\n box-shadow: none !important;\n background: #19837c; }\n .redux-templates-modal-wrapper .redux-templates-importmodal-content {\n flex: 1;\n display: flex;\n flex-direction: column; }\n\n.text-transition {\n width: 100% !important;\n text-align: center; }\n .text-transition .text-transition_inner > div {\n font-size: 1.1rem; }\n", ""]);
438
 
439
 
440
 
4416
  marginRight: '10px',
4417
  verticalAlign: 'middle'
4418
  }
4419
+ }, redux_templates.left <= 0 && wp.element.createElement(React.Fragment, null, sprintf(__('Trial Ended: %d/%d Imported', redux_templates.i18n), 5 - redux_templates.left, 5)), redux_templates.left > 0 && wp.element.createElement(React.Fragment, null, sprintf(__('Trial: %d/%d Imports Remaining', redux_templates.i18n), redux_templates.left, 5))), wp.element.createElement(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Button"], {
4420
  isPrimary: true,
4421
  isSmall: true,
4422
  icon: _redux_templates_icons__WEBPACK_IMPORTED_MODULE_6__["redux"],
7417
 
7418
  /***/ }),
7419
 
7420
+ /***/ "./redux-templates/src/modal-import-wizard/ReduxTemplatesActivateBox.js":
7421
+ /*!******************************************************************************!*\
7422
+ !*** ./redux-templates/src/modal-import-wizard/ReduxTemplatesActivateBox.js ***!
7423
+ \******************************************************************************/
7424
  /*! exports provided: default */
7425
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
7426
 
7458
 
7459
  /***/ }),
7460
 
7461
+ /***/ "./redux-templates/src/modal-import-wizard/ReduxTemplatesPremiumActivate.js":
7462
+ /*!**********************************************************************************!*\
7463
+ !*** ./redux-templates/src/modal-import-wizard/ReduxTemplatesPremiumActivate.js ***!
7464
+ \**********************************************************************************/
7465
+ /*! exports provided: default */
7466
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
7467
+
7468
+ "use strict";
7469
+ __webpack_require__.r(__webpack_exports__);
7470
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return ReduxTemplatesPremiumActivate; });
7471
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
7472
+
7473
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7474
+
7475
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
7476
+
7477
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
7478
+
7479
+ function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; 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"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
7480
+
7481
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7482
+
7483
+ const _wp$i18n = wp.i18n,
7484
+ __ = _wp$i18n.__,
7485
+ sprintf = _wp$i18n.sprintf;
7486
+ const useState = wp.element.useState;
7487
+ const _wp = wp,
7488
+ apiFetch = _wp.apiFetch;
7489
+ function ReduxTemplatesPremiumActivate(props) {
7490
+ const _useState = useState(null),
7491
+ _useState2 = _slicedToArray(_useState, 2),
7492
+ installing = _useState2[0],
7493
+ setInstalling = _useState2[1];
7494
+
7495
+ const _useState3 = useState(__('Enter your API key to activate and install your copy of Redux Pro.', redux_templates.i18n)),
7496
+ _useState4 = _slicedToArray(_useState3, 2),
7497
+ status = _useState4[0],
7498
+ setStatus = _useState4[1];
7499
+
7500
+ const _useState5 = useState(''),
7501
+ _useState6 = _slicedToArray(_useState5, 2),
7502
+ statusType = _useState6[0],
7503
+ setStatusType = _useState6[1];
7504
+
7505
+ const _useState7 = useState(atob(redux_templates.key)),
7506
+ _useState8 = _slicedToArray(_useState7, 2),
7507
+ proKey = _useState8[0],
7508
+ setProKey = _useState8[1];
7509
+
7510
+ const toPluginStep = props.toPluginStep;
7511
+
7512
+ const installReduxPlugin = async () => {
7513
+ if (!redux_templates.supported_plugins['redux-framework'].plugin) {
7514
+ setStatus(__('Installing the redux-framework plugin.', redux_templates.i18n));
7515
+ await apiFetch({
7516
+ path: 'redux/v1/templates/plugin-install?slug=redux-framework'
7517
+ }).then(res => {
7518
+ if (res.success) {
7519
+ installReduxPro();
7520
+ } else {
7521
+ setStatus(__('Install of Redux Pro failed, please try again.', redux_templates.i18n));
7522
+ setInstalling(null);
7523
+ }
7524
+ }).catch(res => {
7525
+ setStatus(__('There seems to be an API issue. Please contact Redux support or try again.', redux_templates.i18n));
7526
+ setInstalling(null);
7527
+ });
7528
+ } else {
7529
+ installReduxPro();
7530
+ }
7531
+ };
7532
+
7533
+ const installReduxPro = async () => {
7534
+ if (!redux_templates.supported_plugins['redux-pro'].version) {
7535
+ setStatus(__('Installing Redux Pro.', redux_templates.i18n));
7536
+ await apiFetch({
7537
+ path: 'redux/v1/templates/plugin-install?slug=redux-pro&redux_pro=1'
7538
+ }).then(res => {
7539
+ if (res.success) {
7540
+ setStatus(__('Redux Pro successfully installed!', redux_templates.i18n));
7541
+ redux_templates.mokama = true;
7542
+ delete redux_templates.left;
7543
+ toPluginStep();
7544
+ } else {
7545
+ setStatus(__('Install of Redux Pro failed, please try again.', redux_templates.i18n));
7546
+ }
7547
+ }).catch(res => {
7548
+ setStatus(__('There seems to be an API issue. Please contact Redux support or try again.', redux_templates.i18n));
7549
+ setInstalling(null);
7550
+ });
7551
+ } else {
7552
+ redux_templates.mokama = true;
7553
+ delete redux_templates.left;
7554
+ toPluginStep();
7555
+ }
7556
+ };
7557
+
7558
+ const activateKey = async () => {
7559
+ setInstalling(true);
7560
+ setStatus(__('Validating license key.', redux_templates.i18n));
7561
+ await apiFetch({
7562
+ path: 'redux/v1/templates/license?key=' + proKey
7563
+ }).then(res => {
7564
+ if (res.success) {
7565
+ setStatus(__('API key activated, installing Redux Pro.', redux_templates.i18n));
7566
+ installReduxPlugin();
7567
+ } else {
7568
+ if (res.msg) {
7569
+ setStatus(res.msg);
7570
+ } else {
7571
+ setStatus(__('License key failed to activate. Please try again.', redux_templates.i18n));
7572
+ }
7573
+
7574
+ setInstalling(null);
7575
+ }
7576
+ }).catch(res => {
7577
+ setStatus(__('There seems to be an API issue. Please contact Redux support or try again.', redux_templates.i18n));
7578
+ setInstalling(null);
7579
+ });
7580
+ };
7581
+
7582
+ const updateProKey = e => {
7583
+ setProKey(e.target.value);
7584
+ };
7585
+
7586
+ return wp.element.createElement("div", {
7587
+ className: "redux-templates-modal-body"
7588
+ }, wp.element.createElement("div", {
7589
+ className: "section-box premium-box"
7590
+ }, wp.element.createElement("h3", null, __('Activate Redux Pro', redux_templates.i18n)), wp.element.createElement("div", {
7591
+ className: statusType
7592
+ }, status), wp.element.createElement("p", null, wp.element.createElement("input", {
7593
+ type: "text",
7594
+ placeholder: __('Enter your subscription key', redux_templates.i18n),
7595
+ value: proKey,
7596
+ onChange: updateProKey,
7597
+ disabled: installing !== null
7598
+ })), wp.element.createElement("p", {
7599
+ className: "subscription_key"
7600
+ }, wp.element.createElement("button", {
7601
+ className: "redux-pro-activate-button",
7602
+ "aria-label": "Activate my key",
7603
+ disabled: installing !== null,
7604
+ onClick: () => activateKey()
7605
+ }, installing !== null && wp.element.createElement("i", {
7606
+ className: "fas fa-spinner fa-pulse"
7607
+ }), wp.element.createElement("span", null, __('Activate & Install Pro', redux_templates.i18n)))), wp.element.createElement("p", {
7608
+ style: {
7609
+ fontSize: '1.1em',
7610
+ paddingTop: '10px'
7611
+ }
7612
+ }, wp.element.createElement("small", null, wp.element.createElement("em", {
7613
+ dangerouslySetInnerHTML: {
7614
+ __html: redux_templates.tos.replace(__('Register', redux_templates.i18n), __('Activate', redux_templates.i18n))
7615
+ }
7616
+ }), " ", wp.element.createElement("br", null), wp.element.createElement("span", {
7617
+ dangerouslySetInnerHTML: {
7618
+ __html: sprintf(__('Visit the <a href="%s" target="_blank">account dashboard</a> to recover your subscription key.', redux_templates.i18n), 'https://redux.io/account/?utm_source=plugin-installation&utm_campaign=import_wizard&utm_medium=appsero&utm_content=activate_pro')
7619
+ }
7620
+ })))));
7621
+ }
7622
+
7623
+ /***/ }),
7624
+
7625
  /***/ "./redux-templates/src/modal-import-wizard/ReduxTemplatesPremiumBox.js":
7626
  /*!*****************************************************************************!*\
7627
  !*** ./redux-templates/src/modal-import-wizard/ReduxTemplatesPremiumBox.js ***!
7634
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return ReduxTemplatesPremiumBox; });
7635
  const __ = wp.i18n.__;
7636
  function ReduxTemplatesPremiumBox(props) {
7637
+ const toProActivateStep = props.toProActivateStep;
7638
+
7639
+ const onNextStep = () => {
7640
+ toProActivateStep();
7641
+ };
7642
+
7643
  return wp.element.createElement("div", {
7644
  className: "redux-templates-modal-body"
7645
  }, wp.element.createElement("div", {
7646
  className: "section-box premium-box"
7647
+ }, wp.element.createElement("h3", null, __('Upgrade to Redux Pro', redux_templates.i18n)), wp.element.createElement("p", null, __('Thanks for giving our library a try! Upgrade to Redux Pro to unlock even more designs and to continue using our library.', redux_templates.i18n)), wp.element.createElement("p", null, wp.element.createElement("a", {
7648
  href: redux_templates.u + 'import_wizard',
7649
  className: "redux-templates-upgrade-button",
7650
  title: "{__('Redux Pro', redux_templates.i18n)}",
7651
  target: "_blank"
7652
+ }, __('Upgrade Now Just $49', redux_templates.i18n)), wp.element.createElement("small", null, wp.element.createElement("em", null, "Limited time only"))), wp.element.createElement("p", {
7653
+ className: "subscription_key_button"
7654
+ }, wp.element.createElement("button", {
7655
+ type: "button",
7656
+ className: "components-button",
7657
+ "aria-label": "I have a subscription key",
7658
+ onClick: () => onNextStep()
7659
+ }, "I have a subscription key"))));
7660
  }
7661
 
7662
  /***/ }),
7675
  /* harmony import */ var _OptionStep__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./OptionStep */ "./redux-templates/src/modal-import-wizard/OptionStep.js");
7676
  /* harmony import */ var _ImportingStep__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ImportingStep */ "./redux-templates/src/modal-import-wizard/ImportingStep.js");
7677
  /* harmony import */ var _ReduxTemplatesPremiumBox__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ReduxTemplatesPremiumBox */ "./redux-templates/src/modal-import-wizard/ReduxTemplatesPremiumBox.js");
7678
+ /* harmony import */ var _ReduxTemplatesPremiumActivate__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ReduxTemplatesPremiumActivate */ "./redux-templates/src/modal-import-wizard/ReduxTemplatesPremiumActivate.js");
7679
+ /* harmony import */ var _ReduxTemplatesActivateBox__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ReduxTemplatesActivateBox */ "./redux-templates/src/modal-import-wizard/ReduxTemplatesActivateBox.js");
7680
+ /* harmony import */ var _redux_templates_stores_dependencyHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ~redux-templates/stores/dependencyHelper */ "./redux-templates/src/stores/dependencyHelper.js");
7681
+ /* harmony import */ var _modals_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../modals.scss */ "./redux-templates/src/modals.scss");
7682
+ /* harmony import */ var _modals_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_modals_scss__WEBPACK_IMPORTED_MODULE_8__);
7683
+ /* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./style.scss */ "./redux-templates/src/modal-import-wizard/style.scss");
7684
+ /* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_style_scss__WEBPACK_IMPORTED_MODULE_9__);
7685
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
7686
 
7687
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7713
 
7714
 
7715
 
7716
+
7717
  const PRO_STEP = 0;
7718
  const PLUGIN_STEP = 1;
7719
  const OPTION_STEP = 2;
7720
  const IMPORT_STEP = 3;
7721
+ const REDUX_PRO_STEP = -10;
7722
+ const REDUX_PRO_ACTIVATE_STEP = -9;
7723
  const REDUX_ACTIVATE_STEP = 999;
7724
  const tourPlugins = ['qubely', 'kioken-blocks'];
7725
 
7767
 
7768
  const leftTry = isNaN(redux_templates.left) === false ? parseInt(redux_templates.left) : 0;
7769
 
7770
+ if (!!redux_templates.mokama === false && leftTry < 1 && currentStep !== REDUX_PRO_ACTIVATE_STEP) {
7771
+ if (currentStep !== REDUX_ACTIVATE_STEP) {
7772
+ setCurrentStep(REDUX_PRO_STEP);
7773
+ return;
7774
+ }
7775
  }
7776
  /* Redux pro check */
7777
 
7778
 
7779
+ if (Object(_redux_templates_stores_dependencyHelper__WEBPACK_IMPORTED_MODULE_7__["requiresReduxPro"])(importingTemplate)) {
7780
+ if (currentStep !== REDUX_PRO_ACTIVATE_STEP) setCurrentStep(REDUX_PRO_STEP);
7781
  return;
7782
  } // Start with Pro step
7783
  // When all OK with Pro Step, move to Plugin Step, on the way, prepare reduxProMergedPlugins.
7784
 
7785
 
7786
+ if (importingTemplate && currentStep === PRO_STEP && Object(_redux_templates_stores_dependencyHelper__WEBPACK_IMPORTED_MODULE_7__["requiresPro"])(importingTemplate) === false) {
7787
  setCurrentStep(PLUGIN_STEP);
7788
 
7789
+ if (Object(_redux_templates_stores_dependencyHelper__WEBPACK_IMPORTED_MODULE_7__["isReduxProInstalled"])()) {
7790
  setMissingPlugins([].concat(importingTemplate.proDependenciesMissing, importingTemplate.installDependenciesMissing).filter(plugin => plugin));
7791
  } else {
7792
  setMissingPlugins(importingTemplate.installDependenciesMissing.filter(plugin => plugin));
7793
  }
7794
  }
7795
 
7796
+ if (importingTemplate && currentStep === PLUGIN_STEP && Object(_redux_templates_stores_dependencyHelper__WEBPACK_IMPORTED_MODULE_7__["requiresInstall"])(importingTemplate) === false) if (isPostEmpty === false) setCurrentStep(OPTION_STEP);else setCurrentStep(IMPORT_STEP);
7797
  if (importingTemplate && currentStep === OPTION_STEP && isPostEmpty === true) setCurrentStep(IMPORT_STEP);
7798
 
7799
  if (importingTemplate && currentStep === IMPORT_STEP && importing === false) {
7809
  }
7810
  }
7811
  }
7812
+ }, [importingTemplate, currentStep, activateDialogDisplay]); // Activate dialog display
7813
 
7814
  useEffect(() => {
7815
  if (activateDialogDisplay === true) {
7828
  setCurrentStep(currentStep + 1);
7829
  };
7830
 
7831
+ const toPluginStep = () => {
7832
+ setCurrentStep(PRO_STEP);
7833
+ };
7834
+
7835
+ const toProActivateStep = () => {
7836
+ setCurrentStep(REDUX_PRO_ACTIVATE_STEP);
7837
+ };
7838
+
7839
  const onCloseWizard = () => {
7840
  if (isChallengeOpen) return; // When in tour mode, we don't accept mouse event.
7841
 
7882
  className: 'fas fa-times'
7883
  }))), wp.element.createElement("div", {
7884
  className: "redux-templates-importmodal-content"
7885
+ }, currentStep === PRO_STEP && Object(_redux_templates_stores_dependencyHelper__WEBPACK_IMPORTED_MODULE_7__["requiresPro"])(importingTemplate) && wp.element.createElement(_ProPluginsStep__WEBPACK_IMPORTED_MODULE_1__["default"], {
7886
  missingPros: importingTemplate.proDependenciesMissing,
7887
  onCloseWizard: onCloseWizard
7888
  }), currentStep === PLUGIN_STEP && wp.element.createElement(_InstallPluginStep__WEBPACK_IMPORTED_MODULE_0__["default"], {
7892
  }), currentStep === OPTION_STEP && wp.element.createElement(_OptionStep__WEBPACK_IMPORTED_MODULE_2__["default"], {
7893
  toNextStep: toNextStep,
7894
  onCloseWizard: onCloseWizard
7895
+ }), currentStep === IMPORT_STEP && wp.element.createElement(_ImportingStep__WEBPACK_IMPORTED_MODULE_3__["default"], null), currentStep === REDUX_ACTIVATE_STEP && wp.element.createElement(_ReduxTemplatesActivateBox__WEBPACK_IMPORTED_MODULE_6__["default"], {
7896
  onActivateRedux: activateReduxTracking,
7897
  activating: activating
7898
+ }), currentStep === REDUX_PRO_ACTIVATE_STEP && wp.element.createElement(_ReduxTemplatesPremiumActivate__WEBPACK_IMPORTED_MODULE_5__["default"], {
7899
+ toPluginStep: toPluginStep
7900
+ }), currentStep === REDUX_PRO_STEP && wp.element.createElement(_ReduxTemplatesPremiumBox__WEBPACK_IMPORTED_MODULE_4__["default"], {
7901
+ toProActivateStep: toProActivateStep
7902
+ }), isInstalledDependencies && wp.element.createElement("iframe", {
7903
  src: "./",
7904
  width: "0",
7905
  height: "0"
11613
  if (!data) return false;
11614
  const missingDependencies = [].concat(data.installDependenciesMissing, data.proDependenciesMissing);
11615
  return missingDependencies.reduce((acc, curKey) => {
11616
+ if (isReduxProInstalled() === false && curKey === 'redux-pro') return true;
11617
  return acc || isPluginReduxProMerged(curKey) && isReduxProInstalled() === false; // main logic, above were execpetion handling
11618
  }, false);
11619
  };
11636
  };
11637
  const isReduxProInstalled = () => {
11638
  const reduxProPluginInstance = redux_templates.supported_plugins['redux-framework'];
11639
+ return !!redux_templates.mokama == true || reduxProPluginInstance && reduxProPluginInstance.hasOwnProperty('is_pro');
11640
  };
11641
 
11642
  /***/ }),
redux-templates/assets/js/redux-templates.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"redux-templates.js","sources":["webpack:///webpack/bootstrap","webpack:///./redux-templates/src/blocks/library/style.scss","webpack:///./redux-templates/src/challenge/challenge-list-block/style.scss","webpack:///./redux-templates/src/challenge/challenge-timer/style.scss","webpack:///./redux-templates/src/challenge/final-templates/style.scss","webpack:///./redux-templates/src/challenge/style.scss","webpack:///./redux-templates/src/components/background-image/style.scss","webpack:///./redux-templates/src/components/button-group/style.scss","webpack:///./redux-templates/src/components/dependent-plugins/style.scss","webpack:///./redux-templates/src/components/error-notice/style.scss","webpack:///./redux-templates/src/components/fab-wrapper/styles.scss","webpack:///./redux-templates/src/components/multiple-item/style.scss","webpack:///./redux-templates/src/components/pagination/style.scss","webpack:///./redux-templates/src/components/preview-import-button/style.scss","webpack:///./redux-templates/src/components/single-item/style.scss","webpack:///./redux-templates/src/components/template-list-subheader/style.scss","webpack:///./redux-templates/src/components/welcome-guide/style.scss","webpack:///./redux-templates/src/custom-css/style.scss","webpack:///./redux-templates/src/editor.scss","webpack:///./redux-templates/src/modal-import-wizard/style.scss","webpack:///./redux-templates/src/modal-library/sidebar/style.scss","webpack:///./redux-templates/src/modal-library/style.scss","webpack:///./redux-templates/src/modal-library/view-collection/style.scss","webpack:///./redux-templates/src/modal-library/view-saved/style.scss","webpack:///./redux-templates/src/modal-library/view-template-list/style.scss","webpack:///./redux-templates/src/modal-preview/style.scss","webpack:///./redux-templates/src/modals.scss","webpack:///./redux-templates/assets/img/icon-color.svg","webpack:///./redux-templates/assets/img/icon.svg","webpack:///./redux-templates/src/blocks/blocks.js","webpack:///./redux-templates/src/blocks/import/components/edit.js","webpack:///./redux-templates/src/blocks/import/icon.js","webpack:///./redux-templates/src/blocks/import/index.js","webpack:///./redux-templates/src/blocks/import/transforms.js","webpack:///./redux-templates/src/blocks/import/utils/file.js","webpack:///./redux-templates/src/blocks/import/utils/import.js","webpack:///./redux-templates/src/blocks/import/utils/insert.js","webpack:///./redux-templates/src/blocks/library/edit.js","webpack:///./redux-templates/src/blocks/library/index.js","webpack:///./redux-templates/src/blocks/library/insert-library-button.js","webpack:///./redux-templates/src/blocks/library/style.scss?eec2","webpack:///./redux-templates/src/challenge/challenge-list-block/ChallengeStepItem.js","webpack:///./redux-templates/src/challenge/challenge-list-block/ProgressBar.js","webpack:///./redux-templates/src/challenge/challenge-list-block/index.js","webpack:///./redux-templates/src/challenge/challenge-list-block/style.scss?9f45","webpack:///./redux-templates/src/challenge/challenge-timer/index.js","webpack:///./redux-templates/src/challenge/challenge-timer/style.scss?1c53","webpack:///./redux-templates/src/challenge/config.js","webpack:///./redux-templates/src/challenge/final-templates/congrats.js","webpack:///./redux-templates/src/challenge/final-templates/contact.js","webpack:///./redux-templates/src/challenge/final-templates/index.js","webpack:///./redux-templates/src/challenge/final-templates/style.scss?54b2","webpack:///./redux-templates/src/challenge/helper.js","webpack:///./redux-templates/src/challenge/index.js","webpack:///./redux-templates/src/challenge/style.scss?5d1a","webpack:///./redux-templates/src/challenge/tooltip/ChallengeDot.js","webpack:///./redux-templates/src/challenge/tooltip/TooltipBox.js","webpack:///./redux-templates/src/components/background-image/index.js","webpack:///./redux-templates/src/components/background-image/style.scss?1987","webpack:///./redux-templates/src/components/button-group/index.js","webpack:///./redux-templates/src/components/button-group/style.scss?5c67","webpack:///./redux-templates/src/components/dependent-plugins/index.js","webpack:///./redux-templates/src/components/dependent-plugins/style.scss?77c8","webpack:///./redux-templates/src/components/error-notice/index.js","webpack:///./redux-templates/src/components/error-notice/style.scss?3b1b","webpack:///./redux-templates/src/components/fab-wrapper/config.js","webpack:///./redux-templates/src/components/fab-wrapper/index.js","webpack:///./redux-templates/src/components/fab-wrapper/styles.scss?0dab","webpack:///./redux-templates/src/components/multiple-item/index.js","webpack:///./redux-templates/src/components/multiple-item/style.scss?3037","webpack:///./redux-templates/src/components/pagination/index.js","webpack:///./redux-templates/src/components/pagination/style.scss?7abf","webpack:///./redux-templates/src/components/preview-import-button/index.js","webpack:///./redux-templates/src/components/preview-import-button/style.scss?db94","webpack:///./redux-templates/src/components/safe-image-load/index.js","webpack:///./redux-templates/src/components/single-item/index.js","webpack:///./redux-templates/src/components/single-item/style.scss?1c09","webpack:///./redux-templates/src/components/tab-header/index.js","webpack:///./redux-templates/src/components/template-list-subheader/images/view-few.svg","webpack:///./redux-templates/src/components/template-list-subheader/images/view-many.svg","webpack:///./redux-templates/src/components/template-list-subheader/images/view-normal.svg","webpack:///./redux-templates/src/components/template-list-subheader/index.js","webpack:///./redux-templates/src/components/template-list-subheader/style.scss?349f","webpack:///./redux-templates/src/components/welcome-guide/images.js","webpack:///./redux-templates/src/components/welcome-guide/index.js","webpack:///./redux-templates/src/components/welcome-guide/style.scss?55ff","webpack:///./redux-templates/src/custom-css/editor.js","webpack:///./redux-templates/src/custom-css/index.js","webpack:///./redux-templates/src/custom-css/inject-css.js","webpack:///./redux-templates/src/custom-css/style.scss?7049","webpack:///./redux-templates/src/editor.scss?b1ec","webpack:///./redux-templates/src/icons/images/acf-blocks.svg","webpack:///./redux-templates/src/icons/images/advanced-custom-fields.svg","webpack:///./redux-templates/src/icons/images/advanced-gutenberg-blocks.svg","webpack:///./redux-templates/src/icons/images/atomic-blocks.svg","webpack:///./redux-templates/src/icons/images/block-options.svg","webpack:///./redux-templates/src/icons/images/block-slider.svg","webpack:///./redux-templates/src/icons/images/coblocks.svg","webpack:///./redux-templates/src/icons/images/creative-blocks.svg","webpack:///./redux-templates/src/icons/images/editorplus.svg","webpack:///./redux-templates/src/icons/images/elegant-blocks.svg","webpack:///./redux-templates/src/icons/images/enhanced-blocks.svg","webpack:///./redux-templates/src/icons/images/essential-blocks.svg","webpack:///./redux-templates/src/icons/images/forms-gutenberg.svg","webpack:///./redux-templates/src/icons/images/getwid.svg","webpack:///./redux-templates/src/icons/images/ghostkit.svg","webpack:///./redux-templates/src/icons/images/guteblock.svg","webpack:///./redux-templates/src/icons/images/gutentor.svg","webpack:///./redux-templates/src/icons/images/kadence-blocks.svg","webpack:///./redux-templates/src/icons/images/kioken-blocks.svg","webpack:///./redux-templates/src/icons/images/otter-blocks.svg","webpack:///./redux-templates/src/icons/images/qodeblock.svg","webpack:///./redux-templates/src/icons/images/qubely.svg","webpack:///./redux-templates/src/icons/images/snow-monkey-blocks.svg","webpack:///./redux-templates/src/icons/images/stackable-ultimate-gutenberg-blocks.svg","webpack:///./redux-templates/src/icons/images/ultimate-addons-for-gutenberg.svg","webpack:///./redux-templates/src/icons/images/ultimate-blocks.svg","webpack:///./redux-templates/src/icons/images/ultimate-post.svg","webpack:///./redux-templates/src/icons/images/wordpress.svg","webpack:///./redux-templates/src/icons/index.js","webpack:///./redux-templates/src/index.js","webpack:///./redux-templates/src/modal-feedback/index.js","webpack:///./redux-templates/src/modal-import-wizard/ImportingStep.js","webpack:///./redux-templates/src/modal-import-wizard/InstallPluginStep.js","webpack:///./redux-templates/src/modal-import-wizard/OptionStep.js","webpack:///./redux-templates/src/modal-import-wizard/ProPluginsStep.js","webpack:///./redux-templates/src/modal-import-wizard/ReduxTeamplatesActivateBox.js","webpack:///./redux-templates/src/modal-import-wizard/ReduxTemplatesPremiumBox.js","webpack:///./redux-templates/src/modal-import-wizard/index.js","webpack:///./redux-templates/src/modal-import-wizard/style.scss?9a4a","webpack:///./redux-templates/src/modal-library/index.js","webpack:///./redux-templates/src/modal-library/layout-with-sidebar/index.js","webpack:///./redux-templates/src/modal-library/sidebar/categoryFilter.js","webpack:///./redux-templates/src/modal-library/sidebar/dependencyFilter.js","webpack:///./redux-templates/src/modal-library/sidebar/dependencyFilterRow.js","webpack:///./redux-templates/src/modal-library/sidebar/index.js","webpack:///./redux-templates/src/modal-library/sidebar/priceFilter.js","webpack:///./redux-templates/src/modal-library/sidebar/style.scss?e89b","webpack:///./redux-templates/src/modal-library/style.scss?f8e2","webpack:///./redux-templates/src/modal-library/view-collection/index.js","webpack:///./redux-templates/src/modal-library/view-collection/style.scss?bea7","webpack:///./redux-templates/src/modal-library/view-saved/index.js","webpack:///./redux-templates/src/modal-library/view-saved/style.scss?fe19","webpack:///./redux-templates/src/modal-library/view-template-list/index.js","webpack:///./redux-templates/src/modal-library/view-template-list/style.scss?32ed","webpack:///./redux-templates/src/modal-manager/index.js","webpack:///./redux-templates/src/modal-preview/FullyOverlayFooter.js","webpack:///./redux-templates/src/modal-preview/FullyOverlayHeader.js","webpack:///./redux-templates/src/modal-preview/SidebarContent.js","webpack:///./redux-templates/src/modal-preview/SitePreviewSidebar.js","webpack:///./redux-templates/src/modal-preview/index.js","webpack:///./redux-templates/src/modal-preview/style.scss?ef64","webpack:///./redux-templates/src/modals.scss?6210","webpack:///./redux-templates/src/plugins/export-page-menu-item/index.js","webpack:///./redux-templates/src/plugins/export/export-block-menu-item.js","webpack:///./redux-templates/src/plugins/export/file.js","webpack:///./redux-templates/src/plugins/export/index.js","webpack:///./redux-templates/src/plugins/export/reusable.js","webpack:///./redux-templates/src/plugins/library-context-menu-item/index.js","webpack:///./redux-templates/src/plugins/share-block-btn/buttons.js","webpack:///./redux-templates/src/plugins/share-block-btn/index.js","webpack:///./redux-templates/src/plugins/sidebar-share/index.js","webpack:///./redux-templates/src/plugins/sidebar-share/sidebar.js","webpack:///./redux-templates/src/stores/actionHelper.js","webpack:///./redux-templates/src/stores/actions.js","webpack:///./redux-templates/src/stores/dependencyHelper.js","webpack:///./redux-templates/src/stores/filters.js","webpack:///./redux-templates/src/stores/helper.js","webpack:///./redux-templates/src/stores/index.js","webpack:///./redux-templates/src/stores/reducer.js","webpack:///external \"wp.blockEditor\"","webpack:///external \"wp.blocks\"","webpack:///external \"wp.components\"","webpack:///external \"wp.compose\"","webpack:///external \"wp.data\"","webpack:///external \"wp.editPost\"","webpack:///external \"wp.element\"","webpack:///external \"wp.hooks\"","webpack:///external \"wp.i18n\"","webpack:///external \"lodash\"","webpack:///external \"React\"","webpack:///external \"ReactDOM\""],"sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"redux-templates\": 0\n \t};\n\n \tvar deferredModules = [];\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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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 \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"./redux-templates/src/index.js\",\"vendor\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-template-library-block .components-placeholder__label svg {\\n margin-right: 8px; }\\n\\n.redux-template-library-block button.components-button {\\n height: auto;\\n font-weight: 600;\\n text-transform: uppercase;\\n font-size: 13px;\\n padding: 11px 20px;\\n background: #fff; }\\n\\n.components-button.has-icon.redux-templates-insert-library-button {\\n height: 100%; }\\n\\n.redux-templates-insert-library-button {\\n margin-left: 10px;\\n margin-right: 10px; }\\n .redux-templates-insert-library-button svg {\\n width: 20px;\\n height: 20px; }\\n\\n.redux-insert-library-button {\\n margin-left: 10px;\\n margin-right: 10px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".challenge-list-block {\\n padding: 15px 20px 20px;\\n margin-bottom: 15px;\\n background-color: #fff;\\n overflow: hidden;\\n border-radius: 4px;\\n box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2);\\n -webkit-box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2);\\n -moz-box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2); }\\n\\n.challenge-bar {\\n border-radius: 20px;\\n background-color: #eee; }\\n\\n.challenge-bar div {\\n width: 0;\\n height: 20px;\\n border-radius: 20px;\\n background-color: #2576a4; }\\n\\n.challenge-list {\\n list-style: none;\\n margin: 17px 0 20px;\\n font-size: 13px; }\\n .challenge-list li {\\n margin-bottom: 17px; }\\n .challenge-list li i {\\n display: inline-block;\\n font-size: 18px;\\n color: #d6d6d6;\\n margin-right: 8px;\\n line-height: 15px;\\n vertical-align: bottom;\\n border-radius: 50%; }\\n .challenge-list li.challenge-item-current {\\n font-weight: bold; }\\n .challenge-list li.challenge-item-current i {\\n color: #df7739;\\n font-size: 17.5px;\\n line-height: 1;\\n text-indent: 0.5px; }\\n .challenge-list li.challenge-item-completed {\\n font-weight: initial;\\n text-decoration: line-through; }\\n .challenge-list li.challenge-item-completed i {\\n color: #6ab255;\\n font-size: 18px;\\n background-color: #fff; }\\n .challenge-list li .dashicons-yes {\\n display: none;\\n vertical-align: middle; }\\n\\n/* /.challenge-list */\\nbutton.btn-challenge-start {\\n font-size: 12px;\\n padding: 6px 15px;\\n border: 1px solid #00a7e5;\\n background-color: #24b0a6;\\n border-radius: 3px;\\n color: #fff;\\n cursor: pointer; }\\n button.btn-challenge-start:hover {\\n background-color: #19837c; }\\n\\n.btn-challenge-cancel,\\n.btn-challenge-skip {\\n margin: 6px 0;\\n border: 0;\\n text-decoration: underline; }\\n\\n.btn-challenge-cancel,\\n.btn-challenge-skip {\\n align-self: flex-end;\\n color: #909090;\\n font-size: 12px;\\n font-weight: normal;\\n background: none; }\\n\\n.wpforms-btn-md {\\n min-height: initial; }\\n\\n.challenge-button-row {\\n display: flex;\\n justify-content: space-between; }\\n .challenge-button-row button {\\n cursor: pointer; }\\n\\n.started.challenge-button-row {\\n align-content: space-between;\\n flex-direction: column; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".block-timer {\\n padding: 5px;\\n background-color: #2d2d2d;\\n border-radius: 500px;\\n width: 277px;\\n box-sizing: border-box;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2);\\n -webkit-box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2);\\n -moz-box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2);\\n padding-left: 50px; }\\n .block-timer img {\\n width: 50px;\\n height: 50px;\\n border-radius: 50%; }\\n .block-timer h3 {\\n font-size: 14px;\\n font-weight: 500;\\n color: #fff;\\n margin: 0; }\\n .block-timer p {\\n font-size: 14px;\\n font-weight: 100;\\n color: #ababab;\\n margin: 0; }\\n .block-timer .caret-icon {\\n border: 2px solid;\\n border-radius: 50%;\\n color: #6c6c6c;\\n margin: 0 15px;\\n width: 23px;\\n height: 23px;\\n font-size: 20px;\\n cursor: pointer; }\\n .block-timer .caret-icon .fa {\\n width: 100%;\\n text-align: center;\\n -webkit-transition: 400ms;\\n -o-transition: 400ms;\\n transition: 400ms; }\\n .block-timer .caret-icon.closed .fa {\\n -webkit-transform: rotate(180deg) translateY(1px);\\n -ms-transform: rotate(180deg) translateY(1px);\\n transform: rotate(180deg) translateY(1px); }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".challenge-popup-wrapper {\\n height: 500px;\\n border-radius: 10px; }\\n\\n.challenge-popup-header {\\n width: 100%;\\n height: 212px;\\n border-top-left-radius: 8px;\\n border-top-right-radius: 8px; }\\n\\n.challenge-popup-header-congrats {\\n background-position: center;\\n background-size: cover; }\\n\\n.challenge-popup-header-contact {\\n background-position: center;\\n background-size: auto 75%;\\n background-color: #eee;\\n background-repeat: no-repeat; }\\n\\n.challenge-popup-content {\\n padding: 30px 40px;\\n -webkit-font-smoothing: antialiased; }\\n\\n.challenge-popup-content h3 {\\n color: #24b0a6;\\n margin: 0 0 20px;\\n font-size: 24px;\\n font-family: \\\"Helvetica Neue\\\";\\n font-weight: 500; }\\n\\n.challenge-popup-content p {\\n font-size: 16px;\\n margin: 0 0 22px; }\\n\\n.challenge-popup-content b {\\n font-weight: 500; }\\n\\n.challenge-popup-content .challenge-contact-message {\\n box-shadow: none;\\n resize: none;\\n margin-bottom: 21px;\\n width: 100%;\\n min-height: 175px; }\\n\\n.challenge-popup-content label {\\n font-size: 13.8px;\\n display: block;\\n margin-bottom: 23px; }\\n\\n.challenge-popup-content input[type=\\\"checkbox\\\"] {\\n margin-right: 8px; }\\n\\n.challenge-popup-content .rating-stars {\\n color: #fdb72c;\\n font-size: 18px;\\n font-weight: bold; }\\n\\n.challenge-popup-close .fa-times {\\n font-size: 20px;\\n color: #777;\\n float: right;\\n margin: 15px;\\n border-radius: 50%;\\n cursor: pointer; }\\n\\n.challenge-popup-btn {\\n display: inline-block;\\n border-radius: 2px;\\n cursor: pointer;\\n text-decoration: none;\\n text-align: center;\\n vertical-align: middle;\\n white-space: nowrap;\\n box-shadow: none;\\n font-size: 15px;\\n font-weight: 600;\\n padding: 14px 25px;\\n border: 1px solid #00a7e5;\\n background-color: #24b0a6;\\n color: #fff; }\\n .challenge-popup-btn:hover {\\n border: 1px solid #19837c;\\n background-color: #19837c;\\n color: #fff; }\\n .challenge-popup-btn .dashicons-external {\\n margin-left: 6px; }\\n\\n.challenge-popup-content.challenge-contact p {\\n font-size: 14px; }\\n\\n.challenge-popup-content.challenge-contact textarea {\\n margin-bottom: 10px; }\\n\\n.challenge-popup-content.challenge-contact label {\\n font-size: 13px;\\n margin-bottom: 15px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-challenge {\\n display: block;\\n position: fixed;\\n right: 1em;\\n bottom: 55px;\\n max-width: 277px;\\n z-index: 9999; }\\n .redux-templates-challenge p {\\n font-size: 14px;\\n line-height: 1.4;\\n margin-top: 0;\\n color: #23282c; }\\n .redux-templates-challenge b {\\n font-weight: 500; }\\n .redux-templates-challenge.challenge-start {\\n display: initial; }\\n\\n@media all and (max-height: 900px) {\\n #challenge-contact-popup {\\n margin: 50px 0 20px; } }\\n\\n.challenge-tooltip.tooltipster-sidetip {\\n z-index: 100100 !important; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-top .tooltipster-box {\\n margin-bottom: 18px; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-top .tooltipster-arrow {\\n bottom: 8px; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background {\\n top: 0; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-right .tooltipster-box {\\n margin-right: 18px; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-right .tooltipster-arrow {\\n left: 8px; }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-box {\\n background: #fff;\\n border: none;\\n border-radius: 4px;\\n box-shadow: 0 10px 35px 0 rgba(0, 0, 0, 0.25);\\n -webkit-box-shadow: 0 10px 35px 0 rgba(0, 0, 0, 0.25);\\n -moz-box-shadow: 0 10px 35px 0 rgba(0, 0, 0, 0.25); }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-box .tooltipster-content {\\n color: #444;\\n padding: 16px 20px 18px; }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-box .tooltipster-content h3 {\\n font-size: 15px;\\n margin: 0; }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-box .tooltipster-content p {\\n margin: 10px 0 0; }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-box .challenge-done-btn {\\n border-radius: 3px;\\n cursor: pointer;\\n text-decoration: none;\\n text-align: center;\\n vertical-align: middle;\\n white-space: nowrap;\\n box-shadow: none;\\n font-size: 13px;\\n font-weight: 600;\\n padding: 7px 18px;\\n border: 1px solid #00a7e5;\\n background-color: #24b0a6;\\n color: #fff;\\n display: block;\\n margin: 15px auto 0;\\n outline: none; }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-box .challenge-done-btn:hover {\\n border: 1px solid #19837c;\\n background-color: #19837c; }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-arrow-border {\\n border: none; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background {\\n border-bottom-color: #fff; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-background {\\n border-right-color: #fff; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-background {\\n border-top-color: #fff; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-background {\\n border-left-color: #fff; }\\n\\n.block-editor-page .edit-post-layout .components-notice-list > div {\\n padding-left: 50px; }\\n\\n.block-editor-page span.wpforms-challenge-dot-step5 {\\n margin: 22px 18px;\\n z-index: 9999; }\\n\\n.block-editor-page .wpforms-challenge-tooltip.wpforms-challenge-tooltip-step5 {\\n max-width: 233px;\\n z-index: 99980 !important; }\\n\\n.challenge-wrapper {\\n position: fixed;\\n top: 0;\\n left: 0;\\n z-index: 600000; }\\n\\n.challenge-tooltip-holder {\\n position: fixed;\\n top: 0;\\n left: 0;\\n z-index: 600000; }\\n .challenge-tooltip-holder .tooltipster-box {\\n position: absolute;\\n box-shadow: 0 -10px 35px 0 rgba(0, 0, 0, 0.25);\\n z-index: 10000;\\n background: #fff;\\n padding: 15px 20px; }\\n\\n.challenge-dot {\\n display: inline-block;\\n width: 16px;\\n height: 16px;\\n background: #24b0a6;\\n box-shadow: 0 0 0 4px rgba(25, 131, 124, 0.15);\\n border-radius: 50%;\\n border: 0;\\n padding: 0; }\\n\\n.tooltipster-sidetip .tooltipster-arrow {\\n position: absolute;\\n width: 20px;\\n height: 10px;\\n z-index: 10000; }\\n\\n.tooltipster-sidetip .tooltipster-arrow-uncropped {\\n position: relative; }\\n\\n.tooltipster-sidetip .tooltipster-arrow-border {\\n left: 0;\\n top: 0;\\n border: none;\\n width: 0;\\n height: 0;\\n position: absolute; }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-arrow-background {\\n top: 0;\\n left: 0;\\n width: 0;\\n height: 0;\\n position: absolute;\\n border: 10px solid transparent; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-top {\\n border-top-color: #fff; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-bottom {\\n border-bottom-color: #fff; }\\n\\n.block-timer .caret-icon .fa {\\n -webkit-transition: 400ms;\\n -o-transition: 400ms;\\n transition: 400ms;\\n line-height: 23px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-single-section-item .block-editor-block-preview__container {\\n margin: 0 auto;\\n min-height: 130px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-import-button-group {\\n text-align: center; }\\n .redux-templates-import-button-group.disabled span a {\\n cursor: default;\\n opacity: 0.8; }\\n\\n.redux-templates-single-section-item {\\n margin-bottom: 15px; }\\n .redux-templates-single-section-item .redux-templates-import-button-group {\\n margin-top: 10%; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-button-display-dependencies {\\n display: flex;\\n justify-content: center;\\n margin: 10px; }\\n .redux-templates-button-display-dependencies span svg {\\n margin-right: 5px;\\n cursor: pointer; }\\n .redux-templates-button-display-dependencies span svg * {\\n fill: #f7f7f7; }\\n .redux-templates-button-display-dependencies span.missing-dependency svg * {\\n fill: rgba(247, 247, 247, 0.5); }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-error-notice .components-notice {\\n display: flex;\\n font-family: -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 13px;\\n background-color: #e5f5fa;\\n border-left: 4px solid #00a0d2;\\n margin: 5px 15px 2px;\\n padding: 8px 12px;\\n align-items: center;\\n position: absolute;\\n height: 50px;\\n z-index: 9999;\\n width: 50%;\\n right: 0;\\n top: 70px;\\n transition: opacity 2s linear; }\\n .redux-templates-error-notice .components-notice.is-dismissible {\\n padding-right: 0; }\\n .redux-templates-error-notice .components-notice.is-success {\\n border-left-color: #4ab866;\\n background-color: rgba(74, 184, 102, 0.95); }\\n .redux-templates-error-notice .components-notice.is-warning {\\n border-left-color: #f0b849;\\n background-color: rgba(254, 248, 238, 0.95); }\\n .redux-templates-error-notice .components-notice.is-error {\\n border-left-color: #d94f4f;\\n background-color: rgba(249, 226, 226, 0.95); }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".rtf {\\n box-sizing: border-box;\\n margin: 25px;\\n position: fixed;\\n white-space: nowrap;\\n z-index: 9998;\\n padding-left: 0;\\n list-style: none; }\\n .rtf.open .rtf--mb > * {\\n transform-origin: center center;\\n transform: none;\\n transition: ease-in-out transform 0.2s; }\\n .rtf.open .rtf--mb > ul {\\n list-style: none;\\n margin: 0;\\n padding: 0; }\\n .rtf.open .rtf--ab__c:hover > span {\\n transition: ease-in-out opacity 0.2s;\\n opacity: 0.9; }\\n .rtf.open .rtf--ab__c > span.always-show {\\n transition: ease-in-out opacity 0.2s;\\n opacity: 0.9; }\\n .rtf.open .rtf--ab__c:nth-child(1) {\\n transform: translateY(-60px) scale(1);\\n transition-delay: 0.03s; }\\n .rtf.open .rtf--ab__c:nth-child(1).top {\\n transform: translateY(60px) scale(1); }\\n .rtf.open .rtf--ab__c:nth-child(2) {\\n transform: translateY(-120px) scale(1);\\n transition-delay: 0.09s; }\\n .rtf.open .rtf--ab__c:nth-child(2).top {\\n transform: translateY(120px) scale(1); }\\n .rtf.open .rtf--ab__c:nth-child(3) {\\n transform: translateY(-180px) scale(1);\\n transition-delay: 0.12s; }\\n .rtf.open .rtf--ab__c:nth-child(3).top {\\n transform: translateY(180px) scale(1); }\\n .rtf.open .rtf--ab__c:nth-child(4) {\\n transform: translateY(-240px) scale(1);\\n transition-delay: 0.15s; }\\n .rtf.open .rtf--ab__c:nth-child(4).top {\\n transform: translateY(240px) scale(1); }\\n .rtf.open .rtf--ab__c:nth-child(5) {\\n transform: translateY(-300px) scale(1);\\n transition-delay: 0.18s; }\\n .rtf.open .rtf--ab__c:nth-child(5).top {\\n transform: translateY(300px) scale(1); }\\n .rtf.open .rtf--ab__c:nth-child(6) {\\n transform: translateY(-360px) scale(1);\\n transition-delay: 0.21s; }\\n .rtf.open .rtf--ab__c:nth-child(6).top {\\n transform: translateY(360px) scale(1); }\\n\\n.rtf--mb__c {\\n padding: 25px;\\n margin: -25px; }\\n .rtf--mb__c *:last-child {\\n margin-bottom: 0; }\\n .rtf--mb__c:hover > span {\\n transition: ease-in-out opacity 0.2s;\\n opacity: 0.9; }\\n .rtf--mb__c > span.always-show {\\n transition: ease-in-out opacity 0.2s;\\n opacity: 0.9; }\\n .rtf--mb__c > span {\\n opacity: 0;\\n transition: ease-in-out opacity 0.2s;\\n position: absolute;\\n top: 50%;\\n transform: translateY(-50%);\\n margin-right: 6px;\\n margin-left: 4px;\\n background: rgba(0, 0, 0, 0.75);\\n padding: 2px 4px;\\n border-radius: 2px;\\n color: #fff;\\n font-size: 13px;\\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.28); }\\n .rtf--mb__c > span.right {\\n right: 100%; }\\n\\n.rtf--mb {\\n height: 56px;\\n width: 56px;\\n z-index: 9999;\\n background-color: #666;\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n border: none;\\n border-radius: 50%;\\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.28);\\n cursor: pointer;\\n outline: none;\\n padding: 0;\\n -webkit-user-drag: none;\\n font-weight: bold;\\n color: #f1f1f1;\\n font-size: 18px; }\\n .rtf--mb > * {\\n transition: ease-in-out transform 0.2s; }\\n\\n.rtf--ab__c {\\n display: block;\\n position: absolute;\\n top: 0;\\n right: 1px;\\n padding: 10px 0;\\n margin: -10px 0;\\n transition: ease-in-out transform 0.2s; }\\n .rtf--ab__c > span {\\n opacity: 0;\\n transition: ease-in-out opacity 0.2s;\\n position: absolute;\\n top: 50%;\\n transform: translateY(-50%);\\n margin-right: 6px;\\n background: rgba(0, 0, 0, 0.75);\\n padding: 2px 4px;\\n border-radius: 2px;\\n color: #fff;\\n font-size: 13px;\\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.28); }\\n .rtf--ab__c > span.right {\\n right: 100%; }\\n .rtf--ab__c:nth-child(1) {\\n transform: translateY(-60px) scale(0);\\n transition-delay: 0.21s; }\\n .rtf--ab__c:nth-child(1).top {\\n transform: translateY(60px) scale(0); }\\n .rtf--ab__c:nth-child(2) {\\n transform: translateY(-120px) scale(0);\\n transition-delay: 0.18s; }\\n .rtf--ab__c:nth-child(2).top {\\n transform: translateY(120px) scale(0); }\\n .rtf--ab__c:nth-child(3) {\\n transform: translateY(-180px) scale(0);\\n transition-delay: 0.15s; }\\n .rtf--ab__c:nth-child(3).top {\\n transform: translateY(180px) scale(0); }\\n .rtf--ab__c:nth-child(4) {\\n transform: translateY(-240px) scale(0);\\n transition-delay: 0.12s; }\\n .rtf--ab__c:nth-child(4).top {\\n transform: translateY(240px) scale(0); }\\n .rtf--ab__c:nth-child(5) {\\n transform: translateY(-300px) scale(0);\\n transition-delay: 0.09s; }\\n .rtf--ab__c:nth-child(5).top {\\n transform: translateY(300px) scale(0); }\\n .rtf--ab__c:nth-child(6) {\\n transform: translateY(-360px) scale(0);\\n transition-delay: 0.03s; }\\n .rtf--ab__c:nth-child(6).top {\\n transform: translateY(360px) scale(0); }\\n\\n.rtf--ab {\\n height: 48px;\\n width: 48px;\\n background-color: #aaa;\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n border: none;\\n border-radius: 50%;\\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.28);\\n cursor: pointer;\\n outline: none;\\n padding: 0;\\n -webkit-user-drag: none;\\n font-weight: bold;\\n color: #f1f1f1;\\n margin-right: 4px;\\n font-size: 16px;\\n z-index: 10000; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/*multiple box*/\\n.redux-templates-multiple-template-box {\\n margin-bottom: 25px;\\n position: relative;\\n transition: all 0.05s ease-in-out; }\\n .redux-templates-multiple-template-box img {\\n transition: all 0.05s ease-in-out; }\\n .redux-templates-multiple-template-box .redux-templates-box-shadow {\\n transition: all 0.05s ease-in-out;\\n box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.1); }\\n .redux-templates-multiple-template-box .redux-templates-default-template-image .imageloader-loaded {\\n overflow: hidden; }\\n .redux-templates-multiple-template-box .multiple-template-view {\\n background: #fff;\\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05), 0 10px 0 -5px #fff, 0 10px 1px -4px rgba(0, 0, 0, 0.08), 0 20px 0 -10px #fff, 0 20px 1px -9px rgba(0, 0, 0, 0.08);\\n cursor: pointer;\\n min-height: 100px; }\\n .redux-templates-multiple-template-box .redux-templates-import-button-group {\\n margin-top: 15%; }\\n .redux-templates-multiple-template-box .redux-templates-tmpl-info {\\n padding: 10px 12px;\\n position: absolute;\\n bottom: 0;\\n width: 100%;\\n background: rgba(255, 255, 255, 0.95);\\n border-top: 1px solid #f2f4f7;\\n transition: all 0.2s ease-in-out; }\\n .redux-templates-multiple-template-box .redux-templates-tmpl-info h5 {\\n margin: 0;\\n font-size: 14px;\\n color: #23282d;\\n line-height: 19px; }\\n .redux-templates-multiple-template-box .redux-templates-tmpl-info h5 span {\\n font-size: 13px;\\n color: #cdcfd1;\\n line-height: 18px; }\\n .redux-templates-multiple-template-box .redux-templates-button-overlay {\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n border-radius: 0px;\\n opacity: 0;\\n -webkit-transition: opacity 0.2s ease-in-out;\\n transition: opacity 0.2s ease-in-out;\\n box-sizing: border-box; }\\n .redux-templates-multiple-template-box::before {\\n z-index: 2; }\\n .redux-templates-multiple-template-box::after {\\n z-index: 1; }\\n .redux-templates-multiple-template-box .redux-templates-button-overlay {\\n background: rgba(0, 0, 0, 0.5);\\n position: absolute;\\n height: 100%;\\n width: 100%;\\n opacity: 0; }\\n .redux-templates-multiple-template-box:hover .redux-templates-box-shadow {\\n box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.3); }\\n .redux-templates-multiple-template-box:hover .multiple-template-view {\\n border-color: transparent; }\\n .redux-templates-multiple-template-box:hover .redux-templates-tmpl-info {\\n border-top-color: transparent;\\n background: #fff; }\\n .redux-templates-multiple-template-box:hover .redux-templates-button-overlay {\\n opacity: 1; }\\n .redux-templates-multiple-template-box:hover img {\\n filter: blur(2px); }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".tablenav-pages {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n margin-bottom: 20px; }\\n .tablenav-pages span.displaying-num {\\n margin-right: 20px; }\\n .tablenav-pages #table-paging {\\n margin-left: 10px;\\n margin-right: 10px; }\\n .tablenav-pages #table-paging span {\\n line-height: 30px; }\\n .tablenav-pages span.tablenav-pages-navspan.button {\\n cursor: pointer;\\n margin: 0 2px; }\\n .tablenav-pages span.tablenav-pages-navspan.button.disabled {\\n cursor: default; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".action-buttons span,\\n.action-buttons a {\\n display: inline-block;\\n padding: 0 12px 2px;\\n margin: 2px;\\n height: 33px;\\n line-height: 32px;\\n font-size: 13px;\\n color: #353535;\\n border: 1px solid #f7f7f7;\\n background: #f7f7f7;\\n box-shadow: 0 1px 2px #ddd;\\n vertical-align: top;\\n border-radius: 3px;\\n text-decoration: none;\\n cursor: pointer;\\n -webkit-transition: all 0.2s ease-in-out;\\n transition: all 0.2s ease-in-out; }\\n .action-buttons span:hover,\\n .action-buttons a:hover {\\n box-shadow: 0 1px 2px #ccc;\\n background: #f1f1f1; }\\n\\n.action-buttons span i,\\n.action-buttons a i {\\n font-size: 10px;\\n margin-right: 4px; }\\n\\n.action-buttons span {\\n background: #0085ba;\\n border-color: #006a95 #00648c #00648c;\\n box-shadow: inset 0 -1px 0 #00648c;\\n color: #fff;\\n text-decoration: none;\\n text-shadow: 0 -1px 1px #005d82, 1px 0 1px #005d82, 0 1px 1px #005d82, -1px 0 1px #005d82; }\\n\\n.action-buttons a.redux-templates-button-download {\\n border: 1px solid #f5a623;\\n background: #f5a623;\\n box-shadow: 0 1px 0 #165cb4;\\n color: #fff; }\\n\\n.action-buttons .redux-templates-button-download {\\n margin-left: 5px; }\\n\\n.action-buttons i.challenge-dot {\\n margin-top: 10px;\\n margin-left: 5px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-single-section-item {\\n box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.2);\\n margin-bottom: 30px;\\n transition: all 0.05s ease-in-out; }\\n .redux-templates-single-section-item .redux-templates-tmpl-title {\\n background: rgba(255, 255, 255, 0.95);\\n border-top: 1px solid #f2f4f7;\\n position: absolute;\\n bottom: 0;\\n width: 100%;\\n margin: 0;\\n color: #23282d;\\n padding: 13px 15px;\\n font-size: 15px; }\\n .redux-templates-single-section-item .redux-templates-single-item-inner {\\n position: relative;\\n overflow: hidden;\\n background: #999; }\\n .redux-templates-single-section-item .redux-templates-single-item-inner .warn_notice {\\n color: #fbbc0e;\\n font-weight: bold;\\n margin-bottom: 15px;\\n font-size: 14px;\\n opacity: 0;\\n text-align: center; }\\n .redux-templates-single-section-item .redux-templates-single-item-inner .redux-templates-default-template-image {\\n max-height: 350px;\\n min-height: 100px;\\n transition: 300ms; }\\n\\n#collections-sections-list.large > div {\\n width: 50%; }\\n\\n#collections-sections-list.small > div {\\n width: 25%; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-template-filters .is-active {\\n background: #fff;\\n color: #191e23;\\n box-shadow: inset 0 0 0 1px #555d66, inset 0 0 0 2px #fff; }\\n\\n.redux-templates-template-filters .components-button:focus:not(:disabled):not(.is-active) {\\n background: transparent;\\n box-shadow: none;\\n color: #555d66; }\\n\\n.refresh-library {\\n margin-right: 10px; }\\n\\n.tour-icon {\\n font-size: 18px; }\\n\\n.trial_notice * {\\n vertical-align: middle; }\\n\\n.trial_notice .components-notice__content {\\n margin-right: 0; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-edit-post-welcome-guide {\\n width: 412px; }\\n .redux-edit-post-welcome-guide__image {\\n background: #00a0d2;\\n width: 412px;\\n border-bottom: 1px solid #ddd; }\\n .redux-edit-post-welcome-guide__image__prm-r {\\n display: none; }\\n @media (prefers-reduced-motion: reduce) {\\n .redux-edit-post-welcome-guide__image__prm-r {\\n display: block; }\\n .redux-edit-post-welcome-guide__image__prm-np {\\n display: none; } }\\n .redux-edit-post-welcome-guide__heading {\\n font-family: \\\"Noto Serif\\\", serif;\\n font-size: 24px;\\n line-height: 1.4;\\n margin: 0 0 16px 0;\\n padding: 0 32px; }\\n .redux-edit-post-welcome-guide__text {\\n font-size: 16px;\\n line-height: 1.4;\\n margin: 0 0 24px 0;\\n padding: 0 32px;\\n font-weight: normal; }\\n .redux-edit-post-welcome-guide__inserter-icon {\\n margin: 0 4px;\\n vertical-align: text-top; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-css-editor {\\n border: 1px solid #e2e4e7;\\n margin-bottom: 20px; }\\n\\n.redux-css-editor-help {\\n background: #f7f7f7;\\n padding: 20px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"#redux-templatesImportCollectionBtn {\\n vertical-align: middle;\\n display: inline-flex;\\n align-items: center;\\n text-decoration: none;\\n border: 1px solid #bababa;\\n border-radius: 3px;\\n white-space: nowrap;\\n color: #555d66;\\n font-size: 13px;\\n margin: 0 15px 0 15px;\\n padding: 9px 12px;\\n background: transparent;\\n cursor: pointer;\\n -webkit-appearance: none;\\n transition: 400ms; }\\n #redux-templatesImportCollectionBtn svg {\\n height: 16px;\\n width: 16px;\\n margin-right: 8px; }\\n #redux-templatesImportCollectionBtn svg * {\\n stroke: #555d66;\\n fill: #555d66;\\n stroke-width: 0; }\\n #redux-templatesImportCollectionBtn:hover, #redux-templatesImportCollectionBtn:focus, #redux-templatesImportCollectionBtn:active {\\n text-decoration: none;\\n border: 1px solid #191e23;\\n color: #191e23; }\\n #redux-templatesImportCollectionBtn:hover svg *, #redux-templatesImportCollectionBtn:focus svg *, #redux-templatesImportCollectionBtn:active svg * {\\n stroke: #191e23 !important;\\n fill: #191e23 !important;\\n stroke-width: 0; }\\n\\n.redux-templates-editor-btn {\\n background: none;\\n border: 0;\\n color: inherit;\\n font: inherit;\\n line-height: normal;\\n overflow: visible;\\n padding: 0;\\n -webkit-appearance: button;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none; }\\n .redux-templates-editor-btn::-moz-focus-inner {\\n border: 0;\\n padding: 0; }\\n\\n.d-flex {\\n display: flex; }\\n\\n.justify-content-center {\\n justify-content: center; }\\n\\n.redux-css-editor {\\n border: 1px solid #e2e4e7;\\n margin-bottom: 20px; }\\n\\n.redux-css-editor-help {\\n background: #f7f7f7;\\n padding: 20px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-modal-wrapper {\\n /* ReduxTemplatesPremiumBox */ }\\n .redux-templates-modal-wrapper .redux-templates-modal-body {\\n flex: 1 1 auto;\\n padding-left: 30px;\\n padding-right: 30px;\\n box-sizing: border-box;\\n background: #fff; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body h5 {\\n font-size: 1.1em;\\n font-weight: 600; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body ul {\\n list-style-position: inside;\\n list-style-type: disc; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body ul.redux-templates-import-wizard-missing-dependency li {\\n line-height: 1.8; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body .error {\\n color: #f00; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body .error i {\\n color: inherit; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body .error.installError {\\n text-align: center; }\\n .redux-templates-modal-wrapper .redux-templates-import-wizard-spinner-wrapper {\\n position: absolute;\\n width: calc(100% - 60px);\\n height: 100%;\\n flex: 1 1 auto;\\n align-items: center;\\n justify-content: center;\\n display: flex;\\n flex-direction: column; }\\n .redux-templates-modal-wrapper .redux-templates-import-wizard-spinner-wrapper .text-transition {\\n text-align: center;\\n font-size: 18px;\\n color: #555d66;\\n margin-bottom: 20px; }\\n .redux-templates-modal-wrapper .redux-templates-import-progress {\\n font-size: 1.1em;\\n text-align: center; }\\n .redux-templates-modal-wrapper .redux-templates-import-progress li {\\n list-style: none; }\\n .redux-templates-modal-wrapper .redux-templates-import-progress li.success i {\\n color: #46b450; }\\n .redux-templates-modal-wrapper .redux-templates-import-progress li.info i {\\n color: #00a0d2; }\\n .redux-templates-modal-wrapper .redux-templates-import-progress {\\n width: 50%;\\n margin: 10px auto; }\\n .redux-templates-modal-wrapper .redux-templates-import-progress li {\\n display: flex;\\n justify-content: space-between; }\\n .redux-templates-modal-wrapper .section-box.premium-box {\\n margin: 35px auto;\\n text-align: center; }\\n .redux-templates-modal-wrapper .section-box.premium-box h3 {\\n font-size: 1.5em;\\n line-height: 1.1em;\\n margin-top: 0px; }\\n .redux-templates-modal-wrapper .section-box.premium-box p {\\n font-size: calc(13px + 0.2vw); }\\n .redux-templates-modal-wrapper .section-box.premium-box ul {\\n width: 50%;\\n margin: 0 auto;\\n text-align: left;\\n list-style-type: disc;\\n list-style-position: inside; }\\n .redux-templates-modal-wrapper .section-box.premium-box .redux-templates-upgrade-button {\\n border: none;\\n border-radius: 4px;\\n cursor: pointer;\\n opacity: 1;\\n background: #24b0a6;\\n transition: opacity 0.2s ease-in-out;\\n box-shadow: none !important;\\n color: #fff;\\n text-decoration: none;\\n padding: 0.75em 1.25em;\\n display: block;\\n margin: 30px auto 0 auto;\\n max-width: 200px;\\n text-align: center;\\n font-size: 1em; }\\n .redux-templates-modal-wrapper .section-box.premium-box .redux-templates-upgrade-button:hover {\\n color: #fff;\\n opacity: 0.85;\\n box-shadow: none !important;\\n background: #19837c; }\\n .redux-templates-modal-wrapper .redux-templates-importmodal-content {\\n flex: 1;\\n display: flex;\\n flex-direction: column; }\\n\\n.text-transition {\\n width: 100% !important;\\n text-align: center; }\\n .text-transition .text-transition_inner > div {\\n font-size: 1.1rem; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-collection-modal-sidebar {\\n min-width: 270px;\\n background: #fff;\\n color: #32373c;\\n /* $secondaryColor;*/\\n border-right: 1px solid #e2e4e7;\\n overflow-y: auto; }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group {\\n margin: 10px 0;\\n border-bottom: 1px solid #e2e4e7;\\n width: 100%;\\n display: inline-flex; }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button {\\n font-weight: 500;\\n flex-grow: 1;\\n min-width: 30%;\\n line-height: 20px;\\n padding: 8px 0 10px 15px;\\n align-items: center;\\n text-align: left;\\n background: none;\\n position: relative;\\n margin-bottom: -1px;\\n border-width: 0;\\n z-index: 1;\\n cursor: pointer;\\n outline: none;\\n border-color: transparent;\\n box-shadow: none;\\n border-bottom: unset; }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button::after {\\n content: attr(data-label);\\n display: block;\\n height: 0;\\n overflow: hidden;\\n speak: none;\\n visibility: hidden; }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button:hover {\\n color: #007cba;\\n color: var(--wp-admin-theme-color); }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button:focus {\\n box-shadow: inset 0 0 0 1.5px #007cba;\\n box-shadow: inset 0 0 0 1.5px var(--wp-admin-theme-color); }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button.active {\\n box-shadow: inset 0 0 0 1.5px transparent, inset 0 -4px 0 0 #007cba;\\n box-shadow: inset 0 0 0 1.5px transparent, inset 0 -4px 0 0 var(--wp-admin-theme-color); }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button.active::before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n bottom: 1px;\\n right: 0;\\n left: 0;\\n border-bottom: 4px solid transparent; }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button.active:focus {\\n box-shadow: inset 0 0 0 1.5px #007cba, inset 0 -4px 0 0 #007cba;\\n box-shadow: inset 0 0 0 1.5px var(--wp-admin-theme-color), inset 0 -4px 0 0 var(--wp-admin-theme-color); }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button.disabled {\\n opacity: 0.4; }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button img {\\n display: inline-block;\\n width: auto;\\n height: 14px;\\n margin-right: 4px; }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button:last-child img {\\n margin-bottom: -2px; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content {\\n padding: 0 15px 15px; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content h3 {\\n margin: 5px 12px 10px 0;\\n color: #757575;\\n text-transform: uppercase;\\n font-size: 11px;\\n font-weight: 500; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul {\\n list-style: unset;\\n -webkit-touch-callout: none;\\n /* iOS Safari */\\n -webkit-user-select: none;\\n /* Safari */\\n -khtml-user-select: none;\\n /* Konqueror HTML */\\n -moz-user-select: none;\\n /* Old versions of Firefox */\\n -ms-user-select: none;\\n /* Internet Explorer/Edge */\\n user-select: none;\\n /* Non-prefixed version, currently\\n supported by Chrome, Edge, Opera and Firefox */\\n margin: 0 15px 15px 15px;\\n padding: 0; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li {\\n display: block;\\n font-size: 13px;\\n cursor: pointer;\\n height: auto;\\n -webkit-transition: height 0.5s linear;\\n -moz-transition: height 0.5s linear;\\n -ms-transition: height 0.5s linear;\\n -o-transition: height 0.5s linear;\\n transition: height 0.5s linear; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li .redux-icon-wrapper {\\n margin-left: 10px; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li:not(.disabled):hover {\\n color: #007cba;\\n color: var(--wp-admin-theme-color); }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li.active {\\n color: #007cba;\\n color: var(--wp-admin-theme-color);\\n text-shadow: 0 0 0.5px #007cba;\\n text-shadow: 0 0 0.5px var(--wp-admin-theme-color); }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li.disabled {\\n display: none;\\n height: 0px;\\n -webkit-transition: height 0.5s linear;\\n -moz-transition: height 0.5s linear;\\n -ms-transition: height 0.5s linear;\\n -o-transition: height 0.5s linear;\\n transition: height 0.5s linear; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li span {\\n float: right; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li.missing-dependency i.fa-exclamation-triangle {\\n color: #b27823; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li.missing-dependency:hover i.fa-exclamation-triangle {\\n color: #f5a623; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li.missing-dependency.active i.fa-exclamation-triangle {\\n color: #f5a623; }\\n .redux-templates-collection-modal-sidebar ul.redux-templates-sidebar-dependencies li .components-base-control {\\n display: inline-block;\\n margin-bottom: 0 !important; }\\n .redux-templates-collection-modal-sidebar ul.redux-templates-sidebar-dependencies li .components-base-control .components-base-control__field {\\n margin-bottom: 3px; }\\n .redux-templates-collection-modal-sidebar ul.redux-templates-sidebar-dependencies li .components-base-control span {\\n float: none; }\\n .redux-templates-collection-modal-sidebar .redux-templates-select-actions {\\n margin: 0 0 10px 15px;\\n display: inline-flex; }\\n .redux-templates-collection-modal-sidebar .redux-templates-select-actions i.challenge-dot {\\n margin-left: 10px; }\\n .redux-templates-collection-modal-sidebar .redux-templates-select-actions.disabled a {\\n pointer-events: none;\\n cursor: default;\\n text-decoration: none;\\n opacity: 0.6; }\\n .redux-templates-collection-modal-sidebar .redux-templates-sidebar-dependencies li a {\\n display: inline-block;\\n margin-left: 10px; }\\n .redux-templates-collection-modal-sidebar #redux-templates-filter-dependencies h3 {\\n margin-top: 0;\\n padding-top: 3px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-collections-modal-body {\\n display: flex;\\n flex: 1;\\n overflow-y: auto; }\\n\\n.redux-templates-builder-modal {\\n position: fixed;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n z-index: 9999;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n pointer-events: none; }\\n .redux-templates-builder-modal.hidden {\\n display: none; }\\n .redux-templates-builder-modal .wp-full-overlay-sidebar .wp-core-ui .button-group.button-hero .button,\\n .redux-templates-builder-modal .wp-full-overlay-sidebar .wp-core-ui .button.button-hero {\\n text-align: center !important; }\\n .redux-templates-builder-modal * {\\n box-sizing: border-box;\\n pointer-events: all; }\\n .redux-templates-builder-modal .redux-templates-pagelist-modal-overlay {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n background: #f00;\\n left: 0;\\n top: 0;\\n z-index: -1;\\n background: rgba(3, 8, 15, 0.75); }\\n .redux-templates-builder-modal .components-base-control__field {\\n display: flex; }\\n .redux-templates-builder-modal textarea {\\n width: 100%;\\n height: 80px; }\\n .redux-templates-builder-modal .redux-icon-wrapper {\\n display: inline-block; }\\n .redux-templates-builder-modal button.components-button {\\n z-index: unset; }\\n\\n.redux-templates-builder-modal-header {\\n display: flex;\\n border-bottom: 1px solid #e2e4e7;\\n background: #fff; }\\n .redux-templates-builder-modal-header .template-search-box {\\n position: relative;\\n width: 270px; }\\n .redux-templates-builder-modal-header .template-search-box > div {\\n padding: 10px; }\\n .redux-templates-builder-modal-header .template-search-box i {\\n font-size: 13px;\\n color: #757575;\\n position: absolute;\\n top: 50%;\\n right: 30px;\\n transform: translateY(-50%); }\\n .redux-templates-builder-modal-header .template-search-box i.challenge-dot {\\n right: 20px;\\n left: auto; }\\n .redux-templates-builder-modal-header .template-search-box i.clear-search {\\n right: 20px;\\n left: auto;\\n color: #fff;\\n font-size: 12px;\\n display: none;\\n cursor: pointer;\\n padding: 5px; }\\n .redux-templates-builder-modal-header .template-search-box input {\\n display: block;\\n width: 100%;\\n box-shadow: 0 0 0 transparent;\\n transition: box-shadow 0.1s linear;\\n border-radius: 2px;\\n line-height: normal;\\n display: block;\\n padding: 16px 48px 16px 16px;\\n background: #f3f4f5;\\n border: none;\\n width: 100%;\\n height: 40px;\\n font-size: 13px; }\\n .redux-templates-builder-modal-header .template-search-box input::-webkit-input-placeholder {\\n /* WebKit browsers */\\n color: #606a73;\\n font-style: italic;\\n opacity: 1; }\\n .redux-templates-builder-modal-header .template-search-box input:-moz-placeholder {\\n /* Mozilla Firefox 4 to 18 */\\n color: #606a73;\\n font-style: italic;\\n opacity: 1; }\\n .redux-templates-builder-modal-header .template-search-box input::-moz-placeholder {\\n /* Mozilla Firefox 19+ */\\n color: #606a73;\\n font-style: italic;\\n opacity: 1; }\\n .redux-templates-builder-modal-header .template-search-box input:-ms-input-placeholder {\\n /* Internet Explorer 10+ */\\n color: #606a73;\\n font-style: italic;\\n opacity: 1; }\\n .redux-templates-builder-modal-header .template-search-box input:focus {\\n border-color: #007cba;\\n border-color: var(--wp-admin-theme-color);\\n background: #fff;\\n box-shadow: 0 0 0 1.5px #007cba;\\n box-shadow: 0 0 0 1.5px var(--wp-admin-theme-color);\\n outline: 2px solid transparent; }\\n .redux-templates-builder-modal-header .template-search-box:hover .clear-search {\\n display: block; }\\n\\n.redux-templates-pagelist-modal-inner {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n background: #f1f1f1;\\n width: 85.9375%;\\n height: 89.537037%;\\n max-width: 1650px;\\n max-height: 967px;\\n box-shadow: 0 0 45px 10px rgba(3, 8, 15, 0.2);\\n animation: components-modal__appear-animation 0.1s ease-out;\\n animation-fill-mode: forwards; }\\n .redux-templates-pagelist-modal-inner .redux-templates-collection-modal-content-area {\\n flex-grow: 1;\\n max-height: 100%;\\n overflow-y: auto;\\n position: relative; }\\n\\n.redux-templates-template-list-header {\\n text-align: center;\\n position: relative;\\n flex-grow: 1;\\n padding-right: 50px; }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal) {\\n flex-grow: 1;\\n line-height: 28px;\\n margin-top: 6px;\\n padding: 14px 15px 13px 15px;\\n text-align: left;\\n font-weight: 600;\\n width: 150px;\\n align-items: center;\\n background: none;\\n position: relative;\\n margin-bottom: -1px;\\n border-width: 0;\\n z-index: 1;\\n cursor: pointer;\\n outline: none;\\n border-color: transparent;\\n box-shadow: none;\\n border-bottom: unset; }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal)::after {\\n content: attr(data-label);\\n display: block;\\n height: 0;\\n overflow: hidden;\\n speak: none;\\n visibility: hidden; }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal):hover {\\n color: #007cba;\\n color: var(--wp-admin-theme-color); }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal):focus {\\n box-shadow: inset 0 0 0 1.5px #007cba;\\n box-shadow: inset 0 0 0 1.5px var(--wp-admin-theme-color); }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal).active {\\n box-shadow: inset 0 0 0 1.5px transparent, inset 0 -4px 0 0 #007cba;\\n box-shadow: inset 0 0 0 1.5px transparent, inset 0 -4px 0 0 var(--wp-admin-theme-color); }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal).active::before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n bottom: 1px;\\n right: 0;\\n left: 0;\\n border-bottom: 4px solid transparent; }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal).active:focus {\\n box-shadow: inset 0 0 0 1.5px #007cba, inset 0 -4px 0 0 #007cba;\\n box-shadow: inset 0 0 0 1.5px var(--wp-admin-theme-color), inset 0 -4px 0 0 var(--wp-admin-theme-color); }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal).disabled {\\n opacity: 0.5; }\\n .redux-templates-template-list-header .redux-templates-builder-close-modal {\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 60px;\\n height: 60px;\\n margin: 0;\\n padding: 0;\\n border: 1px solid transparent;\\n background: none;\\n font-size: 15px;\\n cursor: pointer;\\n outline: none;\\n transition: color 0.1s ease-in-out, background 0.1s ease-in-out; }\\n .redux-templates-template-list-header .redux-templates-builder-close-modal i {\\n -webkit-text-stroke: 1.2px #fff; }\\n .redux-templates-template-list-header .redux-templates-builder-close-modal svg {\\n margin-top: 4px; }\\n .redux-templates-template-list-header .redux-templates-builder-close-modal:hover, .redux-templates-template-list-header .redux-templates-builder-close-modal:active {\\n color: #00a0d2; }\\n .redux-templates-template-list-header .redux-templates-builder-close-modal:focus {\\n color: #00a0d2;\\n border-color: #5b9dd9;\\n box-shadow: 0 0 3px rgba(0, 115, 170, 0.8);\\n /* Only visible in Windows High Contrast mode */\\n outline: 2px solid transparent; }\\n\\n.redux-templates-template-list-sub-header {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n padding: 23px 25px 0; }\\n .redux-templates-template-list-sub-header h4 {\\n font-size: 21px;\\n color: #0e2244;\\n font-weight: 500;\\n margin: 0; }\\n .redux-templates-template-list-sub-header h4 i.challenge-dot {\\n margin-left: 10px; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filters {\\n display: flex;\\n justify-content: space-between;\\n align-items: center; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group {\\n background: #f8fafb;\\n display: inline-flex;\\n border: 1px solid #d8d8d8;\\n border-radius: 4px;\\n margin-left: 10px; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button {\\n display: inline-flex;\\n line-height: 28px;\\n padding: 5px 18px;\\n align-items: center;\\n background: none;\\n border: none;\\n color: #587e97;\\n position: relative;\\n z-index: 1;\\n cursor: pointer; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button:focus {\\n outline: none;\\n box-shadow: 0 0 0 1.5px #007cba;\\n box-shadow: 0 0 0 1.5px var(--wp-admin-theme-color);\\n outline: 1px solid transparent; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button:last-child {\\n color: #f5a623; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button.active {\\n background: #f5a623;\\n color: #fff; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button.disabled {\\n opacity: 0.5; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button img {\\n display: inline-block;\\n width: auto;\\n height: 14px;\\n margin-right: 4px; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button:not(:last-child)::after {\\n content: \\\"\\\";\\n height: 13px;\\n background-color: #c4cbcf;\\n width: 1px;\\n right: 0px;\\n top: 50%;\\n position: absolute;\\n transform: translateY(-50%); }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button.active::after {\\n display: none; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button::before {\\n content: \\\"\\\";\\n position: absolute;\\n background: #f5a623;\\n height: calc(100% + 4px);\\n width: calc(100% + 4px);\\n left: -2px;\\n top: -2px;\\n z-index: -1;\\n border-radius: 4px;\\n box-shadow: 0 0 4px rgba(33, 32, 249, 0.3);\\n opacity: 0; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button.active::before {\\n opacity: 1; }\\n\\n.redux-templates-modal-loader {\\n display: inline-block;\\n position: absolute;\\n width: 80px;\\n height: 80px;\\n line-height: 80px;\\n text-align: center;\\n left: 50%;\\n margin-left: -50px;\\n top: 50%;\\n margin-top: -50px;\\n font-size: 24px;\\n color: #1e7ed8; }\\n\\n.redux-templates-modal-loader img {\\n height: 80px;\\n width: 80px; }\\n\\n/*block style*/\\n.redux-templates-builder-template-found-empty {\\n text-align: center;\\n border-color: transparent !important; }\\n .redux-templates-builder-template-found-empty .redux-templates-builder-empty-title {\\n display: block;\\n width: 100%; }\\n\\n.redux-templates-pro-badge {\\n position: absolute;\\n background: rgba(255, 0, 0, 0.75);\\n cursor: pointer;\\n padding: 5px 6px;\\n border-radius: 3px;\\n color: #fff;\\n font-size: 10px;\\n right: 20px;\\n top: 20px;\\n line-height: 1;\\n transition: background 0.1s linear; }\\n\\n.redux-templates-missing-badge {\\n position: absolute;\\n cursor: pointer;\\n background: rgba(242, 168, 72, 0.75);\\n border-radius: 3px;\\n color: #fff;\\n font-size: 10px;\\n right: 20px;\\n top: 20px;\\n line-height: 1;\\n transition: background 0.1s linear; }\\n .redux-templates-missing-badge i {\\n margin: 5px; }\\n\\n.redux-templates-button-overlay .redux-templates-pro-badge {\\n background: rgba(255, 0, 0, 0.85); }\\n\\n.redux-templates-button-overlay .redux-templates-missing-badge {\\n background: rgba(242, 168, 72, 0.85); }\\n\\n.redux-templates-default-template-image {\\n /* background-image: url('/img/redux-templates-medium.jpg');\\n background-size: cover; */\\n background: #888;\\n transition: 300ms; }\\n .redux-templates-default-template-image .imageloader-loaded {\\n max-height: 285px; }\\n .redux-templates-default-template-image img {\\n width: 100%;\\n display: block; }\\n\\n.redux-templates-item-wrapper {\\n position: relative; }\\n .redux-templates-item-wrapper .redux-templates-button-overlay {\\n position: absolute;\\n width: 100%;\\n opacity: 0;\\n background: rgba(0, 0, 0, 0.5);\\n height: 100%;\\n top: 0;\\n left: 0;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n transition: 300ms; }\\n .redux-templates-item-wrapper .redux-templates-button-overlay .redux-templates-tmpl-title {\\n margin: 0 0 15px;\\n color: #fff;\\n font-size: 19px;\\n font-weight: 400; }\\n .redux-templates-item-wrapper.focused .redux-templates-button-overlay, .redux-templates-item-wrapper:hover .redux-templates-button-overlay {\\n opacity: 1; }\\n .redux-templates-item-wrapper.focused .redux-templates-default-template-image, .redux-templates-item-wrapper:hover .redux-templates-default-template-image {\\n filter: blur(3px); }\\n .redux-templates-item-wrapper.missing_requirements .warn_notice {\\n opacity: 1; }\\n .redux-templates-item-wrapper.missing_requirements .redux-templates-button-download {\\n background-color: #fdbb05;\\n background-image: none;\\n border-color: #ffc107; }\\n\\n.redux-templates-template-option-header {\\n padding: 20px 20px 0; }\\n .redux-templates-template-option-header .redux-templates-template-back {\\n cursor: pointer; }\\n .redux-templates-template-option-header .redux-templates-template-back .dashicons {\\n vertical-align: text-bottom; }\\n\\n#wpwrap .edit-post-visual-editor .import-collection-btn-container {\\n text-align: center;\\n margin-top: 20px; }\\n\\n#wpwrap .edit-post-visual-editor .import-collection-btn-container #importCollectionBtn {\\n color: #fff;\\n font-size: 13px; }\\n\\n.redux-templates-template-back {\\n cursor: pointer; }\\n .redux-templates-template-back .dashicons {\\n vertical-align: text-bottom; }\\n\\n.spinner-wrapper {\\n position: absolute;\\n left: 0;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n background: rgba(0, 0, 0, 0.5); }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-collection-details-view {\\n padding: 40px 22.5px 60px;\\n width: 100%;\\n justify-content: center;\\n position: relative;\\n display: flex; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-left {\\n width: 600px;\\n margin: 0 37px 0 17px; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-left .details-back {\\n height: 32px;\\n line-height: 20px;\\n color: #818a91;\\n font-size: 15px;\\n font-weight: 600;\\n display: -webkit-inline-box;\\n display: -ms-inline-flexbox;\\n display: inline-flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n cursor: pointer;\\n margin-bottom: 20px;\\n -webkit-transition: color 0.1s ease;\\n transition: color 0.1s ease; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-left .details-preview {\\n background-position: center top;\\n background-size: contain;\\n width: 100%;\\n background-repeat: no-repeat;\\n transition: background 1.5s ease;\\n height: 84.71%; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-left .details-preview.has_full {\\n transition: background-position 1.5s linear;\\n background-position: center top;\\n background-size: cover;\\n width: 100%;\\n background-repeat: no-repeat;\\n -webkit-box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.1);\\n box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.1); }\\n .redux-templates-collection-details-view .redux-templates-collection-details-left .details-preview.has_full:hover {\\n background-position: center bottom;\\n background-size: cover; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right {\\n width: 520px; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .details-title {\\n height: 30px;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n padding: 2px 25px 0 10px;\\n margin-bottom: 20px; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .details-title h3 {\\n color: rgba(3, 8, 15, 0.92);\\n font-size: 28px;\\n font-weight: 600;\\n line-height: 34px;\\n margin: 0; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .details-title span {\\n color: #818a91;\\n font-size: 13px;\\n font-weight: 600;\\n line-height: 16px; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .details-list {\\n height: 84.71%; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .details-list .details-inner {\\n height: 100%;\\n overflow-y: auto; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select {\\n width: 150px;\\n height: 150px;\\n overflow: hidden;\\n margin: 0 8px 15px;\\n -webkit-box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.1);\\n box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.1);\\n position: relative;\\n display: inline-block;\\n cursor: pointer;\\n -webkit-transition: all 0.1s ease-in-out;\\n transition: all 0.1s ease-in-out; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select::before, .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select::after {\\n content: \\\"\\\";\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n pointer-events: none;\\n opacity: 0;\\n box-sizing: border-box; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select::before {\\n opacity: 0.7;\\n z-index: 2; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select::after {\\n opacity: 0.7;\\n z-index: 1; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select .detail-image {\\n width: 100%;\\n height: 150px;\\n background-repeat: no-repeat;\\n background-size: cover;\\n border: 1px solid #ececec;\\n position: relative; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select .detail-image .pro,\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select .detail-image .install {\\n position: absolute;\\n background: #f00;\\n padding: 2px 3px;\\n border-radius: 3px;\\n color: #fff;\\n font-size: 9px;\\n right: 5px;\\n top: 5px;\\n text-transform: uppercase;\\n line-height: 1; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select .detail-image .pro {\\n background: #f00; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select .detail-image .install {\\n background: #f2a848; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select .detail-label {\\n border-top: 1px solid #f2f4f7;\\n width: 100%;\\n height: 30px;\\n opacity: 1;\\n background-color: rgba(255, 255, 255, 0.9);\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n color: #23282d;\\n font-family: pn, \\\"Open Sans\\\", Arial, sans-serif;\\n font-size: 13px;\\n font-weight: 600;\\n line-height: 30px;\\n padding-left: 10px; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select:hover {\\n -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);\\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select:hover::before, .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select:hover::after {\\n opacity: 1; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select.detail-select-active {\\n -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select.detail-select-active::before, .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select.detail-select-active::after,\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select.detail-select-active .detail-label {\\n opacity: 1; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select.detail-select-active::before {\\n border: 3px solid #24b0a6; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-footer {\\n width: 100%;\\n height: 60px;\\n background: #fff;\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n z-index: 2; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-footer .footer-grid {\\n width: 100%;\\n padding: 0 10px;\\n height: 100%;\\n margin: auto;\\n display: flex;\\n align-items: center;\\n justify-content: flex-end; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-footer .import-button {\\n margin-left: 11.5px;\\n background-color: #3dbfe8;\\n color: #fff;\\n font-family: pn, \\\"Open Sans\\\", Arial, sans-serif;\\n font-size: 15px;\\n font-weight: 600;\\n line-height: 18px;\\n padding: 9px 32px;\\n border-radius: 3px;\\n cursor: pointer;\\n -webkit-transition: background-color 150ms linear;\\n transition: background-color 150ms linear; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-footer .import-button:hover {\\n background: rgba(61, 191, 232, 0.8); }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-two-sections {\\n position: absolute;\\n width: 85.9375%;\\n height: 89.537037%;\\n max-width: 1650px;\\n max-height: 967px;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n border-radius: 5px;\\n overflow: hidden;\\n -webkit-box-shadow: 0 45px 10px rgba(3, 8, 15, 0.2);\\n box-shadow: 0 0 45px 10px rgba(3, 8, 15, 0.2); }\\n\\n.redux-templates-two-sections__grid {\\n width: 100%;\\n height: 100%;\\n padding: 40px 22.5px;\\n position: relative;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex; }\\n\\n.redux-templates-two-sections__grid__column {\\n width: 100%; }\\n\\n.redux-templates-two-sections__grid-clear {\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n height: 100%; }\\n\\n.redux-templates-two-sections__grid-clear-text {\\n opacity: 0.9;\\n color: #818a91;\\n font-family: pn, \\\"Open Sans\\\", Arial, sans-serif;\\n font-size: 14px;\\n font-weight: 600;\\n line-height: 17px;\\n margin: 0 0 20px; }\\n\\n.redux-templates-two-sections__grid-clear-image-saved {\\n width: 322px;\\n height: 145px;\\n margin-top: -21px;\\n pointer-events: none; }\\n\\n.redux-templates-two-sections__grid-clear-image-global {\\n width: 524px;\\n height: 207px;\\n margin-top: -28px;\\n pointer-events: none; }\\n\\n.redux-templates-two-section {\\n position: relative;\\n margin: 0 17.5px 35px;\\n cursor: pointer;\\n outline: 3px solid transparent;\\n -webkit-transition: outline 0.3s ease-in-out;\\n transition: outline 0.3s ease-in-out;\\n -webkit-box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.1);\\n box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.1);\\n border-radius: 3px; }\\n .redux-templates-two-section:last-child {\\n margin-bottom: 0; }\\n .redux-templates-two-section .redux-templates-two-section-remove {\\n position: absolute;\\n z-index: 4;\\n top: -7px;\\n right: -7px;\\n opacity: 0;\\n -webkit-transform: scale(0.7);\\n transform: scale(0.7);\\n -webkit-transition: opacity 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out;\\n transition: opacity 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out;\\n transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;\\n transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out;\\n width: 28px;\\n height: 28px;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n font-size: 12px;\\n border-radius: 28px;\\n background-color: #fff;\\n color: #03080f;\\n -webkit-box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.25);\\n box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.25);\\n cursor: pointer; }\\n .redux-templates-two-section:hover .redux-templates-two-section-remove {\\n opacity: 1;\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n -webkit-transition: opacity 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out;\\n transition: opacity 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out;\\n transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;\\n transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out; }\\n .redux-templates-two-section:hover .redux-templates-two-section-remove:hover {\\n color: #f00; }\\n .redux-templates-two-section:hover .redux-templates-two-section-item::before {\\n border-color: #3dbfe8; }\\n .redux-templates-two-section:hover .redux-templates-two-section-item::after {\\n border-color: #ececec; }\\n\\n.redux-templates-two-section .preview-image-wrapper {\\n transition: all 0.05s ease-in-out;\\n width: 100%;\\n min-height: 130px;\\n max-height: 300px;\\n overflow: hidden; }\\n .redux-templates-two-section .preview-image-wrapper img {\\n animation-name: fadeIn;\\n animation-fill-mode: both;\\n animation-delay: 200ms;\\n animation-duration: 200ms;\\n width: 100%;\\n height: auto; }\\n\\n.redux-templates-two-section .saved-section-title {\\n border-top: 1px solid #f2f4f7;\\n background: rgba(255, 255, 255, 0.9);\\n position: absolute;\\n bottom: 0;\\n width: 100%;\\n margin: 0;\\n color: #23282d;\\n padding: 13px 15px;\\n font-size: 15px;\\n text-align: center;\\n display: flex;\\n justify-content: center;\\n align-items: center; }\\n\\n.no-section {\\n display: flex;\\n width: 100%;\\n align-items: center;\\n justify-content: center;\\n font-size: 16px; }\\n\\n.preview-image-wrapper .block-editor-block-preview__container {\\n transition: all 0.05s ease-in-out;\\n background: #fff;\\n margin: 0 auto;\\n min-height: 130px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"#collections-sections-list {\\n width: 100%;\\n display: flex;\\n flex-wrap: wrap;\\n padding: 10px 10px 0 10px; }\\n #collections-sections-list > div {\\n width: 33.3333%;\\n padding: 15px;\\n position: relative; }\\n @media (max-width: 1199px) {\\n #collections-sections-list > div {\\n width: 50%; } }\\n #collections-sections-list > div.redux-templates-builder-template-found-empty {\\n width: 100%;\\n text-align: center;\\n opacity: 0.5;\\n border: none !important;\\n padding-top: 70px !important; }\\n #collections-sections-list.redux-templates-frontend-section-list {\\n display: block;\\n padding-bottom: 10px;\\n padding-top: 0px; }\\n #collections-sections-list.redux-templates-frontend-section-list > div {\\n width: 100%;\\n display: flex;\\n flex-wrap: nowrap;\\n border-bottom: 1px solid #e2e4e7;\\n font-weight: 600;\\n padding: 12px 0 12px 15px;\\n margin-bottom: 0;\\n align-items: center; }\\n #collections-sections-list.redux-templates-frontend-section-list > div.redux-templates-reusable-list-title {\\n color: #adafb2; }\\n #collections-sections-list.redux-templates-frontend-section-list > div:first-child {\\n border-top: 1px solid #e2e4e7; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-content {\\n flex-grow: 1; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-info {\\n flex-grow: 1;\\n max-width: 165px;\\n display: flex;\\n flex-wrap: nowrap; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-button {\\n margin-left: 30px; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-button button {\\n display: inline-block;\\n padding: 0;\\n border: none;\\n transition: 300ms;\\n cursor: pointer;\\n background-color: transparent; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-button button:not(:last-child) {\\n margin-right: 10px; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-button button i {\\n font-size: 16px;\\n color: #cdcfd1; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-button button:hover i {\\n color: #007cba; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-button button:last-child:hover i {\\n color: #f00; }\\n #collections-sections-list .redux-templates-pagelist-column.loading {\\n height: 100px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".wp-full-overlay {\\n margin-left: 300px; }\\n\\n@media screen and (min-width: 1667px) {\\n .wp-full-overlay {\\n margin-left: 18%; } }\\n\\nbutton {\\n box-sizing: border-box;\\n pointer-events: all; }\\n\\n.wp-full-overlay.hide {\\n display: none; }\\n\\n.theme-screenshot-wrap {\\n overflow: hidden;\\n position: relative;\\n max-height: 300px;\\n margin: 15px 0;\\n border: 1px solid #ccc; }\\n\\n.install-theme-info {\\n padding-bottom: 0px; }\\n .install-theme-info h3 a {\\n float: right;\\n opacity: 0.6; }\\n .install-theme-info h3 a:hover {\\n opacity: 1; }\\n\\n.install-theme-info .theme-screenshot {\\n width: 100% !important;\\n border: none !important;\\n margin: 0 !important;\\n display: block; }\\n\\n.expanded .wp-full-overlay-footer {\\n height: 111px !important;\\n left: initial; }\\n .expanded .wp-full-overlay-footer .button-hero {\\n text-align: center; }\\n\\n.wp-full-overlay .wp-full-overlay-sidebar-content {\\n bottom: 100px; }\\n .wp-full-overlay .wp-full-overlay-sidebar-content .redux-templates-dependencies-list {\\n border-top: 1px solid #eee;\\n color: #82878c;\\n font-size: 13px;\\n font-weight: 400;\\n margin: 30px 0 0 0; }\\n .wp-full-overlay .wp-full-overlay-sidebar-content .redux-templates-dependencies-list h4 {\\n color: #23282d;\\n font-size: 1.1em;\\n text-align: center; }\\n .wp-full-overlay .wp-full-overlay-sidebar-content .redux-templates-dependencies-list .redux-templates-dependency-blocks .redux-templates-dependency-name {\\n color: #444;\\n font-weight: 600;\\n margin-right: 5px; }\\n\\n.footer-import-button-wrap {\\n padding: 10px 20px;\\n display: flex;\\n justify-content: center; }\\n\\n.wp-full-overlay-footer .view-site,\\n.wp-full-overlay-footer .go-pro,\\n.wp-full-overlay-footer .redux-templates-import {\\n width: 100%; }\\n\\n.redux-templates-button-download {\\n border: 1px solid #3dbfe8;\\n background: #3dbfe8;\\n box-shadow: 0 1px 0 #165cb4;\\n color: #fff; }\\n\\n.wp-full-overlay-main {\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n height: 100%;\\n -webkit-transition: background-color 1000ms linear;\\n -ms-transition: background-color 1000ms linear;\\n transition: background-color 1000ms linear;\\n background-color: unset; }\\n .wp-full-overlay-main.loaded::before {\\n display: none !important; }\\n .wp-full-overlay-main.loaded iframe {\\n background-color: #fff; }\\n .wp-full-overlay-main .components-spinner {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translateX(-50%) translateY(-50%); }\\n\\n.theme-install-overlay iframe {\\n height: 100%;\\n width: 100%;\\n z-index: 20;\\n transition: opacity 0.3s; }\\n\\n.redux-templates-dependency-blocks {\\n display: flex; }\\n .redux-templates-dependency-blocks .block-head {\\n text-align: center;\\n width: 60px;\\n margin-right: 10px; }\\n\\n.requirements-list {\\n width: 100%; }\\n .requirements-list ul {\\n margin: 0;\\n padding: 0;\\n list-style: none; }\\n .requirements-list ul li {\\n cursor: pointer;\\n line-height: 20px;\\n padding-bottom: 25px;\\n clear: left;\\n transition: 300ms; }\\n .requirements-list ul li svg {\\n margin-right: 5px; }\\n .requirements-list ul li svg * {\\n fill: #9a9a9a; }\\n .requirements-list ul li svg,\\n .requirements-list ul li span,\\n .requirements-list ul li div {\\n float: left; }\\n .requirements-list ul li .redux-icon-wrapper {\\n display: inline; }\\n .requirements-list ul li span.pluginURL {\\n float: right; }\\n .requirements-list ul li i {\\n font-size: 1.1em; }\\n .requirements-list ul li .redux-icon-wrapper {\\n padding-left: 5px; }\\n .requirements-list ul li i.fa-exclamation-triangle {\\n font-size: 0.9em;\\n line-height: 1.5em;\\n color: #b27823; }\\n .requirements-list ul li:hover svg * {\\n fill: dimgray; }\\n .requirements-list ul li:hover i.fa-exclamation-triangle {\\n color: #f5a623; }\\n\\n.redux-block-pills ul {\\n margin: 0;\\n padding: 0; }\\n .redux-block-pills ul li {\\n margin: 0px 5px 10px 0;\\n float: left; }\\n .redux-block-pills ul li span {\\n --bg-opacity: 1 !important;\\n background-color: #edf2f7 !important;\\n background-color: rgba(237, 242, 247, var(--bg-opacity)) !important;\\n border-radius: 9999px !important;\\n padding-top: 0.25rem !important;\\n padding-bottom: 0.25rem !important;\\n padding-left: 0.75rem !important;\\n padding-right: 0.75rem !important;\\n --text-opacity: 1 !important;\\n color: #4a5568 !important;\\n color: rgba(74, 85, 104, var(--text-opacity)) !important; }\\n\\n.redux-templates-modal-preview-box {\\n background: #f1f1f1; }\\n .redux-templates-modal-preview-box img {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translateX(-50%) translateY(-50%);\\n max-width: 100%;\\n max-height: 100%; }\\n\\n.theme-hash {\\n text-align: center;\\n font-size: 14px;\\n position: relative; }\\n .theme-hash i {\\n cursor: pointer;\\n margin-right: 5px;\\n margin-left: 5px; }\\n .theme-hash .copied {\\n color: #656a6f;\\n position: absolute;\\n line-height: 75%;\\n margin-left: 10px;\\n opacity: 0.6; }\\n .theme-hash .the-copy {\\n border-bottom-right-radius: 0 !important;\\n border-top-right-radius: 0 !important; }\\n .theme-hash .the-hash {\\n border-bottom-left-radius: 0 !important;\\n border-top-left-radius: 0 !important;\\n border-left: 0 !important; }\\n .theme-hash .hideMe {\\n -webkit-animation: cssAnimation 3s forwards;\\n animation: cssAnimation 3s forwards; }\\n\\n@keyframes cssAnimation {\\n 0% {\\n opacity: 1; }\\n 90% {\\n opacity: 1; }\\n 100% {\\n opacity: 0; } }\\n\\n@-webkit-keyframes cssAnimation {\\n 0% {\\n opacity: 1; }\\n 90% {\\n opacity: 1; }\\n 100% {\\n opacity: 0; } }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-modal-overlay {\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background: rgba(255, 255, 255, 0.6);\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n z-index: 600000; }\\n\\n.redux-templates-modal-wrapper {\\n width: 550px;\\n height: 400px;\\n background: #fcfcfc;\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex-direction: column;\\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.7); }\\n .redux-templates-modal-wrapper div {\\n width: 100%; }\\n .redux-templates-modal-wrapper .redux-templates-modal-header {\\n border-bottom: 1px solid #ddd;\\n flex: 0 0 60px;\\n padding: 10px 15px;\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n box-sizing: border-box; }\\n .redux-templates-modal-wrapper .redux-templates-modal-header h3 {\\n margin: 0;\\n font-size: 1.2rem; }\\n .redux-templates-modal-wrapper .redux-templates-modal-header button {\\n border: none;\\n cursor: pointer; }\\n .redux-templates-modal-wrapper .redux-templates-modal-header .redux-templates-modal-close {\\n font-size: 20px;\\n background: transparent;\\n color: #9b9b9b; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body {\\n flex: 1 1 auto;\\n padding-left: 30px;\\n padding-right: 30px;\\n box-sizing: border-box;\\n background: #fff;\\n position: relative; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body h5 {\\n font-size: 1.1em;\\n font-weight: 600; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body ul {\\n list-style-position: inside;\\n list-style-type: disc; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body .error {\\n color: #f00; }\\n .redux-templates-modal-wrapper .redux-templates-modal-footer {\\n border-top: 1px solid #ddd;\\n flex: 0 0 60px;\\n align-items: center;\\n display: flex;\\n padding: 0 20px;\\n box-sizing: border-box; }\\n .redux-templates-modal-wrapper .redux-templates-modal-footer .button {\\n margin-right: 20px;\\n cursor: pointer; }\\n .redux-templates-modal-wrapper .redux-templates-modal-footer i.fas {\\n margin-right: 3px; }\\n .redux-templates-modal-wrapper .redux-templates-modal-spinner-wrapper {\\n flex: 1 1 auto;\\n align-items: center;\\n justify-content: center;\\n display: flex; }\\n\", \"\"]);\n\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.9 17.7H7.4l-.9-1.5 2.1-2.4 2.3 3.9zm-5.3-1.6l-1.5 1.6h-4L4 13.3l1.6 2.8z\",\n fill: \"#011627\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#00a7e5\",\n d: \"M6.1 15.6L.4 5.9h3.5l2.7 4.5 8-9.1h4.3L6.1 15.6z\"\n});\n\nvar SvgIconColor = function SvgIconColor(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 19 19\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2);\n};\n\nexport default SvgIconColor;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.9 17.7H7.4l-.9-1.5 2.1-2.4 2.3 3.9zm-5.3-1.6l-1.5 1.6h-4L4 13.3l1.6 2.8zM6.1 15.6L.4 5.9h3.5l2.7 4.5 8-9.1h4.3L6.1 15.6z\"\n});\n\nvar SvgIcon = function SvgIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 19 19\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgIcon;","import {__} from '@wordpress/i18n';\n\nconst { registerBlockType } = wp.blocks;\nimport * as importBlock from './import';\nimport * as libraryBlock from './library';\n\nexport function registerBlocks() {\n\n registerBlockType( `redux/${ libraryBlock.name }`, { ...libraryBlock.settings } );\n\tregisterBlockType( `redux/${ importBlock.name }`, { ...importBlock.settings } );\n\n}\nregisterBlocks();\n","/**\n * Internal dependencies\n */\nimport importReusableBlock from '../utils/import';\nimport insertImportedBlocks from '../utils/insert';\n\n/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { withInstanceId } = wp.compose;\nconst { Fragment, Component } = wp.element;\nconst { MediaUploadCheck } = wp.blockEditor;\nconst { DropZone, FormFileUpload, Placeholder, Notice } = wp.components;\n\nconst ALLOWED_BG_MEDIA_TYPES = [ 'json' ];\n\n/**\n * Block edit function\n */\nclass Edit extends Component {\n constructor() {\n super( ...arguments );\n\n this.state = {\n isLoading: false,\n error: null,\n };\n\n this.isStillMounted = true;\n this.addFile = this.addFile.bind( this );\n }\n\n componentDidMount() {\n const { file } = this.props.attributes;\n\n if ( file ) {\n this.setState( { isLoading: true } );\n this.addFile( file );\n }\n }\n\n componentWillUnmount() {\n this.isStillMounted = false;\n }\n\n addFile( files ) {\n let file = files[ 0 ];\n\n if ( files.target ) {\n file = event.target.files[ 0 ];\n }\n\n if ( ! file ) {\n return;\n }\n this.setState( { isLoading: true } );\n\n importReusableBlock( file )\n .then( ( reusableBlock ) => {\n if ( ! this.isStillMounted ) {\n return;\n }\n\n this.setState( { isLoading: false } );\n insertImportedBlocks( this.props.clientId, reusableBlock, this.props.onClose );\n } )\n .catch( ( error ) => {\n if ( ! this.isStillMounted ) {\n return;\n }\n\n let uiMessage;\n switch ( error.message ) {\n case 'Invalid JSON file':\n uiMessage = __( 'Invalid JSON file', redux_templates.i18n );\n break;\n case 'Invalid Reusable Block JSON file':\n uiMessage = __( 'Invalid Reusable Block JSON file', redux_templates.i18n );\n break;\n default:\n uiMessage = __( 'Unknown error', redux_templates.i18n );\n }\n\n this.setState( { isLoading: false, error: uiMessage } );\n } );\n }\n\n render() {\n const { isLoading, error } = this.state;\n\n return (\n <Placeholder\n icon=\"download\"\n label={ __( 'Import a Template from JSON - Redux', redux_templates.i18n ) }\n instructions={ __( 'Drag a file or upload a new one from your device.', redux_templates.i18n ) }\n className=\"editor-media-placeholder\"\n notices={ error && (\n <Notice status=\"error\">\n { error }\n </Notice>\n ) }\n >\n <Fragment>\n <MediaUploadCheck>\n <DropZone\n onFilesDrop={ this.addFile }\n label={ __( 'Import from JSON', redux_templates.i18n ) }\n />\n <FormFileUpload\n isLarge\n className=\"editor-media-placeholder__button button button-primary\"\n onChange={ this.addFile }\n accept={ ALLOWED_BG_MEDIA_TYPES }\n isBusy={ isLoading }\n disabled={ isLoading }\n multiple={ false }\n >\n { __( 'Upload', redux_templates.i18n ) }\n </FormFileUpload>\n </MediaUploadCheck>\n </Fragment>\n </Placeholder>\n );\n }\n}\n\nexport default withInstanceId( Edit );\n","/**\n * WordPress dependencies\n */\nconst { SVG } = wp.components;\n\nexport default <SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\" /><path d=\"M9.17 6l2 2H20v10H4V6h5.17M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z\" /></SVG>;\n","/**\n * Internal dependencies\n */\nimport edit from './components/edit';\nimport icon from './icon';\nimport transforms from './transforms';\nimport { colorizeIcon } from '../../icons';\n\n/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\n\n/**\n * Block constants\n */\nconst name = 'import';\n\nconst category = 'common';\nconst schema = {\n\tfile: {\n\t\ttype: 'object',\n\t},\n};\n\nconst title = __( 'Template Import', redux_templates.i18n );\n\nconst keywords = [\n __( 'import', redux_templates.i18n ),\n __( 'download', redux_templates.i18n ),\n __( 'migrate', redux_templates.i18n ),\n];\n\n\n\nconst settings = {\n\ttitle: title,\n description: __( 'Import blocks exported using Redux plugin.', redux_templates.i18n ),\n\n\tcategory: category,\n\tkeywords: keywords,\n\n attributes: schema,\n\n supports: {\n align: true,\n alignWide: false,\n alignFull: false,\n customClassName: false,\n className: false,\n html: false,\n },\n\n transforms: transforms,\n edit: edit,\n save() {\n return null;\n },\n};\n\nexport { name, title, category, icon, settings };\n","/**\n * WordPress dependencies\n */\nconst { createBlock } = wp.blocks;\n\nconst transforms = {\n from: [\n {\n type: 'files',\n isMatch( files ) {\n return files[ 0 ].type === 'application/json';\n },\n // We define a lower priorty (higher number) than the default of 10. This\n // ensures that the Import block is only created as a fallback.\n priority: 13,\n transform: ( files ) => {\n const blocks = [];\n\n blocks.push( createBlock( 'redux/import', {\n file: files,\n } ) );\n\n return blocks;\n },\n },\n ],\n};\n\nexport default transforms;\n","/**\n * Reads the textual content of the given file.\n *\n * @param {File} file File.\n * @return {Promise<string>} Content of the file.\n */\nexport function readTextFile( file ) {\n const reader = new window.FileReader();\n return new Promise( ( resolve ) => {\n reader.onload = function() {\n resolve( reader.result );\n };\n reader.readAsText( file );\n } );\n}\n","/**\n * External dependencies\n */\nimport { isString } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport { readTextFile } from './file';\nconst { dispatch, select } = wp.data;\nconst { editPost } = dispatch('core/editor');\n\n/**\n * Import a reusable block from a JSON file.\n *\n * @param {File} file File.\n * @return {Promise} Promise returning the imported reusable block.\n */\nasync function importReusableBlock( file ) {\n const fileContent = await readTextFile( file );\n let parsedContent;\n try {\n parsedContent = JSON.parse(JSON.parse(JSON.stringify(fileContent)));\n } catch ( e ) {\n throw new Error( 'Invalid JSON file' );\n }\n\n if ( parsedContent.__file === 'redux_template' ) {\n\t\teditPost( { 'template': 'redux-templates_full_width' } );\n return parsedContent.content;\n }\n\n if (\n parsedContent.__file !== 'wp_block' ||\n ! parsedContent.title ||\n ! parsedContent.content ||\n ! isString( parsedContent.title ) ||\n ! isString( parsedContent.content )\n ) {\n\t if ( '' === select( 'core/editor' ).getEditedPostAttribute( 'template' ) ) {\n\t\t editPost({'template': 'redux-templates_contained'});\n\t }\n return importCoreBlocks( parsedContent );\n }\n\n const postType = await wp.apiFetch( { path: '/wp/v2/types/wp_block' } );\n const reusableBlock = await wp.apiFetch( {\n path: `/wp/v2/${ postType.rest_base }`,\n data: {\n title: parsedContent.title,\n content: parsedContent.content,\n status: 'publish',\n },\n method: 'POST',\n } );\n\n if ( reusableBlock.id ) {\n return '<!-- wp:block {\"ref\":' + reusableBlock.id + '} /-->';\n }\n throw new Error( 'Invalid Reusable Block JSON file contents' );\n}\n\nfunction importCoreBlocks( parsedContent ) {\n if (\n parsedContent.__file !== 'core_block' ||\n ! parsedContent.content ||\n ! isString( parsedContent.content )\n ) {\n throw new Error( 'Invalid JSON file' );\n }\n\n return parsedContent.content;\n}\n\nexport default importReusableBlock;\n","/**\n * WordPress dependencies\n */\nconst { select, dispatch } = wp.data;\nconst { parse, createBlock } = wp.blocks;\n\nexport default function insertImportedBlocks( clientId, blocks, onClose ) {\n blocks = parse( blocks );\n const toSelect = [];\n const blockIndex = select( 'core/block-editor' ).getBlockInsertionPoint();\n if ( blocks.length > 0 ) {\n for ( const block in blocks ) {\n const created = createBlock( blocks[ block ].name, blocks[ block ].attributes, blocks[ block ].innerBlocks );\n dispatch( 'core/block-editor' ).insertBlocks( created, parseInt( blockIndex.index ) + parseInt( block ) );\n\n if ( typeof created !== 'undefined' ) {\n toSelect.push( created.clientId );\n }\n }\n\n //remove insertion point if empty\n dispatch( 'core/block-editor' ).removeBlock( clientId );\n\n //select inserted blocks\n if ( toSelect.length > 0 ) {\n dispatch( 'core/block-editor' ).multiSelect( toSelect[ 0 ], toSelect.reverse()[ 0 ] );\n }\n }\n\n onClose();\n}\n","/**\n * External dependencies.\n */\nimport { ReduxTemplatesIcon } from '~redux-templates/icons'\n// import { ModalDesignLibrary } from '~stackable/components'\nimport {ModalManager} from '../../modal-manager';\nimport LibraryModal from '../../modal-library';\n\n/**\n * WordPress dependencies.\n */\nimport {\n\tButton, Placeholder,\n} from '@wordpress/components'\nimport { compose } from '@wordpress/compose'\nimport { createBlock, parse } from '@wordpress/blocks'\nimport { withDispatch } from '@wordpress/data'\nimport { useState } from '@wordpress/element'\nimport { __ } from '@wordpress/i18n'\nimport { applyFilters } from '@wordpress/hooks'\n\nconst edit = ( { removeLibraryBlock, preview } ) => {\n\tif (preview) {\n\t\talert('here i am');\n\t}\n\n\treturn (\n\t\t<div className=\"redux-template-library-block\">\n\t\t\t<Placeholder\n\t\t\t\ticon={ <ReduxTemplatesIcon /> }\n\t\t\t\tlabel={ __( 'Redux Template Library', redux_templates.i18n ) }\n\t\t\t\tinstructions={ __( 'Open the Design Library and select a pre-designed block or layout.', redux_templates.i18n ) }\n\t\t\t>\n\t\t\t\t<Button\n\t\t\t\t\tisSecondary\n\t\t\t\t\tisLarge\n\t\t\t\t\thasIcon\n\t\t\t\t\tclassName=\"redux-template-library-block__button\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tModalManager.open(<LibraryModal />);\n\t\t\t\t\t\tremoveLibraryBlock()\n\t\t\t\t\t} }\n\t\t\t\t>{ __( 'Open Design Library', redux_templates.i18n ) }</Button>\n\t\t\t</Placeholder>\n\t\t</div>\n\t)\n}\n\nexport default compose( [\n\twithDispatch( ( dispatch, {\n\t\tclientId,\n\t} ) => {\n\t\tconst { removeBlocks } = dispatch( 'core/block-editor' )\n\t\treturn {\n\t\t\tremoveLibraryBlock: serializedBlock => {\n\t\t\t\tremoveBlocks( clientId );\n\t\t\t},\n\t\t}\n\t} ),\n] )( edit )\n","/**\n * BLOCK: Design Library\n */\n/**\n * External dependencies\n */\nimport { ReduxTemplatesIcon } from '~redux-templates/icons'\n\n/**\n * Internal dependencies\n */\nimport edit from './edit'\nimport InsertLibraryButton from './insert-library-button'\nconst { registerBlockType } = wp.blocks;\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n'\nimport domReady from '@wordpress/dom-ready'\nimport { render } from '@wordpress/element'\nimport { ReduxTemplatesIconColor } from '../../icons';\n\n\n\nconst name = 'library';\nconst icon = InsertLibraryButton\n\nconst category = 'common';\nconst schema = {}\n\nconst title = __( 'Template Library', redux_templates.i18n );\nconst description = __( 'Choose a section, template, or template kit from the Redux Template Library.', redux_templates.i18n );\n\nconst keywords = [\n\t__( 'Template Library', redux_templates.i18n ),\n\t__( 'Design Library', redux_templates.i18n ),\n\t__( 'Element Layouts', redux_templates.i18n ),\n\t__( 'Redux', redux_templates.i18n ),\n];\n\nconst blockAttributes = {\n\tfile: {\n\t\ttype: 'object',\n\t},\n};\n\nconst settings = {\n\ttitle: title,\n\tdescription: description,\n\ticon: ReduxTemplatesIconColor,\n\tcategory: 'layout',\n\tkeywords: keywords,\n\tattributes: schema,\n\tsupports: {\n\t\tcustomClassName: false,\n\t\t// inserter: ! disabledBlocks.includes( name ), // Hide if disabled.\n\t},\n\n\texample: {\n\t\tattributes: {\n\t\t\t// backgroundColor: '#000000',\n\t\t\t// opacity: 0.8,\n\n\t\t\t// padding: 30,\n\t\t\t// textColor: '#FFFFFF',\n\t\t\t// radius: 10,\n\t\t\t// title: __( 'I am a slide title', 'wp-presenter-pro' ),\n\t\t},\n\t},\n\n\tedit: edit,\n\n\tsave() {\n\t\treturn null;\n\t},\n};\n\nconst renderButton = function(toolbar) {\n\n\tconst buttonDiv = document.createElement( 'div' )\n\ttoolbar.appendChild( buttonDiv )\n\n\trender( <InsertLibraryButton />, buttonDiv )\n}\n\ndomReady( () => {\n\tlet toolbar = document.querySelector( '.edit-post-header__toolbar' );\n\tif ( ! toolbar ) {\n\t\ttoolbar = document.querySelector( '.edit-post-header__toolbar' );\n\t}\n\tif ( ! toolbar ) {\n\t\tsetTimeout(function(){\n\t\t\tlet toolbar = document.querySelector( '.edit-post-header__toolbar' );\n\t\t\tif ( toolbar ) {\n\t\t\t\trenderButton( toolbar );\n\t\t\t}\n\t\t}, 500);\n\t\treturn;\n\t}\n\trenderButton(toolbar);\n} )\n\nexport { name, title, category, icon, settings };\n","/**\n * External dependencies\n */\nimport { ReduxTemplatesIcon, ReduxTemplatesIconColorize } from '~redux-templates/icons'\n\n/**\n * WordPress dependencies\n */\nimport {Button, Tooltip} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {ModalManager} from '../../modal-manager';\nimport LibraryModal from '../../modal-library';\nimport './style.scss'\n\nconst InsertLibraryButton = () => {\n\treturn (\n\t\t<Tooltip text={__( 'Redux Templates Library', redux_templates.i18n )} position={'bottom'}>\n\t\t\t<Button data-tut=\"tour__library_button\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tModalManager.open(<LibraryModal />);\n\t\t\t\t\t} }\n\t\t\t\t\tclassName=\"redux-templates-insert-library-button\"\n\t\t\t\t\tlabel={ __( 'Open Library', redux_templates.i18n ) }\n\t\t\t\t\ticon={ <ReduxTemplatesIcon /> }\n\t\t\t>{ __( 'Templates', redux_templates.i18n ) }</Button>\n\t\t</Tooltip>\n\t)\n}\n\nexport default InsertLibraryButton\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","/**\n * WordPress dependencies\n */\nimport {__} from '@wordpress/i18n'\nimport CONFIG from '../config';\nimport './style.scss'\n\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {useState, useEffect} = wp.element;\n\n// currentStep : indicates where the step is\n// step: 1~8 etc\nexport default function ChallengeStepItem(props) {\n const {currentStep, step, caption, finalStatus} = props;\n const [iconClassname, setIconClassname] = useState('fa circle');\n const [itemClassname, setItemClassname] = useState('challenge-item');\n useEffect(() => {\n if (currentStep < step) { // not completed step\n setItemClassname('challenge-item');\n setIconClassname('far fa-circle');\n }\n if (currentStep === step) { // current step\n setItemClassname('challenge-item challenge-item-current');\n setIconClassname('fas fa-circle');\n } \n if (currentStep > step || finalStatus) {\n setItemClassname('challenge-item challenge-item-completed');\n setIconClassname('fas fa-check-circle');\n }\n }, [step, currentStep, finalStatus]);\n \n return <li className={itemClassname}><i className={iconClassname} />{caption}</li>;\n}","const {useState, useEffect, memo} = wp.element;\nimport CONFIG from '../config';\nexport default memo(function ProgressBar({currentStep}){\n const [width, setWidth] = useState(0);\n useEffect(() => {\n setWidth( currentStep <= 0 ? 0 : (currentStep / CONFIG.totalStep * 100) );\n }, [currentStep])\n return (\n <div className='challenge-bar'>\n <div style={{width: width + '%'}}></div>\n </div>\n );\n});","/**\n * WordPress dependencies\n */\nimport {__} from '@wordpress/i18n'\nimport ChallengeStepItem from './ChallengeStepItem';\nimport ProgressBar from './ProgressBar';\nimport CONFIG from '../config';\nimport './style.scss'\n\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {useState, useEffect} = wp.element;\n\nfunction ChallengeListBlock(props) {\n const {started, onStarted} = props;\n const {challengeStep, finalStatus, setChallengeOpen, setChallengeStep} = props;\n const [buttonRowClassname, setButtonRowClassname] = useState('challenge-button-row');\n useEffect(() => {\n setButtonRowClassname(challengeStep !== CONFIG.beginningStep ? 'challenge-button-row started' : 'challenge-button-row');\n }, [challengeStep])\n \n const onCancelChallenge = () => {\n setChallengeOpen(false);\n setChallengeStep(-1);\n }\n\n return (\n <div className='challenge-list-block'>\n <p>{__('Complete the challenge and get up and running within 5 minutes', redux_templates.i18n)}</p>\n <ProgressBar currentStep={finalStatus === 'success' ? CONFIG.totalStep : challengeStep} />\n <ul className='challenge-list'>\n {\n CONFIG.list.map((item, i) => {\n return (<ChallengeStepItem key={i} step={i} currentStep={challengeStep} finalStatus={finalStatus} caption={item.caption} />);\n })\n }\n </ul>\n { finalStatus === '' &&\n <div className={buttonRowClassname}>\n {challengeStep === CONFIG.beginningStep && \n <button className='btn-challenge-start' onClick={onStarted}>{__('Start Challenge', redux_templates.i18n)}</button>}\n {challengeStep === CONFIG.beginningStep && <button className='btn-challenge-skip' onClick={onCancelChallenge}>{__('Skip Challenge', redux_templates.i18n)}</button>}\n {challengeStep !== CONFIG.beginningStep && <button className='btn-challenge-cancel' onClick={onCancelChallenge}>{__('Cancel Challenge', redux_templates.i18n)}</button>}\n </div>\n }\n </div>\n );\n\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setChallengeOpen, setChallengeStep} = dispatch('redux-templates/sectionslist');\n return {\n setChallengeOpen,\n setChallengeStep\n };\n }),\n\n withSelect((select) => {\n const {getChallengeStep, getChallengeFinalStatus} = select('redux-templates/sectionslist');\n return {\n challengeStep: getChallengeStep(),\n finalStatus: getChallengeFinalStatus()\n };\n })\n])(ChallengeListBlock);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","/**\n * WordPress dependencies\n */\nimport {__} from '@wordpress/i18n'\nimport './style.scss'\nimport config from '../config';\nimport helper from '../helper';\nimport classnames from 'classnames';\nconst {compose} = wp.compose;\nconst {withSelect, withDispatch} = wp.data;\nconst {useState, useEffect, useRef} = wp.element;\n\nfunction useInterval(callback, delay) {\n const savedCallback = useRef();\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n let id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}\n\nfunction ChallengeTimer(props) {\n const {started, expanded, setChallengeListExpanded, isChallengeOpen, finalStatus} = props;\n const [secondsLeft, setSecondsLeft] = useState(helper.getSecondsLeft());\n const [paused, setPaused] = useState(false);\n\n // only timer\n useEffect(() => {\n window.addEventListener('focus', resume);\n window.addEventListener('blur', pause);\n return () => {\n window.removeEventListener('focus', resume);\n window.removeEventListener('blur', pause);\n };\n });\n\n // setup timer\n useEffect(() => {\n setSecondsLeft(helper.getSecondsLeft());\n if (helper.loadStep() === -1) {\n setSecondsLeft(config.initialSecondsLeft);\n }\n }, [isChallengeOpen]);\n\n // run timer\n useInterval(() => {\n setSecondsLeft(secondsLeft < 0 ? 0 : secondsLeft - 1);\n helper.saveSecondsLeft(secondsLeft < 0 ? 0 : secondsLeft - 1);\n }, (started && (paused === false) && secondsLeft >= 0 && finalStatus === '') ? 1000 : null);\n\n\n // Pause the timer.\n const pause = () => {\n setPaused(true);\n }\n\n // Resume the timer.\n const resume = () => {\n setPaused(false);\n }\n\n return (\n <div className='block-timer'>\n <div>\n <h3>{__('Redux Challenge', redux_templates.i18n)}</h3>\n <p><span>{helper.getFormatted(secondsLeft)}</span>{__(' remaining', redux_templates.i18n)}</p>\n </div>\n <div className={classnames('caret-icon', {'closed': expanded})} onClick={() => setChallengeListExpanded(!expanded)}>\n <i className=\"fa fa-caret-down\"></i>\n </div>\n </div>\n );\n\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setChallengeListExpanded} = dispatch('redux-templates/sectionslist');\n return {\n setChallengeListExpanded\n };\n }),\n withSelect((select) => {\n const {getChallengeOpen, getChallengeFinalStatus, getChallengeListExpanded} = select('redux-templates/sectionslist');\n return {\n isChallengeOpen: getChallengeOpen(),\n finalStatus: getChallengeFinalStatus(),\n expanded: getChallengeListExpanded()\n };\n })\n])(ChallengeTimer);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {__} from '@wordpress/i18n'\nimport {animateScroll} from 'react-scroll';\nimport {dispatch, select} from '@wordpress/data';\nconst {setTourActiveButtonGroup, setImportingTemplate} = dispatch('redux-templates/sectionslist');\nconst {getPageData} = select('redux-templates/sectionslist');\nimport {ModalManager} from '~redux-templates/modal-manager';\nimport PreviewModal from '~redux-templates/modal-preview';\nexport default {\n initialSecondsLeft: 300,\n beginningStep: -1,\n totalStep: 7,\n list: [\n {\n selector: '[data-tut=\"tour__navigation\"]',\n caption: __('Template Type Tabs', redux_templates.i18n),\n offset: {\n x: 0,\n y: 50,\n arrowX: 0,\n arrowY: -20\n },\n box: {\n width: 250\n },\n direction: 'top',\n content: () => (\n <div>\n {__('These are the different types of templates we have.', redux_templates.i18n)}\n <ul>\n <li>\n <strong>{__('Sections', redux_templates.i18n)}</strong>\n {__(' are the building blocks of a page. Each \"row\" of content on a page we consider a section.', redux_templates.i18n)}\n </li>\n <li>\n <strong>{__('Pages', redux_templates.i18n)}</strong>\n {__(' are, you guessed it, a group of multiple sections making up a page.', redux_templates.i18n)}\n </li>\n <li>\n <strong>{__('Template Kits', redux_templates.i18n)}</strong>\n {__(' are groups of pages that all follow a style or theme.', redux_templates.i18n)}\n </li>\n <li>\n <strong>{__('Saved', redux_templates.i18n)}</strong>\n {__(' are reusable blocks that you may have previously saved for later.', redux_templates.i18n)}\n </li>\n </ul>\n </div>\n )\n },\n {\n selector: '[data-tut=\"tour__filtering\"]',\n caption: __('Sidebar', redux_templates.i18n),\n content: __('This area is where you can search and filter to find the right kind of templates you want.', redux_templates.i18n),\n direction: 'left',\n offset: {\n x: 40,\n y: 10,\n arrowX: -20,\n arrowY: 0\n },\n box: {\n width: 250,\n height: 130\n },\n action: () => {\n animateScroll.scrollToTop({\n containerId: 'redux-templates-collection-modal-sidebar',\n duration: 0,\n });\n },\n },\n {\n selector: '[data-tut=\"tour__filtering\"]',\n caption: __('Plugins Filter', redux_templates.i18n),\n offset: {\n x: 40,\n y: 10,\n arrowX: -20,\n arrowY: 0\n },\n box: {\n width: 290,\n height: 185\n },\n content: () => (\n <div>\n {__('Some templates require certain plugins. You can filter or select those templates. Hint, if the text is a ', redux_templates.i18n)}\n <a href=\"#\" className=\"missing-dependency\">{__('little orange', redux_templates.i18n)}</a>\n {__(', you don`t have that plugin installed yet, but don`t worry. Redux will help you with that too.', redux_templates.i18n)}\n </div>\n ),\n action: () => {\n animateScroll.scrollToBottom({\n containerId: 'redux-templates-collection-modal-sidebar',\n duration: 0,\n });\n },\n direction: 'left'\n },\n {\n selector: '[data-tut=\"tour__main_body\"]',\n caption: __('Templates List', redux_templates.i18n),\n content: __('This area is where the templates will show up that match the filters you\\'ve selected. You can click on many of them to preview or import them.', redux_templates.i18n),\n direction: 'left',\n offset: {\n x: 40,\n y: 10,\n arrowX: -20,\n arrowY: 0\n },\n box: {\n width: 250,\n height: 150\n },\n action: () => {\n animateScroll.scrollToTop({\n containerId: 'redux-templates-collection-modal-sidebar',\n duration: 0,\n });\n setTourActiveButtonGroup(null);\n }\n },\n {\n selector: '#modalContainer .redux-templates-single-item-inner:first-child',\n caption: __('Template Hover', redux_templates.i18n),\n content: __('When you hover over a template you can see via icons what plugins are required for this template. You can then choose to Preview or Import a design.', redux_templates.i18n),\n action: () => {\n ModalManager.closeCustomizer();\n const pageData = getPageData();\n if (pageData && pageData.length > 0) {\n setTourActiveButtonGroup(pageData[0])\n }\n },\n direction: 'left',\n offset: {\n x: 40,\n y: 10,\n arrowX: -20,\n arrowY: 0\n },\n box: {\n width: 240,\n height: 169\n },\n },\n {\n selector: '.wp-full-overlay-sidebar',\n caption: __('Preview Dialog', redux_templates.i18n),\n content: __('This is the preview dialog. It gives more details about the template and helps you to see what you could expect the templates to look like.', redux_templates.i18n),\n action: () => {\n setTourActiveButtonGroup(null);\n setImportingTemplate(null);\n const pageData = getPageData();\n if (pageData && pageData.length > 0) {\n ModalManager.openCustomizer(\n <PreviewModal startIndex={0} currentPageData={pageData}/>\n )\n }\n },\n position: 'center'\n },\n {\n selector: '.redux-templates-import-wizard-wrapper',\n caption: __('Import Wizard', redux_templates.i18n),\n content: __('When you click to import a template, sometimes you will be missing one of the required plugins. Redux will do its best to help you install what\\'s missing. If some of them are premium plugins, you will be provided details on where you can get them.', redux_templates.i18n),\n direction: 'right',\n offset: {\n x: 0,\n y: 85,\n arrowX: 40,\n arrowY: 25\n },\n box: {\n width: 250,\n height: 169\n },\n action: () => {\n // if (ModalManager.isModalOpened() === false) ModalManager.open(<LibraryModal autoTourStart={false} />)\n if (document.getElementsByClassName('tooltipster-box'))\n document.getElementsByClassName('tooltipster-box')[0].style.display = 'none';\n ModalManager.show();\n ModalManager.closeCustomizer();\n const pageData = getPageData();\n if (pageData && pageData.length > 0) setImportingTemplate(pageData[0]);\n setTimeout(() => {\n const openedPanel = document.getElementsByClassName('redux-templates-modal-wrapper');\n if (openedPanel && openedPanel.length > 0) {\n let openPanel = openedPanel[0].getBoundingClientRect();\n let box = {top: openPanel.top + 90, left: openPanel.left - 320};\n dispatch('redux-templates/sectionslist').setChallengeTooltipRect(box);\n }\n if (document.getElementsByClassName('tooltipster-box'))\n document.getElementsByClassName('tooltipster-box')[0].style.display = 'block';\n }, 0)\n }\n }\n ]\n};\n","/**\n * WordPress dependencies\n */\nimport {__} from '@wordpress/i18n'\nimport CONFIG from '../config';\nimport helper from '../helper';\n\nconst { compose } = wp.compose;\nconst { withDispatch, withSelect } = wp.data;\n\n\nconst ratingStars = (\n <span className=\"rating-stars\">\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n </span>\n);\n\nfunction ChallengeCongrats(props) {\n const {setChallengeStep, setChallengeFinalStatus, setChallengeOpen} = props;\n const closeModal = () => {\n setChallengeStep(CONFIG.beginningStep);\n setChallengeFinalStatus('');\n setChallengeOpen(false);\n }\n return (\n <div className=\"redux-templates-modal-overlay\">\n <div className=\"redux-templates-modal-wrapper challenge-popup-wrapper\">\n <div className=\"challenge-popup-header challenge-popup-header-congrats\"\n style={{backgroundImage: `url(${redux_templates.plugin + 'assets/img/popup-congrats.png'})`}}>\n <a className=\"challenge-popup-close\" onClick={closeModal}>\n <i className='fas fa-times' />\n </a>\n </div>\n <div className=\"challenge-popup-content\">\n <h3>{__( 'Congrats, you did it!', redux_templates.i18n )}</h3>\n <p>\n {__( 'You completed the Redux Challenge in ', redux_templates.i18n )}<b>{helper.getLocalizedDuration()}</b>.\n {__('Share your success story with other Redux users and help us spread the word', redux_templates.i18n)}\n <b>{__('by giving Redux a 5-star rating (', redux_templates.i18n)} {ratingStars}{__(') on WordPress.org', redux_templates.i18n)}</b>.\n {__('Thanks for your support and we look forward to bringing more awesome features.', redux_templates.i18n)}\n </p>\n <a href=\"https://wordpress.org/support/plugin/redux-framework/reviews/?filter=5#new-post\" className=\"challenge-popup-btn challenge-popup-rate-btn\" target=\"_blank\" rel=\"noopener\">\n {__( 'Rate Redux on Wordpress.org', redux_templates.i18n ) }\n <span className=\"dashicons dashicons-external\"></span>\n </a>\n </div>\n </div>\n </div>\n );\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const { setChallengeStep, setChallengeFinalStatus, setChallengeOpen } = dispatch('redux-templates/sectionslist');\n return {\n setChallengeStep,\n setChallengeFinalStatus,\n setChallengeOpen\n };\n })\n])(ChallengeCongrats);\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n'\nimport CONFIG from '../config';\nimport {CheckboxControl} from '@wordpress/components';\n\nconst {compose} = wp.compose;\nconst {useState} = wp.element;\nconst {withDispatch, withSelect} = wp.data;\n\n\nconst ratingStars = (\n <span className=\"rating-stars\">\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n </span>\n);\n\nfunction ChallengeContact(props) {\n const { setChallengeStep, setChallengeFinalStatus, setChallengeOpen } = props;\n const [comment, setComment] = useState('');\n const [agreeToContactFurther, setAgreement] = useState(false);\n const closeModal = () => {\n setChallengeStep(CONFIG.beginningStep);\n setChallengeFinalStatus('');\n setChallengeOpen(false);\n }\n\n const handleChange = (e) => {\n setComment(e.target.value);\n }\n\n const contactRedux = () => {\n //sending data\n console.log('contact information', comment, agreeToContactFurther);\n closeModal();\n }\n\n return (\n <div className=\"redux-templates-modal-overlay\">\n <div className=\"redux-templates-modal-wrapper challenge-popup-wrapper\">\n <div className=\"challenge-popup-header challenge-popup-header-contact\"\n style={{ backgroundImage: `url(${redux_templates.plugin + 'assets/img/popup-contact.png'})` }}>\n <a className=\"challenge-popup-close\" onClick={closeModal}>\n <i className='fas fa-times' />\n </a>\n </div>\n <div className=\"challenge-popup-content challenge-contact\">\n <h3>{__('Help us improve Redux', redux_templates.i18n)}</h3>\n <p>\n {__('We\\'re sorry that it took longer than 5 minutes to try our challenge. We aim to ensure our Block Template library is as beginner friendly as possible. Please take a moment to let us know how we can improve our challenge.', redux_templates.i18n)}\n </p>\n <textarea value={comment} onChange={handleChange}></textarea>\n <CheckboxControl\n label={__('Yes, I give Redux permission to contact me for any follow up questions.', redux_templates.i18n)}\n checked={agreeToContactFurther}\n onChange={() => setAgreement(!agreeToContactFurther)}\n />\n <button className=\"challenge-popup-btn challenge-popup-rate-btn\" onClick={contactRedux}>\n {__('Submit Feedback', redux_templates.i18n)}\n </button>\n </div>\n </div>\n </div>\n );\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const { setChallengeStep, setChallengeFinalStatus, setChallengeOpen } = dispatch('redux-templates/sectionslist');\n return {\n setChallengeStep,\n setChallengeFinalStatus,\n setChallengeOpen\n };\n })\n])(ChallengeContact);\n","/**\n * WordPress dependencies\n */\nimport ChallengeCongrats from './congrats';\nimport ChallengeContact from './contact';\nimport './style.scss'\n\nexport default function ChallengeFinalTemplate({finalStatus}) {\n\treturn <ChallengeCongrats />\n\t// TODO - When feedback is working, uncomment this.\n // if (finalStatus === 'success') return <ChallengeCongrats />\n // return <ChallengeContact />;\n}\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {__} from '@wordpress/i18n'\nimport CONFIG from './config';\nexport default {\n\n /**\n * Get number of seconds left to complete the Challenge.\n */\n getSecondsLeft: function() {\n var secondsLeft = localStorage.getItem( 'reduxChallengeSecondsLeft' );\n\n secondsLeft = isNaN(secondsLeft) || secondsLeft == null ? CONFIG.initialSecondsLeft : parseInt( secondsLeft, 10 );\n\n return secondsLeft;\n },\n\n /**\n * Save number of seconds left to complete the Challenge.\n */\n saveSecondsLeft: function( secondsLeft ) {\n\n localStorage.setItem( 'reduxChallengeSecondsLeft', secondsLeft );\n },\n\n /**\n * Get 'minutes' part of timer display.\n */\n getMinutesFormatted: function( secondsLeft ) {\n return Math.floor( secondsLeft / 60 );\n },\n\n /**\n * Get 'seconds' part of timer display.\n */\n getSecondsFormatted: function( secondsLeft ) {\n return secondsLeft % 60;\n },\n\n /**\n * Get formatted timer for display.\n */\n getFormatted: function( secondsLeft ) {\n\n if (secondsLeft < 0) return '0:00';\n\n var timerMinutes = this.getMinutesFormatted( secondsLeft );\n var timerSeconds = this.getSecondsFormatted( secondsLeft );\n\n return timerMinutes + ( 9 < timerSeconds ? ':' : ':0' ) + timerSeconds;\n },\n\n /**\n * Get Localized time string for display\n */\n getLocalizedDuration: function() {\n let secondsLeft = this.getSecondsLeft();\n secondsLeft = CONFIG.initialSecondsLeft - secondsLeft;\n\n var timerMinutes = this.getMinutesFormatted( secondsLeft );\n var timerSeconds = this.getSecondsFormatted( secondsLeft );\n\n const minutesString = timerMinutes ? timerMinutes + ' ' + __( 'minutes', redux_templates.i18n ) + ' ' : '';\n const secondsString = timerSeconds ? timerSeconds + ' ' + __( 'seconds', redux_templates.i18n ) : '';\n return minutesString + secondsString;\n },\n\n /**\n * Get last saved step.\n */\n loadStep: function() {\n\n var step = localStorage.getItem( 'reduxChallengeStep' );\n step = isNaN(step) ? -1 : parseInt( step, 10 );\n\n return step;\n },\n\n /**\n * Save Challenge step.\n */\n saveStep: function( step ) {\n localStorage.setItem( 'reduxChallengeStep', step );\n },\n};\n","/**\n * WordPress dependencies\n */\nimport {__} from '@wordpress/i18n'\nimport './style.scss'\nimport helper from './helper';\nimport CONFIG from './config';\nimport ChallengeListBlock from './challenge-list-block';\nimport ChallengeTimer from './challenge-timer';\n\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {useState, useEffect} = wp.element;\n\nfunction ReduxChallenge(props) {\n const {autoChallengeStart} = props;\n const {isOpen, challengeStep, setChallengeStep, listExpanded} = props;\n const [challengeClassname, setChallengeClassname] = useState('redux-templates-challenge');\n const [started, setStarted] = useState(false);\n\n useEffect(() => {\n if (challengeStep !== CONFIG.beginningStep && isOpen) {\n setChallengeClassname('redux-templates-challenge started')\n setStarted(true);\n }\n }, [challengeStep, isOpen]);\n\n const onStarted = () => {\n setChallengeStep(0);\n setStarted(true);\n }\n\n return (\n <div className={challengeClassname} style={{display: isOpen ? 'block' : 'none'}}>\n { listExpanded && <ChallengeListBlock onStarted={onStarted} /> }\n <ChallengeTimer started={started} />\n </div>\n );\n\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setChallengeStep} = dispatch('redux-templates/sectionslist');\n return {\n setChallengeStep\n };\n }),\n\n withSelect((select) => {\n const {getChallengeStep, getChallengeOpen, getChallengeListExpanded} = select('redux-templates/sectionslist');\n return {\n challengeStep: getChallengeStep(),\n isOpen: getChallengeOpen(),\n listExpanded: getChallengeListExpanded()\n };\n })\n])(ReduxChallenge);\n","\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {compose} from '@wordpress/compose';\nimport {withDispatch, withSelect} from '@wordpress/data';\nimport CONFIG from '../config';\nconst {findDOMNode, useRef, useEffect} = wp.element;\nfunction ChallengeDot(props) {\n const {step, challengeStep, isOpen, setChallengeTooltipRect} = props;\n const selectedElement = useRef(null);\n useEffect(() => {\n window.addEventListener('resize', onResize);\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, [])\n\n useEffect(() => {\n if (isOpen === false) return;\n const stepInformation = CONFIG.list[challengeStep];\n if (stepInformation && stepInformation.action && typeof stepInformation.action === 'function') {\n stepInformation.action();\n onResize();\n setTimeout(onResize, 0);\n } else\n onResize();\n }, [challengeStep, isOpen]);\n\n const isVisible = () => {\n return ((challengeStep >= 0 && challengeStep < CONFIG.totalStep) && isOpen);\n }\n\n const onResize = () => {\n const box = getElementBounding();\n if (box) setChallengeTooltipRect(box);\n };\n\n const getElementBounding = () => {\n if (selectedElement && selectedElement.current) {\n const rect = findDOMNode(selectedElement.current).getBoundingClientRect();\n return {left: rect.left, top: rect.top, width: rect.width, height: rect.height};\n }\n return null;\n }\n if (isVisible() && challengeStep === step)\n return <i className=\"challenge-dot tooltipstered\" ref={selectedElement}>\n &nbsp;\n </i>;\n return null;\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setChallengeTooltipRect} = dispatch('redux-templates/sectionslist');\n return {\n setChallengeTooltipRect\n };\n }),\n withSelect((select, props) => {\n const { getChallengeOpen, getChallengeStep } = select('redux-templates/sectionslist');\n return {\n isOpen: getChallengeOpen(),\n challengeStep: getChallengeStep()\n };\n })\n])(ChallengeDot);\n","import {__} from '@wordpress/i18n';\n\nconst { compose } = wp.compose;\nconst { withDispatch, withSelect } = wp.data;\nconst { useState, useEffect } = wp.element;\nimport {ModalManager} from '~redux-templates/modal-manager';\nimport CONFIG from '../config';\nimport helper from '../helper';\nconst ARROW_BOX = 30;\nconst DEFAULT_BOX_WIDTH = 250;\nconst DEFAULT_BOX_HEIGHT = 300;\nconst DEFAULT_OFFSET_X = 0;\nconst DEFAULT_OFFSET_Y = 20;\nconst DEFAULT_ARROW_OFFSET_X = 20;\nconst DEFAULT_ARROW_OFFSET_Y = 20;\nfunction TooltipBox(props) {\n const { challengeStep, tooltipRect, isOpen, setChallengeStep, setChallengeFinalStatus, setChallengePassed, setChallengeListExpanded, setImportingTemplate } = props;\n const [style, setStyle] = useState({});\n const [arrowStyle, setArrowStyle] = useState({});\n const [content, setContent] = useState('');\n const [wrapperClassname, setWrapperClassname] = useState('');\n\n const isVisible = () => {\n return ((challengeStep >= 0 || challengeStep > CONFIG.totalStep) && isOpen);\n }\n\n const calculateWithStepInformation = () => {\n const stepInformation = CONFIG.list[challengeStep];\n const boxWidth = (stepInformation.box && stepInformation.box.width) ? stepInformation.box.width : DEFAULT_BOX_WIDTH;\n const boxHeight = (stepInformation.box && stepInformation.box.height) ? stepInformation.box.height : DEFAULT_BOX_HEIGHT;\n const offsetX = stepInformation.offset ? stepInformation.offset.x :DEFAULT_OFFSET_X;\n const offsetY = stepInformation.offset ? stepInformation.offset.y :DEFAULT_OFFSET_Y;\n switch(stepInformation.direction) {\n case 'right':\n return [tooltipRect.left + offsetX, tooltipRect.top + offsetY - boxHeight / 2];\n case 'left':\n return [tooltipRect.left + offsetX, tooltipRect.top + offsetY - boxHeight / 2];\n case 'top':\n return [tooltipRect.left + offsetX - boxWidth / 2, tooltipRect.top + offsetY ];\n case 'bottom':\n return [tooltipRect.left + offsetX - boxWidth / 2, tooltipRect.top - boxHeight + offsetY];\n default:\n return [tooltipRect.left + offsetX, tooltipRect.top + offsetY];\n }\n }\n\n const calculateArrowOffset = () => {\n const stepInformation = CONFIG.list[challengeStep];\n const boxWidth = (stepInformation.box && stepInformation.box.width) ? stepInformation.box.width : DEFAULT_BOX_WIDTH;\n const boxHeight = (stepInformation.box && stepInformation.box.height) ? stepInformation.box.height : DEFAULT_BOX_HEIGHT;\n const arrowOffsetX = (stepInformation.offset && isNaN(stepInformation.offset.arrowX) === false) ? stepInformation.offset.arrowX : DEFAULT_ARROW_OFFSET_X;\n const arrowOffsetY = (stepInformation.offset && isNaN(stepInformation.offset.arrowY) === false) ? stepInformation.offset.arrowY : DEFAULT_ARROW_OFFSET_Y;\n switch(stepInformation.direction) {\n case 'top':\n return [boxWidth / 2 + arrowOffsetX, arrowOffsetY];\n case 'bottom':\n return [boxWidth / 2 + arrowOffsetX, arrowOffsetY];\n case 'left':\n return [arrowOffsetX, arrowOffsetY + boxHeight / 2 - ARROW_BOX / 2];\n case 'right':\n return [boxWidth + arrowOffsetX, arrowOffsetY + boxHeight / 2 - ARROW_BOX / 2];\n default:\n return [arrowOffsetX, arrowOffsetY];\n }\n }\n // adjust position and content upon steps change\n useEffect(() => {\n if (isVisible() && tooltipRect) {\n const stepInformation = CONFIG.list[challengeStep];\n if (stepInformation) {\n const [boxLeft, boxTop] = calculateWithStepInformation();\n const [arrowOffsetX, arrowOffsetY] = calculateArrowOffset();\n setStyle({\n ...style,\n display: 'block',\n width: stepInformation.box ? stepInformation.box.width : DEFAULT_BOX_WIDTH,\n left: boxLeft,\n top: boxTop//tooltipRect.top + offsetY + PADDING_Y + ARROW_HEIGHT\n });\n setContent(stepInformation.content);\n setArrowStyle({\n ...arrowStyle,\n display: 'block',\n left: boxLeft + arrowOffsetX, // calculateLeftWithStepInformation(),\n top: boxTop + arrowOffsetY // tooltipRect.top + offsetY + PADDING_Y\n });\n }\n } else {\n setStyle({ ...style, display: 'none' });\n setArrowStyle({...arrowStyle, display: 'none'});\n }\n }, [JSON.stringify(tooltipRect), challengeStep, isOpen]);\n\n // update wrapper class name based on step change\n useEffect(() => {\n const stepInformation = CONFIG.list[challengeStep];\n if (stepInformation) {\n switch(stepInformation.direction) {\n case 'top':\n setWrapperClassname('challenge-tooltip tooltipster-sidetip tooltipster-top');\n break;\n case 'bottom':\n setWrapperClassname('challenge-tooltip tooltipster-sidetip tooltipster-bottom');\n break;\n case 'left':\n setWrapperClassname('challenge-tooltip tooltipster-sidetip tooltipster-left');\n break;\n case 'right':\n setWrapperClassname('challenge-tooltip tooltipster-sidetip tooltipster-right');\n break;\n default:\n setWrapperClassname('challenge-tooltip tooltipster-sidetip tooltipster-left');\n }\n\n }\n }, [challengeStep])\n\n const toNextStep = () => {\n if (challengeStep === CONFIG.totalStep - 1) {\n // finalize challenge\n ModalManager.show();\n setChallengeFinalStatus((helper.getSecondsLeft() > 0) ? 'success' : 'contact');\n setChallengeStep(CONFIG.beginningStep);\n setChallengePassed(true);\n setChallengeListExpanded(true);\n setImportingTemplate(null);\n } else\n setChallengeStep(challengeStep + 1);\n }\n\n\n return (\n <div className={wrapperClassname}>\n <div className=\"tooltipster-box\" style={style}>\n {content}\n <div className=\"btn-row\">\n <button className=\"challenge-done-btn\" onClick={toNextStep}>{__('Next', redux_templates.i18n)}</button>\n </div>\n </div>\n <div className=\"tooltipster-arrow\" style={arrowStyle}>\n <div className=\"tooltipster-arrow-uncropped\">\n <div className=\"tooltipster-arrow-border\"></div>\n <div className=\"tooltipster-arrow-background\"></div>\n </div>\n </div>\n </div>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const { setChallengeStep, setChallengeFinalStatus, setChallengePassed, setChallengeListExpanded, setImportingTemplate } = dispatch('redux-templates/sectionslist');\n return {\n setChallengeStep,\n setChallengeFinalStatus,\n setChallengePassed,\n setChallengeListExpanded,\n setImportingTemplate\n };\n }),\n\n withSelect((select, props) => {\n const { getChallengeTooltipRect, getChallengeOpen, getChallengeStep, getChallengeFinalStatus } = select('redux-templates/sectionslist');\n return {\n tooltipRect: getChallengeTooltipRect(),\n isOpen: getChallengeOpen(),\n challengeStep: getChallengeStep(),\n finalStatus: getChallengeFinalStatus()\n };\n })\n])(TooltipBox);\n","const {apiFetch} = wp;\nconst {useState} = wp.element;\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {parse} = wp.blocks;\n\nimport {BlockPreview} from '@wordpress/block-editor';\nimport {installedBlocksTypes} from '~redux-templates/stores/actionHelper';\nimport './style.scss'\n\nfunction BackgroundImage(props) {\n const {data, appendErrorMessage, activeItemType} = props;\n const [dataLoaded, setDataLoaded] = useState(false);\n const [blocks, setBlocks] = useState(null);\n\n if (data && dataLoaded === false) {\n const type = activeItemType === 'section' ? 'sections' : 'pages';\n let the_url = 'redux/v1/templates/template?type=' + type + '&id=' + data.id + '&uid=' + window.userSettings.uid;\n if ('source' in data) {\n the_url += '&source=' + data.source;\n }\n\n const options = {\n method: 'GET',\n path: the_url,\n headers: {'Content-Type': 'application/json', 'Registered-Blocks': installedBlocksTypes()}\n };\n\n apiFetch(options).then(response => {\n if (response.success) {\n setBlocks(response.data);\n } else {\n appendErrorMessage(response.data.error);\n }\n setDataLoaded(true);\n }).catch(error => {\n appendErrorMessage(error.code + ' : ' + error.message);\n setDataLoaded(true);\n });\n }\n\n if (dataLoaded === true) {\n let parsed = parse(blocks.template);\n return (\n <div>\n <BlockPreview blocks={parsed} />\n </div>\n );\n }\n return null;\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n appendErrorMessage\n } = dispatch('redux-templates/sectionslist');\n\n return {\n appendErrorMessage\n };\n }),\n withSelect((select) => {\n const {getActiveItemType} = select('redux-templates/sectionslist');\n return {\n activeItemType: getActiveItemType()\n };\n })\n])(BackgroundImage);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","const {compose} = wp.compose;\nconst {withSelect} = wp.data;\nimport {useEffect, useState} from '@wordpress/element';\nimport PreviewImportButton from '../preview-import-button';\nimport DependentPlugins from '../dependent-plugins';\nimport './style.scss'\n\nfunction ButtonGroup (props) {\n const {importingTemplate, showDependencyBlock, index, data, pageData} = props;\n const [rootClassName, setRootClassName] = useState('redux-templates-import-button-group');\n\n // When some action is in progress, disable the button groups\n useEffect(() => {\n if (importingTemplate === null && rootClassName !== 'redux-templates-import-button-group')\n setRootClassName('redux-templates-import-button-group')\n if (importingTemplate !== null && rootClassName === 'redux-templates-import-button-group')\n setRootClassName('redux-templates-import-button-group disabled');\n }, [importingTemplate])\n return (\n <div className={rootClassName}>\n <PreviewImportButton index={index} data={data} pageData={pageData} />\n <DependentPlugins showDependencyBlock={showDependencyBlock} data={data} />\n </div>\n )\n}\n\n\n\nexport default compose([\n withSelect((select) => {\n const {getImportingTemplate} = select('redux-templates/sectionslist');\n return {importingTemplate: getImportingTemplate()};\n })\n])(ButtonGroup);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {Tooltip} from '@wordpress/components';\nimport * as Icons from '~redux-templates/icons'\nimport './style.scss'\nconst {__} = wp.i18n;\n\nexport default function DependentPlugins (props) {\n const {data, showDependencyBlock} = props;\n const {id} = data;\n\n const isMissingPlugin = (plugin) => {\n return ((data.proDependenciesMissing && data.proDependenciesMissing.indexOf(plugin) >=0)\n || (data.installDependenciesMissing && data.installDependenciesMissing.indexOf(plugin) >=0))\n }\n\n if (showDependencyBlock) {\n\t let index = data.dependencies.indexOf('core');\n\t if ( index > -1 ) {\n\t\t data.dependencies.splice(index, 1);\n\t\t data.dependencies.push( 'core' );\n\t }\n\t return (\n\t\t <div className=\"redux-templates-button-display-dependencies\">\n\t\t\t { data.dependencies &&\n\t\t\t data.dependencies.map(plugin => {\n\t\t\t \tlet pluginInstance = null;\n\t\t\t\t const plugin_name = plugin.replace('-pro', '').replace('-premium', '').replace(/\\W/g, '').toLowerCase();\n\t\t\t \tif ( 'core' == plugin ) {\n\t\t\t\t\t pluginInstance = {\n\t\t\t\t\t \tname: 'WordPress Native'\n\t\t\t\t\t }\n\t\t\t\t } else {\n\t\t\t\t\t pluginInstance = redux_templates.supported_plugins[plugin];\n\t\t\t\t }\n\t\t\t\t\tif ( !pluginInstance ) {\n\t\t\t\t\t\tpluginInstance = redux_templates.supported_plugins[plugin.replace('-pro', '').replace('-premium', '')];\n\t\t\t\t\t}\n\n\t\t\t\t // We don't want two of the same icons showing up.\n\t\t\t\t if ( ! plugin.includes('-pro') && ! plugin.includes('-premium') ) {\n\t\t\t\t\t if ( data.dependencies.includes(plugin + '-pro') || data.dependencies.includes( plugin + '-premium' ) ) {\n\t\t\t\t\t\t return;\n\t\t\t\t\t }\n\t\t\t\t }\n\t\t\t\t if (!pluginInstance) {\n\t\t\t\t\t console.log( 'Missing plugin details for '+ plugin+' - ' + plugin.replace('-pro', '').replace('-premium', '') );\n\t\t\t\t\t console.log( redux_templates.supported_plugins );\n\t\t\t\t\t return;\n\t\t\t\t }\n\t\t\t\t if ( 'redux' === plugin_name ) {\n\t\t\t\t\t return;\n\t\t\t\t }\n\t\t\t\t const IconComponent = Icons[plugin_name];\n\t\t\t\t if (IconComponent && pluginInstance) {\n\t\t\t\t\t return (\n\t\t\t\t\t\t <Tooltip text={(isMissingPlugin(plugin) && 'core' !== plugin ? pluginInstance.name+ ' ( '+__('Not Installed', redux_templates.i18n)+' )' : pluginInstance.name)} position=\"bottom center\" key={id + plugin}>\n <span className={isMissingPlugin(plugin) && 'core' !== plugin ? 'missing-dependency' : ''}>\n <IconComponent/>\n </span>\n\t\t\t\t\t\t </Tooltip>\n\t\t\t\t\t );\n\t\t\t\t } else if ( 'shareablockcom' !== plugin_name && 'gutenberghubcom' !== plugin_name ) {\n\t\t\t\t\t console.log('Need icon for ' + plugin_name);\n\t\t\t\t }\n\n\t\t\t })\n\t\t\t }\n\t\t\t { data.dependencies['core'] &&\n\t\t\t <Tooltip text={__('WordPress Core', redux_templates.i18n)} position=\"bottom center\" key={id + 'core'}>\n\t\t\t\t <span>\n\t\t\t\t <IconComponent/>\n\t\t\t\t </span>\n\t\t\t </Tooltip>\n\n\t\t\t }\n\t\t </div>\n\t );\n }\n\n return null;\n}\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {__} from '@wordpress/i18n';\nimport {compose} from '@wordpress/compose';\nimport {withDispatch} from '@wordpress/data';\nimport {Notice} from '@wordpress/components';\n\nimport './style.scss';\n\nexport function ErrorNotice(props) {\n const {discardAllErrorMessages, errorMessages} = props;\n return (\n <div className='redux-templates-error-notice'>\n <Notice status=\"error\" onRemove={discardAllErrorMessages}>\n <p>\n {\n errorMessages.join(', ')\n }\n </p>\n </Notice>\n </div>\n );\n\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n discardAllErrorMessages\n } = dispatch('redux-templates/sectionslist');\n\n return {\n discardAllErrorMessages\n };\n })\n])(ErrorNotice);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","export default {\n position: {\n bottom: 0,\n right: 0,\n },\n event: 'click',\n\n mainButtonStyles: {\n backgroundColor: '#24B0A6',\n fill: '#ffffff',\n transform: 'none',\n transition: 'none',\n transformOrigin: 'none',\n },\n alwaysShowTitle: false,\n actionButtonStyles: {\n backgroundColor: '#19837C',\n }\n}\n","import {Fab, Action} from 'react-tiny-fab';\nimport config from './config';\nimport './styles.scss';\nimport {__} from '@wordpress/i18n';\n\nimport * as Icons from '~redux-templates/icons'\nimport { ModalManager } from '~redux-templates/modal-manager';\nimport FeedbackDialog from '~redux-templates/modal-feedback';\n\nconst schema = {\n type: 'object',\n properties: {\n comment: {\n type: 'string'\n },\n agreeToContactFurther: {\n type: 'boolean',\n title: __('Yes, I give Redux permission to contact me for any follow up questions.', redux_templates.i18n)\n }\n }\n}\nconst uiSchema = {\n 'comment': {\n 'ui:widget': 'textarea',\n 'ui:options': {\n label: false\n }\n }\n};\n\nexport default function FabWrapper() {\n const {mainButtonStyles, actionButtonStyles, position, event, alwaysShowTitle} = config;\n\n return (\n <Fab\n mainButtonStyles={mainButtonStyles}\n position={position}\n icon={Icons.ReduxTemplatesIcon()}\n event={event}\n // onClick={testing}\n\n text={__('See Quick Links', redux_templates.i18n)}\n >\n\n {/*<Action*/}\n {/* style={actionButtonStyles}*/}\n {/* text={__('Suggest a Feature', redux_templates.i18n)}*/}\n {/* onClick={e => {*/}\n {/* window.open(redux_templates.u, \"_blank\")*/}\n {/* }}*/}\n {/*>*/}\n {/* <i className=\"fa fa-lightbulb-o\"/>*/}\n {/*</Action>*/}\n {/*<Action*/}\n {/* style={actionButtonStyles}*/}\n {/* text={__('Contact Us', redux_templates.i18n)}*/}\n {/* onClick={e => {*/}\n {/* ModalManager.openFeedback(<FeedbackDialog */}\n {/* title={__('Help us improve Redux', redux_templates.i18n)} */}\n {/* description={__('Thank you for reaching out. We will do our best to contact you ba.', redux_templates.i18n)}*/}\n {/* schema={schema}*/}\n {/* uiSchema={uiSchema}*/}\n {/* headerImage={<img className=\"header-background\" src={`${redux_templates.plugin}assets/img/popup-contact.png` } />}*/}\n {/* buttonLabel={__('Submit Feedback', redux_templates.i18n)}*/}\n {/* />)*/}\n {/* }}*/}\n {/*>*/}\n {/* <i className=\"fa fa-comments\"/>*/}\n {/*</Action>*/}\n\t <Action\n\t\t style={actionButtonStyles}\n\t\t text={__('Get Support', redux_templates.i18n)}\n\t\t onClick={e => {\n\t\t\t window.open('https://wordpress.org/support/plugin/redux-framework/#new-topic-0', '_blank')\n\t\t }}\n\t >\n\t\t <i className=\"far fa-question-circle \"/>\n\t </Action>\n <Action\n style={actionButtonStyles}\n text={__('Join our Community', redux_templates.i18n)}\n onClick={e => {\n window.open('https://www.facebook.com/groups/reduxframework', '_blank')\n }}\n >\n <i className=\"fa fa-comments\"/>\n </Action>\n\t {\n\t\t redux_templates.mokama === '1' &&\n\t\t <Action\n\t\t\t style={actionButtonStyles}\n\t\t\t text={__('Visit our Website', redux_templates.i18n)}\n\t\t\t onClick={e => {\n\t\t\t\t window.open( redux_templates.u + 'tinyfab', '_blank')\n\t\t\t }}\n\t\t >\n\t\t\t <i className=\"fas fa-external-link-alt\"/>\n\t\t </Action>\n\t }\n\t {/*{*/}\n\t\t {/* redux_templates.left !== 999 &&*/}\n\t\t {/* <Action*/}\n\t\t\t{/* style={actionButtonStyles}*/}\n\t\t\t{/* className=\"tour-icon\"*/}\n\t\t\t{/* text={__( 'Take the Redux Challenge', redux_templates.i18n )}*/}\n\t\t\t{/* onClick={e => {*/}\n\t\t\t{/*\t setTourOpen();*/}\n\t\t\t{/* }}*/}\n\t\t {/* >*/}\n\t\t\t{/* <i className=\"fas fa-map-signs tour-icon\"/>*/}\n\t\t {/* </Action>*/}\n\t {/*}*/}\n\n\t {\n\t\t redux_templates.mokama !== '1' &&\n\t\t <Action\n\t\t\t style={{backgroundColor:'#00a7e5'}}\n\t\t\t text={__('Upgrade to Redux Pro', redux_templates.i18n)}\n\t\t\t onClick={e => {\n\t\t\t\t window.open(redux_templates.u + 'help_bubble', '_blank')\n\t\t\t }}\n\t\t >\n\t\t\t <i className=\"fa fa-star\"/>\n\t\t </Action>\n\t }\n </Fab>\n );\n}\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./styles.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./styles.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./styles.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import ButtonGroup from '../button-group';\n\nconst {__} = wp.i18n\nimport {Tooltip} from '@wordpress/components';\nimport {requiresInstall, requiresPro} from '~redux-templates/stores/dependencyHelper';\nimport SafeImageLoad from '~redux-templates/components/safe-image-load';\nimport './style.scss'\n\nconst MultipleItem = (props) => {\n\n const {data, onSelectCollection} = props;\n const {pages, homepageData, ID, name} = data;\n const {image} = homepageData || {};\n\n return (\n <div className=\"redux-templates-multiple-template-box\">\n <div className=\"multiple-template-view\" onClick={ () => onSelectCollection( ID ) } >\n <div className=\"redux-templates-box-shadow\">\n <div className=\"redux-templates-default-template-image\">\n <SafeImageLoad url={image} alt={__('Default Template', redux_templates.i18n)} />\n {requiresPro(data) && <span className=\"redux-templates-pro-badge\">{__('Premium', redux_templates.i18n)}</span>}\n {!requiresPro(data) && requiresInstall(data) && <div className=\"redux-templates-missing-badge\"><i className=\"fas fa-exclamation-triangle\" /></div>}\n </div>\n <div className=\"redux-templates-button-overlay\">\n {requiresPro(data) && <Tooltip text={__('Premium Requirements', redux_templates.i18n)} position=\"bottom\" key={data.source+data.source_id}><span className=\"redux-templates-pro-badge\">{__('Premium', redux_templates.i18n)}</span></Tooltip>}\n {!requiresPro(data) && requiresInstall(data) && <Tooltip text={__('Not Installed', redux_templates.i18n)} position=\"bottom\" key={data.source+data.source_id}><div className=\"redux-templates-missing-badge\"><i className=\"fas fa-exclamation-triangle\" /></div></Tooltip>}\n <div className=\"redux-templates-import-button-group\">\n <div className=\"action-buttons\"><a className=\"redux-templates-button download-button\">{__('View Templates', redux_templates.i18n)}</a></div>\n </div>\n </div>\n </div>\n <div className=\"redux-templates-tmpl-info\">\n <h5 className=\"redux-templates-tmpl-title\" dangerouslySetInnerHTML={{__html:name}}/>\n <span className=\"redux-templates-temp-count\">{ pages ? pages.length : 0 } {__('Templates', redux_templates.i18n)}</span>\n </div>\n </div>\n </div>\n );\n}\n\nexport default MultipleItem\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","const { useState, useEffect, Fragment} = wp.element;\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {__} = wp.i18n\n\nimport './style.scss';\n\nimport {pageSizeMap} from '../../stores/helper';\n\nfunction Pagination(props) {\n const {currentPage, pageData, columns} = props;\n const {setCurrentPage} = props;\n const [totalPages, setTotalPages] = useState(1);\n const [firstButtonClass, setFirstButtonClass] = useState('tablenav-pages-navspan button');\n const [prevButtonClass, setPrevButtonClass] = useState('tablenav-pages-navspan button');\n const [nextButtonClass, setNextButtonClass] = useState('tablenav-pages-navspan button');\n const [lastButtonClass, setLastButtonClass] = useState('tablenav-pages-navspan button');\n\n useEffect(() => {\n const enabledClassname = 'tablenav-pages-navspan button ';\n const disabledClassname = 'tablenav-pages-navspan button disabled';\n setFirstButtonClass((currentPage === 0) ? disabledClassname : enabledClassname);\n setPrevButtonClass((currentPage === 0) ? disabledClassname : enabledClassname);\n setNextButtonClass((currentPage === totalPages - 1) ? disabledClassname : enabledClassname);\n setLastButtonClass((currentPage === totalPages - 1) ? disabledClassname : enabledClassname);\n }, [currentPage, totalPages]);\n\n useEffect(() => {\n let colStr = (columns === '') ? 'medium' : columns;\n setTotalPages(Math.ceil(pageData.length / pageSizeMap[colStr]));\n }, [pageData]);\n\n const gotoPage = (pageNum, className) => {\n if (className.indexOf('disabled') > 0) return;\n document.getElementById('modalContent').scrollTop = 0;\n setCurrentPage(pageNum);\n }\n\n\n return (\n <Fragment>\n\n {\n totalPages > 0 &&\n <div className=\"tablenav-pages\">\n <span className=\"displaying-num\">{pageData.length} items</span>\n <span className=\"pagination-links\">\n <span className={firstButtonClass} aria-hidden=\"true\"\n onClick={() => gotoPage(0, firstButtonClass)}>«</span>\n <span className={prevButtonClass} aria-hidden=\"true\"\n onClick={() => gotoPage(currentPage - 1, prevButtonClass)}>‹</span>\n <span className=\"screen-reader-text\">{__('Current Page', redux_templates.i18n)}</span>\n <span id=\"table-paging\" className=\"paging-input\">\n <span className=\"tablenav-paging-text\">{currentPage + 1} of <span\n className=\"total-pages\">{totalPages}</span></span>\n </span>\n <span className={nextButtonClass} aria-hidden=\"true\"\n onClick={() => gotoPage(currentPage + 1, nextButtonClass)}>›</span>\n <span className={lastButtonClass} aria-hidden=\"true\"\n onClick={() => gotoPage(totalPages - 1, lastButtonClass)}>»</span>\n </span>\n </div>\n }\n </Fragment>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setCurrentPage\n } = dispatch('redux-templates/sectionslist');\n\n return {\n setCurrentPage\n };\n }),\n\n withSelect((select) => {\n const {getCurrentPage, getPageData, getColumns} = select('redux-templates/sectionslist');\n return {\n currentPage: getCurrentPage(),\n pageData: getPageData(),\n columns: getColumns()\n };\n })\n])(Pagination);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {__} from '@wordpress/i18n';\n\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nimport {openSitePreviewModal} from '~redux-templates/stores/actionHelper';\nimport ChallengeDot from '~redux-templates/challenge/tooltip/ChallengeDot';\nimport './style.scss'\n\nfunction PreviewImportButton(props) {\n const {data, index, pageData} = props;\n const {setImportingTemplate, tourActiveButtonGroup} = props;\n let spinner = null;\n const triggerImportTemplate = (data) => {\n if (spinner === null) {\n spinner = data.ID;\n setImportingTemplate(data);\n }\n }\n\n return (\n <div className=\"action-buttons\">\n {\n pageData[index] && pageData[index]['source'] !== 'wp_block_patterns' &&\n <a className=\"redux-templates-button preview-button\" target=\"_blank\"\n onClick={() => openSitePreviewModal(index, pageData)}>\n <i className=\"fa fa-share\"/> {__('Preview', redux_templates.i18n)}\n </a>\n }\n\n <a className=\"redux-templates-button download-button\"\n onClick={() => triggerImportTemplate(data)}>\n <i className=\"fas fa-download\"/>{__('Import', redux_templates.i18n)}\n </a>\n {tourActiveButtonGroup && tourActiveButtonGroup.ID === pageData[index].ID && <ChallengeDot step={4} /> }\n </div>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setImportingTemplate\n } = dispatch('redux-templates/sectionslist');\n\n return {\n setImportingTemplate\n };\n }),\n withSelect((select, props) => {\n const {getTourActiveButtonGroup} = select('redux-templates/sectionslist');\n return {\n tourActiveButtonGroup: getTourActiveButtonGroup()\n };\n })\n])(PreviewImportButton);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","const { Spinner } = wp.components;\nimport ImageLoader from 'react-load-image';\n\nconst placeholderImage = redux_templates.plugin + 'assets/img/reduxtemplates-medium.jpg';\nconst spinnerStyle = {height: 120, display: 'flex', alignItems: 'top', paddingTop: '40px', justifyContent: 'center', background: '#fff'};\nexport default function SafeImageLoad({url, alt, className}) {\n return (\n <ImageLoader src={url}>\n <img alt={alt} className={className} />\n <img src={placeholderImage} alt={alt} className={className} />\n <div style={spinnerStyle}>\n <Spinner />\n </div>\n </ImageLoader>\n );\n\n}\n","import {Tooltip} from '@wordpress/components';\n\nconst {__} = wp.i18n\nconst {withSelect} = wp.data;\nconst {useState, useEffect} = wp.element;\n\nimport ButtonGroup from '../button-group';\nimport SafeImageLoad from '~redux-templates/components/safe-image-load';\nimport BackgroundImage from '../background-image';\nimport {requiresInstall, requiresPro} from '~redux-templates/stores/dependencyHelper';\n\nimport './style.scss'\n\n\nfunction SingleItem (props) {\n // Decoupling props\n const {pageData, tourActiveButtonGroup, index} = props;\n const [data, setData] = useState(null);\n // const {ID, image, url, pro, source, requirements} = data;\n const [innerClassname, setInnerClassname] = useState('redux-templates-single-item-inner redux-templates-item-wrapper ');\n\n useEffect(() => {\n if (pageData) setData(pageData[index]);\n }, [index, pageData]);\n\n useEffect(() => {\n setInnerClassname((pageData && pageData[index] && tourActiveButtonGroup && tourActiveButtonGroup.ID === pageData[index].ID) ?\n 'redux-templates-single-item-inner redux-templates-item-wrapper focused' : 'redux-templates-single-item-inner redux-templates-item-wrapper');\n }, [tourActiveButtonGroup, pageData, index]);\n\n if (!data) return null;\n return (\n <div className=\"redux-templates-single-section-item\">\n <div className={innerClassname}>\n <div className=\"redux-templates-default-template-image\">\n {data.source !== 'wp_block_patterns' && <SafeImageLoad url={data.image}/> }\n {data.source === 'wp_block_patterns' && <BackgroundImage data={data} />}\n {requiresPro(data) && <span className=\"redux-templates-pro-badge\">{__('Premium', redux_templates.i18n)}</span>}\n {!requiresPro(data) && requiresInstall(data) && <span className=\"redux-templates-missing-badge\"><i className=\"fas fa-exclamation-triangle\" /></span>}\n <div className=\"redux-templates-tmpl-title\">{data.name}</div>\n </div>\n {/* redux-templates-default-template-image */}\n <div className=\"redux-templates-button-overlay\">\n\t {requiresPro(data) && <Tooltip text={__('Premium Requirements', redux_templates.i18n)} position=\"bottom\" key={data.source+data.source_id}><div className=\"redux-templates-pro-badge\">{__('Premium', redux_templates.i18n)}</div></Tooltip>}\n {!requiresPro(data) && requiresInstall(data) && <Tooltip text={__('Not Installed', redux_templates.i18n)} position=\"bottom\" key={data.source+data.source_id}><div className=\"redux-templates-missing-badge\"><i className=\"fas fa-exclamation-triangle\" /></div></Tooltip>}\n <ButtonGroup index={index} showDependencyBlock={true} data={data} pageData={pageData} />\n </div>\n\n </div>\n {/* redux-templates-item-wrapper */}\n </div>\n )\n}\n\n\nexport default withSelect((select, props) => {\n const {getTourActiveButtonGroup, getPageData} = select('redux-templates/sectionslist');\n return {\n pageData: getPageData(),\n tourActiveButtonGroup: getTourActiveButtonGroup()\n };\n})(SingleItem);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {__} from '@wordpress/i18n';\nimport {compose} from '@wordpress/compose';\nimport {withDispatch, withSelect} from '@wordpress/data';\nimport {ModalManager} from '../../modal-manager';\nimport ChallengeDot from '~redux-templates/challenge/tooltip/ChallengeDot';\nexport function TabHeader(props) {\n const { activeItemType, searchContext, activeCollection, isChallengeOpen } = props;\n const { setActiveItemType, setSearchContext, setChallengeOpen, clearSearch } = props;\n\n const isActive = (itemType) => {\n return (activeItemType === itemType) ? 'active' : '';\n }\n\n const onSearchContextUpdate = (e) => {\n if (activeItemType !=='saved') setSearchContext(e.target.value);\n }\n\n const changeTab = (tabName) => {\n if (document.getElementById('modalContent')) document.getElementById('modalContent').scrollTop = 0;\n setActiveItemType(tabName);\n }\n\n const closeModal = () => {\n if (isChallengeOpen === false) {\n ModalManager.close();\n }\n }\n\n return (\n <div className=\"redux-templates-builder-modal-header\">\n <div className=\"template-search-box\">\n {\n ((activeItemType !== 'collection' || activeCollection === null) && activeItemType !== 'saved') &&\n <div>\n <input type=\"text\" placeholder={__('Search for a template', redux_templates.i18n)} className=\"form-control\" value={searchContext} onChange={onSearchContextUpdate} />\n <ChallengeDot step={1} />\n <i className=\"fas fa-search\" />\n </div>\n }\n </div>\n\n <div className=\"redux-templates-template-list-header\" data-tut=\"tour__navigation\">\n <button className={ isActive('section') } onClick={e => changeTab('section')}> {__('Sections', redux_templates.i18n)} </button>\n <button className={ isActive('page') } onClick={e => changeTab('page')}> {__('Templates', redux_templates.i18n)} </button>\n <button className={ isActive('collection') } onClick={e => changeTab('collection')}> {__('Template Kits', redux_templates.i18n)} </button>\n <button className={ isActive('saved') } onClick={e => changeTab('saved')}> {__('Saved', redux_templates.i18n)} </button>\n <ChallengeDot step={0} />\n <button className=\"redux-templates-builder-close-modal\" onClick={closeModal} >\n\t\t\t\t\t<svg width=\"24\" height=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" role=\"img\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M13 11.9l3.3-3.4-1.1-1-3.2 3.3-3.2-3.3-1.1 1 3.3 3.4-3.5 3.6 1 1L12 13l3.5 3.5 1-1z\"></path></svg>\n </button>\n </div>\n </div>\n );\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setActiveItemType,\n setSearchContext,\n clearSearch\n } = dispatch('redux-templates/sectionslist');\n\n return {\n setActiveItemType,\n setSearchContext,\n clearSearch\n };\n }),\n\n withSelect((select, props) => {\n const { getActiveItemType, getSearchContext, getActiveCollection, getChallengeOpen } = select('redux-templates/sectionslist');\n return { activeItemType: getActiveItemType(), searchContext: getSearchContext(), activeCollection: getActiveCollection(), isChallengeOpen: getChallengeOpen() };\n })\n\n])(TabHeader);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38 12H12v26h26V12z\"\n});\n\nvar SvgViewFew = function SvgViewFew(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 50 50\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgViewFew;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.5 12.5H0V0h12.5v12.5zM31.2 0H18.8v12.5h12.5V0zM50 0H37.5v12.5H50V0zM12.5 18.8H0v12.5h12.5V18.8zm18.7 0H18.8v12.5h12.5V18.8zm18.8 0H37.5v12.5H50V18.8zM12.5 37.5H0V50h12.5V37.5zm18.7 0H18.8V50h12.5V37.5zm18.8 0H37.5V50H50V37.5z\"\n});\n\nvar SvgViewMany = function SvgViewMany(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 50 50\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgViewMany;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.1 5.3H5.3v15.8h15.8V5.3zm23.6 0H28.9v15.8h15.8V5.3zM21.1 28.9H5.3v15.8h15.8V28.9zm23.6 0H28.9v15.8h15.8V28.9z\"\n});\n\nvar SvgViewNormal = function SvgViewNormal(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 50 50\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgViewNormal;","const {__, sprintf} = wp.i18n;\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {useState, useEffect} = wp.element;\nimport ChallengeDot from '~redux-templates/challenge/tooltip/ChallengeDot';\nimport {Button, Notice} from '@wordpress/components'\nimport SVGViewFew from './images/view-few.svg'\nimport SVGViewMany from './images/view-many.svg'\nimport SVGViewNormal from './images/view-normal.svg'\nimport {reloadLibrary} from '~redux-templates/stores/actionHelper';\nimport * as Icons from '~redux-templates/icons';\nimport './style.scss'\n\nfunction TemplateListSubHeader(props) {\n const {itemType, sortBy, activeCollection, challengePassed, pageData, columns, loading} = props;\n const {setSortBy, setColumns, setChallengeOpen, setChallengeListExpanded} = props;\n const [triggerTourClassname, setTriggerTourClassname] = useState('far fa-question-circle tour-icon');\n\n useEffect(() => {\n setTriggerTourClassname(challengePassed ? 'fas fa-trophy tour-icon' : 'fas fa-map-signs tour-icon');\n }, [challengePassed]);\n\n const itemTypeLabel = () => {\n if (itemType === 'section') return __('Sections', redux_templates.i18n);\n if (itemType === 'page') return __('Templates', redux_templates.i18n);\n if (itemType === 'collection' && activeCollection === null) return __('Template Kits', redux_templates.i18n);\n if (itemType === 'collection' && activeCollection !== null) return __('Sections', redux_templates.i18n);\n };\n\n const dataLength = pageData ? pageData.length : '';\n\n let pageTitle = '';\n if (loading === false && dataLength && dataLength !== 0) {\n pageTitle = <span>{dataLength} {itemTypeLabel()}</span>;\n }\n\n return (\n <div className=\"redux-templates-template-list-sub-header\">\n <h4>\n {pageTitle}\n <ChallengeDot step={3} />\n </h4>\n\n <div className=\"redux-templates-template-filters\">\n\t <div className='trial_notice'>\n\t\t { ! redux_templates.mokama &&\n\t\t <div style={{verticalAlign:'middle'}}>\n\t\t\t <Notice status=\"info\" isDismissible={false}>\n\t\t\t\t <strong style={{display:'inline-block', marginRight:'10px', verticalAlign:'middle'}}>\n\t\t\t\t\t { '0' === redux_templates.left &&\n\t\t\t\t\t \t<>\n\t\t\t\t\t\t\t {sprintf( __( 'You\\'ve imported %d/%d Templates', redux_templates.i18n ), 5-redux_templates.left, 5 )}\n\t\t\t\t\t\t </>\n\t\t\t\t\t }\n\t\t\t\t\t { '0' !== redux_templates.left &&\n\t\t\t\t\t <>\n\t\t\t\t\t\t {sprintf( __( 'Trial: %d/%d Imports Remaining', redux_templates.i18n ), redux_templates.left, 5 )}\n\t\t\t\t\t </>\n\t\t\t\t\t }\n\t\t\t\t </strong>\n\t\t\t\t <Button isPrimary\n\t\t\t\t isSmall\n\t\t\t\t icon={Icons.redux}\n\t\t\t\t label={__('Upgrade to Redux Pro', redux_templates.i18n)}\n\t\t\t\t onClick={()=> window.open( redux_templates.u + 'subheader', '_blank')}>Get Pro</Button>\n\t\t\t </Notice>\n\n\n\t\t </div>\n\n\t\t }</div>\n <Button\n icon={<i className={triggerTourClassname} />}\n label={__('Take the Redux Challenge', redux_templates.i18n)}\n onClick={() => {setChallengeOpen(true); setChallengeListExpanded(true); }}\n />\n <Button\n icon=\"image-rotate\"\n label={__('Refresh Library', redux_templates.i18n)}\n className=\"refresh-library\"\n onClick={reloadLibrary}\n />\n <Button\n icon={<SVGViewFew width=\"18\" height=\"18\"/>}\n className={columns === 'large' ? 'is-active' : ''}\n label={__('Large preview', redux_templates.i18n)}\n onClick={() => setColumns('large')}\n />\n <Button\n icon={<SVGViewNormal width=\"18\" height=\"18\"/>}\n className={columns === '' ? 'is-active' : ''}\n label={__('Medium preview', redux_templates.i18n)}\n onClick={(e) => setColumns('')}\n />\n <Button\n icon={<SVGViewMany width=\"18\" height=\"18\"/>}\n className={columns === 'small' ? 'is-active' : ''}\n label={__('Small preview', redux_templates.i18n)}\n onClick={(e) => setColumns('small')}\n />\n <div className=\"\">\n <select name=\"sortBy\" id=\"sortBy\" value={sortBy} onChange={(e) => setSortBy(e.target.value)}>\n <option value=\"name\">{__('Name', redux_templates.i18n)}</option>\n {/*<option value=\"popularity\">{__('Popularity', redux_templates.i18n)}</option>*/}\n <option value=\"updated\">{__('Updated', redux_templates.i18n)}</option>\n </select>\n </div>\n </div>\n\n </div>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setLibrary, setActivePriceFilter, setActiveCollection, setSortBy, setColumns, setChallengeOpen, setChallengeListExpanded} = dispatch('redux-templates/sectionslist');\n return {\n setLibrary,\n setActivePriceFilter,\n setActiveCollection,\n setSortBy,\n setColumns,\n setChallengeOpen,\n setChallengeListExpanded\n };\n }),\n\n withSelect((select, props) => {\n const {fetchLibraryFromAPI, getActiveItemType, getColumns, getPageData, getActiveCollection, getStatistics, getSortBy, getLoading, getChallengePassed} = select('redux-templates/sectionslist');\n return {\n fetchLibraryFromAPI,\n itemType: getActiveItemType(),\n pageData: getPageData(),\n columns: getColumns(),\n statistics: getStatistics(),\n sortBy: getSortBy(),\n activeCollection: getActiveCollection(),\n loading: getLoading(),\n challengePassed: getChallengePassed()\n };\n })\n])(TemplateListSubHeader);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nexport const GuideImage1 = ( props ) => (\n\t<>\n\t\t<img\n\t\t\tclassName=\"redux-edit-post-welcome-guide__image redux-edit-post-welcome-guide__image__prm-np\"\n\t\t\talt=\"\"\n\t\t\tsrc={ `${ redux_templates.plugin }assets/img/welcome-guide-1.png` }\n\t\t\t{ ...props }\n\t\t/>\n\t</>\n);\n\nexport const GuideImage2 = ( props ) => (\n\t<>\n\t\t<img\n\t\t\tclassName=\"redux-edit-post-welcome-guide__image redux-edit-post-welcome-guide__image__prm-np\"\n\t\t\talt=\"\"\n\t\t\tsrc={ `${ redux_templates.plugin }assets/img/welcome-guide-2.gif` }\n\t\t\t{ ...props }\n\t\t/>\n\t</>\n);\nexport const GuideImage3 = ( props ) => (\n\t<>\n\t\t<img\n\t\t\tclassName=\"redux-edit-post-welcome-guide__image redux-edit-post-welcome-guide__image__prm-np\"\n\t\t\talt=\"\"\n\t\t\tsrc={ `${ redux_templates.plugin }assets/img/welcome-guide-3.png` }\n\t\t\t{ ...props }\n\t\t/>\n\t</>\n);\n","/**\n * WordPress dependencies\n */\nconst { useState } = wp.element;\nimport { useSelect } from '@wordpress/data';\nimport { ExternalLink, Guide } from '@wordpress/components';\nconst {apiFetch} = wp;\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tGuideImage1,\n\tGuideImage2,\n\tGuideImage3,\n} from './images';\nimport './style.scss';\n\nexport default function WelcomeGuide() {\n\n\tconst [ isOpen, setIsOpen ] = useState( true );\n\n\tconst isActive = useSelect(\n\t\t( select ) =>\n\t\t\tselect( 'core/edit-post' ).isFeatureActive( 'welcomeGuide' ),\n\t\t[]\n\t);\n\n\tif ( isActive ) { // Don't want to show during the WP guide.\n\t\tdelete redux_templates.welcome; // In fact, we don't want to show it until the next page load!\n\t\treturn null;\n\t}\n\n\tif ( ! isOpen || 'undefined' === typeof( redux_templates.welcome ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Guide\n\t\t\tclassName=\"redux-edit-post-welcome-guide\"\n\t\t\tcontentLabel={ __( 'Say hello to the Redux template library', redux_templates.i18n ) }\n\t\t\tonFinish={ () => {\n\t\t\t\tsetIsOpen( false );\n\t\t\t\tconst options = {\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tpath: 'redux/v1/templates/welcome/?uid=' + window.userSettings.uid,\n\t\t\t\t}\n\t\t\t\tapiFetch(options).then(response => {\n\t\t\t\t}).catch(error => {\n\t\t\t\t});\n\t\t\t} }\n\t\t\tpages={ [\n\t\t\t\t{\n\t\t\t\t\timage: <GuideImage1 />,\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"redux-edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Try the Redux Template Library', redux_templates.i18n ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<h3 className=\"redux-edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Redux brings you over 1,000 importable templates and blocks that allow you to build Gutenberg powered pages and websites in minutes not days.',\n\t\t\t\t\t\t\t\t\tredux_templates.i18n\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\timage: <GuideImage2 />,\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"redux-edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Using the Template Library', redux_templates.i18n ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<h3 className=\"redux-edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'To use the template library click on the library button then pick your favourite template and import! Redux allows you to import beautiful Gutenberg pages in seconds.',\n\t\t\t\t\t\t\t\t\tredux_templates.i18n\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\timage: <GuideImage3 />,\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"redux-edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Import 5 templates for free or go Pro!', redux_templates.i18n ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<h3 className=\"redux-edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Redux allows you 5 free imports or you can go Pro now and import unlimited templates for just $49/year (limited time only).',\n\t\t\t\t\t\t\t\t\tredux_templates.i18n\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<br /><br />\n\t\t\t\t\t\t\t\t<center>\n\t\t\t\t\t\t\t\t\t<ExternalLink href={ `${ redux_templates.u }welcome-guide` }>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Learn more at Redux.io', redux_templates.i18n ) }\n\t\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t</center>\n\t\t\t\t\t\t\t</h3>\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","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","/**\n * WordPress dependencies.\n */\nconst { __ } = wp.i18n;\n\nconst {\n\tFragment,\n\tuseEffect,\n\tuseRef\n} = wp.element;\n\nconst CSSEditor = ({\n\t attributes,\n\t setAttributes,\n\t clientId\n }) => {\n\tuseEffect( () => {\n\t\tlet classes = getClassName();\n\n\t\tif ( attributes.customCSS ) {\n\t\t\tconst generatedCSS = ( attributes.customCSS ).replace( /.ticss-[a-zA-Z0-9_-]*/g, 'selector' );\n\t\t\tcustomCSSRef.current = generatedCSS;\n\t\t} else {\n\t\t\tcustomCSSRef.current = 'selector {\\n}\\n';\n\t\t}\n\n\t\teditorRef.current = wp.CodeMirror( document.getElementById( 'redux-css-editor' ), {\n\t\t\tvalue: customCSSRef.current,\n\t\t\tautoCloseBrackets: true,\n\t\t\tcontinueComments: true,\n\t\t\tlineNumbers: true,\n\t\t\tlineWrapping: true,\n\t\t\tmatchBrackets: true,\n\t\t\tlint: true,\n\t\t\tgutters: [ 'CodeMirror-lint-markers' ],\n\t\t\tstyleActiveLine: true,\n\t\t\tstyleActiveSelected: true,\n\t\t\textraKeys: {\n\t\t\t\t'Ctrl-Space': 'autocomplete',\n\t\t\t\t'Alt-F': 'findPersistent',\n\t\t\t\t'Cmd-F': 'findPersistent'\n\t\t\t}\n\t\t});\n\n\t\teditorRef.current.on( 'change', () => {\n\t\t\tconst regex = new RegExp( 'selector', 'g' );\n\t\t\tconst generatedCSS = editorRef.current.getValue().replace( regex, `.${ classArRef.current }` );\n\t\t\tcustomCSSRef.current = generatedCSS;\n\n\t\t\tif ( ( 'selector {\\n}\\n' ).replace( /\\s+/g, '' ) === customCSSRef.current.replace( /\\s+/g, '' ) ) {\n\t\t\t\treturn setAttributes({ customCSS: null });\n\t\t\t}\n\n\t\t\tsetAttributes({ customCSS: customCSSRef.current });\n\t\t});\n\t}, []);\n\n\tuseEffect( () => {\n\t\tlet classes = getClassName();\n\n\t\tsetAttributes({\n\t\t\thasCustomCSS: true,\n\t\t\tclassName: classes\n\t\t});\n\t}, [ attributes ]);\n\n\tconst getClassName = () => {\n\t\tlet classes;\n\n\t\tconst uniqueId = clientId.substr( 0, 8 );\n\n\t\tif ( null !== customCSSRef.current && ( 'selector {\\n}\\n' ).replace( /\\s+/g, '' ) === customCSSRef.current.replace( /\\s+/g, '' ) ) {\n\t\t\treturn attributes.className;\n\t\t}\n\n\t\tif ( attributes.className ) {\n\t\t\tclasses = attributes.className;\n\n\t\t\tif ( ! classes.includes( 'ticss-' ) ) {\n\t\t\t\tclasses = classes.split( ' ' );\n\t\t\t\tclasses.push( `ticss-${ uniqueId }` );\n\t\t\t\tclasses = classes.join( ' ' );\n\t\t\t}\n\n\t\t\tclassArRef.current = classes.split( ' ' );\n\t\t\tclassArRef.current = classArRef.current.find( i => i.includes( 'ticss' ) );\n\t\t} else {\n\t\t\tclasses = `ticss-${ uniqueId }`;\n\t\t\tclassArRef.current = classes;\n\t\t}\n\n\t\treturn classes;\n\t};\n\n\tconst editorRef = useRef( null );\n\tconst customCSSRef = useRef( null );\n\tconst classArRef = useRef( null );\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<p>{ __( 'Add your custom CSS.' ) }</p>\n\n\t\t\t<div id=\"redux-css-editor\" className=\"redux-css-editor\"/>\n\n\t\t\t<p>{ __( 'Use' ) } <code>selector</code> { __( 'to target block wrapper.' ) }</p>\n\t\t\t<p>{ __( '' ) }</p>\n\t\t\t<p>{ __( 'Example:' ) }</p>\n\n\t\t\t<pre className=\"redux-css-editor-help\">\n\t\t\t\t{ 'selector {\\n background: #000;\\n}\\n\\nselector img {\\n border-radius: 100%;\\n}'}\n\t\t\t</pre>\n\n\t\t\t<p>{ __( 'You can also use other CSS syntax here, such as media queries.' ) }</p>\n\t\t</Fragment>\n\t);\n};\n\nexport default CSSEditor;\n","/**\n * WordPress dependencies.\n */\nconst { assign } = lodash;\n\nconst { __ } = wp.i18n;\n\nconst { hasBlockSupport } = wp.blocks;\n\nconst { PanelBody } = wp.components;\n\nconst { createHigherOrderComponent } = wp.compose;\n\nconst { InspectorControls } = wp.blockEditor || wp.editor;\n\nconst { Fragment } = wp.element;\n\nconst { addFilter, removeFilter } = wp.hooks;\n\n/**\n * Internal dependencies.\n */\nimport './style.scss';\n\nimport CSSEditor from './editor.js';\n\nimport './inject-css.js';\n\nconst addAttribute = ( settings ) => {\n\tif ( hasBlockSupport( settings, 'customClassName', true ) ) {\n\t\tsettings.attributes = assign( settings.attributes, {\n\t\t\thasCustomCSS: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: false\n\t\t\t},\n\t\t\tcustomCSS: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: null\n\t\t\t}\n\t\t});\n\t}\n\n\treturn settings;\n};\n\nconst withInspectorControls = createHigherOrderComponent( ( BlockEdit ) => {\n\treturn ( props ) => {\n\t\tconst hasCustomClassName = hasBlockSupport( props.name, 'customClassName', true );\n\t\tif ( hasCustomClassName && props.isSelected ) {\n\t\t\treturn (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<BlockEdit { ...props } />\n\t\t\t\t\t<InspectorControls>\n\t\t\t\t\t\t<PanelBody\n\t\t\t\t\t\t\ttitle={ __( 'Custom CSS' ) }\n\t\t\t\t\t\t\ticon={<i className={'fa fa'}></i>}\n\t\t\t\t\t\t\tinitialOpen={ false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<CSSEditor\n\t\t\t\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t\t\t\t\tsetAttributes={ props.setAttributes }\n\t\t\t\t\t\t\t\tattributes={ props.attributes }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t</InspectorControls>\n\t\t\t\t</Fragment>\n\t\t\t);\n\t\t}\n\n\t\treturn <BlockEdit { ...props } />;\n\t};\n}, 'withInspectorControl' );\n\n// Remove block-css fields.\nremoveFilter( 'blocks.registerBlockType', 'themeisle-custom-css/attribute' );\nremoveFilter( 'editor.BlockEdit', 'themeisle-custom-css/with-inspector-controls' );\n\naddFilter( 'blocks.registerBlockType', 'redux-custom-css/attribute', addAttribute );\naddFilter( 'editor.BlockEdit', 'redux-custom-css/with-inspector-controls', withInspectorControls );\n\n","/**\n * WordPress dependencies.\n */\nconst { __ } = wp.i18n;\n\nconst { parse } = wp.blocks;\n\nconst {\n\tselect,\n\tsubscribe\n} = wp.data;\n\nconst addStyle = style => {\n\tlet element = document.getElementById( 'redux-css-editor-styles' );\n\n\tif ( null === element ) {\n\t\telement = document.createElement( 'style' );\n\t\telement.setAttribute( 'type', 'text/css' );\n\t\telement.setAttribute( 'id', 'redux-css-editor-styles' );\n\t\tdocument.getElementsByTagName( 'head' )[0].appendChild( element );\n\t}\n\n\tif ( element.textContent === style ) {\n\t\treturn null;\n\t}\n\n\treturn element.textContent = style;\n};\n\nlet style = '';\n\nconst cycleBlocks = ( blocks, reusableBlocks ) => {\n\tblocks.forEach( block => {\n\t\tif ( block.attributes.hasCustomCSS ) {\n\t\t\tif ( block.attributes.customCSS && ( null !== block.attributes.customCSS ) ) {\n\t\t\t\tstyle += block.attributes.customCSS + '\\n';\n\t\t\t}\n\t\t}\n\n\t\tif ( 'core/block' === block.name && null !== reusableBlocks ) {\n\t\t\tlet reBlocks = reusableBlocks.find( i => block.attributes.ref === i.id );\n\t\t\tif ( reBlocks ) {\n\t\t\t\treBlocks = parse( reBlocks.content.raw );\n\t\t\t\tcycleBlocks( reBlocks, reusableBlocks );\n\t\t\t};\n\t\t}\n\n\t\tif ( undefined !== block.innerBlocks && 0 < ( block.innerBlocks ).length ) {\n\t\t\tcycleBlocks( block.innerBlocks, reusableBlocks );\n\t\t}\n\t});\n};\n\nconst subscribed = subscribe( () => {\n\tstyle = '';\n\tconst { getBlocks } = select( 'core/block-editor' ) || select( 'core/editor' );\n\tconst blocks = getBlocks();\n\tconst reusableBlocks = select( 'core' ).getEntityRecords( 'postType', 'wp_block' );\n\tcycleBlocks( blocks, reusableBlocks );\n\taddStyle( style );\n});\n","\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./editor.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./editor.scss\", function() {\n\t\tvar newContent = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./editor.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.5 19.8v-.2V10c0-.2.1-.2.2-.3 1.7-.7 3.5-1.4 5.2-2.2 1.3-.5 2.6-1.1 3.8-1.6.3-.1.3-.1.3.2v9.1c0 .1 0 .2-.2.3-.9.4-1.9.9-2.8 1.3-.8.4-1.7.8-2.5 1.2-1 .5-1.9.9-2.9 1.4-.3.1-.7.2-1.1.4zm1-5.4v3.7c0 .2 0 .2.2.1 2.4-1.1 4.7-2.2 7.1-3.4.1-.1.2-.1.2-.3V7.4c0-.2 0-.2-.2-.1-2.4 1-4.7 2-7.1 3-.1.1-.2.1-.2.2v3.9zM19.4 4.2c-1-.4-2-.9-3-1.3-1.2-.5-2.4-1-3.7-1.6C11.8 1 10.9.6 10 .2c-.1 0-.1-.1-.2 0-.6.3-1.1.5-1.7.7-.7.3-1.4.7-2.1 1-.7.3-1.5.6-2.2 1-.7.3-1.3.6-2 .9-.6.1-1.1.3-1.7.6.2.1.4.2.6.2 1.9.8 3.8 1.6 5.7 2.5 1.1.4 2.2.9 3.2 1.4.1.1.2.1.4 0 .4-.2.8-.3 1.1-.5 1.5-.6 3-1.3 4.5-1.9 1.1-.5 2.2-.9 3.4-1.4.2-.1.5-.2.7-.3-.1-.1-.2-.1-.3-.2zm-5.9-.8h-1.1c-.1 0-.2 0-.2.2 0 .5 0 .5.5.5h.7c.1 0 .1 0 .1.1v.5c0 .1 0 .1-.1.1h-1c-.1 0-.2 0-.2.2v1c0 .1 0 .1-.1.1h-.6c-.1 0-.1 0-.1-.1v-.5c-.3.3-.5.4-.8.5-.3 0-.6 0-.9-.1 0 0-.1-.1-.2 0h-.1c-.2.1-.4.1-.6.1-.1 0-.2 0-.2-.1-.2-.4-.2-.4-.6-.4h-.6c-.1 0-.1 0-.2.1-.1.4-.1.4-.5.4h-.3c-.1 0-.2 0-.1-.1.3-.7.6-1.4.9-2.2.1-.3.3-.6.4-1 0-.1.1-.1.2-.1.4 0 .4 0 .6.4.1.2.2.5.3.7.3-.6.7-.9 1.3-1 .6-.1 1.1.1 1.6.5v-.4c0-.1 0-.1.1-.1h1.9c.1 0 .1 0 .1.1v.5c0 .1-.1.1-.2.1zM9.5 10c0-.1 0-.2-.1-.2-.3-.1-.5-.2-.7-.3-2.4-1-4.7-2-7.1-3-.5-.2-1-.4-1.6-.7v9.4c0 .1 0 .2.1.2.2.1.3.1.5.2L3 16.8c1.3.6 2.5 1.2 3.8 1.8.8.4 1.7.8 2.5 1.2.2.1.2.1.2-.1v-7V10zm-1.2 8.2c-2.4-1.1-4.8-2.3-7.2-3.4-.1 0-.1 0-.1-.1V7.5c0-.1 0-.2.2-.1l7.2 3c.1 0 .1.1.1.2v7.6c0 .1 0 .1-.2 0z\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.4 4.3c0 .1 0 .1 0 0 0 .2 0 .3-.2.3-.1 0-.2 0-.2.2-.2.4-.6.6-1 .5-.5-.2-.8-.5-.8-1 0-.4.3-.8.7-.9.4-.1.8.1 1 .5 0 .1.1.1.2.1.3.1.3.1.3.3zM7.8 4c.1 0 .1 0 0 0 .2.3.3.5.3.7h-.6c.2-.2.3-.5.3-.7zM7.6 15.5v.1c.1.2.1.3-.1.5v.1c.1.1.1.2.1.4v.1h-.1c-.1-.1-.3-.2-.3-.3v-.2c.1.1.1.3.3.3 0-.1-.1-.3-.3-.4 0 0-.1 0-.1-.1-.1-.1-.2 0-.2.1 0 .2.1.3.4.4.1 0 .1 0 .1.1v.1c.1 0 .2.1.2.1s.1.1 0 .1h-.1c-.4-.2-.8-.4-1.3-.6l-.1-.1c0-.3-.2-.5-.4-.6-.1-.1-.3-.1-.4 0l-.1.1h.1c.4.1.7.2.7.5v.1s-.1 0-.1-.1c-.1-.2-.2-.3-.4-.3 0 .1 0 .1.1.1h.1v.1h-.1c-.2-.1-.3-.1-.5-.2-.1-.1-.1-.1 0-.2l.1-.1c-.1 0-.2-.1-.3 0l-.1.1c-.1.2-.2.1-.2 0-.2-.4-.2-.4-.4-.5 0 .1.1.2.1.3 0 .1 0 .1-.1.1s-.1 0-.2-.1c-.1 0-.2 0-.1-.2s-.2-.3-.3-.3c0 0-.1.1-.1 0v-.1c0-.1 0-.1.1-.1.2 0 .3.1.4.2 0 .1.1.1.1.2h.1v-.1c-.1-.3-.4-.5-.7-.5-.1 0-.2 0-.2.2 0 .1 0 .1-.1.1-.4-.2-.9-.4-1.3-.6 0 0-.1 0-.1-.1s.1 0 .1 0c.1 0 .2.2.2 0 0 0 .1 0 .1.1.1.1.1.1.2 0 .1 0 .1-.1.1-.2-.1-.2-.2-.3-.5-.4-.1 0-.1 0-.2.1v.1H2s0-.1.1-.1v.1c0 .1-.1.1-.2.1h-.3c-.1 0-.1-.3 0-.3.1-.1.1-.2 0-.3-.1-.1-.1-.3-.1-.4 0-.1 0-.1.1-.1s0 .1 0 .1c-.1.2 0 .4.2.6.1.1.2.1.3.2.1.1.2.2.2.4 0 .1 0 .1.1.1.1.1.2.2.2.4 0 .1.1.1.1 0 .1-.2.3-.2.5-.2 0-.1 0-.1-.1-.1-.5-.5-.9-1.1-1.2-1.7-.2-.5-.3-1-.2-1.6 0-.1.1-.2.1-.3 0-.1 0-.2-.1-.2-.2-.1-.3-.3-.4-.5V10c.1-.3 0-.6.1-1 0-.1 0-.1.1-.1.5.1.5.2.5.3v.6c0 .1.1.2.2.2s.2.1.3 0v-.1c0-.1-.1-.2-.2-.2s-.1 0-.1-.1c.2 0 .5.2.4.4 0 .1-.2.2-.3.1 0 0-.1-.1-.1 0-.1 0-.2-.1-.2 0v.3l.1.1c.2.2.2.2.4 0l.1-.1c.3-.3.3-.4.1-.8 0-.1-.1-.2-.2-.4.1 0 .1.1.2.1.1.3.3.5.6.6.1.1.2.1.3 0-.1-.1-.2-.1-.4-.2s-.4-.3-.4-.5H3c0 .1.2.2.3.4.1-.1.1-.2.1-.2.1 0 .1-.1.2 0s0 .1 0 .1c-.1.1-.1.3 0 .4.1.1.2.1.4 0 .2-.2.4-.2.6 0 .1.1.2.2.4.2s.4.2.5.4c.1.1.1.2.2.3 0 .1.1.2.2.2 0 0 .1 0 .2-.1s0-.2-.1-.2v-.1s.1 0 .1.1.1.1.1.2c0 .2.1.2.2.1h.2c.1 0 .2.1.1.2 0 .1-.1.1-.2.1s-.2-.1-.4-.1c-.1 0-.1-.1-.2 0 0 .1 0 .1.1.1.2.2.4.2.7.1.1 0 .1-.1.2 0 0 .1 0 .1-.1.1-.2.2-.2.5-.1.8l.3.6c.1 0 .2.1.4.1.1 0 .2 0 .2-.2 0-.1 0-.2-.1-.2-.1.1.1.2-.1.3-.1 0-.2 0-.2-.1s-.1-.2 0-.2c.1-.1.1.1.3.1 0-.1-.2-.2-.3-.2-.2-.2-.3-.3-.3-.5s.1-.2.3-.2c.1 0 .1.1.2.1v.1h-.1c-.1 0-.2-.2-.2 0-.1.1 0 .2.1.3.1.1.2.1.3.2.1.1.1 0 .1-.1v-.6-.1c.1 0 .1.1.1.1V13c0 .1-.2.2-.3.2 0 0-.1-.1-.1 0v.1c.2.4.2.8.1 1.2-.1.6-.4 1.1-1.1 1.2-.1 0-.2.1-.4 0 .3.2.5.4.6.7 0 .1.1.1.1 0s.1-.2.2-.1c.1 0 .1 0 .1-.1.1-.2.2-.2.3-.1.2.1.4.1.5-.1.1-.1 0-.2-.1-.3-.1-.2-.1-.2 0-.2zm-3.9-4.4c-.1-.1-.1 0-.2 0-.2.2-.4.4-.3.7.2-.1.4-.2.5-.3.1 0 .1-.1.1 0s0 .1-.1.1c-.1.1-.3.1-.4.2-.1.2-.2.2-.1.4 0 0 0 .1.1.1.5.7.9 1.4 1.4 2 .1.1.2.1.3.1.5-.2.9-.5 1.4-.7.1-.1.1-.1 0-.2-.2-.3-.4-.5-.6-.8 0 0-.1 0 0-.1h.1c0 .1.1.3.2.4.1.1.2.3.3.4 0-.5-.2-.8-.4-1.2h.1c.2.4.4.8.5 1.3v.1c.1 0 .1-.1.2-.1s0-.1 0-.1c-.1-.2-.1-.4-.2-.5-.1-.2-.2-.5-.4-.7-.1-.2-.1-.2-.2-.1s-.2.1-.3.2c0 0-.1.1-.1 0v-.1l.2-.2c.2-.1.2-.2.1-.4l-.6-.6c-.1-.1-.2-.2-.4-.1h-.1c.2.1.4.3.6.4.3.2.4.4.4.5-.3-.2-.5-.5-.9-.7.2.2.3.4.4.6 0 0 .1.1 0 .1h-.1c-.1-.2-.3-.4-.4-.6-.1-.1-.1-.1-.2-.1-.1.1-.2.1-.3.2 0 0-.1.1-.1 0s0-.1.1-.1c.1-.1.3-.1.4-.2-.1 0-.1 0-.2-.1-.2 0-.4-.1-.7-.1-.1.2-.1.2-.1.3zm2.8 2.7c-.5.2-1 .5-1.5.7 0 0-.1 0 0 0 0 0 0 .1.1.1.3.1.6.1.9-.1.2-.1.5-.3.5-.7zm-3.4-1.5c0 .2 0 .4.1.5.2.6.6 1.1 1.2 1.5h.1v-.1c-.2-.2-.3-.4-.5-.6-.3-.4-.6-.9-.9-1.3zm-.2-2.4c.1.3-.1.4-.2.6-.2.2-.3.5-.4.7 0 .2.1.2.2.2s.1-.1.1-.2c.1-.3.2-.5.4-.7.1-.1.1-.2.1-.3 0 0-.1-.1-.2-.3zm4.3 3.8c0-.4-.1-.7-.3-1.1-.1-.3-.4-.6-.3-1-.3.1-.3.2-.2.5.2.3.4.7.4 1.1.1.3.2.5.4.5zM3 9.9c0 .1.1.1.1.2.1.2.3.3.5.3h.7c.1 0 .2 0 .2-.1s-.1-.1-.2-.1c-.2-.1-.4-.1-.6-.1-.2 0-.4 0-.7-.2zm3.6 3.8c-.1.4-.1.7-.4.9-.1 0-.2.1-.2.1 0 .1.2.1.2.1.1 0 .1.1.2 0 .2-.1.3-.3.3-.5 0-.1.1-.2.1-.3 0 0-.1-.1-.2-.3zM3 12c-.1 0-.1.1-.2.1s-.1.1-.1.1c.1.3.2.7.4 1 .1.2.3.3.5.4-.4-.5-.6-1-.6-1.6zm3.5-.5c-.2-.1-.4-.1-.6-.3-.2-.3-.5-.5-.8-.7 0 0-.1-.1-.1 0v.1c.1.2.2.2.3.3.2.2.5.4.7.6.2.3.3.2.5 0zm-1.7 3.3c0 .2.1.3.2.2h.2c.5 0 .9.1 1.3.4h.2c.1-.1 0-.1-.1-.1-.2-.2-.5-.3-.8-.3-.3-.1-.5 0-.8-.1-.1-.2-.2-.2-.2-.1zm-1.9-1.4c0 .2.2.2.3.3.5.2.8.5 1.2.9.1.1.2.3.3.4 0-.4 0-.4-.2-.5-.2-.1-.4-.3-.6-.5-.2-.2-.5-.4-.8-.5-.1-.1-.1-.1-.2-.1zm.1-.1c-.2-.4-.3-.7-.4-1.1 0-.1-.1-.2-.2-.3h-.1c0 .1 0 .2.1.3 0 .3.2.6.3.9.1.2.2.2.3.2zm4.2 1c.1-.1-.1-.1-.2-.2-.1 0-.1.1-.1.1-.1.2-.2.5-.3.6-.1.2-.1.2 0 .2s.2.2.2.1c.2-.2.4-.5.4-.8zm-2.6-3.4c-.1-.1-.1-.3-.3-.3-.2-.1-.5-.1-.7-.1 0 0-.1 0-.1.1v.3c0 .1.1.1.2 0 .2-.1.4-.1.5 0h.4zm-1.7 1c0-.1.1-.1.1-.2 0-.3.2-.5.4-.7.1 0 .1-.1.1-.1 0-.1-.3-.2-.4-.1-.2.1-.3.3-.4.6 0 .1-.1.2 0 .3.1 0 .2.1.2.2zm2.6 3.3c.2 0 .5.1.7.2.1 0 .2.1.2 0s-.1-.1-.1-.1h-.1c-.4-.2-.8-.3-1.2-.1 0-.1 0 0 0 0s0 .1.1 0h.4zm-2.4-1.4c0 .1.1.2.2.3.5.2.8.5 1.1.9 0 0 0 .1.1.1V15c-.3-.6-.8-1-1.4-1.2zm1.8-3.1v-.4c0-.1-.1-.1-.1-.1h-.1c-.1.2-.1.3 0 .5 0 .1.1.1.2.1s0 0 0-.1zm.3 4.7c.3.1.6.2.9.1-.3-.2-.6-.2-.9-.1zm-2.4-3.6c0-.1-.2-.3-.4-.3l-.1.1.3.3c.2.1.2.1.2-.1zM7.1 14h.1v-.1c-.1-.1-.1-.2-.2-.2h-.2v.2s.1.1.3.1zm-3.6.3c.1.2.6.6.8.6-.1-.2-.6-.6-.8-.6zm1.2.8c-.1 0-.1.1-.1.2s.1.3.2.3c0 0 .1-.1.1-.2 0-.2-.1-.3-.2-.3zM4.1 10c.1 0 .3.1.4.1h.1V10c-.2-.2-.4-.2-.5 0zm1.3.6c0-.2-.2-.4-.4-.4h-.1v.1c.2.1.3.2.5.3z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2 11.8c-.1 0-.1-.1-.1-.2v-.8-.1H2c0 .1.2.1.2.2-.2-.1-.2 0-.2.2v.7zM7.7 13.9v.5s0 .1-.1.1 0 0 0-.1v-.7c0-.1 0-.2-.1-.3l-.1-.1c0-.1.1 0 .1 0 .2 0 .2.1.2.3v.3zM2.2 10.2c.1 0 .2.1.2.2s0 .1-.1.1-.2-.1-.2-.2c-.1-.1 0-.1.1-.1zM7.2 11.4c.1 0 .3.3.2.4 0 0 0 .1-.1 0 0 0-.1-.1-.1-.4 0 .1 0 0 0 0zM6 10.7c0 .1.1.1 0 .2h-.2c-.1-.1-.1-.1-.1-.2s.1-.1.2-.1l.1.1zM2.9 9.2c-.1-.1-.2-.2-.4-.3 0 0-.1 0 0-.1h.1c.2.2.4.3.6.4v.1c-.1 0-.2-.1-.3-.1zM2.1 9.2c0-.1.1-.2.1-.2.1 0 .2.1.2.2s-.1.1-.2.1c-.1.1-.1 0-.1-.1zM7.1 11.1c-.1 0-.2-.1-.3-.1-.1-.1-.3-.1-.4-.2 0 0-.1 0 0-.1h.1c.1.1.3.2.6.4 0-.1 0-.1 0 0zM7.7 11.4v.1c-.1 0-.1-.1-.1-.1 0-.1-.2-.2-.3-.2 0 0-.1 0-.1-.1s.1 0 .1 0c.1.1.2.1.2.1l.2.2zM3.9 9.8s0 .1 0 0c-.2.1-.3 0-.3-.1s0-.1.1-.1.2 0 .2.2zM2.4 8.8c-.1 0-.2 0-.2-.1-.1 0-.2 0-.2.1h-.1v-.1-.2c.1-.1.1 0 .1 0 .2.2.3.2.4.3zM7.4 15.7c-.2 0-.3-.1-.4-.1v-.1h.1c.1 0 .2.1.3.2zM7.6 15.5c-.1-.1-.2-.1-.3-.2 0 0-.1 0 0-.1 0-.1.1 0 .1 0 .1 0 .2.1.3.1-.1.1 0 .2-.1.2zM2.2 13.1c.1.1.2.1.3.2 0 0 .1 0 0 .1h-.1s-.2-.1-.2-.3c-.1.1-.1.1 0 0-.1.1-.1.1 0 0zM2.3 12.9c0 .1 0 .1 0 0-.2 0-.3-.1-.4-.1v-.1c.2.1.3.1.4.2zM14.1 16.3c-.6 0-1-.1-1.5-.5-.3-.3-.5-.6-.6-.9 0-.3-.1-.6 0-.9 0-.6.2-1.1.4-1.6s.5-.9.8-1.3c.4-.4.8-.8 1.3-1.1.4-.3.9-.5 1.3-.6.9-.2 1.7-.1 2.3.7.2.3.3.6.4 1v.5c0 .7-.2 1.4-.5 2-.3.7-.8 1.3-1.4 1.8-.5.5-1.2.8-1.9 1-.2-.1-.4-.1-.6-.1zm4.3-4.9c0-.5-.2-1.1-.8-1.5-.4-.3-.9-.4-1.3-.4-.3 0-.6.1-.8.2-.5.2-.9.4-1.3.7-.4.3-.8.7-1.1 1.1-.4.5-.6 1-.8 1.6-.1.5-.2 1.1 0 1.6.3.9.9 1.3 1.7 1.4.4.1.7 0 1.1-.1.7-.2 1.2-.6 1.7-1 .4-.4.8-.8 1.1-1.3.2-.7.5-1.3.5-2.3zM4.5 12.7c0 .2 0 .4.2.6.1.1.2.1.3.1.1-.1.1-.2.1-.3-.1-.1-.1-.2-.2-.1 0 0-.1.1-.1 0v-.1l.1-.1c.2.2.3.2.5.1h.1v.1s-.1.1-.2.1-.1 0-.1.1 0 .3-.2.3-.3-.1-.4-.2c-.3-.2-.3-.5-.3-.8v-.1c0-.3.2-.4.5-.2.2.1.3.2.4.4v.1h-.1c-.1-.1-.1-.2-.2-.3-.1-.1-.2-.2-.4-.1-.1 0-.1.2-.1.3.1 0 .1.1.1.1zM6.6 13.3c-.1-.4-.2-.8-.5-1.1.3.1.6.8.5 1.1zM3.7 11.1c.1.1.2.3.3.5-.2-.2-.3-.3-.3-.5zM2.8 11.4c.1-.2.2-.4.4-.6h.1v.1c-.2.2-.3.4-.3.6h-.1c-.1 0 0 0-.1-.1z\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 12.2c.1-.3.3-.5.4-.7.3-.4.6-.7.9-.9.4-.3.8-.5 1.2-.6.5-.1.9-.1 1.3 0 0 0 .1 0 .1.1s-.1.1-.1.1c-.4.3-.4.7-.1 1.1.3.3.3.6.2 1-.1.5-.3 1.1-.4 1.6-.1-.1-.1-.2-.2-.4-.2-.5-.4-1.1-.6-1.6-.1-.1-.1-.3-.2-.4-.1-.1 0-.1.1-.2s.2-.1.3-.2c0 0 .1-.1 0-.1 0-.1-.1 0-.1 0-.3.2-.7.3-1 .4-.1 0-.3.1-.4.1-.1 0-.1.1-.1.2s.1.1.2 0c.2-.1.3 0 .3.2l.3.6c.1.1 0 .3 0 .4-.1.2-.1.5-.2.7-.1.3-.2.6-.3 1-.2-.3-.3-.6-.4-.9l-.6-1.5c0-.1 0-.2.1-.2s.2-.1.2-.1v-.1c0-.1-.1 0-.1 0-.2.2-.5.3-.8.4z\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.3 13.1c.3.6.5 1.2.8 1.9v.1c-.4.3-.9.5-1.4.6-.2 0-.2 0-.2-.2.2-.6.4-1.3.6-1.9.1-.1.1-.3.2-.5zM14.1 15.7c-.5-.1-.9-.2-1.1-.6-.4-.5-.5-1-.4-1.6 0-.2.1-.4.1-.7 0 0 0-.1.1-.1l.1.1c.2.4.4.8.5 1.2.2.6.4 1.1.7 1.7zM16.7 14.6c.1-.4.2-.8.4-1.2l.6-1.8c.1-.3.2-.6.1-.9.2.2.2.4.3.6.1.5 0 1.1-.1 1.6-.1.4-.4.8-.6 1.2-.4.1-.5.3-.7.5z\"\n});\n\nvar SvgAcfBlocks = function SvgAcfBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2, _ref3, _ref4, _ref5);\n};\n\nexport default SvgAcfBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.4 9l.8 2.1H3.7c0-.2.3-.8.4-1.1l.3-1s0 .1 0 0zm8.7.3h1v1.5h-1c-.1.5-.5 1-1 1.3-1.6 1.1-3.9.1-4-2.1 0-1.3 1-2.3 2.1-2.5 1.3-.2 2.6.6 2.9 1.8zM0 14.5h2.3l.5-1.3c0-.1 0 0 .1-.1H6c0 .2.5 1.2.5 1.3h2.4l-.1-.3c.7.2 1.2.4 2.1.4 1 0 2-.5 2.6-1l.3-.3.3-.3v1.6h2.2v-1.7-1.7h3.5v-2h-3.5v-.8-.8H20V5.4h-5.9V7c-.4-.4-.3-.4-.8-.7-1-.7-2.4-1-3.6-.7-.9.2-1.6.6-2.2 1.2l-.2.2c-.3.2-.7.9-.8 1.3l-.1.1c-.1-.3-.8-1.8-.9-2.3-.1-.2-.2-.5-.3-.7H3.6L0 14.5z\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n});\n\nvar SvgAdvancedCustomFields = function SvgAdvancedCustomFields(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgAdvancedCustomFields;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2 2h5v11H2V2zm6 0h5v5H8V2zm6 0h4v16h-4V2zM8 8h5v5H8V8zm-6 6h11v4H2v-4z\"\n});\n\nvar SvgAdvancedGutenbergBlocks = function SvgAdvancedGutenbergBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgAdvancedGutenbergBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.3 13.9h1.3l.7-1.9h3.3l.7 1.9h1.3l-3-7.8H9.3l-3 7.8zM10 7.8l1.2 3H8.8l1.2-3z\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"atomic-blocks_svg__st0\",\n d: \"M18.9 5.7c.4-.5.6-1.2.6-1.9 0-1.9-1.5-3.4-3.3-3.4-.7 0-1.4.2-1.9.6-1.3-.6-2.7-1-4.2-1C4.6 0 .2 4.4.2 9.9s4.4 9.9 9.9 9.9S20 15.4 20 9.9c-.1-1.4-.5-2.9-1.1-4.2zM15.1 2h1.1c.5 0 1.1.3 1.1.9 0 .4-.3.6-.3.6s.5.2.5.8c0 .6-.5 1-1.1 1h-1.2V2zM10 18.2c-4.5 0-8.2-3.7-8.2-8.2 0-4.5 3.7-8.2 8.2-8.2 1.1 0 2.2.2 3.1.6-.2.4-.3.9-.3 1.4 0 1.9 1.5 3.4 3.3 3.4.5 0 1-.1 1.4-.3.4 1 .6 2 .6 3.1.1 4.5-3.6 8.2-8.1 8.2z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"atomic-blocks_svg__st0\",\n d: \"M16.7 3c0-.3-.2-.4-.5-.4h-.5v.8h.5c.3 0 .5-.1.5-.4zM16.8 4.4c0-.3-.2-.4-.5-.4h-.6v.9h.6c.3-.1.5-.2.5-.5z\"\n});\n\nvar SvgAtomicBlocks = function SvgAtomicBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2, _ref3);\n};\n\nexport default SvgAtomicBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.8 19.5c-.6.1-.8-.4-1-.8-1.5-1.8-3-3.6-4.5-5.3-.4-.5-.8-.9-1.2-1.4-.1-.2-.1-.4-.1-.6.3-1 .7-2 1.1-3 .7-2 1.5-3.9 2.2-5.9.1-.3.2-.4.5-.5 3-.5 5.9-1.1 8.9-1.5.6-.1 1 0 1.4.5 1 1.3 2 2.5 3 3.7.9 1.1 1.8 2.1 2.7 3.2.2.2.3.4.2.7-.5 1.3-.9 2.5-1.4 3.8-.6 1.7-1.2 3.3-1.9 5-.1.3-.2.4-.5.4-2.7.4-5.3.9-8 1.4-.5.1-.9.2-1.4.3zm-2.5-3.4h.9c2.4-.3 4.7-.5 7.1-.8.4 0 .5-.2.6-.6.4-2.1 1.3-4.1 2.7-5.7.2-.2.2-.3 0-.5-.9-1.1-1.9-2.2-2.8-3.4-.2-.2-.3-.2-.6-.1-1.9 1.1-4 1.6-6.2 1.6-.3 0-.5.1-.5.4-.5 1.8-1 3.5-1.6 5.3-.2.8-.5 1.6-.7 2.4 1.1-.8 2.1-1.7 3.1-2.5.5-.4.8-.9.8-1.5 0-.3.1-.6.2-.9.7-1.2 2.3-1 3.1-.4.2.2 0 .2-.1.3-.4.1-.9.3-1.3.4-.3.1-.4.3-.4.6s.1.6.3.8c.2.2.3.3.6.2.4-.2.9-.3 1.3-.4.1 0 .2-.1.3 0 .1.1 0 .2 0 .3-.4 1-1.4 1.7-2.5 1.5-.5-.1-.9 0-1.2.4-.2.2-.4.3-.6.5-.9.6-1.7 1.4-2.5 2.1zm14.5-8.6c-.1-.1-.2-.2-.2-.3-.5-.6-1.1-1.3-1.6-1.9-.8-.9-1.6-1.9-2.4-2.8-.1-.1-.2-.3-.4-.1-.4.4-.9.7-1.3 1.1-.1.1-.1.2 0 .3 1.4 1.6 2.7 3.3 4.1 4.9.1.2.2.2.4 0 .4-.4.8-.7 1.3-1.1-.1 0 0-.1.1-.1z\"\n});\n\nvar SvgBlockOptions = function SvgBlockOptions(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgBlockOptions;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"style\", null, \".block-slider_svg__st0{fill:#6171b5}\");\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"block-slider_svg__st0\",\n d: \"M2.9 16.2c0-1.2.2-2.3.4-3.5 0-.2.1-.5.3-.7.2-.3.5-.6.9-.6.3 0 .3.5.3.7.6 1.7 1.4 3.2 2.7 4.5.4.4.8.7 1.2.9.2.2.5.2.3.5-.1.3-.1.8-.6.8-1.8 0-3.5-.3-5.2-1-.3-.1-.4-.3-.3-.6v-1zM17 3.8c0 1.3-.2 2.6-.5 4-.1.6-.4.8-.9.9-.4.1-.6.1-.6-.4-.2-2-1-3.8-2.4-5.3l-.3-.3c-.2-.2-.7-.3-.5-.7.2-.4.5-.7 1-.7.4 0 .7 0 1.1.1.9.2 1.7.5 2.5.7.4.1.7.4.6.9v.8z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.1 11.4c-1-1.5-2.3-2.7-3.6-4-1-.9-1.8-2-2.3-3.3-.5-1.4-.6-2.8.8-4.1-2.1 0-3.9.6-5.4 1.8-2.4 2-3 4.9-1.3 7.5.5.8 1.1 1.6 1.8 2.4 1.3 1.4 2.5 2.7 3.5 4.3.8 1.2 1.3 2.5.5 4 1.7 0 3.2-.5 4.6-1.4 2.1-1.5 3.5-4.2 1.4-7.2zm-2.7 7c-.2 0-.4-.1-.4-.3 0-.2.2-.3.4-.3s.3.1.3.3c0 .2-.1.3-.3.3zm1-.6c-.2 0-.3-.2-.3-.4s.1-.3.3-.3c.2 0 .3.1.3.3 0 .2-.1.4-.3.4zm.7-.9c-.2 0-.3-.2-.3-.4s.2-.3.4-.3.3.2.3.3c-.1.3-.2.4-.4.4z\",\n fill: \"#1b214c\"\n});\n\nvar SvgBlockSlider = function SvgBlockSlider(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"block-slider_svg__Layer_1\",\n viewBox: \"0 0 20 20\",\n xmlSpace: \"preserve\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2, _ref3);\n};\n\nexport default SvgBlockSlider;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.64.986l8.602-.002c1.626 0 2.217.17 2.813.489a3.342 3.342 0 011.387 1.382c.32.596.493 1.187.5 2.818l.042 8.62c.008 1.63-.158 2.222-.474 2.818a3.297 3.297 0 01-1.373 1.383c-.593.319-1.182.489-2.809.489l-8.6.001c-1.627 0-2.218-.169-2.814-.488a3.342 3.342 0 01-1.387-1.382c-.32-.596-.493-1.187-.5-2.818l-.042-8.62c-.008-1.63.158-2.222.474-2.818a3.297 3.297 0 011.373-1.383C3.425 1.156 4.014.986 5.64.986zm-.656 2.998a1 1 0 00-1 1v10a1 1 0 001 1h3a1 1 0 001-1v-10a1 1 0 00-1-1zm7 7a1 1 0 00-1 1v3a1 1 0 001 1h3a1 1 0 001-1v-3a1 1 0 00-1-1zm0-7a1 1 0 00-1 1v3a1 1 0 001 1h3a1 1 0 001-1v-3a1 1 0 00-1-1z\"\n});\n\nvar SvgCoblocks = function SvgCoblocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgCoblocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.264 39.566L38.219 5.16l16.519 53.558-38.079 38.281zM69.376 112.381l35.607-35.607-46.088-13.51-38.006 38.006zM106.68 70.824L61.239 57.415 43.697 2.22 72.022 8.8l4.6 13.991 16.77 3.792 13.288 44.241zM64.633 53.949l35.664 10.522-10.291-34.264-16.699-3.775-4.604-13.999-18.641-4.337 14.571 45.853z\"\n});\n\nvar SvgCreativeBlocks = function SvgCreativeBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgCreativeBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.4 0c1.1.1 1.9.5 2.3 1.5.5 1 .3 2-.5 2.8-1.6 1.7-7.5 7.6-8.9 8.9-.6.6-.7 1.5-1.1 2.2-.4.9-.8 1.9-1.1 2.9-.1.8-1.3.7-1.3.7l-5.4.7c-.4.1-.9.5-1.3.1-.3-.3.1-1.2.1-1.2l1-6.5s.3-.3.5-.4c1.5-.6 2.9-1.1 4.4-1.7.2 0 .4-.2.5-.3L15.4.9c.6-.5 1.2-.9 2-.9zM1.3 19c.5.1.8.1 1.1 0 1.3-.3 2.6-.4 3.9-.6 1 0 1.5-.4 1.8-1.4.7-2.2 1.4-4.4 3.4-5.8.3-.2.3-.5 0-.8-.5-.4-.9-.9-1.3-1.3-1.1-1-1.1-1-2.2.1-.5.5-.9 1.1-1.6 1.4-1.3.5-2.7 1.1-4.1 1.6-.5.2-.6.4-.7.8-.3 1.7-.5 3.3-.8 5 0 .2-.1.4.1.7 1-1 2-2 3-3.1.2-.2.2-.5.2-.7-.1-.7.4-1.3 1.1-1.3.6 0 1.2.6 1.2 1.2s-.6 1.1-1.2 1c-.3 0-.5 0-.8.2-1 .9-2 1.9-3.1 3zM17.4.8c-.6 0-1 .1-1.4.5-2 2-4 4.1-6.1 6.1-.3.2-.2.4 0 .6l2.1 2.1c.3.3.4.2.7 0l1.9-1.9L18.8 4c.5-.5.7-1.6.4-2.2-.4-.7-1-1.1-1.8-1z\"\n});\n\nvar SvgEditorplus = function SvgEditorplus(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgEditorplus;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.04 4.76L9.2 7.44v11.68l-8.12-2.76m10.16 2.8l8.2-2.8V4.84L11.28 7.4m-1.04-1.36l7.52-2.44-7.52-2.28L2.52 3.6\"\n});\n\nvar SvgElegantBlocks = function SvgElegantBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgElegantBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 210.86,\n cy: 44.87,\n r: 12.79\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100.85 0A100.85 100.85 0 000 100.85V256h155.15A100.85 100.85 0 00256 155.15V0zm-59 149.49l-8.29 8.28a4.83 4.83 0 11-6.83-6.83l8.28-8.28a4.83 4.83 0 116.84 6.83zm34.86 53.16a9.31 9.31 0 010-13.13l10.69-10.69A9.28 9.28 0 01100.57 192l-10.69 10.65a9.31 9.31 0 01-13.13 0zm35.92 18.92l-7.41 7.43a5.75 5.75 0 01-8.13-8.13l7.45-7.45a5.75 5.75 0 018.13 8.13zM123.24 211a4.84 4.84 0 01-6.83 0l-1.23-1.24a4.81 4.81 0 010-6.8l31.07-31.48a8.4 8.4 0 000-11.88l-.89-.89a8.4 8.4 0 00-11.88 0l-16.94 16.94a8.41 8.41 0 01-11.89 0l-1.06-1.06a8.41 8.41 0 010-11.89l15.08-15.08a8.4 8.4 0 000-11.88l-.89-.89a8.41 8.41 0 00-11.89 0L90.8 149.93a8.42 8.42 0 01-13-1.35 8.61 8.61 0 011.33-10.76l16.71-16.71a8.41 8.41 0 000-11.89l-.88-.88a8.4 8.4 0 00-11.89 0L51.8 139.56a4.83 4.83 0 01-6.8-6.83l50.13-50.15 78.26 78.27zm52.54-52.54L97.52 80.19l3.28-3.28 78.27 78.26zm48.34-95.19a22.15 22.15 0 01-11.47 6.1 28.49 28.49 0 00-8.17 2.82 65.85 65.85 0 00-10.35 7.18c-10.3 11.06-12.26 20-12.25 26 0 16 14.07 26.16 9.68 37.63-1.91 5-6.41 7.87-9.38 9.38L143 113.18l-39.28-39.24c1.51-3 4.39-7.47 9.38-9.38 11.47-4.39 21.58 9.68 37.63 9.68 6 0 15-1.95 26-12.25a75.27 75.27 0 005.62-7.69 31.65 31.65 0 004.17-11 22.25 22.25 0 1137.58 19.94z\"\n});\n\nvar SvgEnhancedBlocks = function SvgEnhancedBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 256 256\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2);\n};\n\nexport default SvgEnhancedBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"filter\", {\n filterUnits: \"objectBoundingBox\",\n id: \"essential-blocks_svg__a\"\n}, /*#__PURE__*/React.createElement(\"feOffset\", {\n dy: 15,\n in: \"SourceAlpha\",\n result: \"shadowOffsetOuter1\"\n}), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 11,\n in: \"shadowOffsetOuter1\",\n result: \"shadowBlurOuter1\"\n}), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\",\n in: \"shadowBlurOuter1\"\n})), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M135.028 96h103.944l.497.216h.373c6.217 0 11.273 2.774 15.169 8.322 1.326 2.305 1.989 4.683 1.989 7.133 0 5.98-3.398 10.59-10.195 13.833-2.321.937-4.642 1.405-6.963 1.405H133.909c-4.973 0-9.366-1.981-13.179-5.944-2.487-2.882-3.73-5.836-3.73-8.862v-1.297c0-4.755 2.735-8.826 8.206-12.212 2.984-1.585 5.927-2.378 8.828-2.378h.497l.497-.216zm1.242 77.273l58.078.21c3.862 0 7.995 1.544 12.397 4.632 3.503 3.158 5.255 6.596 5.255 10.316 0 5.193-3.1 9.438-9.298 12.736-3.054 1.404-6.019 2.106-8.893 2.106h-58.752c-5.75 0-10.735-2.246-14.958-6.737-2.066-2.526-3.099-5.053-3.099-7.58v-1.262c0-4.772 3.19-8.877 9.567-12.316 3.234-1.263 6.289-1.895 9.163-1.895h.27c.18 0 .27-.07.27-.21zM241.632 173h.736c5.685 0 10.14 2.968 13.369 8.905.842 2.12 1.263 4.17 1.263 6.148 0 5.936-2.912 10.495-8.737 13.675-2.105.848-3.965 1.272-5.579 1.272h-1.473c-4.772 0-8.843-2.509-12.211-7.527-1.333-2.544-2-5.052-2-7.526 0-5.795 2.877-10.318 8.632-13.569 2.175-.919 4.175-1.378 6-1.378zm-106.604 75.727h103.944c0 .142 1.284.318 3.854.53 4.31.919 7.584 2.58 9.822 4.983 2.901 2.897 4.352 6.219 4.352 9.964 0 5.725-3.398 10.248-10.195 13.57-2.073.635-3.482.953-4.228.953H131.423c-2.901 0-6.383-1.66-10.444-4.982-2.653-3.039-3.979-6.113-3.979-9.223v-.954c0-5.23 3.108-9.505 9.325-12.827 1.824-.918 4.642-1.554 8.455-1.908 0-.07.083-.106.248-.106z\",\n id: \"essential-blocks_svg__b\"\n}));\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"circle\", {\n fill: \"#FFF\",\n cx: 187,\n cy: 187,\n r: 187\n}), /*#__PURE__*/React.createElement(\"use\", {\n fill: \"#000\",\n filter: \"url(#essential-blocks_svg__a)\",\n xlinkHref: \"#essential-blocks_svg__b\"\n}), /*#__PURE__*/React.createElement(\"use\", {\n fill: \"#23282D\",\n xlinkHref: \"#essential-blocks_svg__b\"\n}));\n\nvar SvgEssentialBlocks = function SvgEssentialBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2);\n};\n\nexport default SvgEssentialBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"style\", null, \".forms-gutenberg_svg__st5{opacity:.1}.forms-gutenberg_svg__st6{opacity:.16}.forms-gutenberg_svg__st7{opacity:.6}.forms-gutenberg_svg__st8{fill:#fff}.forms-gutenberg_svg__st9{opacity:.3}\");\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"forms-gutenberg_svg__SVGID_1_\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 23.101,\n y1: 4.596,\n x2: 17.855,\n y2: 19.01,\n gradientTransform: \"matrix(1 0 0 -1 0 33)\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#4facfe\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#00f2fe\"\n}));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29 13.1l-1-2.8-5.2 1.9c0 .1.1.3.1.4.1.2.1.5.1.7 0 .1 0 .3.1.4v.8c0 .5.1 1 0 1.6v1c-.1.5-.1 1-.3 1.6h.1c-.1.5-.2 1-.5 1.4-.1.4-.3.8-.4 1.2-.2.4-.3.7-.5 1.1-.1.2-.2.4-.3.5-.1.2-.2.3-.3.5-.2.4-.5.7-.7 1-.1.2-.3.4-.4.5-.1.1-.2.3-.3.4-.1.1-.2.3-.3.4l-.9.9-.4.4c-.3.2-.6.5-.9.7-.1.1-.2.2-.3.2-.2.2-.4.3-.7.5-.1.1-.2.1-.2.2-.2.1-.3.2-.5.3-.2.1-.3.2-.5.3l-.6.3c-.2.1-.3.2-.5.2-.1 0-.1.1-.2.1 0 0-.1 0-.1.1-.1 0-.2.1-.3.1-.2.1-.5.2-.7.3 1.8.3 3.7.4 5.5 0 1.8-.3 3.6-1 5.2-2 2.2-1.3 3.9-3.2 5.1-5.3 1.2-2.1 1.7-4.5 1.5-6.8-.1-1.2-.3-2.1-.7-3.1z\",\n fill: \"url(#forms-gutenberg_svg__SVGID_1_)\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"forms-gutenberg_svg__SVGID_2_\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 20.054,\n y1: 13.455,\n x2: 18.011,\n y2: 19.068,\n gradientTransform: \"matrix(1 0 0 -1 0 33)\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#00c6fb\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#005bea\"\n}));\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.8 12.2l-6.4 2.3c-.4.1-.8.4-1.1.6-.3.3-.6.6-.8 1-.2.4-.3.8-.4 1.2 0 .4 0 .8.2 1.2.1.4.4.7.6 1 .3.3.6.5 1 .7.4.2.8.2 1.3.2.4 0 .9-.1 1.3-.2l4.4-1.6c.5-2.2.4-4.4-.1-6.4z\",\n fill: \"url(#forms-gutenberg_svg__SVGID_2_)\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"forms-gutenberg_svg__SVGID_3_\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 15.53,\n y1: 4.084,\n x2: 8.873,\n y2: 22.373,\n gradientTransform: \"matrix(1 0 0 -1 0 33)\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#89f7fe\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#66a6ff\"\n}));\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.5 19.9c-.4.9-1 1.7-1.7 2.4s-1.6 1.2-2.6 1.6c-.4.2-.9.3-1.4.4-.5.1-.9.1-1.4.1-1.4 0-2.7-.4-3.8-1.1-.2-.1-.4-.2-.7-.3-2-1-3.7-2.5-4.9-4.3-1.2-1.8-1.8-3.9-1.9-6v-.2c-1.8 2.9-2.3 6.2-1.5 9.2s2.9 5.6 5.8 7.2c1.2.6 2.5 1.1 3.8 1.3 3.2-1.2 6-3.2 7.9-5.8 1.1-1.5 1.9-2.9 2.4-4.5z\",\n fill: \"url(#forms-gutenberg_svg__SVGID_3_)\"\n});\n\nvar _ref8 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"forms-gutenberg_svg__SVGID_4_\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 19.95,\n y1: 23.365,\n x2: 17.904,\n y2: 28.987,\n gradientTransform: \"matrix(1 0 0 -1 0 33)\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#4facfe\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#00f2fe\"\n}));\n\nvar _ref9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5 1.6l-5.9 2.1c0 .1-.1.2-.1.3-.1.3-.2.5-.2.8-.2.6-.5 1.3-.8 1.9-.1.1-.1.2-.2.4v.1c-.1.2-.2.3-.3.5-.1.2-.2.3-.3.5-.1.1-.2.3-.3.4-.1.1-.1.2-.2.3l-.2.2c-.1.1-.2.2-.2.3l-.1.1c-.1.1-.2.3-.3.4v.1c-.1.1-.2.3-.4.4-.1.1-.2.3-.3.4 0 .1-.1.1-.1.1l-.3.3-.4.4-.3.3c.1-.1.3-.1.4-.2l6.4-2.3 1.2-.6c1.3-.8 2.3-1.9 2.9-3.3.4-1.2.4-2.6 0-3.9z\",\n fill: \"url(#forms-gutenberg_svg__SVGID_4_)\"\n});\n\nvar _ref10 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"forms-gutenberg_svg__SVGID_5_\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 15.998,\n y1: 11.362,\n x2: 10.556,\n y2: 26.312,\n gradientTransform: \"matrix(1 0 0 -1 0 33)\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#00c6fb\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#005bea\"\n}));\n\nvar _ref11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.6 3.8l-6.8 2.5c-3 1.1-5.6 3.1-7.3 5.7-.1.1-.2.3-.3.4v1.1c0 .2 0 .4.1.6 0 .1 0 .2.1.3 0 .1.1.3.1.4 0 .1.1.2.1.3v.2l.3.9c0 .1.1.1.1.2s0 .1.1.2v.1s0 .1.1.1c0 .1.1.2.2.4 0 0 0 .1.1.1.1.2.1.3.2.5.1.1.1.2.2.3 0 .1.1.1.1.2.2.3.3.5.5.8.1.1.1.2.2.2.3.4.6.8 1 1.2l.3.3c.2.2.5.4.7.6.1.1.2.2.3.2.3.2.6.5.9.7.2.1.3.2.5.3.2.1.3.2.5.3 0 0 .1 0 .1.1.2.1.3.2.5.2-1.1-.7-1.9-1.7-2.4-2.9-.1-.8-.2-1.6-.1-2.5 0-.8.3-1.7.7-2.5.8-1.4 2.1-2.6 3.7-3.3l.3-.3.4-.4.3-.3.1-.1c.1-.1.2-.2.3-.4l.4-.4V10c.1-.1.2-.3.3-.4l.1-.1c.1-.1.2-.2.2-.3L16 9c.1-.1.1-.2.2-.3.1-.1.2-.3.3-.4.1-.2.2-.3.3-.5.1-.2.2-.3.3-.5v-.1c.1-.1.1-.2.2-.4.3-.6.6-1.2.8-1.9.1-.3.2-.5.2-.8.2-.1.3-.2.3-.3z\",\n fill: \"url(#forms-gutenberg_svg__SVGID_5_)\"\n});\n\nvar _ref12 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st5\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.2 23.8c-.4.2-.9.3-1.4.4-2 1.7-4.7 3.2-8.4 4.6 1.2.6 2.5 1.1 3.8 1.3 3.2-1.2 6-3.2 7.9-5.8 1-1.4 1.8-2.8 2.3-4.4-.4.9-1 1.7-1.7 2.4s-1.6 1.2-2.5 1.5z\"\n}));\n\nvar _ref13 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st6\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.8 12.2l-.6.2c.2 2.3-.3 4.7-1.4 6.9l2-.7c.6-2.2.5-4.4 0-6.4z\"\n}));\n\nvar _ref14 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st5\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.2 8.9c-1.1.9-2 1.9-2.8 3.1-.1.1-.2.3-.3.4v1.1c0 .2 0 .4.1.6 0 .1 0 .2.1.3 0 .1.1.3.1.4 0 .1.1.2.1.3v.2l.3.9c0 .1.1.1.1.2s0 .1.1.2v.1s0 .1.1.1c0 .1.1.2.2.4 0 0 0 .1.1.1.1.2.1.3.2.5.1.1.1.2.2.3 0 .1.1.1.1.2.2.3.3.5.5.8.1.1.1.2.2.2.3.4.6.8 1 1.2l.3.3c.2.2.5.4.7.6.1.1.2.2.3.2.3.2.6.5.9.7.2.1.3.2.5.3.2.1.3.2.5.3 0 0 .1 0 .1.1.2.1.3.2.5.2-1.1-.7-1.9-1.7-2.4-2.9C7.4 18 6 14.4 6.9 9.1c.3-.1.3-.2.3-.2z\"\n}));\n\nvar _ref15 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st5\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.5 2.4l-3.9 1.4c0 .1-.1.2-.1.3-.1.3-.2.5-.2.8-.2.6-.5 1.3-.8 1.9-.1.1-.1.2-.2.4v.1c-.1.2-.2.3-.3.5-.1.2-.2.3-.3.5-.1.1-.2.3-.3.4-.1.1-.1.2-.2.3-.1 0-.1 0-.2.1s-.2.2-.2.3l-.1.1c-.1.1-.2.3-.3.4v.1c-.1.1-.2.3-.4.4-.1.1-.2.3-.3.4 0 .1-.1.1-.1.1l-.3.3-.4.4-.3.3c.1-.1.3-.1.4-.2l1.7-.6c2.9-2.4 5.2-5.3 6.8-8.5-.1 0-.1-.1 0-.2z\"\n}));\n\nvar _ref16 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st7\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st7\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n className: \"forms-gutenberg_svg__st8\",\n d: \"M22.1 21.1c-.8 1.9-2 3.6-3.5 5.1-1.5 1.5-3.3 2.7-5.3 3.6.1 0 .2-.1.5-.2.2-.1.4-.1.6-.2.3-.1.5-.2.8-.3.1-.1.3-.1.4-.2.1-.1.3-.2.4-.3l.9-.6c.3-.2.6-.4.9-.7.3-.3.6-.5.9-.8.3-.3.6-.6.8-.9.3-.3.5-.6.7-.9l.6-.9c.2-.3.3-.5.5-.8.1-.3.2-.5.3-.7.1-.2.1-.4.2-.6.2-.4.2-.6.3-.6z\"\n})));\n\nvar _ref17 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st7\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st7\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n className: \"forms-gutenberg_svg__st8\",\n d: \"M18.6 3.8l-.2.4-.5 1-.3.6c-.1.2-.2.5-.4.7L16.3 8c-.3.5-.6 1-.9 1.4-.1.2-.2.4-.4.6-.2.2-.3.4-.4.6-.3.4-.5.7-.7.9-.1.2-.2.3-.2.3 2.4-2.3 4.1-5 4.9-8z\"\n})));\n\nvar _ref18 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st7\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st7\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n className: \"forms-gutenberg_svg__st8\",\n d: \"M4.9 16.2c-.4-1.2-.7-2.4-.7-3.6v.6c0 .5 0 1 .1 1.5.1.7.3 1.4.5 2 .1.3.2.7.4 1 .2.4.4.7.6 1.1.2.3.5.7.7 1 .1.2.3.3.4.5l.4.4c.3.3.6.5.9.7.3.2.5.4.8.6.2.2.5.3.8.4l.6.3c.3.1.5.2.5.2-2.8-1.5-4.9-3.8-6-6.7z\"\n})));\n\nvar _ref19 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st9\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5 1.6L11.8 6.2c-3 1.1-5.6 3.1-7.3 5.7.3-.4.6-.7.9-1.1.3-.4.6-.7 1-1 .3-.3.6-.5.9-.8-.1 0 0 0 0 0 .4-.3.8-.6 1.1-.8.4-.3.8-.5 1.2-.7.5-.3 1-.5 1.4-.7.4-.2.9-.3 1.3-.5l1.4-.5 2.7-1 2.7-1c1.1-.4 2.1-.8 3.2-1.2.7-.2 1.3-.5 2-.8l.1.2.1.5.1.5v1l-.1.5-.1.5-.2.5-.2.6-.2.5-.4.4-.3.4-.4.4-.4.4-.4.4-.5.3c1.3-.8 2.3-1.9 2.9-3.3.6-1.3.6-2.7.2-4z\"\n}));\n\nvar _ref20 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st9\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29 13.1l-1-2.8-4.5 1.6c.8-.2 1.5-.5 2.3-.7.7-.2 1.4-.4 2.1-.7l.7 2.2c.1.4.3.8.4 1.2l.3 1.2c.1.4.1.8.1 1.2v1.2c0 .4-.1.8-.1 1.2-.1.4-.1.8-.3 1.2-.1.4-.2.8-.4 1.2-.1.2-.2.4-.2.6l-.3.6-.3.6-.3.6c-.1.2-.2.4-.3.5-.1.2-.2.4-.4.5l-.4.5-.4.4c-.1.2-.3.3-.4.5l-.5.5c-.3.3-.7.6-1 .9-.3.3-.7.5-1.1.8 2.2-1.3 3.9-3.2 5.1-5.3 1.2-2.1 1.7-4.5 1.5-6.8 0-1-.2-1.9-.6-2.9z\"\n}));\n\nvar _ref21 = /*#__PURE__*/React.createElement(\"text\", {\n transform: \"translate(300 167.5)\",\n fontFamily: \"MyriadPro-Regular\",\n fontSize: 12\n}, \"32\");\n\nvar SvgFormsGutenberg = function SvgFormsGutenberg(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"forms-gutenberg_svg__Layer_1\",\n viewBox: \"0 0 32 32\",\n xmlSpace: \"preserve\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17, _ref18, _ref19, _ref20, _ref21);\n};\n\nexport default SvgFormsGutenberg;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#b3c315\",\n d: \"M70 54h41v18H70z\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#96a40a\",\n d: \"M65 54h5v18h-5z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#b3c315\",\n d: \"M94 50h13v3H94z\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#96a40a\",\n d: \"M89 50h5v3h-5z\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#b3c315\",\n d: \"M74 50h13v3H74z\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#96a40a\",\n d: \"M69 50h5v3h-5z\"\n});\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#b977c7\",\n d: \"M72 92h13v3H72z\"\n});\n\nvar _ref8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#9e5cac\",\n d: \"M67 92h5v3h-5z\"\n});\n\nvar _ref9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#b977c7\",\n d: \"M51 92h13v3H51z\"\n});\n\nvar _ref10 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#9e5cac\",\n d: \"M46 92h5v3h-5z\"\n});\n\nvar _ref11 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#49c3f5\",\n d: \"M92 75h19v19H92z\"\n});\n\nvar _ref12 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#109ad4\",\n d: \"M87 75h5v19h-5z\"\n});\n\nvar _ref13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25 97h86l-18 19H43L25 97z\",\n fill: \"#b977c7\"\n});\n\nvar _ref14 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#9e5cac\",\n d: \"M20 97l18 19h5L25 97z\"\n});\n\nvar _ref15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M111 36H25l18-19h50l18 19z\",\n fill: \"#f1b014\"\n});\n\nvar _ref16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#f09108\",\n d: \"M43 17h-5L20 36h5z\"\n});\n\nvar _ref17 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#f1b014\",\n d: \"M51 12h14v3H51z\"\n});\n\nvar _ref18 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#f09108\",\n d: \"M46 12h5v3h-5z\"\n});\n\nvar _ref19 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#f1b014\",\n d: \"M73 12h14v3H73z\"\n});\n\nvar _ref20 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#f09108\",\n d: \"M68 12h5v3h-5z\"\n});\n\nvar _ref21 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#49c3f5\",\n d: \"M25 39h18v26H25z\"\n});\n\nvar _ref22 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#109ad4\",\n d: \"M20 39h5v26h-5z\"\n});\n\nvar _ref23 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#d25e4d\",\n d: \"M20 68h5v26h-5z\"\n});\n\nvar _ref24 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#e67666\",\n d: \"M25 68h18v26H25z\"\n});\n\nvar SvgGetwid = function SvgGetwid(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 128 128\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17, _ref18, _ref19, _ref20, _ref21, _ref22, _ref23, _ref24);\n};\n\nexport default SvgGetwid;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M201 94.59h12.5H201zm-146 0h12.5H55zm20.038 115.868c-6.137-3.161-13.675-.749-16.836 5.388-3.162 6.137-.75 13.675 5.387 16.837l11.45-22.225zm117.373 22.225c6.137-3.162 8.549-10.7 5.387-16.837-3.161-6.137-10.699-8.549-16.836-5.388l11.449 22.225zM128 33.5c33.318 0 60.5 27.256 60.5 61.09h25c0-47.45-38.185-86.09-85.5-86.09v25zm60.5 61.09c0 33.835-27.182 61.091-60.5 61.091v25c47.315 0 85.5-38.639 85.5-86.09h-25zM128 155.682c-33.319 0-60.5-27.256-60.5-61.09h-25c0 47.451 38.185 86.09 85.5 86.09v-25zm-60.5-61.09C67.5 60.756 94.681 33.5 128 33.5v-25c-47.315 0-85.5 38.64-85.5 86.09h25zm-3.91 138.092c40.937 21.089 87.883 21.089 128.821 0l-11.449-22.225c-33.754 17.389-72.17 17.389-105.924 0L63.59 232.683z\"\n});\n\nvar SvgGhostkit = function SvgGhostkit(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgGhostkit;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"style\", null);\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"guteblock_svg__prefix__Layer_1\"\n}, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"guteblock_svg__prefix__SVGID_1_\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 68.035,\n y1: 10.602,\n x2: 33.222,\n y2: 86.651\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#ffd500\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.258,\n stopColor: \"#ff683e\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.498,\n stopColor: \"#ff1d6b\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.781,\n stopColor: \"#5d25cd\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#3eb9fa\"\n})), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.95 17.49L17.49 31.95c-9.14 9.14-9.14 23.96 0 33.1L34.94 82.5c9.14 9.14 23.96 9.14 33.1 0L82.5 68.04c9.14-9.14 9.14-23.96 0-33.1L65.06 17.49c-9.15-9.14-23.96-9.14-33.11 0z\",\n fill: \"url(#guteblock_svg__prefix__SVGID_1_)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.81 36.74c-3.94 0-7.64 1.53-10.43 4.32l-5.85 5.85a6.488 6.488 0 000 9.17 6.488 6.488 0 009.17 0l5.85-5.85c.43-.43.92-.52 1.26-.52.34 0 .83.09 1.26.52.43.43.52.92.52 1.26 0 .34-.09.83-.52 1.26L52.98 66.83c-.05.05-.1.1-.14.15-.44.47-.96.58-1.32.58-.36.01-.88-.08-1.33-.54L32.98 49.81c-.69-.69-.72-1.79-.09-2.52l14.17-14.17c.05-.05.1-.1.14-.15.67-.71 1.78-.73 2.54-.04l.98.95c2.57 2.49 6.68 2.43 9.17-.14 2.49-2.57 2.43-6.68-.14-9.17l-1.03-1c-.03-.03-.05-.05-.08-.07-5.94-5.57-15.25-5.33-20.82.51l-14.2 14.2c-.05.05-.1.1-.14.15a14.744 14.744 0 00.33 20.61l17.21 17.22c2.8 2.81 6.51 4.34 10.47 4.34h.24c4.01-.06 7.73-1.69 10.49-4.59l14.02-14.02c2.79-2.79 4.32-6.49 4.32-10.43 0-3.94-1.53-7.64-4.32-10.43a14.668 14.668 0 00-10.43-4.32z\",\n fill: \"#fff\"\n}));\n\nvar SvgGuteblock = function SvgGuteblock(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 100 100\",\n \"aria-hidden\": \"true\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2);\n};\n\nexport default SvgGuteblock;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.388 5.75l-6.716-3.91a1.173 1.173 0 00-1.104 0l-.184.092c0 .046.046.092.046.138v2.3c0 .138-.092.276-.276.276h-2.3c-.138 0-.276-.092-.276-.276v-.828l-.506.276v2.53a.297.297 0 01-.276.276H3.22a.297.297 0 01-.276-.276v-.736l-.138.092c-.322.184-.552.598-.552.966v1.15H3.68c.138 0 .23.092.23.23v2.208c0 .138-.092.23-.23.23H2.254v3.956c0 .368.23.782.552.966l6.716 3.91c.322.184.782.184 1.104 0l6.762-3.864c.322-.184.552-.598.552-.966V6.67c0-.322-.23-.736-.552-.92zm-3.358 7.038l-3.864 2.3L6.21 12.88l-.092-4.508 3.864-2.3 3.68 2.07-.46.782-3.22-1.794-2.944 1.748.046 3.45 2.99 1.656 2.944-1.748v-.644l-2.668-.046v-.92l3.542.092v2.07zM2.3 5.014a.099.099 0 01-.092.092h-.782c-.046 0-.046-.046-.046-.092v-.736c0-.046 0-.092.046-.092h.736c.092 0 .138.046.138.092v.736zM1.518 7.222c0 .092-.046.138-.138.138H.138C.046 7.36 0 7.314 0 7.222V5.98c0-.092.046-.138.138-.138H1.38c.092 0 .138.046.138.138v1.242z\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.496 4.048h2.162V6.21H3.496zM7.038 2.254h1.978v1.978H7.038zM3.68 3.174c0 .046-.046.138-.138.138H2.346c-.092 0-.138-.092-.138-.138V1.932c0-.092.046-.138.138-.138h1.196c.092 0 .138.092.138.138v1.242zM6.164 2.622c0 .092-.046.138-.138.138H4.83c-.092 0-.138-.046-.138-.138V1.426c0-.092.046-.138.138-.138h1.196c.092 0 .138.046.138.138v1.196zM8.05 1.38a.099.099 0 01-.092.092H6.9a.099.099 0 01-.092-.092V.322c0-.046.046-.092.092-.092h1.012c.046 0 .092.046.092.092V1.38zM1.564 8.28H3.45v1.886H1.564z\"\n});\n\nvar SvgGutentor = function SvgGutentor(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"-1.1 -0.2 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2);\n};\n\nexport default SvgGutentor;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.145 6.164L7.855 41.837V6.164h32.29z\",\n fillOpacity: 0.502,\n fillRule: \"nonzero\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.145 41.836L7.855 6.163v35.673h32.29z\",\n fillRule: \"nonzero\"\n});\n\nvar SvgKadenceBlocks = function SvgKadenceBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 48 48\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n strokeLinejoin: \"round\",\n strokeMiterlimit: 1.414,\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2);\n};\n\nexport default SvgKadenceBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.706 7.854l.004.01c.734 2.723.003 5.708-1.395 8.169-1.669 2.927-4.184 5.357-7.464 6.256-4.204 1.164-7.863-.293-10.944-3.149C-.097 15.427-1.665 9.8 2.303 5.352a17.352 17.352 0 015.683-4.009A14.566 14.566 0 0112.498.077c1.734-.184 3.298-.075 4.885.732a14.601 14.601 0 013.615 2.583 9.982 9.982 0 012.708 4.462zm-12.659 4.272a.03.03 0 01.025.012l2.536 3.432c.25.338.66.54 1.1.54h1.573c.246 0 .485-.075.682-.213.502-.353.605-1.02.228-1.49l-2.343-2.924a1.188 1.188 0 01.05-1.558l2.045-2.26a.91.91 0 00.24-.61c0-.523-.453-.946-1.011-.946H14.66a1.37 1.37 0 00-1.07.502l-2.534 3.173a.032.032 0 01-.025.012c-.009 0-.016-.007-.016-.015V7.359c0-.69-.598-1.25-1.336-1.25h-.925c-.739 0-.81.56-.81 1.25v7.5c0 .69.071 1.25.81 1.25h.94c.738 0 1.337-.56 1.337-1.25v-2.718c0-.008.007-.015.015-.015z\"\n});\n\nvar SvgKiokenBlocks = function SvgKiokenBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 -0.5 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgKiokenBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.831 7.877l.001-.009-.001-.009a3.675 3.675 0 01-.132-.247l-.057-.115c-.277-.498-.381-.99-1.033-1.064h-.048a.91.91 0 00-.908.862v.002c.674.126 1.252.278 1.813.468l-.092-.027.283.096.147.053s.028 0 .028-.011z\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.982 13.574a68.843 68.843 0 00-.39-7.112l.026.299.07-.019a1.1 1.1 0 00.052-2.09l-.008-.002h-.026a2.306 2.306 0 01-1.149-.861l-.005-.007C19.852-.178 14.3.001 14.3.001S8.75-.178 6.05 3.782c-.28.401-.676.704-1.14.862l-.016.005a1.097 1.097 0 00-.754 1.04v.026-.001l-.001.034c0 .493.335.907.789 1.029l.007.002.045.011a65.7 65.7 0 00-.364 6.801v.012s-9.493 13.012-1.277 17.515c4.733 2.431 6.881-.769 6.881-.769s1.397-1.661-1.784-3.355v-4.609a.638.638 0 01.625-.628h1.212v-.59c0-.275.223-.498.498-.498h1.665a.498.498 0 01.496.498v.59h2.721v-.59c0-.275.223-.498.498-.498h1.665c.271.005.49.226.49.498v.59h1.209c.349 0 .633.28.639.627v4.584c-3.193 1.703-1.784 3.355-1.784 3.355s2.148 3.193 6.879.769c8.222-4.503-1.269-17.515-1.269-17.515zm-1.396-3.313a6.398 6.398 0 01-1.563 3.797l.007-.008c-1.703 2.01-4.407 3.249-6.721 4.432-2.325-1.177-5.026-2.416-6.736-4.432a6.43 6.43 0 01-1.555-3.769l-.001-.02c-.126-2.22.583-5.929 3.044-6.74 2.416-.788 3.947 1.288 4.494 2.227a.863.863 0 001.488.004l.002-.004c.551-.932 2.08-3.008 4.494-2.22 2.474.805 3.174 4.513 3.046 6.734z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.463 10.087h-.028c-.192.026-.121.251-.047.356.254.349.407.787.407 1.26v.018-.001a1.277 1.277 0 01-.633 1.1l-.006.003c-.739.426-1.377-.145-2.054-.398a7.5 7.5 0 00-2.42-.455h-.009v-1.033a4.886 4.886 0 002.551-1.486l.004-.004a.916.916 0 00-.158-1.383l-.003-.002a4.738 4.738 0 00-2.764-.881 4.752 4.752 0 00-2.819.92l.013-.009a.9.9 0 00-.146 1.317l-.001-.001a4.906 4.906 0 002.553 1.53l.033.007v1.05a8.061 8.061 0 00-2.118.343l.057-.015a5.578 5.578 0 00-.908.358l.033-.015c-.519.26-1.037.436-1.58.121a1.218 1.218 0 01-.617-1.058v-.007-.007c0-.47.153-.905.411-1.257l-.004.006c.047-.068.089-.17.026-.241s-.189 0-.27.03a1.592 1.592 0 00-.479.381l-.002.002a1.716 1.716 0 00-.394 1.097v.011-.001a1.93 1.93 0 00.964 1.651l.009.005c.296.178.654.283 1.036.283.364 0 .706-.095 1.001-.263l-.01.005a6.51 6.51 0 013.225-.728h-.01.03c1.277 0 2.382.266 3.266.775.27.159.594.253.94.253h.003c.355-.002.688-.098.974-.265l-.009.005a2.028 2.028 0 001.007-1.75v-.004l.002-.086c0-.625-.34-1.171-.846-1.462l-.008-.004a.388.388 0 00-.199-.07h-.001zm-6.362-1.256c-.238.213-.468.581-.832.345a.933.933 0 01-.161-.136.352.352 0 01.081-.555l.002-.001c.594-.309 1.203-.543 1.884-.49-.324.281-.649.56-.973.837z\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.89 13.578a1.988 1.988 0 01-3.173.005l-.004-.005a.36.36 0 10-.576.427 2.707 2.707 0 004.323.007l.005-.007a.362.362 0 00-.072-.498l-.001-.001a.356.356 0 00-.501.071l-.001.001zM18.507 11.707a.35.35 0 11-.702 0 .35.35 0 01.702 0zM17.389 11.049a.35.35 0 11-.702 0 .35.35 0 01.702 0zM10.798 11.707a.35.35 0 11-.702 0 .35.35 0 01.702 0zM11.918 11.049a.35.35 0 11-.702 0 .35.35 0 01.702 0zM8.773 7.877l-.002-.009.002-.009c.047-.081.089-.164.132-.247.019-.038.036-.079.057-.115.275-.498.379-.99 1.033-1.064h.046c.487 0 .884.382.91.862v.002c-.678.124-1.261.277-1.827.468l.092-.027-.275.096-.1.036-.045.017s-.023 0-.023-.011z\"\n});\n\nvar SvgOtterBlocks = function SvgOtterBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 29 32\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2, _ref3, _ref4);\n};\n\nexport default SvgOtterBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0h21v21H0z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.296 9.925c.014.013.029.022.042.034l-2.456 2.455A5.376 5.376 0 014.697 10.9C4.232 10.024 4 9.02 4 7.884c0-1.134.232-2.15.697-3.045.21-.402.456-.76.732-1.081l2.514 2.514c-.245.432-.375.966-.375 1.612 0 .902.243 1.582.728 2.04zm7.782-7.707v12.19l-4.393-4.394c.053-.044.108-.08.159-.13.499-.485.749-1.172.749-2.06 0-.68-.15-1.24-.441-1.679l3.926-3.927z\",\n fill: \"#444\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.593 11.7c-.793 1.312-1.928 1.968-3.405 1.968a4.878 4.878 0 01-2.614-.728 4.966 4.966 0 01-.691-.525L8.338 9.96c.478.433 1.054.654 1.732.654.614 0 1.15-.207 1.615-.598l4.393 4.393V19h-3.485v-7.3zm3.485-9.597v.116l-3.926 3.927a2.476 2.476 0 00-2.082-1.09c-.684 0-1.272.242-1.764.727-.144.143-.26.31-.363.49L5.43 3.759a5.031 5.031 0 011.155-1.01A4.795 4.795 0 019.188 2c1.531 0 2.666.588 3.405 1.764V2.103h3.485z\",\n fill: \"#000\"\n}));\n\nvar SvgQodeblock = function SvgQodeblock(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgQodeblock;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.38 8.8c0-2.42-.88-4.4-2.53-6.05C13.2 1.1 11.11.22 8.8.22s-4.4.88-6.05 2.53C1.1 4.4.22 6.38.22 8.8s.88 4.4 2.53 6.05c1.65 1.65 3.63 2.53 6.05 2.53.99 0 1.98-.11 2.86-.44l-2.42-2.53c-.11-.11-.33-.22-.44-.22-1.54 0-2.75-.55-3.74-1.54-1.1-.99-1.54-2.31-1.54-3.85s.55-2.86 1.54-3.85c.99-.99 2.2-1.54 3.74-1.54s2.75.55 3.74 1.54c.99.99 1.54 2.31 1.54 3.85 0 .77-.11 1.54-.44 2.2-.22.55-.88.66-1.32.22-1.21-1.21-3.08-1.32-4.4-.22l2.75 2.86 2.31 2.42c.99.99 2.64 1.1 3.74.11l.33-.33-1.43-1.43c-.22-.22-.22-.44 0-.66a8.383 8.383 0 001.76-5.17z\"\n});\n\nvar SvgQubely = function SvgQubely(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"-1 -1 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgQubely;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.982 16.711a4.48 4.48 0 01-7.965 0A4.972 4.972 0 0110 14.709c1.629 0 3.074.789 3.982 2.002zm-.748-7.657c-.314 2.56 1.248 2.919 1.248 5.603a4.5 4.5 0 01-.205 1.344 5.635 5.635 0 00-8.554 0 4.5 4.5 0 01-.205-1.344c0-2.684 1.563-3.043 1.247-5.603C6.403 6.126 2.45 6.589 2.45 3.72A2.857 2.857 0 015.308.862C7.017.862 8.073 2.42 10 2.42c1.926 0 2.982-1.558 4.691-1.558a2.857 2.857 0 012.857 2.858c.001 2.869-3.952 2.406-4.314 5.334zM8.557 4.107h-.708a.9.9 0 01-.901.9.9.9 0 01-.901-.9h-.708a1.609 1.609 0 103.218 0zm.979 7.141a.568.568 0 00-.566-.568.567.567 0 10.566.568zm2.062 0a.569.569 0 00-.568-.568.567.567 0 10.568.568zm3.062-7.141h-.707a.9.9 0 01-1.802 0h-.707a1.61 1.61 0 003.216 0z\"\n});\n\nvar SvgSnowMonkeyBlocks = function SvgSnowMonkeyBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgSnowMonkeyBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.08 136L23 176.66a4.75 4.75 0 003.53 8.15l86.91.14zM177.91 128.39a17 17 0 00-5-12.07L71.39 14.72 26.61 59.5a17 17 0 00-5 12.05 17 17 0 005 12.05l101.55 101.6v-.07l44.76-44.76a17 17 0 005-12zM172.95 14.69H86.12l49.42 49.62 40.92-41.16a5 5 0 00-3.51-8.46z\"\n});\n\nvar SvgStackableUltimateGutenbergBlocks = function SvgStackableUltimateGutenbergBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 200 200\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgStackableUltimateGutenbergBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.9.3C12.2.3.3 12.2.3 26.8s11.9 26.5 26.5 26.5c14.7 0 26.5-11.9 26.5-26.5S41.5.3 26.9.3zm-2 27.7c0 1.1-.1 2.2-.4 3.2-.3 1-.7 1.8-1.3 2.6-.6.7-1.3 1.3-2.2 1.7-.9.4-2 .6-3.2.6-1.3 0-2.4-.2-3.3-.7-.9-.4-1.7-1-2.2-1.8-.6-.7-1-1.6-1.3-2.6-.3-1-.4-2-.4-3.1v-8.3h3.8V28c0 .6.1 1.2.2 1.8s.3 1.1.6 1.5c.3.4.6.8 1.1 1.1s1 .4 1.6.4 1.2-.1 1.6-.4.8-.6 1.1-1.1c.3-.4.5-1 .6-1.5.1-.6.2-1.2.2-1.8v-8.3h3.8c-.3 0-.3 8.3-.3 8.3zm17.2 8H39v-1.6c-1.2 1.1-2.7 1.7-4.3 1.7-1.1 0-2.1-.2-3-.6-.9-.4-1.8-1-2.5-1.7s-1.3-1.6-1.7-2.6c-.4-1-.6-2.2-.6-3.4 0-1.1.2-2.2.6-3.2.4-1 1-1.9 1.7-2.6.7-.7 1.6-1.3 2.6-1.7 1-.4 2.1-.6 3.2-.6 1.5 0 2.8.3 4 1 1.1.6 2 1.5 2.5 2.6l-2.8 2.1c-.4-.7-.9-1.3-1.6-1.7-.7-.4-1.4-.6-2.3-.6-.6 0-1.2.1-1.7.4s-1 .6-1.3 1.1-.7 1-.8 1.6c-.2.6-.3 1.2-.3 1.9s.1 1.4.3 1.9c.2.6.5 1.1.9 1.5.4.4.8.8 1.4 1 .5.2 1.1.4 1.8.4 1.5 0 2.8-.7 4-2v-.5h-3.2v-2.7h6.3c-.1-.2-.1 8.3-.1 8.3z\"\n});\n\nvar SvgUltimateAddonsForGutenberg = function SvgUltimateAddonsForGutenberg(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 54 54\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgUltimateAddonsForGutenberg;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.9 10v4.1c0 .7-.3 1.2-.9 1.6-2.4 1.4-4.7 2.7-7.1 4.1-.6.4-1.3.4-1.9 0-2.3-1.4-4.6-2.8-7-4.1-.6-.4-.9-.9-.9-1.6V6c0-.7.3-1.2.9-1.6C4.4 3 6.7 1.6 9.1.3c.6-.4 1.3-.4 1.9 0 2.3 1.3 4.6 2.7 7 4 .6.4.9.9.9 1.6V10zm-8.7-6c-.5 0-1 .2-1.5.4-.3.2-.7.4-1.1.6-.9.6-1.8 1.1-2.8 1.7-.2.1-.4.4-.4.7 0 .3.2.5.4.6.3.2.6.1.9 0C7 7.3 8.2 6.5 9.5 5.8c.8-.4 1.7-.2 2.1.5.4.7.1 1.6-.6 2.1-.5.3-1 .6-1.4.8-.8.5-1.6.9-2.5 1.4-.3.2-.4.5-.4.8.1.3.3.6.6.6.2 0 .4 0 .6-.1 1.3-.7 2.5-1.5 3.8-2.2.7-.4 1.6-.2 2 .4.5.7.3 1.7-.5 2.2-1.3.7-2.6 1.5-3.8 2.2-.4.2-.5.7-.3 1.1.2.4.7.5 1.1.3 1.3-.8 2.6-1.5 4-2.3 1.2-.7 1.7-2.1 1.3-3.4-.3-1.1-1-1.8-2.1-2.1-.1 0-.2-.1-.1-.2.1-.2.1-.4.1-.6C13.4 5.5 12 4 10.2 4zm-5.8 7.3c0 .2 0 .4.1.7.5 2 2.7 3 4.5 1.9 1.3-.7 2.6-1.5 3.8-2.2.4-.2.5-.7.3-1.1-.2-.4-.7-.5-1.1-.3-.4.2-.7.4-1.1.6-.9.5-1.8 1-2.7 1.6-.6.3-1.1.3-1.7-.1-.9-.6-.8-1.9.2-2.5 1.3-.7 2.6-1.5 3.8-2.2.5-.2.7-.7.4-1-.2-.4-.7-.5-1.1-.3-1.3.7-2.6 1.5-3.9 2.2-1 .6-1.4 1.5-1.5 2.7z\"\n});\n\nvar SvgUltimateBlocks = function SvgUltimateBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgUltimateBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 0C4 0 0 4 0 9s4 9 9 9 9-4 9-9-4-9-9-9zM6.5 12.6c-.1.1-.1.1-.2.1l-2 .1c-.2 0-.3-.1-.4-.3l-.1-2c0-.1 0-.2.1-.2l5.5-6.4c.1-.1.3-.2.5 0L12 5.7c.1.1.2.3 0 .5l-5.5 6.4zm7.5.2H9.5c-.2 0-.4-.2-.4-.5 0-.2.2-.5.4-.5H14c.2 0 .4.2.4.5s-.2.5-.4.5zm0-1.8h-2.8c-.2 0-.4-.2-.4-.5 0-.2.2-.5.4-.5H14c.2 0 .4.2.4.5s-.2.5-.4.5zm.1-1.8h-1.2c-.2 0-.3-.2-.3-.5s.1-.5.3-.5h1.2c.2 0 .3.2.3.5s-.1.5-.3.5z\"\n});\n\nvar SvgUltimatePost = function SvgUltimatePost(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 18 18\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgUltimatePost;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01A8.87 8.87 0 0110 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z\"\n});\n\nvar SvgWordpress = function SvgWordpress(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"-2 -2 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgWordpress;","/**\n * External dependencies\n */\nimport React, {Component} from 'react';\n\nimport SVGRedux from '../../assets/img/icon.svg'\nimport SVGAcfBlocks from './images/acf-blocks.svg'\nimport SVGAtomicBlocks from './images/atomic-blocks.svg'\nimport SVGAdvancedCustomFields from './images/advanced-custom-fields.svg'\nimport SVGAdvancedGutenbergBlocks from './images/advanced-gutenberg-blocks.svg'\nimport SVGBlockOptions from './images/block-options.svg'\nimport SVGBlockSlider from './images/block-slider.svg'\nimport SVGCoblocks from './images/coblocks.svg'\nimport SVGCreativeBlocks from './images/creative-blocks.svg'\nimport SVGEditorPlus from './images/editorplus.svg'\nimport SVGElegantBlocks from './images/elegant-blocks.svg'\nimport SVGEnhancedBlocks from './images/enhanced-blocks.svg'\nimport SVGEssentialBlocks from './images/essential-blocks.svg'\nimport SVGFormsGutenberg from './images/forms-gutenberg.svg'\nimport SVGGetwid from './images/getwid.svg'\nimport SVGGhostkit from './images/ghostkit.svg'\nimport SVGGuteblock from './images/guteblock.svg'\n// import SVGGutenbergBlock from './images/gutenberg-blocks.png'\nimport SVGGutentor from './images/gutentor.svg'\nimport SVGKadenceBlocks from './images/kadence-blocks.svg'\nimport SVGKiokenBlocks from './images/kioken-blocks.svg'\nimport SVGOtterBlocks from './images/otter-blocks.svg'\nimport SVGQodeblock from './images/qodeblock.svg'\nimport SVGQubely from './images/qubely.svg'\nimport SVGSnowMonkeyBlocks from './images/snow-monkey-blocks.svg'\nimport SVGStackableUltimateGutenbergBlocks from './images/stackable-ultimate-gutenberg-blocks.svg'\nimport SVGUltimateAddonsForGutenberg from './images/ultimate-addons-for-gutenberg.svg'\nimport SVGUltimateBlocks from './images/ultimate-blocks.svg'\nimport SVGUltimatePost from './images/ultimate-post.svg'\nimport SVGWordPress from './images/wordpress.svg'\n\n// export const gutentor = () => {\n// \treturn <SVGGutentorIcon width=\"20\" height=\"20\"/>\n// }\n\n\nexport const redux = () => { return <SVGRedux width=\"20\" height=\"20\"/> }\nexport const acfblocks = () => { return <SVGAcfBlocks width=\"20\" height=\"20\"/> }\nexport const atomicblocks = () => { return <SVGAtomicBlocks width=\"20\" height=\"20\"/> }\nexport const advancedcustomfields = () => { return <SVGAdvancedCustomFields width=\"20\" height=\"20\"/> }\nexport const advancedgutenbergblocks = () => { return <SVGAdvancedGutenbergBlocks width=\"20\" height=\"20\"/> }\nexport const blockoptions = () => { return <SVGBlockOptions width=\"20\" height=\"20\"/> }\nexport const blockslider = () => { return <SVGBlockSlider width=\"20\" height=\"20\"/> }\nexport const coblocks = () => { return <SVGCoblocks width=\"20\" height=\"20\"/> }\nexport const creativeblocks = () => { return <SVGCreativeBlocks width=\"20\" height=\"20\"/> }\nexport const editorplus = () => { return <SVGEditorPlus width=\"20\" height=\"20\"/> }\nexport const elegantblocks = () => { return <SVGElegantBlocks width=\"20\" height=\"20\"/> }\nexport const enhancedblocks = () => { return <SVGEnhancedBlocks width=\"20\" height=\"20\"/> }\nexport const essentialblocks = () => { return <SVGEssentialBlocks width=\"20\" height=\"20\"/> }\nexport const formsgutenberg = () => { return <SVGFormsGutenberg width=\"20\" height=\"20\"/> }\nexport const getwid = () => { return <SVGGetwid width=\"20\" height=\"20\"/> }\nexport const ghostkit = () => { return <SVGGhostkit width=\"20\" height=\"20\"/> }\nexport const guteblock = () => { return <SVGGuteblock width=\"20\" height=\"20\"/> }\nexport const gutenbergblock = () => { return <SVGGutenbergBlock width=\"20\" height=\"20\"/> }\nexport const gutentor = () => { return <SVGGutentor width=\"20\" height=\"20\"/> }\nexport const kadenceblocks = () => { return <SVGKadenceBlocks width=\"20\" height=\"20\"/> }\nexport const kiokenblocks = () => { return <SVGKiokenBlocks width=\"20\" height=\"20\"/> }\nexport const otterblocks = () => { return <SVGOtterBlocks width=\"20\" height=\"20\"/> }\nexport const qodeblock = () => { return <SVGQodeblock width=\"20\" height=\"20\"/> }\nexport const qubely = () => { return <SVGQubely width=\"20\" height=\"20\"/> }\nexport const snowmonkeyblocks = () => { return <SVGSnowMonkeyBlocks width=\"20\" height=\"20\"/> }\nexport const stackableultimategutenbergblocks = () => { return <SVGStackableUltimateGutenbergBlocks width=\"20\" height=\"20\"/> }\nexport const ultimateaddonsforgutenberg = () => { return <SVGUltimateAddonsForGutenberg width=\"20\" height=\"20\"/> }\nexport const ultimateblocks = () => { return <SVGUltimateBlocks width=\"20\" height=\"20\"/> }\nexport const ultimatepost = () => { return <SVGUltimatePost width=\"20\" height=\"20\"/> }\nexport const wordpress = () => { return <SVGWordPress width=\"20\" height=\"20\"/> }\n\nimport SVGReduxTemplatesIcon from '../../assets/img/icon.svg'\nimport SVGReduxTemplatesColorIcon from '../../assets/img/icon-color.svg'\n//\n//\n// export const reqSvgs = require.context ( './images/third-party', true, /\\.svg$/ )\n//\n// export const reqSvgsKeys = reqSvgs.keys()\n//\n// const iconLoader = (path) => import(path);\n//\n// export const icons = {\n// \t'redux': iconLoader('../../assets/img/icon.svg'),\n// \t'forms-gutenberg': iconLoader('./images/forms-gutenberg.svg')\n// }\n//\n// export const svgs = reqSvgs\n// \t.keys ()\n// \t.reduce ( ( images, path ) => {\n// \t\timages[path.replace('./', '').replace('.svg', '')] = reqSvgs ( path )\n// \t\treturn images\n// \t}, {} )\n//\n// function importAll(r) {\n// \tlet images = {};\n// \tr.keys().map((item, index) => { images[item.replace('./', '').replace('.svg', '')] = r(item); });\n// \treturn images;\n// }\n// export const images = importAll(require.context( './images/third-party', false, /\\.(svg)$/));\n\n\n\n/**\n * WordPress dependencies\n */\nimport {cloneElement, render} from '@wordpress/element'\nimport domReady from '@wordpress/dom-ready'\nimport {updateCategory} from '@wordpress/blocks'\n\nexport const colorizeIcon = SvgIcon => {\n\treturn cloneElement(SvgIcon, {\n\t\tfill: 'url(#redux-gradient)',\n\t\tclassName: 'redux-icon-gradient',\n\t})\n}\n\nexport const thirdPartyIcon = (icon) => {\n\tif (icon) {\n\t\treturn <icon width=\"20\" height=\"20\"/>\n\t}\n}\n\n// Add an icon to our block category.\nif (typeof window.wp.blocks !== 'undefined' && typeof window.wp.blocks.updateCategory !== 'undefined') {\n\tupdateCategory(redux_templates.i18n, {\n\t\ticon: colorizeIcon(<SVGReduxTemplatesIcon className=\"components-panel__icon\" width=\"20\" height=\"20\"/>),\n\t})\n}\n\n// Add our SVG gradient placeholder definition that we'll reuse.\ndomReady(() => {\n\tconst redux_templatesGradient = document.createElement('DIV')\n\tdocument.querySelector('body').appendChild(redux_templatesGradient)\n\trender(\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tclassName=\"redux-gradient\"\n\t\t\theight=\"0\"\n\t\t\twidth=\"0\"\n\t\t\tstyle={{opacity: 0}}\n\t\t>\n\t\t\t<defs>\n\t\t\t\t<linearGradient id=\"redux-gradient\">\n\t\t\t\t\t<stop offset=\"0%\" stopColor=\"#8c33da\" stopOpacity=\"1\"/>\n\t\t\t\t\t<stop offset=\"100%\" stopColor=\"#f34957\" stopOpacity=\"1\"/>\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t</svg>,\n\t\tredux_templatesGradient\n\t)\n})\n\nexport const ReduxTemplatesIcon = () => {\n\treturn <SVGReduxTemplatesIcon width=\"20\" height=\"20\"/>\n}\n\nexport const ReduxTemplatesIconColor = () => {\n\treturn <SVGReduxTemplatesColorIcon width=\"20\" height=\"20\"/>\n}\n\nexport const ReduxTemplatesIconColorize = () => {\n\treturn colorizeIcon(<SVGReduxTemplatesIcon width=\"20\" height=\"20\"/>)\n}\nexport const core = () => {\n\treturn <SVGWordPress width=\"20\" height=\"20\"/>\n}\n//\n// export const AdvancedGutenbergBlocks = () => {\n// \treturn <SVGAdvancedGutenbergBlocksIcon width=\"20\" height=\"20\"/>\n// }\n// export const advancedgutenbergblocks = () => <AdvancedGutenbergBlocks/>\n//\n// export const AdvancedGutenberg = () => {\n// \treturn <SVGAdvancedGutenbergIcon width=\"20\" height=\"20\"/>\n// }\n// export const advancedgutenbergIcon = () => <AdvancedGutenberg/>\n//\n// export const AtomicBlocks = () => {\n// \treturn <SVGAtomicBlocksIcon width=\"20\" height=\"20\"/>\n// }\n// export const atomicblocks = () => <AtomicBlocks/>\n//\n// export const CoBlocks = () => {\n// \treturn <SVGCoBlocksIcon width=\"20\" height=\"20\"/>\n// }\n// export const Coblocks = () => <CoBlocks/>\n// export const coblocks = () => <CoBlocks/>\n//\n// export const Stackable = () => {\n// \treturn <SVGStackableIcon width=\"20\" height=\"20\"/>\n// }\n// export const stackable = () => <Stackable/>\n// export const stackableultimategutenbergblocks = () => <Stackable/>\n//\n// export const Qubely = () => {\n// \treturn <SVGQubelyIcon width=\"20\" height=\"20\"/>\n// }\n// export const qubely = () => <Qubely/>\n//\n// export const Kioken = () => {\n// return <SVGKiokenIcon width=\"20\" height=\"20\"/>\n// }\n// export const kioken = () => <Kioken/>\n// export const kiokenblocks = () => <Kioken/>\n//\n// export const kadenceblocks = () => {\n// \treturn <SVGKadenceIcon width=\"20\" height=\"20\"/>\n// }\n//\n// export const CreativeBlocks = () => {\n// \treturn <SVGCreativeBlocksIcon width=\"20\" height=\"20\"/>\n// }\n// export const creativeblocks = () => <CreativeBlocks/>\n// export const qb = () => <CreativeBlocks/>\n//\n// export const EssentialBlocks = () => {\n// \treturn <SVGEssentialBlocksIcon width=\"20\" height=\"20\"/>\n// }\n// export const essentialblocks = () => <EssentialBlocks/>\n// export const eb = () => <EssentialBlocks/>\n//\n// export const UltimateAddonsForGutenberg = () => {\n// \treturn <SVGUltimateAddonsForGutenbergIcon width=\"20\" height=\"20\"/>\n// }\n// export const ultimateaddonsforgutenberg = () => <UltimateAddonsForGutenberg/>\n//\n//\n// export const UltimateBlocks = () => {\n// \treturn <SVGUltimateBlocksIcon width=\"20\" height=\"20\"/>\n// }\n// export const ultimateblocks = () => <UltimateBlocks/>\n//\n// export const gutentor = () => {\n// \treturn <SVGGutentorIcon width=\"20\" height=\"20\"/>\n// }\n//\n//\n// export const GutenbergForms = () => {\n// \treturn <SVGGutenbergFormsIcon width=\"20\" height=\"20\"/>\n// }\n// export const gutenbergforms = () => <GutenbergForms/>\n// export const formsgutenberg = () => <GutenbergForms/>\n//\n","/**\n * Library Button\n */\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready'\nimport { render } from '@wordpress/element'\n\n/**\n * External dependencies\n */\nimport './editor.scss'\nimport './blocks/blocks'\nimport './plugins/sidebar-share'\nimport './plugins/share-block-btn'\nimport './plugins/export'\nimport './plugins/export-page-menu-item'\nimport './plugins/library-context-menu-item'\nimport TooltipBox from './challenge/tooltip/TooltipBox';\nimport {handlingLocalStorageData} from './stores/helper';\nimport ReduxTemplatesChallenge from './challenge'\nimport {ModalManager} from './modal-manager';\nimport LibraryModal from './modal-library';\nimport './custom-css'\nimport WelcomeGuide from './components/welcome-guide';\n\ndomReady(() => {\n setTimeout(() => {\n const challengeDiv = document.createElement('div');\n challengeDiv.className = 'challenge-tooltip-holder';\n document.body.appendChild(challengeDiv);\n const challengeWrapperDiv = document.createElement('div');\n challengeWrapperDiv.className = 'challenge-wrapper';\n document.body.appendChild(challengeWrapperDiv);\n\n if (window.location.hash == '#redux_challenge=1') {\n window.location.hash = '';\n ModalManager.open(<LibraryModal />);\n }\n\t\tif (window.location.hash == '#redux_templates=1') {\n\t\t\twindow.location.hash = '';\n\t\t\tModalManager.open(<LibraryModal />);\n }\n\n // For frontenberg, we open the dialog automatically.\n if (document.body.classList.contains( 'wp-admin' ) === false) {\n ModalManager.open(<LibraryModal />);\n }\n render(<ReduxTemplatesChallenge />, challengeWrapperDiv);\n render(<TooltipBox />, challengeDiv);\n\t\trender(<WelcomeGuide />, challengeDiv)\n handlingLocalStorageData();\n }, 500)\n});\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n'\nimport { ModalManager } from '~redux-templates/modal-manager';\nimport Form from '@rjsf/core';\nimport {BlockPreview} from '@wordpress/block-editor';\nconst {useState} = wp.element;\nconst {apiFetch} = wp;\n\nfunction FeedbackDialog(props) {\n const {title, description, schema, uiSchema, headerImage, headerIcon, data, ignoreData, endpoint, width, buttonLabel} = props;\n const {closeModal, onSuccess} = props;\n\n const [loading, setLoading] = useState(false);\n const [errorMessage, setErrorMessage] = useState(null);\n\n const onSubmit = ({formData}) => {\n const path = `redux/v1/templates/${endpoint ? endpoint : 'feedback'}`;\n if (loading) return;\n setLoading(true);\n apiFetch({\n path,\n method: 'POST',\n data: ignoreData ? formData : {...data, ...formData}\n }).then(data => {\n setLoading(false);\n if (data.success) {\n setErrorMessage(null);\n if (onSuccess) onSuccess(data); else onCloseModal();\n } else {\n console.log('There was an error: ', data);\n setErrorMessage(__('An unexpected error occured, please try again later.', redux_templates.i18n));\n }\n }).catch(err => {\n setLoading(false);\n console.log('There was an error: ', err);\n setErrorMessage(__('An unexpected error occured, please try again later.', redux_templates.i18n));\n });\n }\n\n const onCloseModal = () => {\n if (closeModal) closeModal(); else ModalManager.closeFeedback();\n }\n\n const style = width ? {width} : null;\n const wrapperClassname = width ? 'redux-templates-modal-wrapper feedback-popup-wrapper less-margin' : 'redux-templates-modal-wrapper feedback-popup-wrapper';\n\n return (\n <div className=\"redux-templates-modal-overlay\">\n <div className={wrapperClassname} style={style}>\n <div className=\"feedback-popup-header feedback-popup-header-contact\">\n {headerImage}\n {headerIcon}\n <a className=\"feedback-popup-close\" onClick={onCloseModal}>\n <i className='fas fa-times' />\n </a>\n </div>\n <div className=\"feedback-popup-content\">\n <h3>{title}</h3>\n {errorMessage && <p className=\"error-message\">{errorMessage}</p>}\n <p>{description}</p>\n <div className=\"col-wrapper\">\n <Form schema={schema} uiSchema={uiSchema} onSubmit={onSubmit}>\n <button className=\"feedback-popup-btn feedback-popup-rate-btn\" type=\"submit\">\n {loading && <i className=\"fas fa-spinner fa-pulse\"/>}\n {buttonLabel}\n </button>\n </Form>\n { data && data.editor_blocks &&\n <div className=\"preview-panel\">\n <div className=\"redux-templates-block-preview-hover\" />\n <BlockPreview blocks={data.editor_blocks} />\n </div>\n }\n </div>\n </div> {/* /.feedback-popup-content */}\n </div>\n </div>\n );\n}\n\nexport default FeedbackDialog;\n","import React from 'react';\nconst {useState, useEffect, useRef} = wp.element;\nconst {Spinner} = wp.components;\nimport TextTransition, { presets } from 'react-text-transition';\nconst {__} = wp.i18n\n\nconst MESSAGE_DELAY_MILLISECONDS = 4000;\n\nconst MESSAGES_LIST = [\n __('Please wait while your template is prepared.', redux_templates.i18n),\n __('Fetching the template.', redux_templates.i18n),\n __('We\\'re getting closer now.', redux_templates.i18n),\n __('Wow, this is taking a long time.', redux_templates.i18n),\n __('Gah, this should be done by now!', redux_templates.i18n),\n __('Really, this should be done soon.', redux_templates.i18n),\n __('Are you sure your internet is working?!', redux_templates.i18n),\n __('Give up, it looks like it didn\\'t work...', redux_templates.i18n),\n];\n\nfunction useInterval(callback, delay) {\n const savedCallback = useRef();\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n\n if (delay !== null) {\n let id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}\n\nexport default function ImportingStep(props) {\n const [messageIndex, setMessageIndex] = useState(0);\n const [loadingMessage, setLoadingMessage] = useState(MESSAGES_LIST[0]);\n\n useInterval(() => {\n if (messageIndex === MESSAGES_LIST.length) return;\n setMessageIndex(messageIndex => messageIndex + 1);\n setLoadingMessage([MESSAGES_LIST[messageIndex + 1]]);\n }, MESSAGE_DELAY_MILLISECONDS)\n\n return (\n <div className=\"redux-templates-modal-body\">\n <div className=\"redux-templates-import-wizard-spinner-wrapper\">\n <TextTransition\n text={loadingMessage}\n springConfig={presets.gentle}\n />\n <Spinner/>\n </div>\n </div>\n );\n};\n","import {pluginInfo} from '~redux-templates/stores/dependencyHelper';\n\nconst {apiFetch} = wp;\nconst {compose} = wp.compose;\nconst {withDispatch} = wp.data;\nconst {Fragment, useState} = wp.element;\nconst {__} = wp.i18n;\n\nfunction InstallPluginStep(props) {\n\n const {missingPlugins, toNextStep, onCloseWizard} = props;\n const {setInstalledDependencies} = props;\n const [installingPlugin, setInstallingPlugin] = useState(null);\n const [installedList, setInstalledList] = useState([]);\n const [failedList, setFailedList] = useState([]);\n const [waitingList, setWaitingList] = useState(missingPlugins);\n\n const preInstallInit = () => {\n setInstalledList([]);\n setFailedList([]);\n setWaitingList(missingPlugins);\n setInstallingPlugin(null);\n setInstalledDependencies(false);\n }\n\n const onInstallPlugins = async () => {\n preInstallInit();\n let localInstalledList = [];\n let localFailedList = [];\n let localWaitingList = [...waitingList];\n for (let pluginKey of missingPlugins) {\n const pluginInstance = redux_templates.supported_plugins[pluginKey];\n localWaitingList = localWaitingList.filter(key => key !== pluginKey)\n setWaitingList(localWaitingList);\n if (!pluginKey || !pluginInstance) {\n setInstallingPlugin(null);\n break;\n }\n setInstallingPlugin({...pluginInstance, pluginKey});\n const reduxProSurfix = (pluginInstance.redux_pro) ? '&redux_pro=1' : '';\n await apiFetch({\n path: 'redux/v1/templates/plugin-install?slug=' + pluginKey + reduxProSurfix,\n }).then(res => {\n if (res.success) {\n setInstalledDependencies(true);\n localInstalledList = [...localInstalledList, pluginKey];\n setInstalledList(localInstalledList);\n if (localWaitingList.length === 0) setInstallingPlugin(null);\n } else {\n localFailedList = [...localFailedList, pluginKey]\n setFailedList(localFailedList);\n if (localWaitingList.length === 0) setInstallingPlugin(null);\n }\n })\n .catch(res => {\n localFailedList = [...localFailedList, pluginKey]\n setFailedList(localFailedList);\n if (localWaitingList.length === 0) setInstallingPlugin(null);\n });\n }\n }\n if (waitingList.length === 0 && failedList.length === 0 && installingPlugin === null)\n toNextStep();\n return (\n\n <Fragment>\n <div className=\"redux-templates-modal-body\">\n <h5>{__('Install Required Plugins', redux_templates.i18n)}</h5>\n <p>{__('Plugins needed to import this template are missing. Required plugins will be installed and activated automatically.', redux_templates.i18n)}</p>\n {\n (installingPlugin === null && failedList.length > 0) &&\n (<p className='error installError'>\n\t {__('The following plugin(s) failed to install properly. Please manually install them yourself before attempting another import.', redux_templates.i18n)}\n </p>)\n }\n\n <ul className=\"redux-templates-import-progress\">\n {\n missingPlugins &&\n missingPlugins.map(pluginKey => {\n\n let plugin = pluginInfo(pluginKey)\n\n if (installingPlugin && installingPlugin.pluginKey === pluginKey)\n return (\n <li className=\"installing\" key={installingPlugin.pluginKey}>{installingPlugin.name}\n <i className=\"fas fa-spinner fa-pulse\"/></li>);\n if (failedList.includes(pluginKey))\n return (<li className=\"failure\" key={pluginKey}>{plugin.name} <a href={plugin.url} target=\"_blank\"><i className=\"fas fa-external-link-alt\"/></a></li>);\n if (waitingList.includes(pluginKey))\n return (<li className=\"todo\" key={pluginKey}>{plugin.name} {plugin.url &&\n <a href={plugin.url} target=\"_blank\"><i className=\"fas fa-external-link-alt\"/></a>\n }</li>);\n if (installedList.includes(pluginKey))\n return (<li className=\"success\" key={pluginKey}>{plugin.name} <i\n className=\"fas fa-check-square\"/></li>);\n })\n }\n </ul>\n </div>\n <div className=\"redux-templates-modal-footer\">\n {waitingList.length !== 0 &&\n <button className=\"button button-primary\" disabled={installingPlugin !== null}\n onClick={() => onInstallPlugins()}>\n {installingPlugin !== null && <i className=\"fas fa-spinner fa-pulse\"/>}\n <span>{__('Install', redux_templates.i18n)}</span>\n </button>\n }\n <button className=\"button button-secondary\" disabled={installingPlugin !== null}\n onClick={onCloseWizard}>\n {__('Cancel', redux_templates.i18n)}\n </button>\n </div>\n </Fragment>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setInstalledDependencies\n } = dispatch('redux-templates/sectionslist');\n return {\n setInstalledDependencies\n };\n })\n])(InstallPluginStep);\n","import {pluginInfo} from '~redux-templates/stores/dependencyHelper';\nimport {Tooltip} from '@wordpress/components';\n\nconst {apiFetch} = wp;\nconst {compose} = wp.compose;\nconst {withDispatch} = wp.data;\nconst {Fragment, useState} = wp.element;\nconst {__} = wp.i18n;\n\nfunction OptionStep(props) {\n\n const {setImportToAppend, toNextStep, onCloseWizard} = props;\n\n const onNextStep = (isToAppend) => {\n setImportToAppend(isToAppend);\n toNextStep();\n }\n\n return (\n\n <Fragment>\n <div className=\"redux-templates-modal-body\">\n <h5>{__('Append or Replace', redux_templates.i18n)}</h5>\n <p>{__('You have existing content on this page. How would you like to handle the import of this page template?', redux_templates.i18n)}</p>\n\t <div style={{textAlign:'center', marginTop: '30px'}}>\n\t\t {/*<Tooltip text={__('This template will be added to the bottom of the existing content.', redux_templates.i18n)} position=\"bottom center\">*/}\n\t\t\t <button className=\"button button-primary\" onClick={() => onNextStep(true)} style={{marginRight: '10px'}}>\n\t\t\t\t {__('Append to Content', redux_templates.i18n)}\n\t\t\t </button>\n\t\t {/*</Tooltip>*/}\n\t\t {/*<Tooltip text={__('All the existing content will be replaced with this new template.', redux_templates.i18n)} position=\"top right\">*/}\n\t\t\t <button className=\"button button-primary\" onClick={() => onNextStep(false)}>\n\t\t\t\t {__('Replace all Content', redux_templates.i18n)}\n\t\t\t </button>\n\t\t {/*</Tooltip>*/}\n\t </div>\n </div>\n <div className=\"redux-templates-modal-footer\">\n <button className=\"button button-secondary\" onClick={onCloseWizard}>\n {__('Cancel', redux_templates.i18n)}\n </button>\n </div>\n </Fragment>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setImportToAppend\n } = dispatch('redux-templates/sectionslist');\n return {\n setImportToAppend\n };\n })\n])(OptionStep);\n","const {Fragment} = wp.element;\nconst {__} = wp.i18n;\n\nimport ReduxTemplatesPremiumBox from './ReduxTemplatesPremiumBox';\nimport {pluginInfo} from '~redux-templates/stores/dependencyHelper';\nconst REDUXTEMPLATES_PRO_KEY = 'redux-pro';\nexport default function ProPluginStep(props) {\n const {missingPros, onCloseWizard} = props;\n\n if ( missingPros.indexOf(REDUXTEMPLATES_PRO_KEY) >= 0 ) return <ReduxTemplatesPremiumBox />\n return (\n <Fragment>\n <div className=\"redux-templates-modal-body\">\n <h5>{__('Additional Plugins Required', redux_templates.i18n)}</h5>\n <p>{__('The following premium plugin(s) are required to import this template:', redux_templates.i18n)}</p>\n <ul className=\"redux-templates-import-progress\">\n {\n missingPros.map(pluginKey => {\n let plugin = pluginInfo(pluginKey)\n return (\n <li className='installing' key={pluginKey}>\n {plugin.name} {plugin.url &&\n <a href={plugin.url} target=\"_blank\"><i className=\"fas fa-external-link-alt\"/></a>\n }\n </li>);\n })\n }\n </ul>\n\n </div>\n <div className=\"redux-templates-modal-footer\">\n <a className=\"button button-secondary\" onClick={onCloseWizard}>\n {__('Close', redux_templates.i18n)}\n </a>\n </div>\n </Fragment>\n );\n}\n\n","const {__} = wp.i18n\n\n\nexport default function ReduxTemplatesActivateBox({onActivateRedux, activating}) {\n\n return (\n <div className=\"redux-templates-modal-body\">\n <div className=\"section-box premium-box\">\n <h3>{__('Registration Required to Import Templates', redux_templates.i18n)}</h3>\n <p>{__(' Register now to import templates from the Redux template library in a single click.', redux_templates.i18n)}</p>\n <ul>\n <li><strong>{__('Unlimited', redux_templates.i18n)}</strong> {__('use of our free templates.', redux_templates.i18n)}</li>\n\t <li><strong>{__('Updates', redux_templates.i18n)}</strong> {__('to the library.', redux_templates.i18n)}</li>\n <li><strong>{__('Google Fonts', redux_templates.i18n)}</strong> {__('manual updates.', redux_templates.i18n)}</li>\n </ul>\n <p>\n\t <button className=\"button button-primary\"\n\t disabled={activating}\n\t onClick={() => onActivateRedux()}>\n\t\t {activating && <i className=\"fas fa-spinner fa-pulse\" style={{marginRight:'5px'}}/>}\n\t\t <span>{__('Register for Free', redux_templates.i18n)}</span>\n\t </button>\n </p>\n\t <p style={{fontSize:'1.1em'}}><small><em dangerouslySetInnerHTML={{__html: redux_templates.tos}} /></small></p>\n </div>\n </div>\n );\n}\n","const {__} = wp.i18n\n\nexport default function ReduxTemplatesPremiumBox(props) {\n return (\n <div className=\"redux-templates-modal-body\">\n <div className=\"section-box premium-box\">\n <h3>{__('Upgrade to Redux Pro', redux_templates.i18n)}</h3>\n\n <p>{__('Thanks for giving our library a try! Upgrade to Redux Pro to unlock even more designs and to continue using our library.', redux_templates.i18n)}</p>\n <ul>\n\t <li><strong>{redux_templates.stats.sections}</strong> {__('Section Templates', redux_templates.i18n)}</li>\n\t <li><strong>{redux_templates.stats.pages}</strong> {__('Full Page Templates', redux_templates.i18n)}</li>\n\t <li><strong>{redux_templates.stats.collections}</strong> {__('Template Kits', redux_templates.i18n)}</li>\n <li><strong>{__('And so much more!', redux_templates.i18n)}</strong></li>\n </ul>\n <p>\n <a href={redux_templates.u + 'import_wizard'} className=\"redux-templates-upgrade-button\" title=\"{__('Redux Pro', redux_templates.i18n)}\"\n target='_blank'>{__('Upgrade Now', redux_templates.i18n)}</a>\n </p>\n </div>\n </div>\n );\n}\n","const {__} = wp.i18n;\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {useState, useEffect} = wp.element;\nconst {apiFetch} = wp;\n\nimport InstallPluginStep from './InstallPluginStep';\nimport ProPluginStep from './ProPluginsStep';\nimport OptionStep from './OptionStep';\nimport ImportingStep from './ImportingStep';\nimport ReduxTemplatesPremiumBox from './ReduxTemplatesPremiumBox';\nimport ReduxTemplatesActivateBox from './ReduxTeamplatesActivateBox';\n\nimport {requiresInstall, requiresPro, requiresReduxPro, isReduxProInstalled} from '~redux-templates/stores/dependencyHelper'\n\nimport '../modals.scss'\nimport './style.scss'\n\nconst PRO_STEP = 0;\nconst PLUGIN_STEP = 1;\nconst OPTION_STEP = 2;\nconst IMPORT_STEP = 3;\nconst REDUX_PRO_STEP = -1;\nconst REDUX_ACTIVATE_STEP = 999;\nconst tourPlugins = ['qubely', 'kioken-blocks'];\n\nfunction ImportWizard(props) {\n const {startImportTemplate, setImportingTemplate, setActivateDialogDisplay, appendErrorMessage} = props;\n const {isChallengeOpen, importingTemplate, activateDialogDisplay, isPostEmpty, isInstalledDependencies} = props;\n const [currentStep, setCurrentStep] = useState(PRO_STEP);\n const [importing, setImporting] = useState(false);\n const [activating, setActivating] = useState(false);\n const [missingPlugins, setMissingPlugins] = useState([]);\n\n useEffect(() => {\n if (importingTemplate) {\n \tif ( !importingTemplate.proDependenciesMissing ) {\n\t\t importingTemplate.proDependenciesMissing = [];\n\t }\n\t if ( !importingTemplate.installDependenciesMissing ) {\n\t\t importingTemplate.installDependenciesMissing = [];\n\t }\n // IMPORTANT First check: can you use redux pro?\n const leftTry = isNaN(redux_templates.left) === false ? parseInt(redux_templates.left) : 0;\n if (redux_templates.mokama !== '1' && leftTry < 1) {\n //setCurrentStep(REDUX_ACTIVATE_STEP);\n\t setCurrentStep(REDUX_PRO_STEP);\n return;\n }\n /* Redux pro check */\n if (requiresReduxPro(importingTemplate)) {\n setCurrentStep(REDUX_PRO_STEP);\n return;\n }\n // Start with Pro step\n // When all OK with Pro Step, move to Plugin Step, on the way, prepare reduxProMergedPlugins.\n if (importingTemplate && currentStep === PRO_STEP && requiresPro(importingTemplate) === false) {\n setCurrentStep(PLUGIN_STEP);\n if (isReduxProInstalled()) {\n setMissingPlugins(\n [].concat(importingTemplate.proDependenciesMissing, importingTemplate.installDependenciesMissing)\n .filter(plugin => plugin)\n );\n } else {\n\t setMissingPlugins(importingTemplate.installDependenciesMissing.filter(plugin => plugin));\n }\n\n }\n if (importingTemplate && currentStep === PLUGIN_STEP && requiresInstall(importingTemplate) === false)\n if (isPostEmpty === false) setCurrentStep(OPTION_STEP); else setCurrentStep(IMPORT_STEP);\n if (importingTemplate && currentStep === OPTION_STEP && isPostEmpty === true)\n setCurrentStep(IMPORT_STEP);\n if (importingTemplate && currentStep === IMPORT_STEP && importing === false) {\n setImporting(true);\n try {\n startImportTemplate();\n } catch (e) {\n console.log('importing exception', e);\n setImporting(false);\n setCurrentStep(PLUGIN_STEP);\n setImportingTemplate(null);\n }\n }\n }\n }, [importingTemplate, currentStep, activateDialogDisplay])\n\n // Activate dialog disply\n useEffect(() => {\n if (activateDialogDisplay === true) { // Activate dialog hard reset case\n setCurrentStep(REDUX_ACTIVATE_STEP);\n setActivateDialogDisplay(false);\n }\n }, [activateDialogDisplay]);\n\n // On the initial loading\n useEffect(() => {\n setActivateDialogDisplay(false);\n }, []);\n\n const toNextStep = () => {\n if (isChallengeOpen) return;\n setCurrentStep(currentStep + 1);\n };\n\n const onCloseWizard = () => {\n if (isChallengeOpen) return; // When in tour mode, we don't accept mouse event.\n if (importing) return;\n setCurrentStep(PLUGIN_STEP);\n setImportingTemplate(null);\n };\n\n const activateReduxTracking = () => {\n setActivating(true);\n\t apiFetch({path: 'redux/v1/templates/activate'}).then(response => {\n\t\t if (response.success) {\n\t\t\t redux_templates.left = response.data.left;\n\t\t }\n\t\t setCurrentStep(PRO_STEP);\n\t\t setActivating(false);\n\t }).catch(error => {\n\t\t appendErrorMessage(error.code + ' : ' + error.message);\n\t\t setCurrentStep(PRO_STEP);\n\t\t setActivating(false);\n\t });\n }\n\n\n if (isChallengeOpen) {\n // exception handling for tour mode\n if (currentStep !== PLUGIN_STEP) setCurrentStep(PLUGIN_STEP)\n }\n\n if (!importingTemplate) return null;\n return (\n <div className=\"redux-templates-modal-overlay\">\n <div className=\"redux-templates-modal-wrapper\" data-tut=\"tour__import_wizard\">\n <div className=\"redux-templates-modal-header\">\n <h3>{__('Import Wizard', redux_templates.i18n)}</h3>\n <button className=\"redux-templates-modal-close\" onClick={onCloseWizard}>\n <i className={'fas fa-times'}/>\n </button>\n </div>\n <div className=\"redux-templates-importmodal-content\">\n {(currentStep === PRO_STEP) && requiresPro(importingTemplate) &&\n <ProPluginStep missingPros={importingTemplate.proDependenciesMissing } onCloseWizard={onCloseWizard} />}\n {(currentStep === PLUGIN_STEP) &&\n <InstallPluginStep missingPlugins={isChallengeOpen ? tourPlugins : missingPlugins} toNextStep={toNextStep}\n onCloseWizard={onCloseWizard}/>}\n {currentStep === OPTION_STEP && <OptionStep toNextStep={toNextStep} onCloseWizard={onCloseWizard} />}\n {currentStep === IMPORT_STEP && <ImportingStep />}\n\t {currentStep === REDUX_ACTIVATE_STEP && <ReduxTemplatesActivateBox onActivateRedux={activateReduxTracking} activating={activating} />}\n {currentStep === REDUX_PRO_STEP && <ReduxTemplatesPremiumBox />}\n {isInstalledDependencies && <iframe src='./' width=\"0\" height=\"0\" />}\n </div>\n </div>\n </div>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setImportingTemplate, setActivateDialogDisplay, appendErrorMessage} = dispatch('redux-templates/sectionslist');\n return {\n setImportingTemplate,\n setActivateDialogDisplay,\n appendErrorMessage\n };\n }),\n\n withSelect((select, props) => {\n const {getChallengeOpen, getImportingTemplate, getActivateDialogDisplay, getInstalledDependencies} = select('redux-templates/sectionslist');\n const {isEditedPostEmpty} = select('core/editor');\n return {\n isChallengeOpen: getChallengeOpen(),\n importingTemplate: getImportingTemplate(),\n activateDialogDisplay: getActivateDialogDisplay(),\n isPostEmpty: isEditedPostEmpty(),\n isInstalledDependencies: getInstalledDependencies()\n };\n })\n])(ImportWizard);\n","\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","const {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst { useState, useEffect} = wp.element;\nimport '../stores';\n\nimport {Modal, ModalManager} from '../modal-manager'\nimport TabHeader from '../components/tab-header';\nimport WithSidebarLayout from './layout-with-sidebar';\nimport CollectionView from './view-collection';\nimport SavedView from './view-saved';\nimport ImportWizard from '../modal-import-wizard';\nimport ErrorNotice from '../components/error-notice';\nimport ChallengeFinalTemplate from '~redux-templates/challenge/final-templates';\nimport FabWrapper from '../components/fab-wrapper';\nimport {processImportHelper} from '~redux-templates/stores/actionHelper';\nimport './style.scss'\n\n\nfunction LibraryModal(props) {\n const {\n fetchLibraryFromAPI, activeCollection, activeItemType, errorMessages, importingTemplate, challengeFinalStatus, isChallengeOpen,\n setLoading, setImportingTemplate, clearSearch, clearState\n } = props;\n const [loaded, setLoaded] = useState(false);\n const [escKeyPressed, setEscKeyPressed] = useState(false);\n\n let stateLibrary = null;\n useEffect(() => {\n\t\tclearState();\n stateLibrary = fetchLibraryFromAPI();\n if (stateLibrary === null && loaded === false) { // One to be called at first.\n setLoading(true);\n setLoaded(true);\n }\n const handleKeyUp = ({keyCode}) => {\n if (keyCode === 27) {\n setEscKeyPressed(true);\n }\n }\n document.addEventListener('keyup', handleKeyUp);\n return () => {\n document.removeEventListener('keyup', handleKeyUp);\n }\n }, []);\n\n useEffect(() => {\n if (escKeyPressed) {\n setEscKeyPressed(false);\n if (ModalManager.isCustomizerOpened()) {\n ModalManager.closeCustomizer();\n } else {\n if (importingTemplate)\n setImportingTemplate(null);\n else {\n ModalManager.close();\n }\n }\n }\n }, [escKeyPressed])\n\n const hasSidebar = () => {\n return ((activeItemType !== 'collection' || activeCollection === null) && activeItemType !== 'saved');\n }\n\n // read block data to import and give the control to actual import\n const processImport = () => {\n if (importingTemplate) processImportHelper();\n }\n\n\n return (\n <Modal className=\"redux-templates-builder-modal-pages-list\"\n customClass=\"redux-templates-builder-modal-template-list\"\n openTimeoutMS={0} closeTimeoutMS={0}>\n <TabHeader/>\n {\n errorMessages && errorMessages.length > 0 &&\n <ErrorNotice errorMessages={errorMessages}/>\n }\n <div className=\"redux-templates-collections-modal-body\">\n {hasSidebar() && <WithSidebarLayout/>}\n {(hasSidebar() === false && activeItemType === 'collection') && <CollectionView/>}\n {(hasSidebar() === false && activeItemType !== 'collection') && <SavedView/>}\n </div>\n {\n importingTemplate && <ImportWizard startImportTemplate={processImport} />\n }\n { (challengeFinalStatus !== '') && <ChallengeFinalTemplate finalStatus={challengeFinalStatus} /> }\n { !isChallengeOpen && <FabWrapper /> }\n </Modal>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setLoading,\n setLibrary,\n setImportingTemplate,\n clearSearch,\n\t\t\tclearState\n } = dispatch('redux-templates/sectionslist');\n\n return {\n setLoading,\n setLibrary,\n setImportingTemplate,\n clearSearch,\n\t\t\tclearState\n };\n }),\n\n withSelect((select) => {\n const {fetchLibraryFromAPI, getActiveCollection, getActiveItemType, getErrorMessages, getImportingTemplate, getChallengeOpen, getChallengeFinalStatus} = select('redux-templates/sectionslist');\n return {\n fetchLibraryFromAPI,\n activeCollection: getActiveCollection(),\n activeItemType: getActiveItemType(),\n errorMessages: getErrorMessages(),\n importingTemplate: getImportingTemplate(),\n challengeFinalStatus: getChallengeFinalStatus(),\n isChallengeOpen: getChallengeOpen()\n };\n })\n])(LibraryModal);\n","const { Fragment } = wp.element;\nimport Sidebar from '../sidebar';\nimport TemplateListSubHeader from '~redux-templates/components/template-list-subheader';\nimport TemplateList from '../view-template-list';\n\nexport default function WithSidebarCollection (props) {\n return (\n <Fragment>\n <div id=\"redux-templates-collection-modal-sidebar\" className=\"redux-templates-collection-modal-sidebar\">\n <Sidebar />\n </div>\n <div className=\"redux-templates-collection-modal-content-area\" data-tut=\"tour__main_body\" id=\"modalContent\">\n <TemplateListSubHeader />\n <TemplateList />\n </div>\n </Fragment>\n );\n}\n","const {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {__} = wp.i18n;\n\nimport uniq from 'lodash/uniq';\n\nfunction CategoryFilter (props) {\n const {categoryData, activeCategory, activePriceFilter, loading, itemType} = props;\n const {setActiveCategory} = props;\n\n\n // On the top, All Block, All Template, All Template Kit etc\n const itemTypeLabel = () => {\n if (itemType === 'section') return __('Section', redux_templates.i18n);\n if (itemType === 'page') return __('Template', redux_templates.i18n);\n if (itemType === 'collection') return __('Template Kit', redux_templates.i18n);\n };\n\n const totalItemCountLabel = () => {\n let totalArr = [], filteredArr = [];\n categoryData.forEach((category) => {\n if (category.hasOwnProperty('filteredData')) filteredArr = [...filteredArr, ...category.filteredData];\n totalArr = [...totalArr, ...category.ids];\n });\n return (activePriceFilter !== '') ? uniq(filteredArr).length + '/' + uniq(totalArr).length : uniq(totalArr).length;\n };\n\n const isDisabledCategory = (data) => (data && ((data.hasOwnProperty('filteredData') && data.filteredData.length === 0) || data.ids.length === 0));\n\n const onChangeCategory = (data) => {\n if (isDisabledCategory(data)) return;\n setActiveCategory(data.slug);\n };\n // Give the selected category(activeCategory) label className as \"active\"\n const activeClassname = (data) => {\n const categoryLabel = data ? data.slug : '';\n if (isDisabledCategory(data)) return 'disabled';\n return activeCategory === categoryLabel ? 'active' : '';\n };\n\n return (\n <div>\n <h3>{__('Categories', redux_templates.i18n)}</h3>\n {!loading &&\n <ul className=\"redux-templates-sidebar-categories\">\n {categoryData.length > 0 &&\n <li\n className={activeClassname(null)}\n onClick={() => setActiveCategory('')}>\n {__('All', redux_templates.i18n)} {itemTypeLabel()}s <span>{totalItemCountLabel()}</span>\n </li>\n }\n\n {categoryData &&\n categoryData.map((data, index) => (\n <li className={activeClassname(data)} onClick={() => onChangeCategory(data)}\n key={index}>\n {data.name}\n <span> {data.hasOwnProperty('filteredData') && activePriceFilter !== '' ? data.filteredData.length : data.ids.length } </span>\n </li>\n ))\n }\n </ul>\n }\n </div>\n );\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setActiveCategory} = dispatch('redux-templates/sectionslist');\n return {\n setActiveCategory\n };\n }),\n\n withSelect((select, props) => {\n const {getCategoryData, getActiveCategory, getActiveItemType, getLoading} = select('redux-templates/sectionslist');\n return {\n categoryData: getCategoryData(),\n activeCategory: getActiveCategory(),\n itemType: getActiveItemType(),\n loading: getLoading(),\n };\n })\n])(CategoryFilter);\n","const {Fragment} = wp.element;\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {__} = wp.i18n;\nimport ChallengeDot from '~redux-templates/challenge/tooltip/ChallengeDot';\n\nimport {CheckboxControl, Tooltip, Button, ButtonGroup} from '@wordpress/components';\nimport DependencyFilterRow from './dependencyFilterRow';\nimport {pluginInfo} from '~redux-templates/stores/dependencyHelper';\nimport {REDUXTEMPLATES_PRO_KEY, NONE_KEY} from '~redux-templates/stores/helper';\n\nfunction DependencyFilter(props) {\n const {dependencyFilters, activeItemType, loading, wholePlugins, dependencyFilterRule} = props;\n const {setDependencyFilters, selectDependencies, setDependencyFilterRule} = props;\n // Give the selected category(activeCategory) label className as \"active\"\n const isNoneChecked = () => {\n if (dependencyFilters.hasOwnProperty(NONE_KEY))\n return dependencyFilters[NONE_KEY].hasOwnProperty('value') ? dependencyFilters[NONE_KEY].value : dependencyFilters[NONE_KEY];\n return false;\n };\n\n const toggleNoneChecked = () => {\n setDependencyFilters({...dependencyFilters,\n [NONE_KEY]: { value: dependencyFilters[NONE_KEY].value === false, disabled: dependencyFilters[NONE_KEY]['disabled'] === true }\n });\n };\n return (\n <Fragment>\n {!loading && wholePlugins &&\n <div id=\"redux-templates-filter-dependencies\" data-tut=\"tour__filter_dependencies\">\n\t <>\n\t\t <ButtonGroup style={{float:'right'}}>\n\t\t\t <Tooltip text={__('Find templates which contain blocks from any of the selected plugins.', redux_templates.i18n)} position=\"top right\">\n\t\t\t\t <Button isSmall isPrimary={dependencyFilterRule === false} isSecondary={dependencyFilterRule} onClick={() => setDependencyFilterRule(false)} disabled={activeItemType === 'collection'}>{__('Any', redux_templates.i18n)}</Button>\n\t\t\t </Tooltip>\n\t\t\t <Tooltip text={__('Find templates that only contain blocks from the selected plugins.', redux_templates.i18n)} position=\"top right\">\n\t\t\t\t <Button isSmall isSecondary={dependencyFilterRule === false} isPrimary={dependencyFilterRule} onClick={() => setDependencyFilterRule(true)} disabled={activeItemType === 'collection'}>{__('Only', redux_templates.i18n)}</Button>\n\t\t\t </Tooltip>\n\t\t </ButtonGroup>\n\t\t <h3>{__('Required Plugins', redux_templates.i18n)} </h3>\n\t </>\n <div className='redux-templates-select-actions'>\n <Tooltip text={__('Select All', redux_templates.i18n)} position=\"top right\"><a href=\"#\" onClick={() => selectDependencies('all')}>{__('All', redux_templates.i18n)}</a></Tooltip>\n\t\t <span>&nbsp; / &nbsp;</span>\n\t\t <Tooltip text={__('Native Blocks Only', redux_templates.i18n)} position=\"top right\"><a href=\"#\" onClick={() => selectDependencies('none')}>{__('None', redux_templates.i18n)}</a></Tooltip>\n <span>&nbsp; / &nbsp;</span>\n <Tooltip text={__('Installed Dependencies', redux_templates.i18n)} position=\"top right\"><a href=\"#\"\n onClick={() => selectDependencies('installed')}>\n {__('Installed', redux_templates.i18n)}</a></Tooltip>\n <span>&nbsp; / &nbsp;</span>\n <Tooltip text={__('Reset Dependencies', redux_templates.i18n)} position=\"top right\">\n <a href=\"#\" onClick={() => selectDependencies('default')}>\n <i className=\"fas fa-undo\" /></a></Tooltip>\n <ChallengeDot step={2} />\n\n </div>\n <ul className=\"redux-templates-sidebar-dependencies\">\n { (loading === false) &&\n <li style={{display: activeItemType === 'collection' ? 'none': '' }}>\n <CheckboxControl\n label={__('Native', redux_templates.i18n)}\n checked={isNoneChecked()}\n onChange={toggleNoneChecked}\n />\n <Tooltip text={__('Only default WordPress blocks used.', redux_templates.i18n)} position='right'>\n <span style={{float:'right', marginRight:'2px'}}><i className=\"fa fa-info-circle\" /></span>\n </Tooltip>\n </li>\n }\n {\n Object.keys(dependencyFilters)\n .filter(pluginKey => (wholePlugins.indexOf(pluginKey)!==-1 || pluginKey === REDUXTEMPLATES_PRO_KEY))\n .sort((a, b) => {\n const pluginInstanceA = pluginInfo(a);\n const pluginInstanceB = pluginInfo(b);\n if (pluginInstanceA.name < pluginInstanceB.name)\n return -1;\n if (pluginInstanceA.name > pluginInstanceB.name)\n return 1;\n return 0;\n })\n .map(pluginKey =>\n <DependencyFilterRow key={pluginKey} pluginKey={pluginKey} />\n )\n }\n </ul>\n </div>\n }\n </Fragment>\n );\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setDependencyFilters, selectDependencies, setDependencyFilterRule} = dispatch('redux-templates/sectionslist');\n return {\n setDependencyFilters,\n selectDependencies,\n setDependencyFilterRule\n };\n }),\n\n withSelect((select) => {\n const {getDependencyFiltersStatistics, getLoading, getActiveItemType, getWholePlugins, getDependencyFilterRule} = select('redux-templates/sectionslist');\n return {\n loading: getLoading(),\n dependencyFilters: getDependencyFiltersStatistics(),\n wholePlugins: getWholePlugins(),\n dependencyFilterRule: getDependencyFilterRule(),\n\t activeItemType: getActiveItemType()\n };\n })\n])(DependencyFilter);\n","import React from 'react';\nconst {useState, useEffect, useRef} = wp.element;\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {__} = wp.i18n;\n\nimport {CheckboxControl, Tooltip} from '@wordpress/components';\nimport {pluginInfo} from '~redux-templates/stores/dependencyHelper';\nimport {NONE_KEY} from '~redux-templates/stores/helper';\n\nconst specialPlugins = ['gutenberghub.com', 'editorplus'];\n\nfunction DependencyFilterRow(props) {\n const {pluginKey, dependencyFilters} = props;\n const {setDependencyFilters} = props;\n const [isValidPlugin, setIsValidPlugin] = useState(false);\n const [isChecked, setIsChecked] = useState(false);\n const [pluginInstanceURL, setPluginInstanceURL] = useState('');\n const [pluginInstanceName, setPluginInstanceName] = useState('');\n const [pluginClassname, setPluginClassname] = useState('');\n\n useEffect(() => {\n const pluginInstance = pluginInfo(pluginKey);\n if (!pluginKey || pluginKey === NONE_KEY) {\n setIsValidPlugin(false);\n return;\n }\n if (!pluginInstance || pluginInstance.name == null) {\n setIsValidPlugin(false);\n return;\n }\n setPluginInstanceURL(pluginInstance.url);\n setPluginInstanceName(pluginInstance.name);\n setIsValidPlugin(true);\n }, [pluginKey]);\n\n useEffect(() => {\n const pluginInstance = pluginInfo(pluginKey);\n if (!dependencyFilters) return;\n if (dependencyFilters.hasOwnProperty(pluginKey)) {\n if (dependencyFilters[pluginKey].disabled)\n setIsChecked(false);\n else\n setIsChecked(dependencyFilters[pluginKey].hasOwnProperty('value') ? dependencyFilters[pluginKey].value : dependencyFilters[pluginKey]);\n } else\n setIsChecked(false)\n let pluginClassnameList = [];\n pluginClassnameList.push(!pluginInstance.version && !('no_plugin' in pluginInstance) ? 'missing-dependency' : '');\n pluginClassnameList.push((!dependencyFilters[pluginKey] || dependencyFilters[pluginKey].disabled) ? 'disabled' : '');\n setPluginClassname(pluginClassnameList.join(' '));\n }, [JSON.stringify(dependencyFilters)])\n\n const toggleChecked = () => {\n // disable check first\n if (dependencyFilters[pluginKey] === null || dependencyFilters[pluginKey] === undefined || dependencyFilters[pluginKey].disabled) return;\n // reflect on the item click event.\n let newDependencyFilters = {\n ...dependencyFilters,\n [pluginKey]: { value: dependencyFilters[pluginKey].value === false, disabled: dependencyFilters[pluginKey]['disabled'] === true }\n };\n\n // gutenberg.com, EditorPlus check\n if (specialPlugins.includes(pluginKey)) {\n specialPlugins.forEach((plugin) => {\n newDependencyFilters = {\n ...newDependencyFilters,\n [plugin]: { value: dependencyFilters[pluginKey].value === false, disabled: dependencyFilters[plugin]['disabled'] === true }\n }\n })\n }\n\n // if no item is selected, activate native, other wise conider to deactivate native\n // let valueCount = groupBy(Object.keys(newDependencyFilters), key => (newDependencyFilters[key] === true || newDependencyFilters[key].value === true));\n setDependencyFilters({...newDependencyFilters});\n };\n\n if (isValidPlugin === false) return null;\n\n return (\n <li className={pluginClassname}>\n <CheckboxControl\n label={pluginInstanceName}\n checked={isChecked}\n onChange={toggleChecked}\n />\n {pluginInstanceURL ?\n\t <Tooltip position={'top right'} text={__('Visit Plugin Website', redux_templates.i18n)}><span><a href={pluginInstanceURL} target=\"_blank\">\n <i className=\"fas fa-external-link-alt\" />\n\t </a></span></Tooltip> : null}\n\t {pluginClassname.includes('missing-dependency') &&\n\t <Tooltip position={'top right'} text={__('Not Installed', redux_templates.i18n)}><span className='redux-icon-wrapper'><i className=\"fa fa-exclamation-triangle\" /></span></Tooltip>\n\t }\n </li>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setDependencyFilters} = dispatch('redux-templates/sectionslist');\n return {\n setDependencyFilters\n };\n }),\n\n withSelect((select) => {\n const {getDependencyFiltersStatistics, getLoading, getActiveCategory} = select('redux-templates/sectionslist');\n return {\n loading: getLoading(),\n dependencyFilters: getDependencyFiltersStatistics(),\n activeCategory: getActiveCategory()\n };\n })\n])(DependencyFilterRow);\n","const {withSelect} = wp.data;\n\nimport './style.scss'\n\nimport PriceFilter from './priceFilter';\nimport CategoryFilter from './categoryFilter';\nimport DependencyFilter from './dependencyFilter';\n\nfunction Sidebar(props) {\n const {itemType, layer, loading} = props;\n const hasSidebar = () => {\n return (itemType !== 'collection' || layer === null);\n };\n return (\n <div>\n {\n hasSidebar() &&\n <>\n <PriceFilter/>\n <div className=\"redux-templates-modal-sidebar-content\">\n <CategoryFilter/>\n <DependencyFilter/>\n </div>\n </>\n }\n </div>\n );\n}\n\nexport default withSelect((select) => {\n const {getActiveItemType, getActiveCollection} = select('redux-templates/sectionslist');\n return {\n itemType: getActiveItemType(),\n layer: getActiveCollection()\n };\n})(Sidebar);\n","const {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {__} = wp.i18n;\n\nfunction PriceFilter (props) {\n\tconst {setActivePriceFilter, activePriceFilter, statistics} = props;\n\n const getClassnames = (priceFilter) => {\n let classNames = [];\n classNames.push((priceFilter === activePriceFilter) ? 'active' : '');\n classNames.push(noStatistics(priceFilter) ? 'disabled' : '');\n return classNames.join(' ');\n }\n\n const noStatistics = (priceFilter) => {\n if (priceFilter === '') return false;\n if (priceFilter === 'free')\n return (!statistics['false'] || statistics['false'] < 1);\n else\n return (!statistics['true'] || statistics['true'] < 1);\n }\n\n return (\n <div className='redux-templates-template-filter-button-group'>\n <button onClick={() => setActivePriceFilter('')}\n className={getClassnames('')}>{__('All', redux_templates.i18n)}</button>\n <button onClick={() => setActivePriceFilter('free')} className={getClassnames('free')}\n disabled={noStatistics('free')}>{__('Free', redux_templates.i18n)}</button>\n <button onClick={() => setActivePriceFilter('pro')} className={getClassnames('pro')}\n disabled={noStatistics('pro')}>\n <img src={redux_templates.plugin + 'assets/img/icon-premium.svg'} alt=\"\"/>\n {__('Premium', redux_templates.i18n)}\n </button>\n </div>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setActivePriceFilter} = dispatch('redux-templates/sectionslist');\n return {\n setActivePriceFilter\n };\n }),\n\n withSelect((select, props) => {\n const {getStatistics, getActivePriceFilter} = select('redux-templates/sectionslist');\n return {\n activePriceFilter: getActivePriceFilter(),\n statistics: getStatistics()\n };\n })\n])(PriceFilter);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","const {useState, useEffect} = wp.element;\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {__} = wp.i18n\n\nimport './style.scss'\n\nimport ButtonGroup from '~redux-templates/components/button-group';\nimport {requiresInstall, requiresPro} from '~redux-templates/stores/dependencyHelper'\n\nconst DURATION_UNIT= 500;\nconst PREVIEW_PANEL_HEIGHT = 515;\n\n// Collection Detail view: preview, item list and import\nfunction CollectionView(props) {\n const {pageData, activeCollectionData} = props;\n const {setActiveCollection} = props;\n const [previewData, setPreviewData] = useState(null);\n const [previewDataIndex, setPreviewDataIndex] = useState(0);\n const [transitionDuration, setTransitionDuration] = useState('1.5s');\n\n const dataLength = pageData.length;\n\n // To be called when switching over\n useEffect(() => {\n if (pageData && pageData[previewDataIndex]) {\n const itemData = pageData[previewDataIndex];\n const backgroundImage = new Image();\n if (itemData.image_full) {\n setPreviewData({...itemData, backgroundImage: itemData.image_full, previewImageClassname: 'details-preview has_full'});\n backgroundImage.src = itemData.image_full;\n } else {\n setPreviewData({...itemData, backgroundImage: itemData.image, previewImageClassname: 'details-preview has_full'})\n backgroundImage.src = itemData.image;\n }\n backgroundImage.onload = function () {\n setTransitionDuration((backgroundImage.height - PREVIEW_PANEL_HEIGHT) / DURATION_UNIT + 's');\n };\n }\n }, [pageData, previewDataIndex]);\n\n if (previewData)\n return (\n <div className=\"redux-templates-collection-details-view\">\n <div className=\"redux-templates-collection-details-left\">\n <div className=\"details-back\" onClick={() => setActiveCollection(null)}>\n <span className=\"dashicons dashicons-arrow-left-alt\"/>&nbsp;{__('Back to Template Kits', redux_templates.i18n)}\n </div>\n <div className={previewData.previewImageClassname} \n style={{backgroundImage: `url('${previewData.backgroundImage}')`, transitionDuration}}>\n </div>\n </div>\n <div className=\"redux-templates-collection-details-right\">\n <div className=\"details-title\">\n <h3>{activeCollectionData.name}</h3>\n <span>{dataLength} {__('pages', redux_templates.i18n)}</span>\n </div>\n <div className=\"details-list\">\n <div className=\"details-inner\">\n {\n pageData.map((detail, index) => {\n let className = (previewData.ID === detail.ID) ? 'detail-select detail-select-active' : 'detail-select';\n let divStyle = {\n backgroundImage: 'url(' + detail.image + ')',\n };\n\n return (\n <div className={className} onClick={() => setPreviewDataIndex(index)} key={index}>\n <div className=\"detail-image\" style={divStyle}>\n {requiresPro(detail) && <span className=\"pro\">{__('Premium', redux_templates.i18n)}</span>}\n {!requiresPro(detail) && requiresInstall(detail) && <span className=\"install\"><i className=\"fas fa-exclamation-triangle\" /></span>}\n <div className=\"detail-label\">{detail.name}</div>\n </div>\n </div>\n );\n })\n }\n </div>\n </div>\n </div>\n <div className=\"redux-templates-collection-details-footer\">\n <div className=\"footer-grid\">\n <ButtonGroup index={previewDataIndex} showDependencyBlock={false} data={previewData} pageData={pageData} />\n </div>\n </div>\n </div>\n );\n return null;\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setActiveCollection\n } = dispatch('redux-templates/sectionslist');\n\n return {\n setActiveCollection\n };\n }),\n\n withSelect((select, props) => {\n const {getPageData, getLoading, getActiveCollectionData, getActiveItemType} = select('redux-templates/sectionslist');\n return {\n pageData: getPageData(),\n loading: getLoading(),\n activeItemType: getActiveItemType(),\n activeCollectionData: getActiveCollectionData()\n };\n })\n])(CollectionView);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","const {apiFetch} = wp;\nconst {useState} = wp.element;\nconst {compose} = wp.compose;\nconst {withDispatch} = wp.data;\nconst {Spinner} = wp.components;\nconst {parse} = wp.blocks;\nconst {__} = wp.i18n;\nimport {BlockPreview} from '@wordpress/block-editor';\n\nimport './style.scss'\n\nimport {Modal, ModalManager} from '../../modal-manager'\nimport reject from 'lodash/reject';\n\nfunction SavedView(props) {\n const {insertBlocks, discardAllErrorMessages, appendErrorMessage, clearSearch} = props;\n const [savedSections, setSavedSections] = useState([]);\n const [dataLoaded, setDataLoaded] = useState(false);\n if (dataLoaded === false) {\n // Initial fetch\n apiFetch({path: 'redux/v1/templates/get_saved_blocks'}).then(response => {\n if (response.success) {\n setSavedSections(response.data);\n } else {\n appendErrorMessage(response.data.error);\n }\n setDataLoaded(true);\n }).catch(error => {\n appendErrorMessage(error.code + ' : ' + error.message);\n setDataLoaded(true);\n });\n }\n\n // To display into columns, map data into column-friendly data\n const mapToColumnData = (data, n = 4, balanced = true) => {\n let out = [], i;\n\n for (i = 0; i < n; i++) out[i] = [];\n data.forEach((section, i) => {\n out[i % n].push(section);\n });\n return out;\n }\n\n // saved block import is special\n const importSections = (rawData) => {\n let pageData = parse(rawData);\n insertBlocks(pageData);\n ModalManager.close(); //close modal\n }\n\n const deleteSavedSection = (event, sectionID) => {\n event.stopPropagation();\n discardAllErrorMessages();\n const options = {\n method: 'POST',\n path: 'redux/v1/templates/delete_saved_block/?block_id=' + sectionID,\n }\n apiFetch(options).then(response => {\n if (response.success) {\n // on successful remove, we will update the blocks as well.\n setSavedSections(reject(savedSections, {'ID': sectionID}));\n } else {\n appendErrorMessage(response.data.error);\n }\n }).catch(error => {\n appendErrorMessage(error.code + ' : ' + error.message);\n });\n }\n if (dataLoaded === true)\n return (\n <div className=\"redux-templates-two-sections__grid\">\n {\n (savedSections && savedSections.length > 0) ?\n mapToColumnData(savedSections).map((column, key) => {\n let sections = column.map((section, i) => {\n let blocks = parse(section.post_content);\n return (\n <div className=\"redux-templates-two-section\" key={i}\n onClick={() => importSections(section.post_content)}>\n\n <div className=\"preview-image-wrapper\">\n <BlockPreview blocks={blocks} />\n </div>\n <div className=\"saved-section-title\">\n {section.post_title}\n </div>\n <div className=\"redux-templates-two-section-remove\"\n onClick={e => deleteSavedSection(e, section.ID)}>\n <i className=\"fas fa-trash\"></i>\n </div>\n </div>\n );\n })\n\n return (\n <div className=\"redux-templates-two-sections__grid__column\" key={key}\n style={{width: '25%', flexBasis: '25%'}}>\n {sections}\n </div>\n );\n })\n :\n <div className=\"no-section\">\n Nothing here yet, make a reusuable block first.\n </div>\n }\n </div>\n );\n else\n return (\n <div>\n <div style={{ height: '600px' }}>\n <div className=\"redux-templates-modal-loader\">\n <Spinner />\n </div>\n </div>\n </div>\n );\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n insertBlocks\n } = dispatch('core/block-editor');\n\n const {\n appendErrorMessage,\n discardAllErrorMessages\n } = dispatch('redux-templates/sectionslist');\n\n return {\n insertBlocks,\n appendErrorMessage,\n discardAllErrorMessages\n };\n })\n])(SavedView);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","const { useState, useEffect } = wp.element;\nconst { compose } = wp.compose;\nconst { withDispatch, withSelect } = wp.data;\nconst { Spinner } = wp.components;\n\nimport SingleItem from '../../components/single-item'\nimport MultipleItem from '../../components/multiple-item'\nimport Pagination from '../../components/pagination'\nimport './style.scss'\n\nimport {columnMap, pageSizeMap} from '../../stores/helper';\n\nfunction TemplateList(props) {\n const { pageData, loading, activeItemType, activeCollection, columns, currentPage } = props;\n const { setActiveCollection} = props;\n const [columnizedData, setColumnizedData] = useState([]);\n const [shouldShowPagination, setShouldShowPagination] = useState(false);\n const getBackgroundImage = (url) => {\n if (!url) {\n return redux_templates.plugin + 'assets/img/redux-templates-medium.jpg';\n }\n return url;\n }\n\n const onSelectCollection = (collectionID) => {\n setActiveCollection(collectionID);\n }\n\n useEffect(() => {\n let newData = [], index = 0;\n let colStr = (columns === '') ? 'medium' : columns;\n const columnsCount = columnMap[colStr];\n const pageSize = pageSizeMap[colStr];\n for (let i = 0; i < columnsCount; i++)\n newData[i] = [];\n if (pageData) {\n const lowerLimit = activeItemType !== 'collection' ? (currentPage * pageSize) + 1 : 1;\n const upperLimit = activeItemType !== 'collection' ? (currentPage + 1) * pageSize : pageData.length;\n for ( index = lowerLimit; index <= upperLimit && index <= pageData.length; index++) {\n newData[(index - 1) % columnsCount].push({...pageData[index - 1], index: index - 1});\n }\n }\n setColumnizedData(newData);\n setShouldShowPagination(activeItemType !== 'collection' && pageData && pageSize < pageData.length);\n }, [columns, pageData]);\n\n\n if (!loading)\n return (\n <div id=\"modalContainer\" className=\"redux-templates-template-list-modal\">\n <div className=\"redux-templates-builder-template-list-container\">\n <div id=\"collections-sections-list\" className={`redux-templates-builder-page-templates ${columns}`}>\n { columnizedData &&\n columnizedData.map((columnData, colIndex) => (\n <div className=\"redux-templates-pagelist-column\" key={colIndex}>\n {\n columnData &&\n columnData.map((data, cellIndex) => (\n (activeItemType !== 'collection' || activeCollection !== null) ?\n <SingleItem\n key={cellIndex}\n index={data.index}\n />\n :\n <MultipleItem\n key={cellIndex}\n data={data}\n index={data.index}\n itemType={activeItemType}\n spinner={false}\n onSelectCollection={onSelectCollection}\n />\n ))\n }\n </div>\n ))\n }\n </div>\n { shouldShowPagination && <Pagination /> }\n </div>\n </div>\n );\n return (\n <div>\n <div style={{ height: '600px' }}>\n <div className=\"redux-templates-modal-loader\">\n <Spinner />\n </div>\n </div>\n </div>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setActiveCollection\n } = dispatch('redux-templates/sectionslist');\n\n return {\n setActiveCollection\n };\n }),\n\n withSelect((select, props) => {\n const { getPageData, getLoading, getColumns, getActiveItemType, getActiveCollection, getCurrentPage} = select('redux-templates/sectionslist');\n return { pageData: getPageData(), loading: getLoading(), activeItemType: getActiveItemType(), columns: getColumns(), activeCollection: getActiveCollection(), currentPage: getCurrentPage() };\n })\n])(TemplateList);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {__} from '@wordpress/i18n';\nimport {Component, Fragment} from '@wordpress/element';\n\nvar onClose, node, customizerNode, feedbackNode = null;\n\nexport class Modal extends Component {\n constructor(props) {\n super(props)\n this.state = {\n afterOpen: false,\n beforeClose: false,\n }\n }\n\n close() {\n if (!this.props.onRequestClose || this.props.onRequestClose()) {\n if (customizerNode) ModalManager.closeCustomizer()\n else ModalManager.close()\n }\n }\n\n componentDidMount() {\n const {openTimeoutMS, closeTimeoutMS} = this.props\n setTimeout(() => this.setState({afterOpen: true}), openTimeoutMS ? openTimeoutMS : 150)\n\n onClose = (callback) => {\n this.setState({beforeClose: true}, () => {\n this.closeTimer = setTimeout(callback, closeTimeoutMS ? closeTimeoutMS : 150)\n });\n };\n }\n\n componentWillUnmount() {\n onClose = null;\n clearTimeout(this.closeTimer)\n }\n\n render() {\n\n return (\n <Fragment>\n <span onClick={e => {\n this.close()\n }} className={'redux-templates-pagelist-modal-overlay'}>&nbsp;</span>\n <div className={ this.props.compactMode ? 'redux-templates-modal-inner' : 'redux-templates-pagelist-modal-inner'} onClick={e => e.stopPropagation()}>\n {this.props.children}\n </div>\n </Fragment>\n );\n }\n}\n\n\nexport const ModalManager = {\n open(component) {\n if (onClose) {\n this.close();\n // throw __('There is already one modal.It must be closed before one new modal will be opened');\n }\n if (!node) {\n node = document.createElement('div')\n node.className = 'redux-templates-builder-modal'\n document.body.appendChild(node)\n }\n wp.element.render(component, node)\n document.body.classList.add('redux-templates-builder-modal-open')\n },\n close() {\n onClose && onClose(() => {\n wp.element.unmountComponentAtNode(node)\n document.body.classList.remove('redux-templates-builder-modal-open')\n });\n },\n openCustomizer(component) {\n if (!customizerNode) {\n customizerNode = document.createElement('div');\n document.body.appendChild(customizerNode);\n }\n wp.element.render(component, customizerNode);\n },\n closeCustomizer() {\n if (customizerNode) {\n wp.element.unmountComponentAtNode(customizerNode);\n customizerNode = false\n }\n },\n openFeedback(component) {\n feedbackNode = document.getElementsByClassName('feedback-wrapper');\n if (!feedbackNode || feedbackNode.length < 1) {\n feedbackNode = document.createElement('div');\n feedbackNode.className = 'feedback-wrapper';\n document.body.appendChild(feedbackNode);\n } else {\n feedbackNode = feedbackNode[0];\n }\n wp.element.render(component, feedbackNode);\n },\n closeFeedback() {\n if (feedbackNode) {\n wp.element.unmountComponentAtNode(feedbackNode);\n feedbackNode = false;\n }\n },\n isCustomizerOpened() {\n return customizerNode ? true : false;\n },\n hide () {\n document.body.classList.remove('redux-templates-builder-modal-open')\n node.classList.add('hidden')\n },\n show () {\n document.body.classList.add('redux-templates-builder-modal-open')\n if (node)\n node.classList.remove('hidden')\n }\n}\n","const {__} = wp.i18n\n\nfunction FullyOverlayFooter(props) {\n const {previewClass, expandedClass, pro} = props;\n const {onChangePreviewClass, onToggleExpanded, onImport} = props;\n const previewClassesList = [\n {className: 'preview-desktop', screenReaderText: 'Enter desktop preview mode'},\n {className: 'preview-tablet', screenReaderText: 'Enter tablet preview mode'},\n {className: 'preview-mobile', screenReaderText: 'Enter mobile preview mode'}\n ];\n\n const toggleExpanded = () => {\n let nextStatus = (expandedClass === 'collapsed') ? 'expanded' : 'collapsed';\n onToggleExpanded(nextStatus);\n }\n return (\n <div className=\"wp-full-overlay-footer\">\n <div className=\"footer-import-button-wrap redux-templates-import-button-group\">\n\n {\n pro ?\n <div className=\"action-buttons\">\n <a className=\"redux-templates-button-download\" target=\"_blank\" href=\"http://redux-templates.io/\">\n <i className=\"fas fa-upload\"></i>&nbsp;{__('Upgrade to Pro', redux_templates.i18n)}\n </a>\n </div>\n :\n <a className=\"button button-hero hide-if-no-customize button-primary redux-templates-import\"\n onClick={onImport}>\n <i className=\"fas fa-download\"></i>&nbsp;{__('Import', redux_templates.i18n)}\n </a>\n }\n\n </div>\n <button type=\"button\" className=\"collapse-sidebar button\" onClick={toggleExpanded} aria-expanded=\"true\"\n aria-label=\"Collapse Sidebar\">\n <span className=\"collapse-sidebar-arrow\"></span>\n <span className=\"collapse-sidebar-label\">{__('Collapse', redux_templates.i18n)}</span>\n </button>\n\n <div className=\"devices-wrapper\">\n <div className=\"devices\">\n {\n previewClassesList.map((previewObject, i) => {\n return (\n <button type=\"button\"\n className={previewClass === previewObject.className ? previewObject.className + ' active' : previewObject.className}\n aria-pressed=\"true\" key={i}\n onClick={() => onChangePreviewClass(previewObject.className)}>\n <span className=\"screen-reader-text\">{previewObject.screenReaderText}</span>\n </button>\n );\n })\n }\n </div>\n </div>\n\n </div>\n );\n}\n\nexport default FullyOverlayFooter;\n","const {__} = wp.i18n\n\nfunction FullyOverlayHeader(props) {\n const {onCloseCustomizer, onNextBlock, onPrevBlock, onImport, pro} = props;\n return (\n <div className=\"wp-full-overlay-header\">\n <button className=\"close-full-overlay\" onClick={onCloseCustomizer}>\n <span className=\"screen-reader-text\">{__('Close', redux_templates.i18n)}</span>\n </button>\n <button className=\"previous-theme\" onClick={onPrevBlock}>\n <span className=\"screen-reader-text\">{__('Previous', redux_templates.i18n)}</span>\n </button>\n <button className=\"next-theme\" onClick={onNextBlock}>\n <span className=\"screen-reader-text\">{__('Next', redux_templates.i18n)}</span>\n </button>\n {\n pro === false &&\n <a className=\"button hide-if-no-customize button-primary redux-templates-section-import\" onClick={onImport}\n data-import=\"disabled\">\n {__('Import', redux_templates.i18n)}\n </a>\n }\n </div>\n );\n}\n\nexport default FullyOverlayHeader;\n","import {Tooltip, Panel, PanelBody, PanelRow} from '@wordpress/components';\nimport {more} from '@wordpress/icons';\n\n\nconst {useState, useEffect} = wp.element\nconst {__} = wp.i18n\n\nimport * as Icons from '~redux-templates/icons'\nimport copy from 'clipboard-copy';\nimport SafeImageLoad from '~redux-templates/components/safe-image-load';\nimport {requiresInstall, requiresPro} from '~redux-templates/stores/dependencyHelper'\nimport React from 'react';\n\nexport default function SidebarContent(props) {\n\tconst {itemData, pro} = props;\n\tconst {hash, name, image, blocks, proDependencies, installDependencies, url, source} = itemData;\n\tconst [copied, setCopied] = useState(false);\n\n\tconst copyHash = () => {\n\t\tcopy(hash.substring(0, 7));\n\t\tsetCopied(true);\n\t\tsetTimeout(function () {\n\t\t\tsetCopied(false);\n\t\t}, 3500);\n\t}\n\n\tuseEffect(() => {\n\t\tsetCopied(false);\n\t}, [itemData]);\n\n\n\tif ('redux' === source) {\n\t\tconst source_instance = redux_templates.supported_plugins['redux-framework'];\n\t} else {\n\t\tconst source_instance = redux_templates.supported_plugins[source];\n\t}\n\n\treturn (\n\t\t<div className=\"wp-full-overlay-sidebar-content\">\n\t\t\t<div className=\"install-theme-info\">\n\t\t\t\t<h3 className=\"theme-name\">{name} { url && <Tooltip position={'top right'}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttext={__('Full Preview', redux_templates.i18n)}><a href={url}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\"><i\n\t\t\t\t\tclassName=\"fas fa-external-link-alt\"/></a></Tooltip> }</h3>\n\t\t\t\t<div className=\"theme-screenshot-wrap\">\n\t\t\t\t\t<SafeImageLoad url={image} className=\"theme-screenshot\"/>\n\t\t\t\t\t{pro ?\n\t\t\t\t\t\t<span className=\"redux-templates-pro-badge\">{__('Premium', redux_templates.i18n)}</span> : ''}\n\t\t\t\t</div>\n\n\t\t\t\t<h5 className=\"theme-hash\">\n\t\t\t\t\t<div className=\"button-container\">\n <span className=\"button button-secondary the-copy\" onClick={copyHash}\n\t\t\t\t\t\t\t title={__('Copy Identifier', redux_templates.i18n)}><i\n\t\t\t\t\t\t\tclassName=\"fa fa-copy\" aria-hidden=\"true\"></i></span>\n\t\t\t\t\t\t<span onClick={copyHash} className=\"button button-secondary the-hash\"\n\t\t\t\t\t\t\t title={__('Identifier', redux_templates.i18n)}>{hash.substring(0, 7)}</span>\n\t\t\t\t\t\t{copied && <span className=\"copied hideMe\"><br/>{__('copied', redux_templates.i18n)}</span>}\n\t\t\t\t\t</div>\n\n\t\t\t\t</h5>\n\t\t\t</div>\n\t\t\t{ blocks && blocks.length > 0 &&\n\t\t\t<PanelBody title={__('Blocks Used', redux_templates.i18n)} icon={more} initialOpen={false}>\n\t\t\t\t<PanelRow className=\"redux-block-pills\">\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tblocks.map((block, i) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<li key={i}><span>{block}</span></li>\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</ul>\n\t\t\t\t</PanelRow>\n\t\t\t</PanelBody>\n\t\t\t}\n\t\t\t{\n\t\t\t\tinstallDependencies && installDependencies.length > 0 &&\n\t\t\t\t<PanelBody title={__('Required Plugins', redux_templates.i18n)} icon={more} initialOpen={false}>\n\t\t\t\t\t<PanelRow className=\"requirements-list-div\">\n\t\t\t\t\t\t<div className=\"requirements-list\">\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tinstallDependencies.map(pluginKey => {\n\t\t\t\t\t\t\t\t\t\tconst pluginInstance = redux_templates.supported_plugins[pluginKey];\n\t\t\t\t\t\t\t\t\t\tif (!pluginInstance) {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log('Missing plugin details for ' + pluginKey);\n\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst plugin_name = pluginKey.replace('-pro', '').replace('-premium', '').replace(/\\W/g, '').toLowerCase();\n\t\t\t\t\t\t\t\t\t\tif ('redux' === plugin_name) {\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst IconComponent = Icons[plugin_name];\n\t\t\t\t\t\t\t\t\t\treturn (\n\n\t\t\t\t\t\t\t\t\t\t\t<li key={pluginKey}>\n\t\t\t\t\t\t\t\t\t\t\t\t{IconComponent && <IconComponent/>}\n\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"redux-templates-dependency-name\">{pluginInstance.name}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t{requiresInstall(itemData) &&\n\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip position={'bottom center'}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t text={__('Not Installed', redux_templates.i18n)}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className='redux-icon-wrapper'><i\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"fa fa-exclamation-triangle\"/></div>\n\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t{pluginInstance.url ?\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip position={'top right'}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t text={__('Visit Plugin Website', redux_templates.i18n)}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"pluginURL\"><a href={pluginInstance.url}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t target=\"_blank\"><i\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"fas fa-external-link-alt\"/></a></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip> : null}\n\t\t\t\t\t\t\t\t\t\t\t</li>);\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</ul>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</PanelRow>\n\t\t\t\t</PanelBody>\n\t\t\t}\n\t\t\t{\n\t\t\t\t'redux' !== source &&\n\t\t\t\t<PanelBody title={__('Template Details', redux_templates.i18n)} icon={more} initialOpen={false}>\n\t\t\t\t\t<PanelRow className=\"redux-block-pills\">\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t{'redux' !== source && <li><strong>Author</strong>: {source.slice(0,1).toUpperCase() + source.slice(1, source.length)}</li>}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</PanelRow>\n\t\t\t\t</PanelBody>\n\t\t\t}\n\t\t</div>\n\t);\n}\n","import FullyOverlayHeader from './FullyOverlayHeader';\nimport SidebarContent from './SidebarContent';\nimport FullyOverlayFooter from './FullyOverlayFooter';\nimport {isBlockPro} from '../stores/helper';\n\nfunction SitePreviewSidebar(props) {\n const {itemData, previewClass, expandedClass, onImport} = props;\n const {onCloseCustomizer, onChangePreviewClass, onToggleExpanded, onNextBlock, onPrevBlock} = props;\n const isPro = isBlockPro(itemData.pro, itemData.source);\n\n return (\n <div className=\"wp-full-overlay-sidebar\">\n <FullyOverlayHeader onCloseCustomizer={onCloseCustomizer} onNextBlock={onNextBlock}\n onPrevBlock={onPrevBlock}\n pro={isPro} onImport={onImport}/>\n <SidebarContent itemData={itemData} pro={isPro} />\n <FullyOverlayFooter previewClass={previewClass} expandedClass={expandedClass} pro={isPro}\n onChangePreviewClass={onChangePreviewClass} onToggleExpanded={onToggleExpanded}\n onImport={onImport}/>\n </div>\n );\n}\n\n\nexport default SitePreviewSidebar;\n","const {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {useState, useEffect, useReducer} = wp.element\nconst {Spinner} = wp.components;\nimport SitePreviewSidebar from './SitePreviewSidebar';\nimport {ModalManager} from '../modal-manager'\nimport ImportWizard from '../modal-import-wizard';\nimport {Fragment} from 'react';\nimport SafeImageLoad from '~redux-templates/components/safe-image-load';\nimport {processImportHelper} from '~redux-templates/stores/actionHelper';\nimport './style.scss';\n\nconst initialState = {\n currentPageData: null,\n currentIndex: 0,\n itemData: null,\n imageURL: ''\n};\n\nconst LOADING_RESET = 0;\nconst IN_PROGRESS = 1;\nconst FULLY_LOADED = 2;\n\nconst previewReducer = (state, action) => {\n let currentPageData;\n let imageURL;\n switch(action.type) {\n case 'INDEX':\n currentPageData = state.currentPageData;\n break;\n case 'DATA':\n currentPageData = action.currentPageData;\n break;\n }\n const itemData = currentPageData[action.currentIndex];\n if (itemData.image_full)\n imageURL = itemData.image_full;\n else\n imageURL = itemData.image\n\n return {\n currentPageData,\n currentIndex: action.currentIndex,\n imageURL,\n itemData\n };\n}\n\nfunction PreviewModal(props) {\n\n const {startIndex, currentPageData} = props;\n const {setImportingTemplate, importingTemplate} = props;\n\n const [state, dispatch] = useReducer(previewReducer, initialState);\n\n const [previewClass, setPreviewClass] = useState('preview-desktop')\n const [expandedClass, toggleExpanded] = useState('expanded')\n const [pressedKey, setPressedKey] = useState(null);\n const [loading, setLoading] = useState(IN_PROGRESS);\n const [wrapperClassName, setWrapperClassName] = useState('wp-full-overlay sites-preview theme-install-overlay ');\n\n // Key event handling : event listener set up\n useEffect(() => {\n const handleKeyDown = ({keyCode}) => {\n setPressedKey(keyCode);\n }\n\n window.addEventListener('keydown', handleKeyDown);\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n }\n }, []);\n\n // Key Event handling\n useEffect(() => {\n if (pressedKey !== null) {\n if (pressedKey === 37) onPrevBlock();\n if (pressedKey === 39) onNextBlock();\n setPressedKey(null);\n }\n }, [pressedKey])\n\n useEffect(() => {\n if (isNaN(startIndex) === false && currentPageData)\n dispatch({ type: 'DATA', currentIndex: startIndex, currentPageData });\n }, [startIndex, currentPageData]);\n\n // mobile/desktop preview status and sidebar collapse/expand\n useEffect(() => {\n setWrapperClassName(['wp-full-overlay sites-preview theme-install-overlay ', previewClass, expandedClass].join(' '));\n }, [previewClass, expandedClass])\n\n const onCloseCustomizer = () => {\n ModalManager.closeCustomizer();\n }\n\n const onNextBlock = () => {\n if (state.currentIndex < currentPageData.length - 1) {\n startLoading();\n dispatch({ type: 'INDEX', currentIndex: state.currentIndex + 1 });\n }\n }\n\n const onPrevBlock = () => {\n if (state.currentIndex > 0) {\n setLoading();\n dispatch({ type: 'INDEX', currentIndex: state.currentIndex - 1 });\n }\n }\n\n const startLoading = () => {\n setLoading(LOADING_RESET);\n setTimeout(() => {\n setLoading(IN_PROGRESS);\n }, 100)\n }\n\n\n const importStarterBlock = () => {\n setImportingTemplate(state.itemData);\n ModalManager.closeCustomizer();\n }\n\n const processImport = () => {\n if (importingTemplate) processImportHelper();\n }\n\n // Called from iframe upon successful loading\n const hideSpinner = () => {\n setLoading(FULLY_LOADED);\n }\n\n if (!state || !state.itemData) return null;\n\n return (\n <Fragment>\n <div className={wrapperClassName} style={{display: 'block'}}>\n <SitePreviewSidebar itemData={state.itemData} previewClass={previewClass} expandedClass={expandedClass}\n onNextBlock={onNextBlock} onPrevBlock={onPrevBlock}\n onCloseCustomizer={onCloseCustomizer} onToggleExpanded={e => toggleExpanded(e)}\n onImport={importStarterBlock}\n onChangePreviewClass={e => setPreviewClass(e)}/>\n <div className=\"wp-full-overlay-main loaded\">\n {\n (loading < FULLY_LOADED) && <Spinner />\n }\n {state.itemData.url &&\n <iframe src={(loading === LOADING_RESET) ? '' : state.itemData.url + '?preview=1'} target='Preview' onLoad={hideSpinner}></iframe>\n }\n {!state.itemData.url &&\n <div className='redux-templates-modal-preview-box'>\n <SafeImageLoad url={state.imageURL} />\n </div>\n }\n\n </div>\n </div>\n { importingTemplate && <ImportWizard startImportTemplate={processImport} /> }\n </Fragment>\n );\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setImportingTemplate,\n setCustomizerOpened\n } = dispatch('redux-templates/sectionslist');\n\n return {\n setImportingTemplate,\n setCustomizerOpened\n };\n }),\n\n withSelect((select, props) => {\n const {getImportingTemplate} = select('redux-templates/sectionslist');\n return {\n importingTemplate: getImportingTemplate()\n };\n })\n])(PreviewModal);\n","\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./modals.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./modals.scss\", function() {\n\t\tvar newContent = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./modals.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","/**\n * WordPress dependencies\n */\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { compose, ifCondition } from '@wordpress/compose';\nimport { download } from '../export/file';\nconst { Fragment } = wp.element;\nimport { colorizeIcon } from '~redux-templates/icons'\n\nimport { Dashicon } from '@wordpress/components';\n\nfunction ExportPageContentMenuItem( { createNotice, editedPostContent } ) {\n if (!wp.plugins) return null;\n\n const { PluginMoreMenuItem } = wp.editPost;\n\n const exportFullpage = () => {\n const fileContent = JSON.stringify( {\n __file: 'core_block',\n content: editedPostContent,\n }, null, 2 );\n\n const fileName = 'page-template-export.json';\n download( fileName, fileContent, 'application/json' );\n }\n\n\n return (\n <Fragment>\n <PluginMoreMenuItem\n icon={ colorizeIcon( <Dashicon icon=\"migrate\" /> ) }\n role=\"menuitemcheckbox\"\n onClick={ exportFullpage }\n >\n { __( 'Export Page', redux_templates.i18n ) }\n </PluginMoreMenuItem>\n </Fragment>\n );\n}\n\nconst ExportPageContentMenu = compose(\n withSelect( ( select ) => ( {\n editedPostContent: select( 'core/editor' ).getEditedPostAttribute(\n 'content'\n ),\n } ) ),\n withDispatch( ( dispatch ) => {\n const { createNotice } = dispatch( 'core/notices' );\n\n return {\n createNotice,\n };\n } ),\n ifCondition( ( { editedPostContent } ) => editedPostContent.length > 0 )\n)( ExportPageContentMenuItem );\n\nif (wp.plugins) {\n const { registerPlugin } = wp.plugins;\n registerPlugin('redux-templates-export-page', {\n render: ExportPageContentMenu,\n });\n}\n","/**\n * External dependencies\n */\nimport { kebabCase } from 'lodash';\n/**\n * Internal dependencies\n */\n\nimport exportReusableBlock from './reusable';\nimport { download } from './file';\nimport { colorizeIcon } from '~redux-templates/icons'\n\n/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { withSelect, select } = wp.data;\nconst { compose } = wp.compose;\nconst { Fragment } = wp.element;\nconst { withSpokenMessages } = wp.components;\nconst { serialize } = wp.blocks;\nimport { Dashicon } from '@wordpress/components';\n\n/**\n * Render plugin\n */\nfunction ExportManager(props) {\n\tconst { selectedBlockCount, selectedBlock, selectedBlocks } = props;\n\n\tif (!wp.editPost) return null;\n\n\tconst { PluginBlockSettingsMenuItem } = wp.editPost;\n\tconst saveAsJSON = () => {\n\t\tif ( selectedBlockCount < 1 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet blocks;\n\t\tlet title = 'redux_templates/export';\n\n\t\tif ( selectedBlockCount === 1 ) {\n\t\t\t//export as reusable when reusable is selected\n\t\t\tif ( selectedBlock.name === 'core/block' ) {\n\t\t\t\texportReusableBlock( selectedBlock.attributes.ref );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tblocks = serialize( selectedBlock );\n\t\t\ttitle = selectedBlock.name;\n\t\t}\n\n\t\tif ( selectedBlockCount > 1 ) {\n\t\t\tblocks = serialize( selectedBlocks );\n\t\t}\n\n\t\t//do export magic\n\n\t\tconst fileContent = JSON.stringify( {\n\t\t\t__file: 'core_block',\n\t\t\tcontent: blocks,\n\t\t}, null, 2 );\n\n\t\tconst fileName = 'block-template-' + kebabCase( title ) + '.json';\n\t\tdownload( fileName, fileContent, 'application/json' );\n\t}\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<PluginBlockSettingsMenuItem\n\t\t\t\ticon={ colorizeIcon( <Dashicon icon=\"migrate\" /> ) }\n\t\t\t\tlabel={ __( 'Export Block', redux_templates.i18n ) }\n\t\t\t\tonClick={ saveAsJSON }\n\t\t\t>\n\n\t\t\t</PluginBlockSettingsMenuItem>\n\t\t</Fragment>\n\t);\n}\n\nexport default compose( [\n\twithSelect( () => {\n\t\tconst { getSelectedBlockCount, getSelectedBlock, getMultiSelectedBlocks } = select( 'core/block-editor' );\n\t\tconst { getBlock } = select( 'core/block-editor' );\n\n\t\treturn {\n\t\t\tselectedBlockCount: getSelectedBlockCount(),\n\t\t\tselectedBlock: getSelectedBlock(),\n\t\t\tselectedBlocks: getMultiSelectedBlocks(),\n\t\t\tgetBlock,\n\t\t};\n\t} ),\n\twithSpokenMessages,\n] )( ExportManager );\n","const block_export_json = function (el, type) {\n if (!el) {\n return\n }\n\n if (el) {\n t ? t += '.json' : t = 'block.json', 'object' === ('undefined' === typeof e ? 'undefined' : u(e)) && (el = 1 === a.count ? JSON.stringify(e.shift(), void 0, 4) : JSON.stringify(e, void 0, 4));\n var n = new Blob([el], {\n type: 'text/json'\n }),\n o = document.createEvent('MouseEvents'),\n l = document.createElement('a');\n l.download = t, l.href = window.URL.createObjectURL(n), l.dataset.downloadurl = ['text/json', l.download, l.href].join(':'), o.initMouseEvent('click', !0, !1, window, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), l.dispatchEvent(o)\n }\n}\n\nconst block_export_html = function (el, type) {\n if (!el) {\n return\n }\n\n if (el) {\n t ? t += '.json' : t = 'block.json', 'object' === ('undefined' === typeof e ? 'undefined' : u(e)) && (el = 1 === a.count ? JSON.stringify(e.shift(), void 0, 4) : JSON.stringify(e, void 0, 4));\n var n = new Blob([el], {\n type: 'text/json'\n }),\n o = document.createEvent('MouseEvents'),\n l = document.createElement('a');\n l.download = t, l.href = window.URL.createObjectURL(n), l.dataset.downloadurl = ['text/json', l.download, l.href].join(':'), o.initMouseEvent('click', !0, !1, window, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), l.dispatchEvent(o)\n }\n}\n\nconst block_export_page = function (el, type) {\n if (!el) {\n return\n }\n\n if (el) {\n t ? t += '.json' : t = 'block.json', 'object' === ('undefined' === typeof e ? 'undefined' : u(e)) && (el = 1 === a.count ? JSON.stringify(e.shift(), void 0, 4) : JSON.stringify(e, void 0, 4));\n var n = new Blob([el], {\n type: 'text/json'\n }),\n o = document.createEvent('MouseEvents'),\n l = document.createElement('a');\n l.download = t, l.href = window.URL.createObjectURL(n), l.dataset.downloadurl = ['text/json', l.download, l.href].join(':'), o.initMouseEvent('click', !0, !1, window, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), l.dispatchEvent(o)\n }\n}\n\n/**\n * Downloads a file.\n *\n * @param {string} fileName File Name.\n * @param {string} content File Content.\n * @param {string} contentType File mime type.\n */\nexport function download( fileName, content, contentType ) {\n const file = new window.Blob( [ content ], { type: contentType } );\n\n // IE11 can't use the click to download technique\n // we use a specific IE11 technique instead.\n if ( window.navigator.msSaveOrOpenBlob ) {\n window.navigator.msSaveOrOpenBlob( file, fileName );\n } else {\n const a = document.createElement( 'a' );\n a.href = URL.createObjectURL( file );\n a.download = fileName;\n\n a.style.display = 'none';\n document.body.appendChild( a );\n a.click();\n document.body.removeChild( a );\n }\n}\n","import ExportManager from './export-block-menu-item';\nif (wp.plugins) {\n\tconst { registerPlugin } = wp.plugins;\n\n\tregisterPlugin( 'redux-templates-export', {\n\t\trender: ExportManager,\n\t} );\n}\n","/**\n * External dependencies\n */\nimport { kebabCase } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport { download } from './file';\n\n/**\n * Export a reusable block as a JSON file.\n *\n * @param {number} id\n */\nasync function exportReusableBlock( id ) {\n\tconst postType = await wp.apiFetch( { path: '/wp/v2/types/wp_block' } );\n\tconst post = await wp.apiFetch( { path: '/wp/v2/' + postType.rest_base + '/' + id + '?context=edit' } );\n\tconst title = post.title.raw;\n\tconst content = post.content.raw;\n\tconst fileContent = JSON.stringify( {\n\t\t__file: 'wp_block',\n\t\ttitle,\n\t\tcontent,\n\t}, null, 2 );\n\tconst fileName = kebabCase( title ) + '.json';\n\n\tdownload( fileName, fileContent, 'application/json' );\n}\n\nexport default exportReusableBlock;","/**\n * WordPress dependencies\n */\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { compose, ifCondition } from '@wordpress/compose';\nimport {ModalManager} from '../../modal-manager';\nimport LibraryModal from '../../modal-library';\nimport { ReduxTemplatesIconColor } from '~redux-templates/icons';\n\nconst { Fragment } = wp.element;\n\nfunction OpenLibraryContentMenuItem( ) {\n\tif (!wp.plugins) return null;\n\n\tconst { PluginMoreMenuItem } = wp.editPost;\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<PluginMoreMenuItem\n\t\t\t\ticon={ ReduxTemplatesIconColor() }\n\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tModalManager.open(<LibraryModal />);\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ __( 'Template Library', redux_templates.i18n ) }\n\t\t\t</PluginMoreMenuItem>\n\t\t</Fragment>\n\t);\n}\n\nconst OpenLibraryContentMenu = compose(\n\twithSelect( ( select ) => ( {\n\t} ) ),\n\twithDispatch( ( dispatch ) => {\n\t} ),\n\n)( OpenLibraryContentMenuItem );\n\nif (wp.plugins) {\n\tconst { registerPlugin } = wp.plugins;\n\tregisterPlugin('redux-open-library-context', {\n\t\trender: OpenLibraryContentMenu,\n\t});\n}\n","import {noop} from 'lodash'\nimport {Fragment} from '@wordpress/element'\nimport {__} from '@wordpress/i18n'\nimport {select, withDispatch} from '@wordpress/data'\nimport {compose} from '@wordpress/compose'\nimport {PluginBlockSettingsMenuItem} from '@wordpress/edit-post'\nimport { ReduxTemplatesIcon } from '../../icons';\nimport {ModalManager} from '../../modal-manager'\nimport FeedbackDialog from '~redux-templates/modal-feedback';\nimport sortBy from 'lodash/sortBy';\nimport map from 'lodash/map';\nimport {getWithExpiry} from '../../stores/helper';\n\n/**\n * Based on: https://github.com/WordPress/gutenberg/blob/master/packages/editor/src/components/convert-to-group-buttons/convert-button.js\n */\n\n\n/**\n * Internal dependencies\n */\n\nconst options = sortBy(getWithExpiry('page_categories_list'), 'label');\nconst schema = {\n type: 'object',\n properties: {\n title: {\n type: 'string',\n title: 'Block Title'\n },\n category: {\n type: 'string',\n title: 'Category',\n enum: map(options, 'value'),\n enumNames: map(options, 'label')\n },\n description: {\n type: 'string',\n title: 'Description'\n }\n }\n}\nconst uiSchema = {\n title: {\n classNames: 'fixed-control'\n },\n category: {\n classNames: 'fixed-control'\n },\n description: {\n 'ui:widget': 'textarea',\n }\n};\n\nexport function ShareBlockButton({clientIds})\n{\n // Only supported by WP >= 5.3.\n if (!clientIds) {\n return null\n }\n\n const onShareBlock = () => {\n const data = {\n postID: select('core/editor').getCurrentPostId(),\n editor_blocks: select('core/block-editor').getBlocksByClientId(clientIds),\n type: 'block'\n };\n ModalManager.openFeedback(\n <FeedbackDialog\n title={__('Redux Shares', redux_templates.i18n)}\n width={700}\n description={__('Share this design', redux_templates.i18n)}\n schema={schema}\n uiSchema={uiSchema}\n data={data}\n headerImage={<i className=\"fas fa-share header-icon\"></i>}\n endpoint='share'\n onSuccess={data => window.open(data.data.url, '_blank')}\n buttonLabel={__('Submit Template', redux_templates.i18n)}\n />\n )\n }\n\n return (\n <Fragment>\n <PluginBlockSettingsMenuItem\n icon={ReduxTemplatesIcon}\n label={__('Share Block', redux_templates.i18n)}\n onClick={onShareBlock}\n />\n {/*<PluginBlockSettingsMenuItem*/}\n {/* icon={ReduxTemplatesIcon}*/}\n {/* label={__('Export as Reusable Block', redux_templates.i18n)}*/}\n {/* onClick={onExportBlock}*/}\n {/*/>*/}\n </Fragment>\n )\n}\n\nexport default compose([\n\n withDispatch((dispatch, {\n clientIds, onToggle = noop, blocksSelection = [],\n }) => {\n const {\n replaceBlocks,\n } = dispatch('core/block-editor')\n\n return {\n onExportBlock() {\n if (!blocksSelection.length) {\n return\n }\n\n console.log(blocksSelection);\n\n let blocks = wp.data.select('core/block-editor').getBlocks();\n let fileName = 'blocks.json'\n\n const title = select('core/block-editor').getSelectedBlockName();\n const content = select('core/block-editor').getSelectedBlockClientId();\n // const content = post.content.raw;\n const fileContent = JSON.stringify(\n {\n __file: 'wp_block',\n title,\n content,\n },\n null,\n 2\n );\n console.log(fileContent);\n // const theFileName = kebabCase( title ) + '.json';\n //\n // download( theFileName, fileContent, 'application/json' );\n //\n //\n //\n // if (blocksSelection.length == 1) {\n // fileName = blocksSelection[0].name.replace('/', '_') + '.json'\n // }\n //\n // saveData(blocksSelection, fileName, 'json');\n\n onToggle()\n },\n }\n }),\n])(ShareBlockButton)\n","import { withSelect } from '@wordpress/data'\nimport ShareBlockButton from './buttons'\nimport { ReduxTemplatesIcon } from '~redux-templates/icons';\n\nif (wp.plugins) {\n const { registerPlugin } = wp.plugins;\n const Buttons = withSelect( select => {\n const { getSelectedBlockClientIds } = select( 'core/block-editor' )\n\n // Only supported by WP >= 5.3.\n if ( ! getSelectedBlockClientIds ) {\n return {}\n }\n\n return {\n clientIds: getSelectedBlockClientIds(),\n }\n } )( ShareBlockButton );\n\t// TODO - Finish this off and show to users.\n // registerPlugin( 'redux-templates-share-block-btn', {\n // icon: ReduxTemplatesIcon,\n // render: Buttons,\n // } );\n}\n","import Sidebar from './sidebar'\nimport { ReduxTemplatesIcon } from '~redux-templates/icons';\nif (wp.plugins) {\n\tconst { registerPlugin } = wp.plugins;\n\n\t\n\n\tregisterPlugin( 'redux-templates-share', {\n\t\ticon: ReduxTemplatesIcon,\n\t\trender: Sidebar,\n\t} );\n}\n","const {__} = wp.i18n;\nconst {compose} = wp.compose;\nconst {withSelect, select} = wp.data;\nconst {Fragment} = wp.element;\nconst {PanelBody} = wp.components\n\nimport sortBy from 'lodash/sortBy';\nimport map from 'lodash/map';\nimport {ModalManager} from '../../modal-manager'\nimport FeedbackDialog from '~redux-templates/modal-feedback';\nimport {getWithExpiry} from '../../stores/helper';\n\nconst options = sortBy(getWithExpiry('section_categories_list'), 'label');\nconst schema = {\n type: 'object',\n properties: {\n title: {\n type: 'string',\n title: 'Block Title'\n },\n category: {\n type: 'string',\n title: 'Category',\n enum: map(options, 'value'),\n enumNames: map(options, 'label')\n },\n description: {\n type: 'string',\n title: 'Description'\n }\n }\n}\nconst uiSchema = {\n title: {\n classNames: 'fixed-control'\n },\n category: {\n classNames: 'fixed-control'\n },\n description: {\n 'ui:widget': 'textarea',\n }\n};\n\nfunction Sidebar(props) {\n if (!wp.editPost) return null;\n\treturn null; // TODO - Finish fixing this experience.\n const {PluginSidebar, PluginSidebarMoreMenuItem} = wp.editPost;\n const {getEditorBlocks} = props;\n const onShare = () => {\n const data = {\n postID: select('core/editor').getCurrentPostId(),\n editor_blocks: getEditorBlocks(),\n type: 'page'\n };\n ModalManager.openFeedback(\n <FeedbackDialog\n title={__('Redux Shares', redux_templates.i18n)}\n description={__('Share this design', redux_templates.i18n)}\n schema={schema}\n uiSchema={uiSchema}\n data={data}\n width={700}\n headerImage={<i className=\"fas fa-share header-icon\"></i>}\n endpoint='share'\n onSuccess={data => window.open(data.data.url, '_blank')}\n buttonLabel={__('Submit Template', redux_templates.i18n)}\n />\n )\n }\n\n return (\n <Fragment>\n <PluginSidebarMoreMenuItem target=\"redux-templates-share\">\n {__('Redux Template', redux_templates.i18n)}\n </PluginSidebarMoreMenuItem>\n <PluginSidebar name=\"redux-templates-share\" title={__('Redux Shares', redux_templates.i18n)}>\n <PanelBody title={__('Share this Design', redux_templates.i18n)} initialOpen={true}>\n <div className=\"d-flex justify-content-center\">\n <a className=\"button button-primary\" onClick={onShare}>\n <i className=\"fas fa-share\"></i>\n &nbsp;{__('Share this design', redux_templates.i18n)}\n </a>\n </div>\n </PanelBody>\n </PluginSidebar>\n </Fragment>\n );\n}\n\nexport default compose([\n withSelect((select) => {\n const {getEditorBlocks} = select('core/editor');\n return {\n getEditorBlocks\n };\n })\n])(Sidebar);\n","const { parse, createBlock } = wp.blocks;\nconst { apiFetch } = wp;\nconst { dispatch, select } = wp.data;\nconst { getBlockOrder } = select( 'core/block-editor' );\nconst { getBlockTypes } = select('core/blocks');\nconst { savePost, editPost } = dispatch('core/editor');\nconst { insertBlocks, removeBlocks, multiSelect } = dispatch('core/block-editor');\nconst { createSuccessNotice, createErrorNotice, createNotice, removeNotice } = dispatch('core/notices');\nimport { __ } from '@wordpress/i18n'\nimport { ModalManager } from '~redux-templates/modal-manager';\nimport PreviewModal from '../modal-preview';\nimport FeedbackDialog from '~redux-templates/modal-feedback';\n\n\n// create Block to import template\nexport const handleBlock = (data, installedDependencies) => {\n let block_data = null;\n if ('template' in data) {\n block_data = parse(data.template);\n } else if ('attributes' in data) {\n if (!('innerBlocks' in data)) {\n data.innerBlocks = [];\n }\n if (!('name' in data)) {\n errorCallback('Template malformed, `name` for block not specified.');\n }\n // This kind of plugins are not ready to accept before reloading, thus, we save it into localStorage and just reload for now.\n if (installedDependencies === true) {\n window.redux_templates_tempdata = [...window.redux_templates_tempdata, data];\n return null;\n } else {\n block_data = createBlock(data.name, data.attributes, data.innerBlocks)\n }\n } else {\n errorCallback('Template error. Please try again.');\n }\n return block_data;\n}\n\nexport const processImportHelper = () => {\n const { setImportingTemplate, discardAllErrorMessages, clearSearch } = dispatch('redux-templates/sectionslist');\n const type = select('redux-templates/sectionslist').getActiveItemType() === 'section' ? 'sections' : 'pages';\n const data = select('redux-templates/sectionslist').getImportingTemplate();\n const installedDependencies = select('redux-templates/sectionslist').getInstalledDependencies();\n const isImportToAppend = select('redux-templates/sectionslist').getImportToAppend();\n\n if (type === 'pages') {\n \teditPost({'template': 'redux-templates_full_width'});\n } else {\n\t if ( '' === select( 'core/editor' ).getEditedPostAttribute( 'template' ) ) {\n\t\t editPost({'template': 'redux-templates_contained'});\n\t }\n }\n\n discardAllErrorMessages();\n let the_url = 'redux/v1/templates/template?type=' + type + '&id=' + data.id + '&uid=' + window.userSettings.uid;\n if ('source' in data) {\n the_url += '&source=' + data.source;\n }\n\n const options = {\n method: 'GET',\n path: the_url,\n headers: { 'Content-Type': 'application/json', 'Registered-Blocks': installedBlocksTypes() }\n };\n\n if (dispatch('core/edit-post') && select('core/edit-post').getEditorMode() === 'text') {\n const { switchEditorMode } = dispatch('core/edit-post');\n switchEditorMode()\n }\n window.redux_templates_tempdata = [];\n\n apiFetch(options).then(response => {\n // First, let's give user feedback.\n displayNotice(response.data, {type: 'snackbar'});\n \n if (isImportToAppend === false) {\n const rootBlocksClientIds = getBlockOrder();\n multiSelect(\n rootBlocksClientIds[0],\n rootBlocksClientIds[rootBlocksClientIds.length - 1]\n );\n removeBlocks( rootBlocksClientIds );\n }\n\n if (response.success && response.data) {\n let responseBlockData = response.data;\n\n // Important: Update left count from the response in case of no Redux PRO\n if (redux_templates.mokama !== '1' && isNaN(responseBlockData.left) === false)\n redux_templates.left = responseBlockData.left;\n\n let handledData = [];\n if (responseBlockData.hasOwnProperty('template') || responseBlockData.hasOwnProperty('attributes'))\n handledData = handleBlock(responseBlockData, installedDependencies);\n else\n handledData = Object.keys(responseBlockData).filter(key => key !== 'cache')\n .map(key => handleBlock(responseBlockData[key], installedDependencies));\n\n localStorage.setItem('importing_data', JSON.stringify(data));\n localStorage.setItem('block_data', JSON.stringify(redux_templates_tempdata));\n localStorage.setItem('is_appending', isImportToAppend);\n\n insertBlocks(handledData);\n createSuccessNotice('Template inserted', { type: 'snackbar' });\n\n if (installedDependencies === true)\n savePost()\n .then(() => window.location.reload())\n .catch(() => createErrorNotice('Error while saving the post', { type: 'snackbar' }));\n else {\n ModalManager.close();\n ModalManager.closeCustomizer();\n setImportingTemplate(null);\n }\n afterImportHandling(data, handledData);\n\n } else {\n if (response.success === false)\n errorCallback(response.data.message);\n else\n errorCallback(response.data.error);\n }\n }).catch(error => {\n errorCallback(error.code + ' : ' + error.message);\n });\n}\n\nconst detectInvalidBlocks = (handleBlock) => {\n if (Array.isArray(handleBlock) === true) return handleBlock.filter(block => block.isValid === false);\n return handleBlock && handleBlock.isValid===false ? [handleBlock] : null;\n}\n\n// used for displaying notice from response data\nconst displayNotice = (data, options) => {\n if (data && data.message) {\n const noticeType = data.messageType || 'info';\n createNotice(noticeType, data.message, options)\n }\n}\n\n// show notice or feedback modal dialog based on imported block valid status\nexport const afterImportHandling = (data, handledBlock) => {\n const invalidBlocks = detectInvalidBlocks(handledBlock);\n // get the description from the invalid blocks\n let description = '';\n if (invalidBlocks && invalidBlocks.length < 1)\n description = invalidBlocks.map(block => {\n if (block.validationIssues && Array.isArray(block.validationIssues))\n return block.validationIssues.map(error => {\n return sprintf(...error.args)\n }).join('\\n');\n else\n return null;\n }).join('\\n');\n\n // Prepare Form schema object\n const schema = {\n type: 'object',\n properties: {\n theme_plugins: {\n type: 'boolean',\n title: __('Send theme and plugins', redux_templates.i18n),\n default: true\n },\n send_page_content: {\n type: 'boolean',\n title: __('Send page content', redux_templates.i18n),\n default: true\n },\n template_id: {\n type: 'string',\n default: data.hash,\n title: __('Template ID', redux_templates.i18n)\n },\n description: {\n type: 'string',\n default: description,\n title: __('Description', redux_templates.i18n)\n },\n\n }\n }\n const uiSchema = {\n description: {\n 'ui:widget': 'textarea',\n },\n template_id: {\n 'ui:disabled': true,\n classNames: 'fixed-control'\n }\n };\n\n const feedbackData = {\n content: handledBlock\n };\n if (invalidBlocks && invalidBlocks.length > 0) { // in case there\n createNotice('error', 'Please let us know if there was an issue importing this Redux template.', {\n isDismissible: true,\n id: 'redux-templatesimportfeedback',\n actions: [\n {\n onClick: () => ModalManager.openFeedback(<FeedbackDialog\n title={__('Thank you for reporting an issue.', redux_templates.i18n)}\n description={__('We want to make Redux perfect. Please send whatever you are comfortable sending, and we will do our best to resolve the problem.', redux_templates.i18n)}\n schema={schema}\n uiSchema={uiSchema}\n data={feedbackData}\n ignoreData={true}\n headerImage={<img className=\"header-background\" src={`${redux_templates.plugin}assets/img/popup-contact.png` } />}\n buttonLabel={__('Submit Feedback', redux_templates.i18n)}\n />),\n label: 'Report an Issue',\n isPrimary: true,\n }\n ],\n });\n }\n}\n\n// reload library button handler\nexport const reloadLibrary = () => {\n const { setLoading, setLibrary } = dispatch('redux-templates/sectionslist');\n setLoading(true);\n apiFetch({\n path: 'redux/v1/templates/library?no_cache=1',\n method: 'POST',\n data: {\n 'registered_blocks': installedBlocksTypes(),\n }\n }).then((newLibrary) => {\n setLoading(false);\n setLibrary(newLibrary.data);\n }).catch((error) => {\n errorCallback(error);\n });\n}\n\n\nexport const installedBlocks = () => {\n let installed_blocks = getBlockTypes();\n return Object.keys(installed_blocks).map(key => {\n return installed_blocks[key]['name'];\n })\n}\nexport const installedBlocksTypes = () => {\n let installed_blocks = getBlockTypes();\n\n let names = Object.keys(installed_blocks).map(key => {\n if (!installed_blocks[key]['name'].includes('core')) {\n return installed_blocks[key]['name'].split('/')[0];\n }\n })\n let unique = [...new Set(names)];\n var filtered = unique.filter(function (el) {\n return el;\n });\n\n return filtered\n}\n\nexport const openSitePreviewModal = (index, pageData) => {\n ModalManager.openCustomizer(\n <PreviewModal startIndex={index} currentPageData={pageData} />\n )\n}\n\nconst errorCallback = (errorMessage) => {\n const { appendErrorMessage, setImportingTemplate, setActivateDialogDisplay } = dispatch('redux-templates/sectionslist');\n if (errorMessage === 'Please activate Redux') {\n setActivateDialogDisplay(true);\n redux_templates.left = 0;\n } else {\n appendErrorMessage(errorMessage);\n setImportingTemplate(null);\n }\n}\n","export const actions = {\n setLibrary( library ) {\n return {\n type: 'SET_LIBRARY',\n library\n };\n },\n fetchLibraryFromAPI( path ) {\n return {\n type: 'FETCH_LIBRARY_FROM_API',\n path,\n };\n },\n setActiveItemType( activeItemType ) {\n return {\n type: 'SET_ACTIVE_ITEM_TYPE',\n activeItemType\n }\n },\n setActiveCategory( activeCategory ) {\n return {\n type: 'SET_ACTIVE_CATEGORY',\n activeCategory\n }\n },\n setActiveCollection( activeCollection ) {\n return {\n type: 'SET_ACTIVE_COLLECTION',\n activeCollection\n }\n },\n setActivePriceFilter( activePriceFilter ) {\n return {\n type: 'SET_ACTIVE_PRICE_FILTER',\n activePriceFilter\n }\n },\n setSearchContext( searchContext ) {\n return {\n type: 'SET_SEARCH_CONTEXT',\n searchContext\n }\n },\n setDependencyFilters( dependencyFilters ) {\n return {\n type: 'SET_DEPENDENCY_FILTERS',\n dependencyFilters\n }\n },\n setCurrentPage( currentPage ) {\n return {\n type: 'SET_CURRENT_PAGE',\n currentPage\n }\n },\n setLoading( loading ) {\n return {\n type: 'SET_LOADING',\n loading\n }\n },\n setColumns( columns ) {\n return {\n type: 'SET_COLUMNS',\n columns\n }\n },\n setSortBy( sortBy ) {\n return {\n type: 'SET_SORT_BY',\n sortBy\n }\n },\n appendErrorMessage( errorMessage ) {\n return {\n type: 'APPEND_ERROR_MESSAGE',\n errorMessage: errorMessage || 'Unknown Error'\n }\n },\n discardAllErrorMessages() {\n return {\n type: 'DISCARD_ALL_ERROR_MESSAGES'\n }\n },\n setInstalledDependencies(installedDependencies) {\n return {\n type: 'SET_INSTALLED_DEPENDENCIES',\n installedDependencies\n }\n },\n setTourOpen(isTourOpen) {\n return {\n type: 'SET_TOUR_OPEN',\n isTourOpen\n }\n },\n setTourActiveButtonGroup(data) {\n return {\n type: 'SET_TOUR_ACTIVE_BUTTON_GROUP',\n data\n }\n },\n setTourPreviewVisible(isVisible) {\n return {\n type: 'SET_PREVIEW_VISIBLE',\n isVisible\n }\n },\n setImportingTemplate(importingTemplate) {\n return {\n type: 'SET_IMPORTING_TEMPLATE',\n importingTemplate\n }\n },\n setChallengeStep(data) {\n return {\n type: 'SET_CHALLENGE_STEP',\n data\n }\n },\n setChallengeOpen(data) {\n return {\n type: 'SET_CHALLENGE_OPEN',\n data\n }\n },\n setChallengeTooltipRect(data) {\n return {\n type: 'SET_CHALLENGE_TOOLTIP_RECT',\n data\n }\n },\n setChallengeFinalStatus(data) {\n return {\n type: 'SET_CHALLENGE_FINAL_STATUS',\n data\n }\n },\n setChallengePassed(data) {\n return {\n type: 'SET_CHALLENGE_PASSED',\n data\n }\n },\n setChallengeListExpanded(data){\n return {\n type: 'SET_CHALLENGE_LIST_EXPANDED',\n data\n }\n },\n setActivateDialogDisplay(data) {\n return {\n type: 'SET_ACTIVATE_DIALOG_DISPLAY',\n data\n }\n },\n setImportToAppend(data) {\n return {\n type: 'SET_IMPORT_TO_APPEND',\n data\n }\n },\n setDependencyFilterRule(data) {\n return {\n type: 'SET_DEPENDENCY_FILTER_RULE',\n data\n }\n },\n selectDependencies(data) {\n return {\n type: 'SELECT_DEPENDENCIES',\n data\n }\n },\n clearSearch() {\n return {\n type: 'CLEAR_SEARCH'\n }\n },\n\tclearState() {\n\t\treturn {\n\t\t\ttype: 'CLEAR_STATE'\n\t\t}\n\t}\n};\n","export const getPluginInstance = (pluginKey) => {\n if (pluginKey in redux_templates.supported_plugins) {\n return redux_templates.supported_plugins[pluginKey];\n }\n return false; // Deal with unknown plugins\n}\n\nexport const needsPluginInstall = (pluginKey) => {\n const pluginInstance = getPluginInstance(pluginKey);\n return !pluginInstance || pluginInstance.hasOwnProperty('version') === false;\n}\n\nexport const needsPluginPro = (pluginKey) => {\n const pluginInstance = getPluginInstance(pluginKey);\n return (pluginInstance && pluginInstance.hasOwnProperty('has_pro') && pluginInstance.has_pro &&\n (pluginInstance.hasOwnProperty('is_pro') === false || pluginInstance.is_pro === false));\n}\n\n\nexport const pluginInfo = (pluginKey) => {\n let pluginInstance = processPlugin(pluginKey);\n if (!pluginInstance) return {name: null, slug: null, url: null};\n return pluginInstance\n}\n\n\nexport const processPlugin = (pluginKey) => {\n let pluginInstance = {...getPluginInstance(pluginKey)};\n if (!pluginInstance) {\n return pluginInstance\n }\n\n if ('free_slug' in pluginInstance && pluginInstance['free_slug'] in redux_templates.supported_plugins) {\n let new_instance = {...getPluginInstance(pluginInstance.free_slug)}\n new_instance.free_slug = pluginInstance.free_slug\n new_instance.name = pluginInstance.name\n if (!('is_pro' in new_instance)) {\n delete new_instance.version\n }\n pluginInstance = new_instance\n }\n pluginInstance.slug = pluginInstance.slug ? pluginInstance.slug : pluginKey;\n\n return pluginInstance\n}\n\nexport const requiresPro = (data) => {\n if (data && data.proDependenciesMissing && data.proDependenciesMissing.length > 0) {\n if (isReduxProInstalled()) { // redux pro installed, then skip merged plugins\n return data.proDependenciesMissing.filter((plugin) => isPluginReduxProMerged(plugin) === false).length > 0\n }\n return true;\n }\n return false;\n}\nexport const requiresInstall = (data) => {\n if (data && data.installDependenciesMissing && data.installDependenciesMissing.length > 0) {\n return true;\n }\n if (isReduxProInstalled() && data.proDependenciesMissing) { // redux pro installed, then include merged plugins\n return data.proDependenciesMissing.filter((plugin) => isPluginReduxProMerged(plugin)).length > 0\n }\n return false;\n}\n// Check if redux pro should be installed.\nexport const requiresReduxPro = (data) => {\n if (!data) return false;\n const missingDependencies = [].concat(data.installDependenciesMissing, data.proDependenciesMissing);\n return missingDependencies.reduce((acc, curKey) => {\n if (curKey === 'redux-pro') return true;\n return acc || (isPluginReduxProMerged(curKey) && isReduxProInstalled() === false); // main logic, above were execpetion handling\n }, false);\n}\n\nexport const isPluginReduxProMerged = (pluginKey) => {\n const pluginInstance = getPluginInstance(pluginKey);\n return (pluginInstance !== false && pluginInstance.redux_pro === true);\n}\n\nexport const isTemplateReadyToInstall = (data) => {\n return (requiresInstall(data) || requiresPro(data)) ? false : true;\n}\n\nexport const isTemplatePremium = (data, activeDependencyFilter) => {\n if (data && data.proDependencies !== undefined && data.proDependencies.length > 0) {\n return data.proDependencies.reduce((acc, cur) => {\n if (activeDependencyFilter[cur] === undefined) \n return false;\n return (acc || activeDependencyFilter[cur].value);\n }, false);\n }\n return (data && data.proDependenciesMissing !== undefined && data.proDependenciesMissing.length > 0);\n}\n\nexport const isReduxProInstalled = () => {\n const reduxProPluginInstance = redux_templates.supported_plugins['redux-framework'];\n return reduxProPluginInstance && reduxProPluginInstance.hasOwnProperty('is_pro');\n}","import {isTemplatePremium} from './dependencyHelper';\nimport {missingPluginsArray, NONE_KEY} from './helper';\nconst REDUXTEMPLATES_PRO_KEY = 'redux-pro';\n// Just get current Page Data\nexport const applyCategoryFilter = (pageData, activeCategory) => {\n let currentPageData = [];\n let tempDataID = [];\n if (activeCategory && pageData[activeCategory] && Array.isArray(pageData[activeCategory]) && pageData[activeCategory].length > 0) {\n pageData[activeCategory].map(value => {\n if (!(tempDataID.indexOf(value.ID) > -1)) {\n currentPageData.push(value);\n tempDataID.push(value.ID);\n }\n });\n } else\n for (let key in pageData) {\n Array.isArray(pageData[key]) && pageData[key].map(value => {\n if (!(tempDataID.indexOf(value.ID) > -1)) {\n currentPageData.push(value);\n tempDataID.push(value.ID);\n }\n else {\n if (value.parentID && !(tempDataID.indexOf(value.ID) > -1)) {\n currentPageData.push(value);\n tempDataID.push(value.ID);\n }\n }\n })\n }\n return currentPageData;\n};\n\nexport const applySearchFilter = (pageData, searchContext) => {\n let lowercasedSearchContext = searchContext.toLowerCase();\n if (Array.isArray(pageData)) {\n return pageData.filter(item => (item.name.toLowerCase().indexOf(lowercasedSearchContext) !== -1))\n } else {\n let newPageData = {};\n Object.keys(pageData).forEach(key => {\n newPageData[key] = pageData[key].filter(item => (item.name.toLowerCase().indexOf(lowercasedSearchContext) != -1))\n });\n return newPageData;\n }\n}\n\n\n\nexport const applyHashFilter = (pageData, searchContext) => {\n let lowercasedSearchContext = searchContext.toLowerCase();\n if (Array.isArray(pageData)) {\n return pageData.filter(item => (item.hash && item.hash.toLowerCase().indexOf(lowercasedSearchContext) !== -1))\n } else {\n let newPageData = [];\n Object.keys(pageData).forEach(key => {\n let filteredData = pageData[key].filter(item => (item.hash && item.hash.toLowerCase().indexOf(lowercasedSearchContext) !== -1));\n newPageData = [...newPageData, ...filteredData];\n });\n return newPageData;\n }\n}\n\n// Apply Price filter afterwards : Should make sure if it is a best practise to split this filtering\nexport const applyPriceFilter = (pageData, activePriceFilter, activeDependencyFilter) => {\n if (activePriceFilter !== '') {\n if (Array.isArray(pageData)) {\n return pageData.filter(item => {\n if (activePriceFilter === 'free') return (isTemplatePremium(item, activeDependencyFilter) === false);\n if (activePriceFilter === 'pro') return isTemplatePremium(item, activeDependencyFilter);\n });\n } else {\n let newPageData = {};\n Object.keys(pageData).forEach(key => {\n newPageData[key] = pageData[key].filter(item => {\n if (activePriceFilter === 'free') return (isTemplatePremium(item, activeDependencyFilter) === false);\n if (activePriceFilter === 'pro') return isTemplatePremium(item, activeDependencyFilter);\n });\n });\n return newPageData;\n }\n }\n return pageData;\n}\n\n\nexport const applyDependencyFilters = (pageData, dependencyFilters, dependencyFilterRule) => {\n const truthyDependenciesList = truthyDependencyFiltersList(dependencyFilters);\n if (Array.isArray(pageData)) {\n return pageData.filter(item => isTemplateDependencyFilterIncluded(item, truthyDependenciesList, dependencyFilterRule));\n } else {\n let newPageData = {};\n Object.keys(pageData).forEach(key => {\n newPageData[key] = pageData[key].filter(item => isTemplateDependencyFilterIncluded(item, truthyDependenciesList, dependencyFilterRule));\n });\n return newPageData;\n }\n}\n\nconst isTemplateDependencyFilterIncluded = (item, truthyDependenciesList, dependencyFilterRule) => {\n // console.log(\"now\", item.dependencies, dependencyFilters);\n // No dependencies at all case\n if (!item.dependencies || Object.keys(item.dependencies).length === 0) return truthyDependenciesList.includes(NONE_KEY);\n\n // Normal dependencies filter check\n const filteredList = item.dependencies.filter((dependency) => truthyDependenciesList.includes(dependency));\n\n return dependencyFilterRule ? item.dependencies.length === filteredList.length : filteredList.length > 0; // filter rule = ture => AND operation\n}\n\n// check dependency filter is selected on sidebar\n// Input: dependencyFilter={'qubely', \nexport const valueOfDependencyFilter = (dependencyFilter) => {\n if (dependencyFilter != null && dependencyFilter.hasOwnProperty('value')) return (dependencyFilter.value === true);\n return (dependencyFilter === true);\n}\n\nconst truthyDependencyFiltersList = (dependencyFilters) => {\n return Object.keys(dependencyFilters).filter((key) => dependencyFilters[key].value === true);\n}","import kebabCase from 'lodash/kebabCase'\nimport uniq from 'lodash/uniq';\nimport concat from 'lodash/concat';\nimport flatten from 'lodash/flatten';\nimport sortBy from 'lodash/sortBy';\nimport map from 'lodash/map';\nimport flattenDeep from 'lodash/flattenDeep';\nimport {afterImportHandling} from './actionHelper';\nimport {getPluginInstance, isPluginReduxProMerged} from './dependencyHelper';\nconst {createBlock} = wp.blocks;\nconst {dispatch} = wp.data;\nconst {createSuccessNotice} = dispatch('core/notices');\nconst {insertBlocks} = dispatch('core/block-editor');\n\nconst prefix = 'redux_';\nexport const REDUXTEMPLATES_PRO_KEY = 'redux-pro';\nexport const NONE_KEY = 'core';\nconst EXIPRY_TIME = 5 * 24 * 3600 * 1000;\n\nexport const getCurrentState = (state) => state[state.activeItemType]\n// Helper function not to be exported\nconst convertObjectToArray = (list) => {\n if (!list)\n return [];\n return Object.keys(list).map(key => {\n return {...list[key], ID: key};\n })\n};\n\n// parse categories and section data from section server data\nexport const categorizeData = (list) => {\n let categories = [];\n let data = {};\n\n list.forEach(item => {\n if (item.categories) {\n item.categories.map(catName => {\n let catSlug = kebabCase(catName);\n if (catSlug in data) {\n data[catSlug].push(item)\n } else {\n data[catSlug] = [];\n data[catSlug].push(item)\n }\n let index = -1;\n categories.forEach((change, i) => {\n if (catSlug == change.slug) {\n index = i\n categories[i].ids.push(item.id);\n }\n });\n if (index === -1) {\n categories.push({name: catName, slug: catSlug, ids: [item.id]})\n }\n })\n }\n });\n\n return {categories, data};\n}\n\nexport const parseSectionData = (sections) => {\n const librarySectionData = convertObjectToArray(sections);\n const wholePlugins = uniq(flattenDeep(map(librarySectionData, 'dependencies')));\n const toBeReturned = categorizeData(librarySectionData);\n const categoriesList = toBeReturned.categories.map((category) => {return {label: category.name, value: category.slug}; });\n setWithExpiry('section_categories_list', categoriesList, EXIPRY_TIME);\n return {...toBeReturned, wholePlugins};\n}\n\nexport const parsePageData = (pages) => {\n const libraryPageData = convertObjectToArray(pages);\n const wholePlugins = uniq(flattenDeep(map(libraryPageData, 'dependencies')));\n const toBeReturned = categorizeData(libraryPageData);\n const categoriesList = toBeReturned.categories.map((category) => {return {label: category.name, value: category.slug}; });\n setWithExpiry('page_categories_list', categoriesList, EXIPRY_TIME);\n return {...toBeReturned, wholePlugins};\n}\n\nexport const parseCollectionData = (library) => {\n let libraryCollectionData = convertObjectToArray(library.collections);\n // filter out incomplete data\n libraryCollectionData = libraryCollectionData.filter(collection => collection.pages && collection.pages.length > 0);\n // After common handling, we need to populate homepage data\n libraryCollectionData = libraryCollectionData.map(collection => {\n if (collection.homepage && library.pages[collection.homepage]) collection.homepageData = library.pages[collection.homepage];\n else {\n collection.homepageData = library.pages[collection.pages[0]];\n }\n\n if (collection.pages) {\n collection.installDependenciesMissing = uniq(concat(flatten(collection.pages.map(page => library.pages[page].installDependenciesMissing || []))));\n collection.proDependenciesMissing = uniq(concat(flatten(collection.pages.map(page => library.pages[page].proDependenciesMissing || []))));\n }\n\n return collection;\n });\n const wholePlugins = uniq(flattenDeep(map(libraryCollectionData, 'dependencies')));\n return {...categorizeData(libraryCollectionData), dependencyFilters: {[NONE_KEY]: true, ...library.dependencies}, wholePlugins};\n}\n\n// one of important function\n// get collection children data upon clicking on collection in collections tab\n// always homepage page first, sort alphabetically afterward\nexport const getCollectionChildrenData = (library, activeCollection) => {\n let activeCollectionData = library.collections[activeCollection];\n // sort page except homepage\n let childrenPages = activeCollectionData.pages\n .filter(page => page !== activeCollectionData.homepage)\n .map(child => {\n return {...library.pages[child], ID: child}\n });\n childrenPages = sortBy(childrenPages, 'name');\n // insert homepage at the beginning of the array\n if (activeCollectionData.homepage && library.pages[activeCollectionData.homepage]) {\n childrenPages.unshift(library.pages[activeCollectionData.homepage]);\n }\n return childrenPages;\n}\n\n// Check if the block is pro\nexport const isBlockPro = (pro, source) => {\n if (source && redux_templates.supported_plugins.hasOwnProperty(source))\n return (pro && !redux_templates.supported_plugins[source].is_pro);\n else\n return pro && redux_templates.mokama !== '1';\n}\n\nexport const missingPro = (pro) => {\n return (redux_templates.mokama !== '1' && pro === true);\n}\n\nexport const missingRequirement = (pro, requirements) => {\n if (!requirements) return missingPro(pro);\n else {\n const supported_plugins = redux_templates.supported_plugins;\n for (let i = 0; i < requirements.length; i++) {\n let requirement = requirements[i];\n if (!supported_plugins.hasOwnProperty(requirement.slug))\n return true; // Doesn't have the plugin installed\n else {\n let installedPlugin = supported_plugins[requirement.slug];\n if (Number(requirement.version) > Number(installedPlugin.version) ||\n (requirement.pro === true && installedPlugin.pro === false))\n return true;\n }\n }\n return proCheck;\n }\n}\n\n\nexport const setWithExpiry = (key, value, ttl) => {\n const prefixedKey = prefix + key;\n const now = new Date();\n\n // `item` is an object which contains the original value\n // as well as the time when it's supposed to expire\n const item = {\n value: value,\n expiry: now.getTime() + ttl\n };\n localStorage.setItem(prefixedKey, JSON.stringify(item));\n}\n\nexport const getWithExpiry = (key, defaultValue = null) => {\n const prefixedKey = prefix + key;\n const itemStr = localStorage.getItem(prefixedKey);\n\n // if the item doesn't exist, return null\n if (!itemStr) {\n return defaultValue;\n }\n\n const item = JSON.parse(itemStr);\n const now = new Date();\n\n // compare the expiry time of the item with the current time\n if (now.getTime() > item.expiry) {\n // If the item is expired, delete the item from storage\n // and return null\n localStorage.removeItem(prefixedKey);\n return defaultValue;\n }\n return item.value;\n}\n\n\nexport const handlingLocalStorageData = () => {\n try {\n let blockData = localStorage.getItem('block_data');\n if (!blockData || blockData == null) return;\n blockData = JSON.parse(blockData);\n if (!blockData || blockData == null || blockData.length < 1) return;\n\n blockData = blockData.filter(block => (block.name && block.attributes && block.innerBlocks) )\n .map(block => {\n if (block.name && block.attributes && block.innerBlocks) return createBlock(block.name, block.attributes, block.innerBlocks);\n });\n if (blockData.length > 0) {\n insertBlocks(blockData);\n createSuccessNotice('Template inserted', {type: 'snackbar'});\n }\n // preparing to call after import handling\n let data = localStorage.getItem('importing_data');\n if (!data || data == null) return;\n data = JSON.parse(data);\n afterImportHandling(data, blockData);\n\n // reset the localstorage\n localStorage.setItem('block_data', null);\n localStorage.setItem('importing_data', null);\n } catch (error) {\n alert(error.code + ' : ' + error.message);\n }\n}\n\n\nexport const columnMap = {\n 'large': 2,\n 'medium': 3,\n 'small': 4\n};\n\nexport const pageSizeMap = {\n 'large': 20,\n 'medium': 30,\n 'small': 40\n};\n\nexport const getOnlySelectedDependencyFilters = (dependencyFilters) => {\n return Object.keys(dependencyFilters).filter(key => dependencyFilters[key]);\n}\n\n/*\nInput: dependencies: {getwid: 38, qubely: 82...}\nInput: dependencies: ['getwid', 'qubely', ...]\nResult: {getwid: {value: true, disabled: true}, }\n*/\nexport const getDefaultDependencies = (dependencies) => {\n const unSupportedPlugins = Object.keys(redux_templates.supported_plugins).filter(key => isPluginProActivated(key) === false);\n return dependencies.reduce(\n (acc, cur) => {\n // special handling for pro plugin not activated.\n let value = true;\n if (isProPlugin(cur) && (cur !== REDUXTEMPLATES_PRO_KEY) && isPluginReduxProMerged(cur) === false) value = false; // Not including pro plugin in redux templates\n return {...acc, [cur]: {value, disabled: false}};\n },\n {\n [NONE_KEY]: {value: true, disabled: false}, // Native element is included in default dependencies\n [REDUXTEMPLATES_PRO_KEY]: {value: true, disabled: false} // Redux pro is included in default dependencies\n }\n );\n}\n\nexport const getInstalledDependencies = (dependencies) => {\n const unSupportedPlugins = Object.keys(redux_templates.supported_plugins).filter(key => isPluginProActivated(key) === false);\n return dependencies\n .filter(key => key !== NONE_KEY)\n .reduce(\n (acc, cur) => {\n // special handling for pro plugin not activated.\n let value = true;\n const pluginInstance = getPluginInstance(cur);\n if (pluginInstance) {\n if (isProPlugin(cur) && unSupportedPlugins.indexOf(cur) !== -1) value = false;\n if (isProPlugin(cur) === false && pluginInstance.hasOwnProperty('version') === false) value = false;\n if (cur === REDUXTEMPLATES_PRO_KEY) value = false;\n } else\n value = false;\n return {...acc, [cur]: {value, disabled: false}};\n },\n {\n [NONE_KEY]: {value: true, disabled: false}\n }\n );\n}\n\nconst isProPlugin = (pluginKey) => {\n const pluginInstance = getPluginInstance(pluginKey);\n return (pluginInstance && pluginInstance.hasOwnProperty('free_slug'));\n}\n\nconst isPluginProActivated = (pluginKey) => {\n const pluginInstance = getPluginInstance(pluginKey);\n const freePluginInstance = getPluginInstance(pluginInstance.free_slug);\n return (freePluginInstance.hasOwnProperty('version') && freePluginInstance.hasOwnProperty('is_pro') && freePluginInstance.is_pro !== false);\n}\n\nexport const missingPluginsArray = () => {\n return Object.keys(redux_templates.supported_plugins).filter(pluginKey => isProPlugin(pluginKey) && isPluginProActivated(pluginKey) === false);\n}\n\n\n\n/**\n * Get last saved step.\n */\nexport const loadChallengeStep = () => {\n var step = localStorage.getItem( 'reduxChallengeStep' );\n if (step === null)\n return -1;\n step = parseInt( step, 10 );\n return step;\n}\n\n/**\n * Save Challenge step.\n */\nexport const saveChallengeStep = (step) => {\n localStorage.setItem( 'reduxChallengeStep', step );\n}\n","const {apiFetch} = wp;\nconst {registerStore} = wp.data;\n\nimport {initialState, reducer} from './reducer';\nimport {actions} from './actions';\nimport cloneDeep from 'lodash/cloneDeep';\nimport sortBy from 'lodash/sortBy';\nimport countBy from 'lodash/countBy';\nimport map from 'lodash/map';\nimport flattenDeep from 'lodash/flattenDeep';\nimport uniq from 'lodash/uniq';\nimport uniqBy from 'lodash/uniqBy';\nimport {applyCategoryFilter, applySearchFilter, applyHashFilter, applyPriceFilter, applyDependencyFilters, valueOfDependencyFilter} from './filters'\nimport {getCurrentState, getCollectionChildrenData, loadChallengeStep, NONE_KEY} from './helper';\nimport {isTemplatePremium} from './dependencyHelper'\nimport {installedBlocksTypes} from './actionHelper';\n\nconst getOriginalPageData = (state) => {\n if (state.activeItemType === 'collection' && state.collection.activeCollection !== null)\n return getCollectionChildrenData(state.library, state.collection.activeCollection);\n return getCurrentState(state).data;\n};\n\nconst getActivePriceFilter = (state) => {\n return getCurrentState(state).priceFilter;\n};\nconst getSearchContext = (state) => {\n return (state.activeItemType !== 'saved') ? getCurrentState(state).searchContext : null;\n};\n\nconst getActiveCategory = (state) => {\n return state[state.activeItemType].activeCategory;\n};\n\nconst getCurrentPage = (state) => {\n return state[state.activeItemType].currentPage;\n};\nconst getActiveItemType = (state) => {\n return state.activeItemType;\n};\n\n// get relevant page data, apply category, price, search, dependent filters\nconst getPageData = (state, applyDependencyFilter = true) => {\n let pageData = getOriginalPageData(state);\n const searchKeyword = getSearchContext(state);\n let hashFilteredData = [];\n // Hash filter to take priority\n if (state.activeItemType !== 'collection' && searchKeyword.length > 5) hashFilteredData = applyHashFilter(pageData, searchKeyword);\n // Full search for pageData\n if (pageData && Object.keys(pageData).length > 0) {\n pageData = applySearchFilter(pageData, searchKeyword);\n if (applyDependencyFilter) pageData = applyDependencyFilters(pageData, getDependencyFilters(state), getDependencyFilterRule(state));\n\n pageData = applyPriceFilter(pageData, getActivePriceFilter(state), getDependencyFilters(state));\n if (state.collection.activeCollection === null || state.activeItemType !== 'collection') {\n pageData = applyCategoryFilter(pageData, getActiveCategory(state));\n pageData = sortBy(pageData, getCurrentState(state).sortBy);\n }\n return uniqBy([...pageData, ...hashFilteredData], 'ID');\n }\n return null;\n};\n\nconst getDependencyFilters = (state) => {\n return {...getAllDependencFilters(state), ...getCurrentState(state).dependencyFilters};\n};\n\nconst getAllDependencFilters = (state) => {\n return state[state.activeItemType || 'section'].wholePlugins.reduce((acc, cur) => {\n return {...acc, [cur]: {value: false} };\n }, undefined)\n};\n\n\nconst getDependencyFiltersStatistics = (state) => {\n const pageData = getPageData(state, false);\n const dependentPluginsArray = uniq(flattenDeep(map(pageData, 'dependencies')));\n let dependencyFilters = getDependencyFilters(state);\n Object.keys(dependencyFilters)\n .forEach((plugin) => {\n dependencyFilters[plugin] = {...dependencyFilters[plugin], disabled: dependentPluginsArray.indexOf(plugin) === -1}\n })\n dependencyFilters[NONE_KEY] = {value: valueOfDependencyFilter(dependencyFilters[NONE_KEY]), disabled: false};\n return dependencyFilters;\n};\nconst getDependencyFilterRule = (state) => {\n return state[state.activeItemType].dependencyFilterRule;\n};\nregisterStore('redux-templates/sectionslist', {\n\n reducer,\n actions,\n\n selectors: {\n fetchLibraryFromAPI(state) {\n return state.library;\n },\n receive(state) {\n return state.sections;\n },\n\n getActivePriceFilter,\n getSearchContext,\n getDependencyFilters,\n getDependencyFiltersStatistics,\n getActiveItemType,\n getCurrentPage,\n getActiveCategory,\n getDependencyFilterRule,\n getWholePlugins(state) {\n return (state.activeItemType !== 'saved') ? getCurrentState(state).wholePlugins : null;\n },\n // get categories from currentState, sortBy alphabetically, with the count of pageData within the current category\n getCategoryData(state) {\n let categories = [];\n let pageData = getOriginalPageData(state);\n if (pageData && Object.keys(pageData).length > 0) {\n pageData = applySearchFilter(pageData, getSearchContext(state));\n pageData = applyDependencyFilters(pageData, getDependencyFilters(state), getDependencyFilterRule(state));\n pageData = applyPriceFilter(pageData, getActivePriceFilter(state), getDependencyFilters(state));\n }\n if (state.collection.activeCollection === null || state.activeItemType !== 'collection') {\n categories = cloneDeep(getCurrentState(state).categories);\n categories = categories.map(category => {\n const filteredData = map(pageData[category.slug], 'id');\n return {...category, filteredData};\n });\n }\n\n categories = sortBy(categories, 'name');\n return categories;\n },\n // get relevant page data, apply category, price, search, dependent filters\n getPageData,\n\n getStatistics(state) {\n let pageData = getOriginalPageData(state);\n let staticsData = {true: 0, false: 0};\n if (pageData && Object.keys(pageData).length > 0) {\n pageData = applySearchFilter(pageData, getSearchContext(state));\n pageData = applyDependencyFilters(pageData, getDependencyFilters(state), getDependencyFilterRule(state));\n if (state.collection.activeCollection === null || state.activeItemType !== 'collection') pageData = applyCategoryFilter(pageData, getActiveCategory(state));\n staticsData = countBy(pageData, (item) => isTemplatePremium(item, getDependencyFilters(state)) === true);\n }\n return staticsData;\n },\n getLoading(state) {\n return state.loading;\n },\n getColumns(state) {\n return state.columns;\n },\n getSortBy(state) {\n return getCurrentState(state).sortBy;\n },\n getActiveCollection(state) {\n return state.collection.activeCollection;\n },\n getActiveCollectionData(state) {\n if (state.library && state.library.collections && state.collection)\n return state.library.collections[state.collection.activeCollection];\n return null;\n },\n getSaved(state) {\n return state.saved;\n },\n getErrorMessages(state) {\n return state.errorMessages;\n },\n getInstalledDependencies(state) {\n return state.installedDependencies;\n },\n getTourOpen(state) {\n return state.tour.isOpen;\n },\n getTourActiveButtonGroup(state) {\n return state.tour.activeButtonGroup;\n },\n getTourPreviewVisible(state) {\n return state.tour.isPreviewVisible;\n },\n getImportingTemplate(state) {\n return state.importingTemplate;\n },\n getChallengeStep(state) {\n return loadChallengeStep();\n },\n getChallengeOpen(state) {\n return state.challenge.isOpen;\n },\n getChallengeTooltipRect(state) {\n return state.challenge.tooltipRect;\n },\n getChallengeFinalStatus(state) {\n return state.challenge.finalStatus;\n },\n getChallengePassed(state) {\n return state.challenge.passed;\n },\n getChallengeListExpanded(state) {\n return state.challenge.listExpanded;\n },\n getActivateDialogDisplay(state) {\n return state.activateDialog;\n },\n getImportToAppend(state) {\n return state.isImportToAppend;\n }\n },\n\n controls: {\n FETCH_LIBRARY_FROM_API(action) {\n return apiFetch({path: action.path, method: 'POST', data: {registered_blocks: installedBlocksTypes()}});\n },\n FETCH_SAVED_FROM_API(action) {\n return apiFetch({path: action.path, method: 'POST', data: {registered_blocks: installedBlocksTypes()}});\n }\n },\n\n resolvers: {\n * fetchLibraryFromAPI(state) {\n try {\n const receiveSectionResult = yield actions.fetchLibraryFromAPI('redux/v1/templates/library');\n return actions.setLibrary(receiveSectionResult.data);\n } catch (error) {\n return actions.appendErrorMessage(error.code + ' ' + error.message)\n }\n }\n },\n\n initialState\n});\n","import {parseSectionData, parsePageData, parseCollectionData, getInstalledDependencies, NONE_KEY} from './helper';\nimport {getDefaultDependencies} from './helper';\nimport {loadChallengeStep, saveChallengeStep, setWithExpiry, getWithExpiry} from './helper';\nconst EXIPRY_TIME = 5 * 24 * 3600 * 1000;\nexport const initialState = {\n loading: false,\n activeItemType: getWithExpiry('itemType', 'section'),\n library: null,\n columns: getWithExpiry('column', ''),\n errorMessages: [],\n section: {\n categories: [],\n data: {},\n priceFilter: getWithExpiry('section_price', ''),\n activeCategory: getWithExpiry('section_category', ''),\n dependencyFilters: {},\n dependencyFilterRule: getWithExpiry('section_filterRule', true),\n searchContext: '',\n wholePlugins: [],\n sortBy: getWithExpiry('section_sort', 'name'),\n currentPage: getWithExpiry('section_page', 0)\n },\n page: {\n categories: [],\n data: {},\n priceFilter: getWithExpiry('page_price', ''),\n activeCategory: getWithExpiry('page_category', ''),\n dependencyFilters: {},\n dependencyFilterRule: getWithExpiry('page_filterRule', true),\n searchContext: '',\n wholePlugins: [],\n sortBy: getWithExpiry('page_sort', 'name'),\n currentPage: getWithExpiry('page_page', 0)\n },\n collection: {\n categories: [],\n data: {},\n priceFilter: getWithExpiry('collection_price', ''),\n activeCategory: getWithExpiry('collection_category', 'name'),\n dependencyFilters: {},\n dependencyFilterRule: false,\n searchContext: '',\n wholePlugins: [],\n activeCollection: null,\n sortBy: getWithExpiry('collection_sort', 'name'),\n currentPage: getWithExpiry('collection_page', 0)\n },\n installedDependencies: false, // used when deciding should or not reload page after importing the template\n isImportToAppend: true, // append to or replace the current page content for importing\n tour: {\n isOpen: false,\n activeButtonGroup: null,\n isPreviewVisible: false\n },\n challenge: {\n isOpen: false,\n currentStep: loadChallengeStep(),\n tooltipRect: {},\n finalStatus: '',\n passed: getWithExpiry('reduxChallengePassed', false),\n listExpanded: true\n },\n plugins: {},\n importingTemplate: null,\n activateDialog: false\n};\n\nexport const reducer = ( state = initialState, action ) => {\n\n switch ( action.type ) {\n case 'SET_LIBRARY':\n if (!action.library.dependencies) return state;\n redux_templates.supported_plugins = action.library.plugins;\n const dependencies = getDefaultDependencies(Object.keys(action.library.dependencies));\n const parsedSection = parseSectionData(action.library.sections);\n const parsedPage = parsePageData(action.library.pages);\n\t\t\tconst parsedCollection = parseCollectionData(action.library);\n\t\t\tredux_templates.stats = {\n\t\t\t\t'dependencies': Object.keys(action.library.dependencies).length,\n\t\t\t\t'pages': Object.keys(action.library.pages).length,\n\t\t\t\t'sections': Object.keys(action.library.sections).length,\n\t\t\t\t'collections': Object.keys(action.library.collections).length,\n\t\t\t}\n return {\n ...state,\n loading: false,\n library: action.library,\n section: {\n ...state.section,\n ...parsedSection,\n dependencyFilters: getWithExpiry('section_plugin') ? getWithExpiry('section_plugin') : dependencies\n },\n page: {\n ...state.page,\n ...parsedPage,\n dependencyFilters: getWithExpiry('page_plugin') ? getWithExpiry('page_plugin') : dependencies\n },\n collection: {\n ...state.collection,\n ...parsedCollection,\n dependencyFilters: getWithExpiry('collection_plugin') ? getWithExpiry('collection_plugin') : dependencies\n }\n };\n case 'SET_ACTIVE_CATEGORY':\n setWithExpiry(state.activeItemType + '_category', action.activeCategory, EXIPRY_TIME);\n setWithExpiry(state.activeItemType + '_page', 0, EXIPRY_TIME);\n return {\n ...state,\n [state.activeItemType]: {\n ...state[state.activeItemType],\n currentPage: 0,\n activeCategory: action.activeCategory\n }\n };\n case 'SET_SEARCH_CONTEXT':\n setWithExpiry(state.activeItemType + '_search', action.searchContext, EXIPRY_TIME);\n setWithExpiry(state.activeItemType + '_page', 0, EXIPRY_TIME);\n return {\n ...state,\n [state.activeItemType]: {\n ...state[state.activeItemType],\n currentPage: 0,\n searchContext: action.searchContext\n }\n };\n case 'SET_ACTIVE_PRICE_FILTER':\n setWithExpiry(state.activeItemType + '_price', action.activePriceFilter, EXIPRY_TIME);\n setWithExpiry(state.activeItemType + '_page', 0, EXIPRY_TIME);\n return {\n ...state,\n [state.activeItemType]: {\n ...state[state.activeItemType],\n currentPage: 0,\n priceFilter: action.activePriceFilter\n }\n };\n case 'SET_ACTIVE_ITEM_TYPE':\n setWithExpiry('itemType', action.activeItemType, EXIPRY_TIME);\n return {\n ...state,\n activeItemType: action.activeItemType\n };\n case 'SET_DEPENDENCY_FILTERS':\n setWithExpiry(state.activeItemType + '_plugin', action.dependencyFilters, EXIPRY_TIME);\n setWithExpiry(state.activeItemType + '_page', 0, EXIPRY_TIME);\n return {\n ...state,\n [state.activeItemType]: {\n ...state[state.activeItemType],\n currentPage: 0,\n dependencyFilters: action.dependencyFilters\n }\n }\n case 'SET_SORT_BY':\n setWithExpiry(state.activeItemType + '_sort', action.sortBy, EXIPRY_TIME);\n setWithExpiry(state.activeItemType + '_page', 0, EXIPRY_TIME);\n return {\n ...state,\n [state.activeItemType]: {\n ...state[state.activeItemType],\n currentPage: 0,\n sortBy: action.sortBy\n }\n };\n case 'SET_CURRENT_PAGE':\n setWithExpiry(state.activeItemType + '_page', action.currentPage, EXIPRY_TIME);\n return {\n ...state,\n [state.activeItemType]: {\n ...state[state.activeItemType],\n currentPage: action.currentPage\n }\n };\n case 'SET_ACTIVE_COLLECTION':\n return {\n ...state,\n collection: {\n ...state.collection,\n activeCollection: action.activeCollection\n }\n };\n case 'SET_LOADING':\n return {\n ...state,\n loading: action.loading\n }\n case 'SET_COLUMNS':\n setWithExpiry('column', action.columns, EXIPRY_TIME);\n return {\n ...state,\n columns: action.columns\n }\n case 'APPEND_ERROR_MESSAGE':\n return {\n ...state,\n errorMessages: state.errorMessages.concat([action.errorMessage])\n }\n case 'DISCARD_ALL_ERROR_MESSAGES':\n return {\n ...state,\n errorMessages: []\n }\n case 'SET_INSTALLED_DEPENDENCIES':\n return {\n ...state,\n installedDependencies: action.installedDependencies\n }\n case 'SET_TOUR_OPEN':\n return {\n ...state,\n tour: {\n ...state.tour,\n isOpen: action.isTourOpen\n }\n };\n case 'SET_TOUR_ACTIVE_BUTTON_GROUP':\n return {\n ...state,\n tour: {\n ...state.tour,\n activeButtonGroup: action.data\n }\n };\n case 'SET_PREVIEW_VISIBLE':\n return {\n ...state,\n tour: {\n ...state.tour,\n isPreviewVisible: action.isVisible\n }\n };\n case 'SET_IMPORTING_TEMPLATE':\n return {\n ...state,\n importingTemplate: action.importingTemplate\n }\n case 'SET_CHALLENGE_STEP':\n saveChallengeStep(action.data);\n return {\n ...state,\n challenge: {\n ...state.challenge,\n currentStep: action.data\n }\n }\n case 'SET_CHALLENGE_OPEN':\n return {\n ...state,\n challenge: {\n ...state.challenge,\n isOpen: action.data\n }\n }\n case 'SET_CHALLENGE_TOOLTIP_RECT':\n return {\n ...state,\n challenge: {\n ...state.challenge,\n tooltipRect: action.data\n }\n }\n case 'SET_CHALLENGE_FINAL_STATUS':\n return {\n ...state,\n challenge: {\n ...state.challenge,\n finalStatus: action.data\n }\n }\n case 'SET_CHALLENGE_PASSED':\n setWithExpiry('reduxChallengePassed', action.data, EXIPRY_TIME);\n return {\n ...state,\n challenge: {\n ...state.challenge,\n passed: action.data\n }\n }\n case 'SET_CHALLENGE_LIST_EXPANDED':\n return {\n ...state,\n challenge: {\n ...state.challenge,\n listExpanded: action.data\n }\n }\n case 'SET_ACTIVATE_DIALOG_DISPLAY':\n return {\n ...state,\n activateDialog: action.data\n }\n case 'SET_IMPORT_TO_APPEND':\n return {\n ...state,\n isImportToAppend: action.data\n }\n case 'SET_DEPENDENCY_FILTER_RULE':\n setWithExpiry(state.activeItemType + '_filterRule', action.data, EXIPRY_TIME);\n return {\n ...state,\n [state.activeItemType]: {\n ...state[state.activeItemType],\n dependencyFilterRule: action.data\n }\n }\n // Dependency Shortcut click handler: All, None, Installed and Reset\n case 'SELECT_DEPENDENCIES':\n const types = ['section', 'page', 'collection'];\n let atomHandler;\n switch(action.data) {\n case 'all':\n case 'none':\n const newValue = action.data === 'all';\n atomHandler = (plugins) => plugins\n .filter(plugin => [ NONE_KEY, 'gutenberghub.com', 'shareablock.com' ].includes(plugin) === false )\n .reduce(\n (acc, key) => {\n return { ...acc, [key]: { value: newValue, disabled: false } }\n },\n {\n [NONE_KEY]: {value: true, disabled: false},\n 'gutenberghub.com': {value: true, disabled: false},\n 'shareablock.com': {value: true, disabled: false}\n }\n )\n break;\n case 'installed':\n atomHandler = (plugins) => getInstalledDependencies(plugins);\n break;\n default:\n atomHandler = (plugins) => getDefaultDependencies(plugins);\n break;\n }\n const filtered = types.reduce( (acc, cur) => {\n // save to the local storage as well\n setWithExpiry(cur + '_plugin', atomHandler(state[cur].wholePlugins), EXIPRY_TIME);\n return {\n ...acc,\n [cur]: {\n ...state[cur],\n searchContext: '',\n dependencyFilterRule: cur !== 'collection', // We must always use false for collection to get template kits to work.\n dependencyFilters: atomHandler(state[cur].wholePlugins)\n }\n }\n }, {});\n return {\n ...state,\n ...filtered\n };\n case 'CLEAR_SEARCH':\n return {\n ...state,\n section: {\n ...state.section,\n searchContext: ''\n },\n page: {\n ...state.page,\n searchContext: ''\n },\n collection: {\n ...state.collection,\n searchContext: ''\n }\n }\n\t\tcase 'CLEAR_STATE':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tsection: {\n\t\t\t\t\t...state.section,\n\t\t\t\t\tpriceFilter: '',\n\t\t\t\t\tactiveCategory: '',\n\t\t\t\t\tsearchContext: '',\n\t\t\t\t},\n\t\t\t\tpage: {\n\t\t\t\t\t...state.page,\n\t\t\t\t\tpriceFilter: '',\n\t\t\t\t\tactiveCategory: '',\n\t\t\t\t\tsearchContext: '',\n\t\t\t\t},\n\t\t\t\tcollection: {\n\t\t\t\t\t...state.collection,\n\t\t\t\t\tpriceFilter: '',\n\t\t\t\t\tactiveCategory: '',\n\t\t\t\t\tsearchContext: '',\n\t\t\t\t}\n\t\t\t}\n }\n\n return state;\n};\n","module.exports = wp.blockEditor;","module.exports = wp.blocks;","module.exports = wp.components;","module.exports = wp.compose;","module.exports = wp.data;","module.exports = wp.editPost;","module.exports = wp.element;","module.exports = wp.hooks;","module.exports = wp.i18n;","module.exports = lodash;","module.exports = React;","module.exports = ReactDOM;"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvJA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;ACHA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACrBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACfA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;;;AAGA;AACA;AAEA;;;;AAGA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;;;;AAGA;AACA;AACA;AAEA;AACA;AACA;AAFA;AAKA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AARA;AACA;AAUA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AANA;AAcA;AACA;AAFA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAeA;AACA;AAzGA;AACA;AA0GA;;;;;;;;;;;;AC/HA;AAAA;;;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AACA;AACA;AACA;AAEA;;;;AAGA;AAEA;;;;AAGA;AAEA;AACA;AACA;AACA;AADA;AADA;AACA;AAKA;AACA;AACA;AAQA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AAAA;AACA;AACA;AACA;AAvBA;;;;;;;;;;;;;ACnCA;AAAA;;;AAGA;AAEA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AADA;AAIA;AACA;AAhBA;AAFA;AAuBA;;;;;;;;;;;;AC5BA;AAAA;AAAA;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AAEA;;;;AAGA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;;;;;;;;AAMA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAOA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AAPA;AACA;AASA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1EA;AAAA;AAAA;;;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AACA;AACA;AACA;AAEA;;;;AAGA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAHA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAaA;AACA;AACA;AAEA;AADA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;;AC1DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;AAGA;;;AAGA;AAEA;;;;AAGA;AACA;AACA;AAEA;;;;AAGA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAOA;AACA;AACA;AADA;AADA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAKA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAPA;AADA;AAYA;AACA;AACA;AACA;AACA;AACA;AA7BA;AACA;AA8BA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;;;;;;;;;;;;;ACrGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AAEA;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAUA;AACA;AACA;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;;;AAGA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZA;;;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAIA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAMA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;;;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAKA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AADA;AAGA;AACA;AAbA;AAsCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAFA;AAIA;AApBA;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAFA;AAIA;AAGA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AAFA;AAIA;AACA;AA1BA;AA6BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAFA;AAIA;AACA;AArBA;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAFA;AAlBA;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAdA;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAjCA;AA1JA;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AADA;AAEA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAMA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/DA;;;AAGA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AADA;AAEA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAKA;AAAA;AAAA;AAEA;AACA;AACA;AAHA;AAKA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;;AC/EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AACA;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;;;AAGA;AACA;AAEA;AAEA;AACA;AACA;AACA;;;AAGA;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AAEA;AACA;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AA/EA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAIA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9DA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAVA;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAVA;AAYA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AANA;AAOA;AACA;AAEA;AACA;AAAA;AACA;AACA;AALA;AAMA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAdA;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAKA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1KA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAHA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAGA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAIA;AACA;AADA;AAGA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;;;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AAGA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAKA;AACA;AACA;AAEA;AAGA;AAAA;AAAA;AAAA;AASA;AACA;AACA;AACA;;;;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAUA;AAGA;AACA;AAAA;AACA;AAIA;AACA;AADA;AAGA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AACA;AADA;AAfA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AAFA;AAJA;AAFA;AAYA;AACA;AACA;AACA;AACA;AADA;AAFA;AADA;AASA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAJA;AAOA;AAPA;AAoCA;AACA;AACA;AACA;AACA;AALA;AAOA;AAAA;AAGA;AACA;AACA;AACA;AACA;AALA;AAOA;AAAA;AAKA;AACA;AACA;AACA;AACA;AALA;AAOA;AAAA;AAoBA;AAAA;AAAA;AACA;AACA;AACA;AACA;AALA;AAOA;AAAA;AAKA;;;;;;;;;;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AACA;AAKA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAKA;AACA;AACA;;;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AADA;AAEA;AAAA;AACA;AADA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AADA;AAGA;AAAA;AACA;AADA;AAEA;AAAA;AACA;AADA;AAOA;AACA;AAEA;AACA;AAAA;AACA;AAIA;AACA;AADA;AAGA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AACA;AADA;AAEA;AAAA;AAIA;AACA;AADA;AAEA;AAAA;AAEA;AAAA;AAGA;AACA;AAEA;AACA;AAAA;AACA;AAIA;AACA;AADA;AAGA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;;;;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChBA;AAEA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AACA;AAFA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAOA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AACA;AACA;AAHA;AAKA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;ACzEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAGA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;AACA;AACA;AACA;AACA;AAJA;AAYA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAHA;AAMA;AACA;AACA;AACA;AAJA;AAOA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAJA;AAOA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAJA;AAOA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAJA;AAMA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAOA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AASA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAWA;;;;;;;;;;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACnBA;;;AAGA;AAEA;AAGA;AACA;AACA;AAHA;AASA;AAGA;AACA;AACA;AAHA;AAQA;AAGA;AACA;AACA;AAHA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5BA;;;AAGA;AACA;AACA;AACA;AAAA;AACA;AAEA;;;;AAGA;AAKA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AAKA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AAGA;AACA;AAEA;AACA;AAEA;AAAA;AAGA;AAAA;AAPA;AAiBA;AACA;AAEA;AAAA;AAGA;AAAA;AAPA;AAiBA;AACA;AAEA;AAAA;AAGA;AAAA;AAOA;AAAA;AAdA;AA9CA;AAuEA;;;;;;;;;;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;;;AAGA;AAMA;AAHA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAXA;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AAAA;AAAA;AAMA;AAAA;AAOA;AACA;AACA;;;;;;;;;;;;ACrHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AAAA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;;;;AAGA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAFA;AALA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAKA;AACA;AAAA;AAAA;AACA;AAHA;AAMA;AACA;AACA;AAHA;AASA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;;;;;;;;;;;AC9EA;;;AAGA;AAEA;AAKA;AAFA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACrBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9CA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7LA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnIA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9CA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AAFA;AAIA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AALA;AAQA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAMA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnPA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;AAIA;;;AAGA;AACA;AAEA;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvDA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAMA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAEA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAKA;AAAA;AACA;AAAA;AACA;AAAA;AAQA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClFA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAUA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AAFA;AAQA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7DA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AAAA;AAKA;AAAA;AAKA;AAAA;AAKA;AAEA;AAEA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AADA;AAEA;AAIA;AAAA;AAEA;AAAA;AACA;AADA;AAEA;AAAA;AAIA;AAAA;AACA;AADA;AAOA;AACA;AAEA;AACA;AAAA;AACA;AAGA;AACA;AADA;AAGA;;;;;;;;;;;;AC9HA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAGA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAMA;AAAA;AACA;AAAA;AAAA;AAMA;AACA;AAEA;AACA;AAAA;AACA;AAGA;AACA;AADA;AAGA;;;;;;;;;;;;ACvDA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAEA;AAAA;AAGA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAGA;AAKA;AAAA;AACA;AAAA;AAAA;AAMA;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AASA;AACA;AACA;AAFA;AAGA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAWA;AAAA;AAAA;AACA;AADA;AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AACA;AAEA;AACA;AACA;AADA;AACA;AACA;AAAA;AACA;AAIA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AACA;AADA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAKA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;;;;;;;;;;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAOA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAFA;AAMA;AAAA;AAEA;AAAA;AAMA;AAAA;AAEA;AAAA;AAIA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AASA;;;;;;;;;;;;AC5HA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAMA;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAAA;AAGA;AACA;AAFA;AASA;AAAA;AACA;AADA;AAWA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;;;;;;;;;;;;;;;;;;;;;;;;;ACpFA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AADA;AAGA;AACA;AAAA;AAGA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AADA;AAIA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAGA;AAAA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAHA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAQA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/GA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAQA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAFA;AACA;AACA;AAIA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAFA;AAIA;AACA;AAGA;AACA;AACA;AADA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AAHA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;;AChHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAMA;AAAA;AAQA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;;;;;;;;;;;;ACnCA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AAAA;AACA;AACA;AADA;AAEA;AAAA;AACA;AADA;AAEA;AAAA;AACA;AADA;AAEA;AAAA;AAAA;AAKA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;;;;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AADA;AAIA;AAAA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AADA;AAIA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AAKA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAIA;AACA;AADA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;;;;;;;;;;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAGA;AAAA;AACA;AAAA;AAEA;AAAA;AAGA;AACA;AADA;AAEA;AAAA;AAIA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AADA;AAKA;AAEA;AAAA;AASA;AAAA;AAAA;AAAA;AACA;AAAA;AAMA;AACA;AACA;AACA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AASA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AAGA;AAEA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AAMA;AACA;AAFA;AAMA;AACA;AACA;AACA;AACA;AACA;AANA;AAkBA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAMA;AACA;AAEA;AACA;AAAA;AACA;AAIA;AACA;AADA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAFA;AAGA;AAAA;AAAA;AAKA;AACA;AA7CA;AAgDA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AA9DA;;;;;;;;;;;;ACrDA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AACA;AADA;AAEA;AAAA;AAKA;AAAA;AAAA;AAAA;AACA;AADA;AAEA;AAAA;AACA;AAAA;AAGA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAHA;AAIA;AAAA;AAGA;AAOA;AACA;AACA;;;;;;;;;;;;AC7DA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAIA;AAAA;AACA;AADA;AAOA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AAGA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AACA;AACA;AADA;AAEA;AADA;AAEA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAGA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AADA;AAEA;AAAA;AADA;AAEA;AAAA;AACA;AADA;AAEA;AAAA;AAMA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AACA;AAAA;AAEA;AAQA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAIA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAEA;AAAA;AAGA;AADA;AAGA;AACA;AADA;AAEA;AAAA;AACA;AADA;AAKA;AACA;AADA;AAEA;AAAA;AAAA;AACA;AADA;AAEA;AADA;AAIA;AASA;AAAA;AAAA;AAAA;AACA;AAAA;AASA;;;;;;;;;;;;ACvIA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAFA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAFA;AAKA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AANA;AACA;AAOA;AACA;AAKA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AACA;AAYA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAJA;AAKA;AAAA;AAKA;AAAA;AAAA;AAAA;AAGA;AAAA;AACA;AAAA;AAMA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AAFA;AAIA;AAEA;AAAA;AACA;AACA;AACA;AADA;AAGA;;;;;;;;;;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AADA;AACA;AAIA;AACA;AACA;AACA;AAFA;AAKA;AACA;AACA;AACA;AAEA;AAGA;AAAA;AAAA;AACA;AACA;AAHA;AASA;AACA;AACA;AAEA;AADA;AAKA;AAAA;AACA;AAEA;AACA;AADA;AAGA;AACA;AAAA;AACA;AAEA;AAAA;AAEA;AACA;AADA;AAGA;;;;;;;;;;;;AC9DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AACA;;;;AAIA;AACA;AACA;AAEA;;;;AAGA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;AAGA;AAAA;AAAA;AAAA;AAGA;AAHA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAFA;AAKA;AACA;AACA;AACA;AACA;AAGA;AAAA;AAAA;AACA;AACA;AAHA;AASA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AAJA;AAMA;;;;;;;;;;;;AC1FA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAAA;AAAA;AAKA;AACA;AACA;AAEA;;;;;;;;;AAOA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACxEA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AADA;AAGA;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AAEA;;;;AAGA;AAEA;;;;;;AAKA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AADA;AAKA;AAGA;AACA;AACA;AACA;AACA;AALA;AAWA;AACA;AACA;AACA;AAOA;AAAA;AAEA;AACA;AADA;AAGA;;;;;;;;;;;;AC7CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;AAKA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAFA;AAXA;AAFA;AAmBA;AACA;AACA;AADA;AAGA;AACA;AADA;AAGA;AACA;AADA;AAPA;AAYA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAVA;AAaA;AACA;AACA;AAGA;AACA;AACA;AAHA;AAYA;AAEA;AAGA;AAAA;AAAA;AADA;AAEA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAHA;AAQA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAtCA;AAuCA;;;;;;;;;;;;ACnJA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvBA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAKA;AACA;AACA;AAFA;AAIA;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAFA;AAXA;AAFA;AAmBA;AACA;AACA;AADA;AAGA;AACA;AADA;AAGA;AACA;AADA;AAPA;AACA;AAWA;AACA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AAHA;AAKA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAVA;AAaA;AACA;AACA;AAEA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAQA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;;;;;;;;;;;;AChGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAHA;AACA;AAKA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AAMA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAEA;AAGA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AAHA;AAhBA;AAFA;AA0BA;AACA;AACA;AADA;AAGA;AACA;AACA;AAFA;AAJA;AAUA;AACA;AADA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AARA;AAUA;AACA;AAZA;AAJA;AAoBA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAHA;AAOA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpRA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AADA;AAGA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAAA;AACA;AACA;AADA;AAGA;AACA;AAAA;AACA;AACA;AADA;AAGA;AACA;AAxLA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACjGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAGA;AACA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AAAA;AACA;AACA;AACA;AAGA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AAIA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AACA;AACA;AAAA;AAGA;AACA;AAGA;AACA;AACA;AAAA;AACA;AACA;AAGA;AACA;AACA;AAGA;AACA;AAAA;AACA;AACA;AAFA;AAIA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAHA;AAMA;AACA;AACA;AACA;AAHA;AAMA;AACA;AACA;AAEA;;;;;;AAKA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAHA;AAKA;AAEA;AACA;AACA;AAIA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AADA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;AAGA;AACA;AACA;AAEA;AACA;AACA;AAEA;;;;AAGA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvTA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAnHA;AAqHA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAPA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAWA;AA9IA;;;;;;;;;;;;;;;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXA;AAaA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;AACA;AA5DA;AA+DA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AAEA;AACA;AACA;AAGA;AAHA;AAKA;AAGA;AAHA;AAKA;AAGA;AAHA;AAdA;AACA;AAmBA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAHA;AAFA;AACA;AAOA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAHA;AAFA;AACA;AAOA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAHA;AAFA;AACA;AAOA;AACA;AACA;AAEA;AAFA;AACA;AAGA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAHA;AAFA;AACA;AAOA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAHA;AAFA;AACA;AAOA;AACA;AACA;AAEA;AAEA;AAFA;AAFA;AACA;AAMA;AACA;AAEA;AAEA;AAFA;AAFA;AACA;AAMA;AACA;AAEA;AAFA;AACA;AAGA;AACA;AACA;AAEA;AAFA;AACA;AAGA;AACA;AAEA;AAFA;AACA;AAGA;AACA;AAEA;AAFA;AACA;AAGA;AACA;AAEA;AAFA;AACA;AAGA;AACA;AAEA;AAEA;AAFA;AAFA;AACA;AAMA;AACA;AAEA;AAEA;AAFA;AAFA;AACA;AAMA;AACA;AAEA;AAEA;AAFA;AAFA;AACA;AAMA;AACA;AAEA;AAFA;AACA;AAGA;AACA;AACA;AAEA;AAEA;AAFA;AAFA;AACA;AAMA;AACA;AAEA;AAEA;AAFA;AAFA;AACA;AAMA;AACA;AAEA;AAEA;AAFA;AAFA;AACA;AAMA;AACA;AAEA;AAEA;AAFA;AAFA;AACA;AAMA;AACA;AACA;AAEA;AAEA;AAFA;AAFA;AACA;AAMA;AACA;AAEA;AAEA;AAFA;AAFA;AACA;AAMA;AACA;AAEA;AAFA;AACA;AAGA;AACA;AAEA;AAFA;AACA;AAGA;AACA;AACA;AAEA;AAEA;AAFA;AAFA;AAOA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAHA;AACA;AAKA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAtBA;AACA;AAuBA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AAJA;AAFA;AASA;AACA;AACA;AAGA;AACA;AAEA;AAEA;AAFA;AAIA;AAEA;AAFA;AAIA;AAEA;AAFA;AAVA;AACA;AAcA;AACA;AAEA;AAEA;AACA;AACA;AAJA;AAMA;AAEA;AACA;AACA;AAJA;AAMA;AAEA;AACA;AACA;AAJA;AAdA;AA1SA;AACA;AAgUA;AACA;;;;;;;;;;;ACvYA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;A","sourceRoot":""}
1
+ {"version":3,"file":"redux-templates.js","sources":["webpack:///webpack/bootstrap","webpack:///./redux-templates/src/blocks/library/style.scss","webpack:///./redux-templates/src/challenge/challenge-list-block/style.scss","webpack:///./redux-templates/src/challenge/challenge-timer/style.scss","webpack:///./redux-templates/src/challenge/final-templates/style.scss","webpack:///./redux-templates/src/challenge/style.scss","webpack:///./redux-templates/src/components/background-image/style.scss","webpack:///./redux-templates/src/components/button-group/style.scss","webpack:///./redux-templates/src/components/dependent-plugins/style.scss","webpack:///./redux-templates/src/components/error-notice/style.scss","webpack:///./redux-templates/src/components/fab-wrapper/styles.scss","webpack:///./redux-templates/src/components/multiple-item/style.scss","webpack:///./redux-templates/src/components/pagination/style.scss","webpack:///./redux-templates/src/components/preview-import-button/style.scss","webpack:///./redux-templates/src/components/single-item/style.scss","webpack:///./redux-templates/src/components/template-list-subheader/style.scss","webpack:///./redux-templates/src/components/welcome-guide/style.scss","webpack:///./redux-templates/src/custom-css/style.scss","webpack:///./redux-templates/src/editor.scss","webpack:///./redux-templates/src/modal-import-wizard/style.scss","webpack:///./redux-templates/src/modal-library/sidebar/style.scss","webpack:///./redux-templates/src/modal-library/style.scss","webpack:///./redux-templates/src/modal-library/view-collection/style.scss","webpack:///./redux-templates/src/modal-library/view-saved/style.scss","webpack:///./redux-templates/src/modal-library/view-template-list/style.scss","webpack:///./redux-templates/src/modal-preview/style.scss","webpack:///./redux-templates/src/modals.scss","webpack:///./redux-templates/assets/img/icon-color.svg","webpack:///./redux-templates/assets/img/icon.svg","webpack:///./redux-templates/src/blocks/blocks.js","webpack:///./redux-templates/src/blocks/import/components/edit.js","webpack:///./redux-templates/src/blocks/import/icon.js","webpack:///./redux-templates/src/blocks/import/index.js","webpack:///./redux-templates/src/blocks/import/transforms.js","webpack:///./redux-templates/src/blocks/import/utils/file.js","webpack:///./redux-templates/src/blocks/import/utils/import.js","webpack:///./redux-templates/src/blocks/import/utils/insert.js","webpack:///./redux-templates/src/blocks/library/edit.js","webpack:///./redux-templates/src/blocks/library/index.js","webpack:///./redux-templates/src/blocks/library/insert-library-button.js","webpack:///./redux-templates/src/blocks/library/style.scss?eec2","webpack:///./redux-templates/src/challenge/challenge-list-block/ChallengeStepItem.js","webpack:///./redux-templates/src/challenge/challenge-list-block/ProgressBar.js","webpack:///./redux-templates/src/challenge/challenge-list-block/index.js","webpack:///./redux-templates/src/challenge/challenge-list-block/style.scss?9f45","webpack:///./redux-templates/src/challenge/challenge-timer/index.js","webpack:///./redux-templates/src/challenge/challenge-timer/style.scss?1c53","webpack:///./redux-templates/src/challenge/config.js","webpack:///./redux-templates/src/challenge/final-templates/congrats.js","webpack:///./redux-templates/src/challenge/final-templates/contact.js","webpack:///./redux-templates/src/challenge/final-templates/index.js","webpack:///./redux-templates/src/challenge/final-templates/style.scss?54b2","webpack:///./redux-templates/src/challenge/helper.js","webpack:///./redux-templates/src/challenge/index.js","webpack:///./redux-templates/src/challenge/style.scss?5d1a","webpack:///./redux-templates/src/challenge/tooltip/ChallengeDot.js","webpack:///./redux-templates/src/challenge/tooltip/TooltipBox.js","webpack:///./redux-templates/src/components/background-image/index.js","webpack:///./redux-templates/src/components/background-image/style.scss?1987","webpack:///./redux-templates/src/components/button-group/index.js","webpack:///./redux-templates/src/components/button-group/style.scss?5c67","webpack:///./redux-templates/src/components/dependent-plugins/index.js","webpack:///./redux-templates/src/components/dependent-plugins/style.scss?77c8","webpack:///./redux-templates/src/components/error-notice/index.js","webpack:///./redux-templates/src/components/error-notice/style.scss?3b1b","webpack:///./redux-templates/src/components/fab-wrapper/config.js","webpack:///./redux-templates/src/components/fab-wrapper/index.js","webpack:///./redux-templates/src/components/fab-wrapper/styles.scss?0dab","webpack:///./redux-templates/src/components/multiple-item/index.js","webpack:///./redux-templates/src/components/multiple-item/style.scss?3037","webpack:///./redux-templates/src/components/pagination/index.js","webpack:///./redux-templates/src/components/pagination/style.scss?7abf","webpack:///./redux-templates/src/components/preview-import-button/index.js","webpack:///./redux-templates/src/components/preview-import-button/style.scss?db94","webpack:///./redux-templates/src/components/safe-image-load/index.js","webpack:///./redux-templates/src/components/single-item/index.js","webpack:///./redux-templates/src/components/single-item/style.scss?1c09","webpack:///./redux-templates/src/components/tab-header/index.js","webpack:///./redux-templates/src/components/template-list-subheader/images/view-few.svg","webpack:///./redux-templates/src/components/template-list-subheader/images/view-many.svg","webpack:///./redux-templates/src/components/template-list-subheader/images/view-normal.svg","webpack:///./redux-templates/src/components/template-list-subheader/index.js","webpack:///./redux-templates/src/components/template-list-subheader/style.scss?349f","webpack:///./redux-templates/src/components/welcome-guide/images.js","webpack:///./redux-templates/src/components/welcome-guide/index.js","webpack:///./redux-templates/src/components/welcome-guide/style.scss?55ff","webpack:///./redux-templates/src/custom-css/editor.js","webpack:///./redux-templates/src/custom-css/index.js","webpack:///./redux-templates/src/custom-css/inject-css.js","webpack:///./redux-templates/src/custom-css/style.scss?7049","webpack:///./redux-templates/src/editor.scss?b1ec","webpack:///./redux-templates/src/icons/images/acf-blocks.svg","webpack:///./redux-templates/src/icons/images/advanced-custom-fields.svg","webpack:///./redux-templates/src/icons/images/advanced-gutenberg-blocks.svg","webpack:///./redux-templates/src/icons/images/atomic-blocks.svg","webpack:///./redux-templates/src/icons/images/block-options.svg","webpack:///./redux-templates/src/icons/images/block-slider.svg","webpack:///./redux-templates/src/icons/images/coblocks.svg","webpack:///./redux-templates/src/icons/images/creative-blocks.svg","webpack:///./redux-templates/src/icons/images/editorplus.svg","webpack:///./redux-templates/src/icons/images/elegant-blocks.svg","webpack:///./redux-templates/src/icons/images/enhanced-blocks.svg","webpack:///./redux-templates/src/icons/images/essential-blocks.svg","webpack:///./redux-templates/src/icons/images/forms-gutenberg.svg","webpack:///./redux-templates/src/icons/images/getwid.svg","webpack:///./redux-templates/src/icons/images/ghostkit.svg","webpack:///./redux-templates/src/icons/images/guteblock.svg","webpack:///./redux-templates/src/icons/images/gutentor.svg","webpack:///./redux-templates/src/icons/images/kadence-blocks.svg","webpack:///./redux-templates/src/icons/images/kioken-blocks.svg","webpack:///./redux-templates/src/icons/images/otter-blocks.svg","webpack:///./redux-templates/src/icons/images/qodeblock.svg","webpack:///./redux-templates/src/icons/images/qubely.svg","webpack:///./redux-templates/src/icons/images/snow-monkey-blocks.svg","webpack:///./redux-templates/src/icons/images/stackable-ultimate-gutenberg-blocks.svg","webpack:///./redux-templates/src/icons/images/ultimate-addons-for-gutenberg.svg","webpack:///./redux-templates/src/icons/images/ultimate-blocks.svg","webpack:///./redux-templates/src/icons/images/ultimate-post.svg","webpack:///./redux-templates/src/icons/images/wordpress.svg","webpack:///./redux-templates/src/icons/index.js","webpack:///./redux-templates/src/index.js","webpack:///./redux-templates/src/modal-feedback/index.js","webpack:///./redux-templates/src/modal-import-wizard/ImportingStep.js","webpack:///./redux-templates/src/modal-import-wizard/InstallPluginStep.js","webpack:///./redux-templates/src/modal-import-wizard/OptionStep.js","webpack:///./redux-templates/src/modal-import-wizard/ProPluginsStep.js","webpack:///./redux-templates/src/modal-import-wizard/ReduxTemplatesActivateBox.js","webpack:///./redux-templates/src/modal-import-wizard/ReduxTemplatesPremiumActivate.js","webpack:///./redux-templates/src/modal-import-wizard/ReduxTemplatesPremiumBox.js","webpack:///./redux-templates/src/modal-import-wizard/index.js","webpack:///./redux-templates/src/modal-import-wizard/style.scss?9a4a","webpack:///./redux-templates/src/modal-library/index.js","webpack:///./redux-templates/src/modal-library/layout-with-sidebar/index.js","webpack:///./redux-templates/src/modal-library/sidebar/categoryFilter.js","webpack:///./redux-templates/src/modal-library/sidebar/dependencyFilter.js","webpack:///./redux-templates/src/modal-library/sidebar/dependencyFilterRow.js","webpack:///./redux-templates/src/modal-library/sidebar/index.js","webpack:///./redux-templates/src/modal-library/sidebar/priceFilter.js","webpack:///./redux-templates/src/modal-library/sidebar/style.scss?e89b","webpack:///./redux-templates/src/modal-library/style.scss?f8e2","webpack:///./redux-templates/src/modal-library/view-collection/index.js","webpack:///./redux-templates/src/modal-library/view-collection/style.scss?bea7","webpack:///./redux-templates/src/modal-library/view-saved/index.js","webpack:///./redux-templates/src/modal-library/view-saved/style.scss?fe19","webpack:///./redux-templates/src/modal-library/view-template-list/index.js","webpack:///./redux-templates/src/modal-library/view-template-list/style.scss?32ed","webpack:///./redux-templates/src/modal-manager/index.js","webpack:///./redux-templates/src/modal-preview/FullyOverlayFooter.js","webpack:///./redux-templates/src/modal-preview/FullyOverlayHeader.js","webpack:///./redux-templates/src/modal-preview/SidebarContent.js","webpack:///./redux-templates/src/modal-preview/SitePreviewSidebar.js","webpack:///./redux-templates/src/modal-preview/index.js","webpack:///./redux-templates/src/modal-preview/style.scss?ef64","webpack:///./redux-templates/src/modals.scss?6210","webpack:///./redux-templates/src/plugins/export-page-menu-item/index.js","webpack:///./redux-templates/src/plugins/export/export-block-menu-item.js","webpack:///./redux-templates/src/plugins/export/file.js","webpack:///./redux-templates/src/plugins/export/index.js","webpack:///./redux-templates/src/plugins/export/reusable.js","webpack:///./redux-templates/src/plugins/library-context-menu-item/index.js","webpack:///./redux-templates/src/plugins/share-block-btn/buttons.js","webpack:///./redux-templates/src/plugins/share-block-btn/index.js","webpack:///./redux-templates/src/plugins/sidebar-share/index.js","webpack:///./redux-templates/src/plugins/sidebar-share/sidebar.js","webpack:///./redux-templates/src/stores/actionHelper.js","webpack:///./redux-templates/src/stores/actions.js","webpack:///./redux-templates/src/stores/dependencyHelper.js","webpack:///./redux-templates/src/stores/filters.js","webpack:///./redux-templates/src/stores/helper.js","webpack:///./redux-templates/src/stores/index.js","webpack:///./redux-templates/src/stores/reducer.js","webpack:///external \"wp.blockEditor\"","webpack:///external \"wp.blocks\"","webpack:///external \"wp.components\"","webpack:///external \"wp.compose\"","webpack:///external \"wp.data\"","webpack:///external \"wp.editPost\"","webpack:///external \"wp.element\"","webpack:///external \"wp.hooks\"","webpack:///external \"wp.i18n\"","webpack:///external \"lodash\"","webpack:///external \"React\"","webpack:///external \"ReactDOM\""],"sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"redux-templates\": 0\n \t};\n\n \tvar deferredModules = [];\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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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 \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"./redux-templates/src/index.js\",\"vendor\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-template-library-block .components-placeholder__label svg {\\n margin-right: 8px; }\\n\\n.redux-template-library-block button.components-button {\\n height: auto;\\n font-weight: 600;\\n text-transform: uppercase;\\n font-size: 13px;\\n padding: 11px 20px;\\n background: #fff; }\\n\\n.components-button.has-icon.redux-templates-insert-library-button {\\n height: 100%; }\\n\\n.redux-templates-insert-library-button {\\n margin-left: 10px;\\n margin-right: 10px; }\\n .redux-templates-insert-library-button svg {\\n width: 20px;\\n height: 20px; }\\n\\n.redux-insert-library-button {\\n margin-left: 10px;\\n margin-right: 10px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".challenge-list-block {\\n padding: 15px 20px 20px;\\n margin-bottom: 15px;\\n background-color: #fff;\\n overflow: hidden;\\n border-radius: 4px;\\n box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2);\\n -webkit-box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2);\\n -moz-box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2); }\\n\\n.challenge-bar {\\n border-radius: 20px;\\n background-color: #eee; }\\n\\n.challenge-bar div {\\n width: 0;\\n height: 20px;\\n border-radius: 20px;\\n background-color: #2576a4; }\\n\\n.challenge-list {\\n list-style: none;\\n margin: 17px 0 20px;\\n font-size: 13px; }\\n .challenge-list li {\\n margin-bottom: 17px; }\\n .challenge-list li i {\\n display: inline-block;\\n font-size: 18px;\\n color: #d6d6d6;\\n margin-right: 8px;\\n line-height: 15px;\\n vertical-align: bottom;\\n border-radius: 50%; }\\n .challenge-list li.challenge-item-current {\\n font-weight: bold; }\\n .challenge-list li.challenge-item-current i {\\n color: #df7739;\\n font-size: 17.5px;\\n line-height: 1;\\n text-indent: 0.5px; }\\n .challenge-list li.challenge-item-completed {\\n font-weight: initial;\\n text-decoration: line-through; }\\n .challenge-list li.challenge-item-completed i {\\n color: #6ab255;\\n font-size: 18px;\\n background-color: #fff; }\\n .challenge-list li .dashicons-yes {\\n display: none;\\n vertical-align: middle; }\\n\\n/* /.challenge-list */\\nbutton.btn-challenge-start {\\n font-size: 12px;\\n padding: 6px 15px;\\n border: 1px solid #00a7e5;\\n background-color: #24b0a6;\\n border-radius: 3px;\\n color: #fff;\\n cursor: pointer; }\\n button.btn-challenge-start:hover {\\n background-color: #19837c; }\\n\\n.btn-challenge-cancel,\\n.btn-challenge-skip {\\n margin: 6px 0;\\n border: 0;\\n text-decoration: underline; }\\n\\n.btn-challenge-cancel,\\n.btn-challenge-skip {\\n align-self: flex-end;\\n color: #909090;\\n font-size: 12px;\\n font-weight: normal;\\n background: none; }\\n\\n.wpforms-btn-md {\\n min-height: initial; }\\n\\n.challenge-button-row {\\n display: flex;\\n justify-content: space-between; }\\n .challenge-button-row button {\\n cursor: pointer; }\\n\\n.started.challenge-button-row {\\n align-content: space-between;\\n flex-direction: column; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".block-timer {\\n padding: 5px;\\n background-color: #2d2d2d;\\n border-radius: 500px;\\n width: 277px;\\n box-sizing: border-box;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2);\\n -webkit-box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2);\\n -moz-box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2);\\n padding-left: 50px; }\\n .block-timer img {\\n width: 50px;\\n height: 50px;\\n border-radius: 50%; }\\n .block-timer h3 {\\n font-size: 14px;\\n font-weight: 500;\\n color: #fff;\\n margin: 0; }\\n .block-timer p {\\n font-size: 14px;\\n font-weight: 100;\\n color: #ababab;\\n margin: 0; }\\n .block-timer .caret-icon {\\n border: 2px solid;\\n border-radius: 50%;\\n color: #6c6c6c;\\n margin: 0 15px;\\n width: 23px;\\n height: 23px;\\n font-size: 20px;\\n cursor: pointer; }\\n .block-timer .caret-icon .fa {\\n width: 100%;\\n text-align: center;\\n -webkit-transition: 400ms;\\n -o-transition: 400ms;\\n transition: 400ms; }\\n .block-timer .caret-icon.closed .fa {\\n -webkit-transform: rotate(180deg) translateY(1px);\\n -ms-transform: rotate(180deg) translateY(1px);\\n transform: rotate(180deg) translateY(1px); }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".challenge-popup-wrapper {\\n height: 500px;\\n border-radius: 10px; }\\n\\n.challenge-popup-header {\\n width: 100%;\\n height: 212px;\\n border-top-left-radius: 8px;\\n border-top-right-radius: 8px; }\\n\\n.challenge-popup-header-congrats {\\n background-position: center;\\n background-size: cover; }\\n\\n.challenge-popup-header-contact {\\n background-position: center;\\n background-size: auto 75%;\\n background-color: #eee;\\n background-repeat: no-repeat; }\\n\\n.challenge-popup-content {\\n padding: 30px 40px;\\n -webkit-font-smoothing: antialiased; }\\n\\n.challenge-popup-content h3 {\\n color: #24b0a6;\\n margin: 0 0 20px;\\n font-size: 24px;\\n font-family: \\\"Helvetica Neue\\\";\\n font-weight: 500; }\\n\\n.challenge-popup-content p {\\n font-size: 16px;\\n margin: 0 0 22px; }\\n\\n.challenge-popup-content b {\\n font-weight: 500; }\\n\\n.challenge-popup-content .challenge-contact-message {\\n box-shadow: none;\\n resize: none;\\n margin-bottom: 21px;\\n width: 100%;\\n min-height: 175px; }\\n\\n.challenge-popup-content label {\\n font-size: 13.8px;\\n display: block;\\n margin-bottom: 23px; }\\n\\n.challenge-popup-content input[type=\\\"checkbox\\\"] {\\n margin-right: 8px; }\\n\\n.challenge-popup-content .rating-stars {\\n color: #fdb72c;\\n font-size: 18px;\\n font-weight: bold; }\\n\\n.challenge-popup-close .fa-times {\\n font-size: 20px;\\n color: #777;\\n float: right;\\n margin: 15px;\\n border-radius: 50%;\\n cursor: pointer; }\\n\\n.challenge-popup-btn {\\n display: inline-block;\\n border-radius: 2px;\\n cursor: pointer;\\n text-decoration: none;\\n text-align: center;\\n vertical-align: middle;\\n white-space: nowrap;\\n box-shadow: none;\\n font-size: 15px;\\n font-weight: 600;\\n padding: 14px 25px;\\n border: 1px solid #00a7e5;\\n background-color: #24b0a6;\\n color: #fff; }\\n .challenge-popup-btn:hover {\\n border: 1px solid #19837c;\\n background-color: #19837c;\\n color: #fff; }\\n .challenge-popup-btn .dashicons-external {\\n margin-left: 6px; }\\n\\n.challenge-popup-content.challenge-contact p {\\n font-size: 14px; }\\n\\n.challenge-popup-content.challenge-contact textarea {\\n margin-bottom: 10px; }\\n\\n.challenge-popup-content.challenge-contact label {\\n font-size: 13px;\\n margin-bottom: 15px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-challenge {\\n display: block;\\n position: fixed;\\n right: 1em;\\n bottom: 55px;\\n max-width: 277px;\\n z-index: 9999; }\\n .redux-templates-challenge p {\\n font-size: 14px;\\n line-height: 1.4;\\n margin-top: 0;\\n color: #23282c; }\\n .redux-templates-challenge b {\\n font-weight: 500; }\\n .redux-templates-challenge.challenge-start {\\n display: initial; }\\n\\n@media all and (max-height: 900px) {\\n #challenge-contact-popup {\\n margin: 50px 0 20px; } }\\n\\n.challenge-tooltip.tooltipster-sidetip {\\n z-index: 100100 !important; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-top .tooltipster-box {\\n margin-bottom: 18px; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-top .tooltipster-arrow {\\n bottom: 8px; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background {\\n top: 0; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-right .tooltipster-box {\\n margin-right: 18px; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-right .tooltipster-arrow {\\n left: 8px; }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-box {\\n background: #fff;\\n border: none;\\n border-radius: 4px;\\n box-shadow: 0 10px 35px 0 rgba(0, 0, 0, 0.25);\\n -webkit-box-shadow: 0 10px 35px 0 rgba(0, 0, 0, 0.25);\\n -moz-box-shadow: 0 10px 35px 0 rgba(0, 0, 0, 0.25); }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-box .tooltipster-content {\\n color: #444;\\n padding: 16px 20px 18px; }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-box .tooltipster-content h3 {\\n font-size: 15px;\\n margin: 0; }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-box .tooltipster-content p {\\n margin: 10px 0 0; }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-box .challenge-done-btn {\\n border-radius: 3px;\\n cursor: pointer;\\n text-decoration: none;\\n text-align: center;\\n vertical-align: middle;\\n white-space: nowrap;\\n box-shadow: none;\\n font-size: 13px;\\n font-weight: 600;\\n padding: 7px 18px;\\n border: 1px solid #00a7e5;\\n background-color: #24b0a6;\\n color: #fff;\\n display: block;\\n margin: 15px auto 0;\\n outline: none; }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-box .challenge-done-btn:hover {\\n border: 1px solid #19837c;\\n background-color: #19837c; }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-arrow-border {\\n border: none; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background {\\n border-bottom-color: #fff; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-background {\\n border-right-color: #fff; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-background {\\n border-top-color: #fff; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-background {\\n border-left-color: #fff; }\\n\\n.block-editor-page .edit-post-layout .components-notice-list > div {\\n padding-left: 50px; }\\n\\n.block-editor-page span.wpforms-challenge-dot-step5 {\\n margin: 22px 18px;\\n z-index: 9999; }\\n\\n.block-editor-page .wpforms-challenge-tooltip.wpforms-challenge-tooltip-step5 {\\n max-width: 233px;\\n z-index: 99980 !important; }\\n\\n.challenge-wrapper {\\n position: fixed;\\n top: 0;\\n left: 0;\\n z-index: 600000; }\\n\\n.challenge-tooltip-holder {\\n position: fixed;\\n top: 0;\\n left: 0;\\n z-index: 600000; }\\n .challenge-tooltip-holder .tooltipster-box {\\n position: absolute;\\n box-shadow: 0 -10px 35px 0 rgba(0, 0, 0, 0.25);\\n z-index: 10000;\\n background: #fff;\\n padding: 15px 20px; }\\n\\n.challenge-dot {\\n display: inline-block;\\n width: 16px;\\n height: 16px;\\n background: #24b0a6;\\n box-shadow: 0 0 0 4px rgba(25, 131, 124, 0.15);\\n border-radius: 50%;\\n border: 0;\\n padding: 0; }\\n\\n.tooltipster-sidetip .tooltipster-arrow {\\n position: absolute;\\n width: 20px;\\n height: 10px;\\n z-index: 10000; }\\n\\n.tooltipster-sidetip .tooltipster-arrow-uncropped {\\n position: relative; }\\n\\n.tooltipster-sidetip .tooltipster-arrow-border {\\n left: 0;\\n top: 0;\\n border: none;\\n width: 0;\\n height: 0;\\n position: absolute; }\\n\\n.challenge-tooltip.tooltipster-sidetip .tooltipster-arrow-background {\\n top: 0;\\n left: 0;\\n width: 0;\\n height: 0;\\n position: absolute;\\n border: 10px solid transparent; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-top {\\n border-top-color: #fff; }\\n\\n.challenge-tooltip.tooltipster-sidetip.tooltipster-bottom {\\n border-bottom-color: #fff; }\\n\\n.block-timer .caret-icon .fa {\\n -webkit-transition: 400ms;\\n -o-transition: 400ms;\\n transition: 400ms;\\n line-height: 23px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-single-section-item .block-editor-block-preview__container {\\n margin: 0 auto;\\n min-height: 130px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-import-button-group {\\n text-align: center; }\\n .redux-templates-import-button-group.disabled span a {\\n cursor: default;\\n opacity: 0.8; }\\n\\n.redux-templates-single-section-item {\\n margin-bottom: 15px; }\\n .redux-templates-single-section-item .redux-templates-import-button-group {\\n margin-top: 10%; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-button-display-dependencies {\\n display: flex;\\n justify-content: center;\\n margin: 10px; }\\n .redux-templates-button-display-dependencies span svg {\\n margin-right: 5px;\\n cursor: pointer; }\\n .redux-templates-button-display-dependencies span svg * {\\n fill: #f7f7f7; }\\n .redux-templates-button-display-dependencies span.missing-dependency svg * {\\n fill: rgba(247, 247, 247, 0.5); }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-error-notice .components-notice {\\n display: flex;\\n font-family: -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 13px;\\n background-color: #e5f5fa;\\n border-left: 4px solid #00a0d2;\\n margin: 5px 15px 2px;\\n padding: 8px 12px;\\n align-items: center;\\n position: absolute;\\n height: 50px;\\n z-index: 9999;\\n width: 50%;\\n right: 0;\\n top: 70px;\\n transition: opacity 2s linear; }\\n .redux-templates-error-notice .components-notice.is-dismissible {\\n padding-right: 0; }\\n .redux-templates-error-notice .components-notice.is-success {\\n border-left-color: #4ab866;\\n background-color: rgba(74, 184, 102, 0.95); }\\n .redux-templates-error-notice .components-notice.is-warning {\\n border-left-color: #f0b849;\\n background-color: rgba(254, 248, 238, 0.95); }\\n .redux-templates-error-notice .components-notice.is-error {\\n border-left-color: #d94f4f;\\n background-color: rgba(249, 226, 226, 0.95); }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".rtf {\\n box-sizing: border-box;\\n margin: 25px;\\n position: fixed;\\n white-space: nowrap;\\n z-index: 9998;\\n padding-left: 0;\\n list-style: none; }\\n .rtf.open .rtf--mb > * {\\n transform-origin: center center;\\n transform: none;\\n transition: ease-in-out transform 0.2s; }\\n .rtf.open .rtf--mb > ul {\\n list-style: none;\\n margin: 0;\\n padding: 0; }\\n .rtf.open .rtf--ab__c:hover > span {\\n transition: ease-in-out opacity 0.2s;\\n opacity: 0.9; }\\n .rtf.open .rtf--ab__c > span.always-show {\\n transition: ease-in-out opacity 0.2s;\\n opacity: 0.9; }\\n .rtf.open .rtf--ab__c:nth-child(1) {\\n transform: translateY(-60px) scale(1);\\n transition-delay: 0.03s; }\\n .rtf.open .rtf--ab__c:nth-child(1).top {\\n transform: translateY(60px) scale(1); }\\n .rtf.open .rtf--ab__c:nth-child(2) {\\n transform: translateY(-120px) scale(1);\\n transition-delay: 0.09s; }\\n .rtf.open .rtf--ab__c:nth-child(2).top {\\n transform: translateY(120px) scale(1); }\\n .rtf.open .rtf--ab__c:nth-child(3) {\\n transform: translateY(-180px) scale(1);\\n transition-delay: 0.12s; }\\n .rtf.open .rtf--ab__c:nth-child(3).top {\\n transform: translateY(180px) scale(1); }\\n .rtf.open .rtf--ab__c:nth-child(4) {\\n transform: translateY(-240px) scale(1);\\n transition-delay: 0.15s; }\\n .rtf.open .rtf--ab__c:nth-child(4).top {\\n transform: translateY(240px) scale(1); }\\n .rtf.open .rtf--ab__c:nth-child(5) {\\n transform: translateY(-300px) scale(1);\\n transition-delay: 0.18s; }\\n .rtf.open .rtf--ab__c:nth-child(5).top {\\n transform: translateY(300px) scale(1); }\\n .rtf.open .rtf--ab__c:nth-child(6) {\\n transform: translateY(-360px) scale(1);\\n transition-delay: 0.21s; }\\n .rtf.open .rtf--ab__c:nth-child(6).top {\\n transform: translateY(360px) scale(1); }\\n\\n.rtf--mb__c {\\n padding: 25px;\\n margin: -25px; }\\n .rtf--mb__c *:last-child {\\n margin-bottom: 0; }\\n .rtf--mb__c:hover > span {\\n transition: ease-in-out opacity 0.2s;\\n opacity: 0.9; }\\n .rtf--mb__c > span.always-show {\\n transition: ease-in-out opacity 0.2s;\\n opacity: 0.9; }\\n .rtf--mb__c > span {\\n opacity: 0;\\n transition: ease-in-out opacity 0.2s;\\n position: absolute;\\n top: 50%;\\n transform: translateY(-50%);\\n margin-right: 6px;\\n margin-left: 4px;\\n background: rgba(0, 0, 0, 0.75);\\n padding: 2px 4px;\\n border-radius: 2px;\\n color: #fff;\\n font-size: 13px;\\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.28); }\\n .rtf--mb__c > span.right {\\n right: 100%; }\\n\\n.rtf--mb {\\n height: 56px;\\n width: 56px;\\n z-index: 9999;\\n background-color: #666;\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n border: none;\\n border-radius: 50%;\\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.28);\\n cursor: pointer;\\n outline: none;\\n padding: 0;\\n -webkit-user-drag: none;\\n font-weight: bold;\\n color: #f1f1f1;\\n font-size: 18px; }\\n .rtf--mb > * {\\n transition: ease-in-out transform 0.2s; }\\n\\n.rtf--ab__c {\\n display: block;\\n position: absolute;\\n top: 0;\\n right: 1px;\\n padding: 10px 0;\\n margin: -10px 0;\\n transition: ease-in-out transform 0.2s; }\\n .rtf--ab__c > span {\\n opacity: 0;\\n transition: ease-in-out opacity 0.2s;\\n position: absolute;\\n top: 50%;\\n transform: translateY(-50%);\\n margin-right: 6px;\\n background: rgba(0, 0, 0, 0.75);\\n padding: 2px 4px;\\n border-radius: 2px;\\n color: #fff;\\n font-size: 13px;\\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.28); }\\n .rtf--ab__c > span.right {\\n right: 100%; }\\n .rtf--ab__c:nth-child(1) {\\n transform: translateY(-60px) scale(0);\\n transition-delay: 0.21s; }\\n .rtf--ab__c:nth-child(1).top {\\n transform: translateY(60px) scale(0); }\\n .rtf--ab__c:nth-child(2) {\\n transform: translateY(-120px) scale(0);\\n transition-delay: 0.18s; }\\n .rtf--ab__c:nth-child(2).top {\\n transform: translateY(120px) scale(0); }\\n .rtf--ab__c:nth-child(3) {\\n transform: translateY(-180px) scale(0);\\n transition-delay: 0.15s; }\\n .rtf--ab__c:nth-child(3).top {\\n transform: translateY(180px) scale(0); }\\n .rtf--ab__c:nth-child(4) {\\n transform: translateY(-240px) scale(0);\\n transition-delay: 0.12s; }\\n .rtf--ab__c:nth-child(4).top {\\n transform: translateY(240px) scale(0); }\\n .rtf--ab__c:nth-child(5) {\\n transform: translateY(-300px) scale(0);\\n transition-delay: 0.09s; }\\n .rtf--ab__c:nth-child(5).top {\\n transform: translateY(300px) scale(0); }\\n .rtf--ab__c:nth-child(6) {\\n transform: translateY(-360px) scale(0);\\n transition-delay: 0.03s; }\\n .rtf--ab__c:nth-child(6).top {\\n transform: translateY(360px) scale(0); }\\n\\n.rtf--ab {\\n height: 48px;\\n width: 48px;\\n background-color: #aaa;\\n display: inline-flex;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n border: none;\\n border-radius: 50%;\\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.28);\\n cursor: pointer;\\n outline: none;\\n padding: 0;\\n -webkit-user-drag: none;\\n font-weight: bold;\\n color: #f1f1f1;\\n margin-right: 4px;\\n font-size: 16px;\\n z-index: 10000; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/*multiple box*/\\n.redux-templates-multiple-template-box {\\n margin-bottom: 25px;\\n position: relative;\\n transition: all 0.05s ease-in-out; }\\n .redux-templates-multiple-template-box img {\\n transition: all 0.05s ease-in-out; }\\n .redux-templates-multiple-template-box .redux-templates-box-shadow {\\n transition: all 0.05s ease-in-out;\\n box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.1); }\\n .redux-templates-multiple-template-box .redux-templates-default-template-image .imageloader-loaded {\\n overflow: hidden; }\\n .redux-templates-multiple-template-box .multiple-template-view {\\n background: #fff;\\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05), 0 10px 0 -5px #fff, 0 10px 1px -4px rgba(0, 0, 0, 0.08), 0 20px 0 -10px #fff, 0 20px 1px -9px rgba(0, 0, 0, 0.08);\\n cursor: pointer;\\n min-height: 100px; }\\n .redux-templates-multiple-template-box .redux-templates-import-button-group {\\n margin-top: 15%; }\\n .redux-templates-multiple-template-box .redux-templates-tmpl-info {\\n padding: 10px 12px;\\n position: absolute;\\n bottom: 0;\\n width: 100%;\\n background: rgba(255, 255, 255, 0.95);\\n border-top: 1px solid #f2f4f7;\\n transition: all 0.2s ease-in-out; }\\n .redux-templates-multiple-template-box .redux-templates-tmpl-info h5 {\\n margin: 0;\\n font-size: 14px;\\n color: #23282d;\\n line-height: 19px; }\\n .redux-templates-multiple-template-box .redux-templates-tmpl-info h5 span {\\n font-size: 13px;\\n color: #cdcfd1;\\n line-height: 18px; }\\n .redux-templates-multiple-template-box .redux-templates-button-overlay {\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n border-radius: 0px;\\n opacity: 0;\\n -webkit-transition: opacity 0.2s ease-in-out;\\n transition: opacity 0.2s ease-in-out;\\n box-sizing: border-box; }\\n .redux-templates-multiple-template-box::before {\\n z-index: 2; }\\n .redux-templates-multiple-template-box::after {\\n z-index: 1; }\\n .redux-templates-multiple-template-box .redux-templates-button-overlay {\\n background: rgba(0, 0, 0, 0.5);\\n position: absolute;\\n height: 100%;\\n width: 100%;\\n opacity: 0; }\\n .redux-templates-multiple-template-box:hover .redux-templates-box-shadow {\\n box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.3); }\\n .redux-templates-multiple-template-box:hover .multiple-template-view {\\n border-color: transparent; }\\n .redux-templates-multiple-template-box:hover .redux-templates-tmpl-info {\\n border-top-color: transparent;\\n background: #fff; }\\n .redux-templates-multiple-template-box:hover .redux-templates-button-overlay {\\n opacity: 1; }\\n .redux-templates-multiple-template-box:hover img {\\n filter: blur(2px); }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".tablenav-pages {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n margin-bottom: 20px; }\\n .tablenav-pages span.displaying-num {\\n margin-right: 20px; }\\n .tablenav-pages #table-paging {\\n margin-left: 10px;\\n margin-right: 10px; }\\n .tablenav-pages #table-paging span {\\n line-height: 30px; }\\n .tablenav-pages span.tablenav-pages-navspan.button {\\n cursor: pointer;\\n margin: 0 2px; }\\n .tablenav-pages span.tablenav-pages-navspan.button.disabled {\\n cursor: default; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".action-buttons span,\\n.action-buttons a {\\n display: inline-block;\\n padding: 0 12px 2px;\\n margin: 2px;\\n height: 33px;\\n line-height: 32px;\\n font-size: 13px;\\n color: #353535;\\n border: 1px solid #f7f7f7;\\n background: #f7f7f7;\\n box-shadow: 0 1px 2px #ddd;\\n vertical-align: top;\\n border-radius: 3px;\\n text-decoration: none;\\n cursor: pointer;\\n -webkit-transition: all 0.2s ease-in-out;\\n transition: all 0.2s ease-in-out; }\\n .action-buttons span:hover,\\n .action-buttons a:hover {\\n box-shadow: 0 1px 2px #ccc;\\n background: #f1f1f1; }\\n\\n.action-buttons span i,\\n.action-buttons a i {\\n font-size: 10px;\\n margin-right: 4px; }\\n\\n.action-buttons span {\\n background: #0085ba;\\n border-color: #006a95 #00648c #00648c;\\n box-shadow: inset 0 -1px 0 #00648c;\\n color: #fff;\\n text-decoration: none;\\n text-shadow: 0 -1px 1px #005d82, 1px 0 1px #005d82, 0 1px 1px #005d82, -1px 0 1px #005d82; }\\n\\n.action-buttons a.redux-templates-button-download {\\n border: 1px solid #f5a623;\\n background: #f5a623;\\n box-shadow: 0 1px 0 #165cb4;\\n color: #fff; }\\n\\n.action-buttons .redux-templates-button-download {\\n margin-left: 5px; }\\n\\n.action-buttons i.challenge-dot {\\n margin-top: 10px;\\n margin-left: 5px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-single-section-item {\\n box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.2);\\n margin-bottom: 30px;\\n transition: all 0.05s ease-in-out; }\\n .redux-templates-single-section-item .redux-templates-tmpl-title {\\n background: rgba(255, 255, 255, 0.95);\\n border-top: 1px solid #f2f4f7;\\n position: absolute;\\n bottom: 0;\\n width: 100%;\\n margin: 0;\\n color: #23282d;\\n padding: 13px 15px;\\n font-size: 15px; }\\n .redux-templates-single-section-item .redux-templates-single-item-inner {\\n position: relative;\\n overflow: hidden;\\n background: #999; }\\n .redux-templates-single-section-item .redux-templates-single-item-inner .warn_notice {\\n color: #fbbc0e;\\n font-weight: bold;\\n margin-bottom: 15px;\\n font-size: 14px;\\n opacity: 0;\\n text-align: center; }\\n .redux-templates-single-section-item .redux-templates-single-item-inner .redux-templates-default-template-image {\\n max-height: 350px;\\n min-height: 100px;\\n transition: 300ms; }\\n\\n#collections-sections-list.large > div {\\n width: 50%; }\\n\\n#collections-sections-list.small > div {\\n width: 25%; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-template-filters .is-active {\\n background: #fff;\\n color: #191e23;\\n box-shadow: inset 0 0 0 1px #555d66, inset 0 0 0 2px #fff; }\\n\\n.redux-templates-template-filters .components-button:focus:not(:disabled):not(.is-active) {\\n background: transparent;\\n box-shadow: none;\\n color: #555d66; }\\n\\n.refresh-library {\\n margin-right: 10px; }\\n\\n.tour-icon {\\n font-size: 18px; }\\n\\n.trial_notice * {\\n vertical-align: middle; }\\n\\n.trial_notice .components-notice__content {\\n margin-right: 0; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-edit-post-welcome-guide {\\n width: 412px; }\\n .redux-edit-post-welcome-guide__image {\\n background: #00a0d2;\\n width: 412px;\\n border-bottom: 1px solid #ddd; }\\n .redux-edit-post-welcome-guide__image__prm-r {\\n display: none; }\\n @media (prefers-reduced-motion: reduce) {\\n .redux-edit-post-welcome-guide__image__prm-r {\\n display: block; }\\n .redux-edit-post-welcome-guide__image__prm-np {\\n display: none; } }\\n .redux-edit-post-welcome-guide__heading {\\n font-family: \\\"Noto Serif\\\", serif;\\n font-size: 24px;\\n line-height: 1.4;\\n margin: 0 0 16px 0;\\n padding: 0 32px; }\\n .redux-edit-post-welcome-guide__text {\\n font-size: 16px;\\n line-height: 1.4;\\n margin: 0 0 24px 0;\\n padding: 0 32px;\\n font-weight: normal; }\\n .redux-edit-post-welcome-guide__inserter-icon {\\n margin: 0 4px;\\n vertical-align: text-top; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-css-editor {\\n border: 1px solid #e2e4e7;\\n margin-bottom: 20px; }\\n\\n.redux-css-editor-help {\\n background: #f7f7f7;\\n padding: 20px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"#redux-templatesImportCollectionBtn {\\n vertical-align: middle;\\n display: inline-flex;\\n align-items: center;\\n text-decoration: none;\\n border: 1px solid #bababa;\\n border-radius: 3px;\\n white-space: nowrap;\\n color: #555d66;\\n font-size: 13px;\\n margin: 0 15px 0 15px;\\n padding: 9px 12px;\\n background: transparent;\\n cursor: pointer;\\n -webkit-appearance: none;\\n transition: 400ms; }\\n #redux-templatesImportCollectionBtn svg {\\n height: 16px;\\n width: 16px;\\n margin-right: 8px; }\\n #redux-templatesImportCollectionBtn svg * {\\n stroke: #555d66;\\n fill: #555d66;\\n stroke-width: 0; }\\n #redux-templatesImportCollectionBtn:hover, #redux-templatesImportCollectionBtn:focus, #redux-templatesImportCollectionBtn:active {\\n text-decoration: none;\\n border: 1px solid #191e23;\\n color: #191e23; }\\n #redux-templatesImportCollectionBtn:hover svg *, #redux-templatesImportCollectionBtn:focus svg *, #redux-templatesImportCollectionBtn:active svg * {\\n stroke: #191e23 !important;\\n fill: #191e23 !important;\\n stroke-width: 0; }\\n\\n.redux-templates-editor-btn {\\n background: none;\\n border: 0;\\n color: inherit;\\n font: inherit;\\n line-height: normal;\\n overflow: visible;\\n padding: 0;\\n -webkit-appearance: button;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none; }\\n .redux-templates-editor-btn::-moz-focus-inner {\\n border: 0;\\n padding: 0; }\\n\\n.d-flex {\\n display: flex; }\\n\\n.justify-content-center {\\n justify-content: center; }\\n\\n.redux-css-editor {\\n border: 1px solid #e2e4e7;\\n margin-bottom: 20px; }\\n\\n.redux-css-editor-help {\\n background: #f7f7f7;\\n padding: 20px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-modal-wrapper {\\n /* ReduxTemplatesPremiumBox */ }\\n .redux-templates-modal-wrapper .redux-templates-modal-body {\\n flex: 1 1 auto;\\n padding-left: 30px;\\n padding-right: 30px;\\n box-sizing: border-box;\\n background: #fff; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body h5 {\\n font-size: 1.1em;\\n font-weight: 600; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body ul {\\n list-style-position: inside;\\n list-style-type: disc; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body ul.redux-templates-import-wizard-missing-dependency li {\\n line-height: 1.8; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body .error {\\n color: #f00; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body .error i {\\n color: inherit; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body .error.installError {\\n text-align: center; }\\n .redux-templates-modal-wrapper .redux-templates-import-wizard-spinner-wrapper {\\n position: absolute;\\n width: calc(100% - 60px);\\n height: 100%;\\n flex: 1 1 auto;\\n align-items: center;\\n justify-content: center;\\n display: flex;\\n flex-direction: column; }\\n .redux-templates-modal-wrapper .redux-templates-import-wizard-spinner-wrapper .text-transition {\\n text-align: center;\\n font-size: 18px;\\n color: #555d66;\\n margin-bottom: 20px; }\\n .redux-templates-modal-wrapper .redux-templates-import-progress {\\n font-size: 1.1em;\\n text-align: center; }\\n .redux-templates-modal-wrapper .redux-templates-import-progress li {\\n list-style: none; }\\n .redux-templates-modal-wrapper .redux-templates-import-progress li.success i {\\n color: #46b450; }\\n .redux-templates-modal-wrapper .redux-templates-import-progress li.info i {\\n color: #00a0d2; }\\n .redux-templates-modal-wrapper .redux-templates-import-progress {\\n width: 50%;\\n margin: 10px auto; }\\n .redux-templates-modal-wrapper .redux-templates-import-progress li {\\n display: flex;\\n justify-content: space-between; }\\n .redux-templates-modal-wrapper .section-box.premium-box {\\n margin: 35px auto;\\n text-align: center; }\\n .redux-templates-modal-wrapper .section-box.premium-box input {\\n display: block;\\n width: 100%;\\n box-shadow: 0 0 0 transparent;\\n transition: box-shadow 0.1s linear;\\n border-radius: 2px;\\n line-height: normal;\\n display: block;\\n padding: 16px 48px 16px 16px;\\n background: #f3f4f5;\\n border: none;\\n width: 100%;\\n height: 40px;\\n font-size: 13px;\\n text-align: center; }\\n .redux-templates-modal-wrapper .section-box.premium-box input::-webkit-input-placeholder {\\n /* WebKit browsers */\\n color: #606a73;\\n font-style: italic;\\n opacity: 1; }\\n .redux-templates-modal-wrapper .section-box.premium-box input:-moz-placeholder {\\n /* Mozilla Firefox 4 to 18 */\\n color: #606a73;\\n font-style: italic;\\n opacity: 1; }\\n .redux-templates-modal-wrapper .section-box.premium-box input::-moz-placeholder {\\n /* Mozilla Firefox 19+ */\\n color: #606a73;\\n font-style: italic;\\n opacity: 1; }\\n .redux-templates-modal-wrapper .section-box.premium-box input:-ms-input-placeholder {\\n /* Internet Explorer 10+ */\\n color: #606a73;\\n font-style: italic;\\n opacity: 1; }\\n .redux-templates-modal-wrapper .section-box.premium-box input:focus {\\n border-color: #007cba;\\n border-color: var(--wp-admin-theme-color);\\n background: #fff;\\n box-shadow: 0 0 0 1.5px #007cba;\\n box-shadow: 0 0 0 1.5px var(--wp-admin-theme-color);\\n outline: 2px solid transparent; }\\n .redux-templates-modal-wrapper .section-box.premium-box h3 {\\n font-size: 1.5em;\\n line-height: 1.1em;\\n margin-top: 0px; }\\n .redux-templates-modal-wrapper .section-box.premium-box p {\\n font-size: calc(13px + 0.2vw); }\\n .redux-templates-modal-wrapper .section-box.premium-box ul {\\n width: 50%;\\n margin: 0 auto;\\n text-align: left;\\n list-style-type: disc;\\n list-style-position: inside; }\\n .redux-templates-modal-wrapper .section-box.premium-box .redux-templates-upgrade-button {\\n border: none;\\n border-radius: 4px;\\n cursor: pointer;\\n opacity: 1;\\n background: #24b0a6;\\n transition: opacity 0.2s ease-in-out;\\n box-shadow: none !important;\\n color: #fff;\\n text-decoration: none;\\n padding: 0.75em 1.25em;\\n display: block;\\n margin: 30px auto 0 auto;\\n max-width: 250px;\\n text-align: center;\\n font-size: 1em; }\\n .redux-templates-modal-wrapper .section-box.premium-box .redux-templates-upgrade-button:hover {\\n color: #fff;\\n opacity: 0.85;\\n box-shadow: none !important;\\n background: #19837c; }\\n .redux-templates-modal-wrapper .section-box.premium-box .subscription_key_button {\\n margin-top: 40px; }\\n .redux-templates-modal-wrapper .section-box.premium-box .subscription_key_button button {\\n background: #f8f8f8;\\n border: 1px solid #ddd; }\\n .redux-templates-modal-wrapper .section-box.premium-box .redux-pro-activate-button {\\n border: none;\\n border-radius: 4px;\\n cursor: pointer;\\n opacity: 1;\\n background: #24b0a6;\\n transition: opacity 0.2s ease-in-out;\\n box-shadow: none !important;\\n color: #fff;\\n text-decoration: none;\\n padding: 0.75em 1.25em;\\n display: block;\\n margin: 30px auto 0 auto;\\n max-width: 250px;\\n text-align: center;\\n font-size: 1em; }\\n .redux-templates-modal-wrapper .section-box.premium-box .redux-pro-activate-button i {\\n margin-right: 10px; }\\n .redux-templates-modal-wrapper .section-box.premium-box .redux-pro-activate-button:hover {\\n color: #fff;\\n opacity: 0.85;\\n box-shadow: none !important;\\n background: #19837c; }\\n .redux-templates-modal-wrapper .redux-templates-importmodal-content {\\n flex: 1;\\n display: flex;\\n flex-direction: column; }\\n\\n.text-transition {\\n width: 100% !important;\\n text-align: center; }\\n .text-transition .text-transition_inner > div {\\n font-size: 1.1rem; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-collection-modal-sidebar {\\n min-width: 270px;\\n background: #fff;\\n color: #32373c;\\n /* $secondaryColor;*/\\n border-right: 1px solid #e2e4e7;\\n overflow-y: auto; }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group {\\n margin: 10px 0;\\n border-bottom: 1px solid #e2e4e7;\\n width: 100%;\\n display: inline-flex; }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button {\\n font-weight: 500;\\n flex-grow: 1;\\n min-width: 30%;\\n line-height: 20px;\\n padding: 8px 0 10px 15px;\\n align-items: center;\\n text-align: left;\\n background: none;\\n position: relative;\\n margin-bottom: -1px;\\n border-width: 0;\\n z-index: 1;\\n cursor: pointer;\\n outline: none;\\n border-color: transparent;\\n box-shadow: none;\\n border-bottom: unset; }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button::after {\\n content: attr(data-label);\\n display: block;\\n height: 0;\\n overflow: hidden;\\n speak: none;\\n visibility: hidden; }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button:hover {\\n color: #007cba;\\n color: var(--wp-admin-theme-color); }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button:focus {\\n box-shadow: inset 0 0 0 1.5px #007cba;\\n box-shadow: inset 0 0 0 1.5px var(--wp-admin-theme-color); }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button.active {\\n box-shadow: inset 0 0 0 1.5px transparent, inset 0 -4px 0 0 #007cba;\\n box-shadow: inset 0 0 0 1.5px transparent, inset 0 -4px 0 0 var(--wp-admin-theme-color); }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button.active::before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n bottom: 1px;\\n right: 0;\\n left: 0;\\n border-bottom: 4px solid transparent; }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button.active:focus {\\n box-shadow: inset 0 0 0 1.5px #007cba, inset 0 -4px 0 0 #007cba;\\n box-shadow: inset 0 0 0 1.5px var(--wp-admin-theme-color), inset 0 -4px 0 0 var(--wp-admin-theme-color); }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button.disabled {\\n opacity: 0.4; }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button img {\\n display: inline-block;\\n width: auto;\\n height: 14px;\\n margin-right: 4px; }\\n .redux-templates-collection-modal-sidebar .redux-templates-template-filter-button-group button:last-child img {\\n margin-bottom: -2px; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content {\\n padding: 0 15px 15px; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content h3 {\\n margin: 5px 12px 10px 0;\\n color: #757575;\\n text-transform: uppercase;\\n font-size: 11px;\\n font-weight: 500; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul {\\n list-style: unset;\\n -webkit-touch-callout: none;\\n /* iOS Safari */\\n -webkit-user-select: none;\\n /* Safari */\\n -khtml-user-select: none;\\n /* Konqueror HTML */\\n -moz-user-select: none;\\n /* Old versions of Firefox */\\n -ms-user-select: none;\\n /* Internet Explorer/Edge */\\n user-select: none;\\n /* Non-prefixed version, currently\\n supported by Chrome, Edge, Opera and Firefox */\\n margin: 0 15px 15px 15px;\\n padding: 0; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li {\\n display: block;\\n font-size: 13px;\\n cursor: pointer;\\n height: auto;\\n -webkit-transition: height 0.5s linear;\\n -moz-transition: height 0.5s linear;\\n -ms-transition: height 0.5s linear;\\n -o-transition: height 0.5s linear;\\n transition: height 0.5s linear; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li .redux-icon-wrapper {\\n margin-left: 10px; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li:not(.disabled):hover {\\n color: #007cba;\\n color: var(--wp-admin-theme-color); }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li.active {\\n color: #007cba;\\n color: var(--wp-admin-theme-color);\\n text-shadow: 0 0 0.5px #007cba;\\n text-shadow: 0 0 0.5px var(--wp-admin-theme-color); }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li.disabled {\\n display: none;\\n height: 0px;\\n -webkit-transition: height 0.5s linear;\\n -moz-transition: height 0.5s linear;\\n -ms-transition: height 0.5s linear;\\n -o-transition: height 0.5s linear;\\n transition: height 0.5s linear; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li span {\\n float: right; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li.missing-dependency i.fa-exclamation-triangle {\\n color: #b27823; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li.missing-dependency:hover i.fa-exclamation-triangle {\\n color: #f5a623; }\\n .redux-templates-collection-modal-sidebar .redux-templates-modal-sidebar-content ul li.missing-dependency.active i.fa-exclamation-triangle {\\n color: #f5a623; }\\n .redux-templates-collection-modal-sidebar ul.redux-templates-sidebar-dependencies li .components-base-control {\\n display: inline-block;\\n margin-bottom: 0 !important; }\\n .redux-templates-collection-modal-sidebar ul.redux-templates-sidebar-dependencies li .components-base-control .components-base-control__field {\\n margin-bottom: 3px; }\\n .redux-templates-collection-modal-sidebar ul.redux-templates-sidebar-dependencies li .components-base-control span {\\n float: none; }\\n .redux-templates-collection-modal-sidebar .redux-templates-select-actions {\\n margin: 0 0 10px 15px;\\n display: inline-flex; }\\n .redux-templates-collection-modal-sidebar .redux-templates-select-actions i.challenge-dot {\\n margin-left: 10px; }\\n .redux-templates-collection-modal-sidebar .redux-templates-select-actions.disabled a {\\n pointer-events: none;\\n cursor: default;\\n text-decoration: none;\\n opacity: 0.6; }\\n .redux-templates-collection-modal-sidebar .redux-templates-sidebar-dependencies li a {\\n display: inline-block;\\n margin-left: 10px; }\\n .redux-templates-collection-modal-sidebar #redux-templates-filter-dependencies h3 {\\n margin-top: 0;\\n padding-top: 3px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-collections-modal-body {\\n display: flex;\\n flex: 1;\\n overflow-y: auto; }\\n\\n.redux-templates-builder-modal {\\n position: fixed;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n z-index: 9999;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n pointer-events: none; }\\n .redux-templates-builder-modal.hidden {\\n display: none; }\\n .redux-templates-builder-modal .wp-full-overlay-sidebar .wp-core-ui .button-group.button-hero .button,\\n .redux-templates-builder-modal .wp-full-overlay-sidebar .wp-core-ui .button.button-hero {\\n text-align: center !important; }\\n .redux-templates-builder-modal * {\\n box-sizing: border-box;\\n pointer-events: all; }\\n .redux-templates-builder-modal .redux-templates-pagelist-modal-overlay {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n background: #f00;\\n left: 0;\\n top: 0;\\n z-index: -1;\\n background: rgba(3, 8, 15, 0.75); }\\n .redux-templates-builder-modal .components-base-control__field {\\n display: flex; }\\n .redux-templates-builder-modal textarea {\\n width: 100%;\\n height: 80px; }\\n .redux-templates-builder-modal .redux-icon-wrapper {\\n display: inline-block; }\\n .redux-templates-builder-modal button.components-button {\\n z-index: unset; }\\n\\n.redux-templates-builder-modal-header {\\n display: flex;\\n border-bottom: 1px solid #e2e4e7;\\n background: #fff; }\\n .redux-templates-builder-modal-header .template-search-box {\\n position: relative;\\n width: 270px; }\\n .redux-templates-builder-modal-header .template-search-box > div {\\n padding: 10px; }\\n .redux-templates-builder-modal-header .template-search-box i {\\n font-size: 13px;\\n color: #757575;\\n position: absolute;\\n top: 50%;\\n right: 30px;\\n transform: translateY(-50%); }\\n .redux-templates-builder-modal-header .template-search-box i.challenge-dot {\\n right: 20px;\\n left: auto; }\\n .redux-templates-builder-modal-header .template-search-box i.clear-search {\\n right: 20px;\\n left: auto;\\n color: #fff;\\n font-size: 12px;\\n display: none;\\n cursor: pointer;\\n padding: 5px; }\\n .redux-templates-builder-modal-header .template-search-box input {\\n display: block;\\n width: 100%;\\n box-shadow: 0 0 0 transparent;\\n transition: box-shadow 0.1s linear;\\n border-radius: 2px;\\n line-height: normal;\\n display: block;\\n padding: 16px 48px 16px 16px;\\n background: #f3f4f5;\\n border: none;\\n width: 100%;\\n height: 40px;\\n font-size: 13px; }\\n .redux-templates-builder-modal-header .template-search-box input::-webkit-input-placeholder {\\n /* WebKit browsers */\\n color: #606a73;\\n font-style: italic;\\n opacity: 1; }\\n .redux-templates-builder-modal-header .template-search-box input:-moz-placeholder {\\n /* Mozilla Firefox 4 to 18 */\\n color: #606a73;\\n font-style: italic;\\n opacity: 1; }\\n .redux-templates-builder-modal-header .template-search-box input::-moz-placeholder {\\n /* Mozilla Firefox 19+ */\\n color: #606a73;\\n font-style: italic;\\n opacity: 1; }\\n .redux-templates-builder-modal-header .template-search-box input:-ms-input-placeholder {\\n /* Internet Explorer 10+ */\\n color: #606a73;\\n font-style: italic;\\n opacity: 1; }\\n .redux-templates-builder-modal-header .template-search-box input:focus {\\n border-color: #007cba;\\n border-color: var(--wp-admin-theme-color);\\n background: #fff;\\n box-shadow: 0 0 0 1.5px #007cba;\\n box-shadow: 0 0 0 1.5px var(--wp-admin-theme-color);\\n outline: 2px solid transparent; }\\n .redux-templates-builder-modal-header .template-search-box:hover .clear-search {\\n display: block; }\\n\\n.redux-templates-pagelist-modal-inner {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n background: #f1f1f1;\\n width: 85.9375%;\\n height: 89.537037%;\\n max-width: 1650px;\\n max-height: 967px;\\n box-shadow: 0 0 45px 10px rgba(3, 8, 15, 0.2);\\n animation: components-modal__appear-animation 0.1s ease-out;\\n animation-fill-mode: forwards; }\\n .redux-templates-pagelist-modal-inner .redux-templates-collection-modal-content-area {\\n flex-grow: 1;\\n max-height: 100%;\\n overflow-y: auto;\\n position: relative; }\\n\\n.redux-templates-template-list-header {\\n text-align: center;\\n position: relative;\\n flex-grow: 1;\\n padding-right: 50px; }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal) {\\n flex-grow: 1;\\n line-height: 28px;\\n margin-top: 6px;\\n padding: 14px 15px 13px 15px;\\n text-align: left;\\n font-weight: 600;\\n width: 150px;\\n align-items: center;\\n background: none;\\n position: relative;\\n margin-bottom: -1px;\\n border-width: 0;\\n z-index: 1;\\n cursor: pointer;\\n outline: none;\\n border-color: transparent;\\n box-shadow: none;\\n border-bottom: unset; }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal)::after {\\n content: attr(data-label);\\n display: block;\\n height: 0;\\n overflow: hidden;\\n speak: none;\\n visibility: hidden; }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal):hover {\\n color: #007cba;\\n color: var(--wp-admin-theme-color); }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal):focus {\\n box-shadow: inset 0 0 0 1.5px #007cba;\\n box-shadow: inset 0 0 0 1.5px var(--wp-admin-theme-color); }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal).active {\\n box-shadow: inset 0 0 0 1.5px transparent, inset 0 -4px 0 0 #007cba;\\n box-shadow: inset 0 0 0 1.5px transparent, inset 0 -4px 0 0 var(--wp-admin-theme-color); }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal).active::before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n bottom: 1px;\\n right: 0;\\n left: 0;\\n border-bottom: 4px solid transparent; }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal).active:focus {\\n box-shadow: inset 0 0 0 1.5px #007cba, inset 0 -4px 0 0 #007cba;\\n box-shadow: inset 0 0 0 1.5px var(--wp-admin-theme-color), inset 0 -4px 0 0 var(--wp-admin-theme-color); }\\n .redux-templates-template-list-header button:not(.redux-templates-builder-close-modal).disabled {\\n opacity: 0.5; }\\n .redux-templates-template-list-header .redux-templates-builder-close-modal {\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 60px;\\n height: 60px;\\n margin: 0;\\n padding: 0;\\n border: 1px solid transparent;\\n background: none;\\n font-size: 15px;\\n cursor: pointer;\\n outline: none;\\n transition: color 0.1s ease-in-out, background 0.1s ease-in-out; }\\n .redux-templates-template-list-header .redux-templates-builder-close-modal i {\\n -webkit-text-stroke: 1.2px #fff; }\\n .redux-templates-template-list-header .redux-templates-builder-close-modal svg {\\n margin-top: 4px; }\\n .redux-templates-template-list-header .redux-templates-builder-close-modal:hover, .redux-templates-template-list-header .redux-templates-builder-close-modal:active {\\n color: #00a0d2; }\\n .redux-templates-template-list-header .redux-templates-builder-close-modal:focus {\\n color: #00a0d2;\\n border-color: #5b9dd9;\\n box-shadow: 0 0 3px rgba(0, 115, 170, 0.8);\\n /* Only visible in Windows High Contrast mode */\\n outline: 2px solid transparent; }\\n\\n.redux-templates-template-list-sub-header {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n padding: 23px 25px 0; }\\n .redux-templates-template-list-sub-header h4 {\\n font-size: 21px;\\n color: #0e2244;\\n font-weight: 500;\\n margin: 0; }\\n .redux-templates-template-list-sub-header h4 i.challenge-dot {\\n margin-left: 10px; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filters {\\n display: flex;\\n justify-content: space-between;\\n align-items: center; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group {\\n background: #f8fafb;\\n display: inline-flex;\\n border: 1px solid #d8d8d8;\\n border-radius: 4px;\\n margin-left: 10px; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button {\\n display: inline-flex;\\n line-height: 28px;\\n padding: 5px 18px;\\n align-items: center;\\n background: none;\\n border: none;\\n color: #587e97;\\n position: relative;\\n z-index: 1;\\n cursor: pointer; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button:focus {\\n outline: none;\\n box-shadow: 0 0 0 1.5px #007cba;\\n box-shadow: 0 0 0 1.5px var(--wp-admin-theme-color);\\n outline: 1px solid transparent; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button:last-child {\\n color: #f5a623; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button.active {\\n background: #f5a623;\\n color: #fff; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button.disabled {\\n opacity: 0.5; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button img {\\n display: inline-block;\\n width: auto;\\n height: 14px;\\n margin-right: 4px; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button:not(:last-child)::after {\\n content: \\\"\\\";\\n height: 13px;\\n background-color: #c4cbcf;\\n width: 1px;\\n right: 0px;\\n top: 50%;\\n position: absolute;\\n transform: translateY(-50%); }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button.active::after {\\n display: none; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button::before {\\n content: \\\"\\\";\\n position: absolute;\\n background: #f5a623;\\n height: calc(100% + 4px);\\n width: calc(100% + 4px);\\n left: -2px;\\n top: -2px;\\n z-index: -1;\\n border-radius: 4px;\\n box-shadow: 0 0 4px rgba(33, 32, 249, 0.3);\\n opacity: 0; }\\n .redux-templates-template-list-sub-header .redux-templates-template-filter-button-group button.active::before {\\n opacity: 1; }\\n\\n.redux-templates-modal-loader {\\n display: inline-block;\\n position: absolute;\\n width: 80px;\\n height: 80px;\\n line-height: 80px;\\n text-align: center;\\n left: 50%;\\n margin-left: -50px;\\n top: 50%;\\n margin-top: -50px;\\n font-size: 24px;\\n color: #1e7ed8; }\\n\\n.redux-templates-modal-loader img {\\n height: 80px;\\n width: 80px; }\\n\\n/*block style*/\\n.redux-templates-builder-template-found-empty {\\n text-align: center;\\n border-color: transparent !important; }\\n .redux-templates-builder-template-found-empty .redux-templates-builder-empty-title {\\n display: block;\\n width: 100%; }\\n\\n.redux-templates-pro-badge {\\n position: absolute;\\n background: rgba(255, 0, 0, 0.75);\\n cursor: pointer;\\n padding: 5px 6px;\\n border-radius: 3px;\\n color: #fff;\\n font-size: 10px;\\n right: 20px;\\n top: 20px;\\n line-height: 1;\\n transition: background 0.1s linear; }\\n\\n.redux-templates-missing-badge {\\n position: absolute;\\n cursor: pointer;\\n background: rgba(242, 168, 72, 0.75);\\n border-radius: 3px;\\n color: #fff;\\n font-size: 10px;\\n right: 20px;\\n top: 20px;\\n line-height: 1;\\n transition: background 0.1s linear; }\\n .redux-templates-missing-badge i {\\n margin: 5px; }\\n\\n.redux-templates-button-overlay .redux-templates-pro-badge {\\n background: rgba(255, 0, 0, 0.85); }\\n\\n.redux-templates-button-overlay .redux-templates-missing-badge {\\n background: rgba(242, 168, 72, 0.85); }\\n\\n.redux-templates-default-template-image {\\n /* background-image: url('/img/redux-templates-medium.jpg');\\n background-size: cover; */\\n background: #888;\\n transition: 300ms; }\\n .redux-templates-default-template-image .imageloader-loaded {\\n max-height: 285px; }\\n .redux-templates-default-template-image img {\\n width: 100%;\\n display: block; }\\n\\n.redux-templates-item-wrapper {\\n position: relative; }\\n .redux-templates-item-wrapper .redux-templates-button-overlay {\\n position: absolute;\\n width: 100%;\\n opacity: 0;\\n background: rgba(0, 0, 0, 0.5);\\n height: 100%;\\n top: 0;\\n left: 0;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n transition: 300ms; }\\n .redux-templates-item-wrapper .redux-templates-button-overlay .redux-templates-tmpl-title {\\n margin: 0 0 15px;\\n color: #fff;\\n font-size: 19px;\\n font-weight: 400; }\\n .redux-templates-item-wrapper.focused .redux-templates-button-overlay, .redux-templates-item-wrapper:hover .redux-templates-button-overlay {\\n opacity: 1; }\\n .redux-templates-item-wrapper.focused .redux-templates-default-template-image, .redux-templates-item-wrapper:hover .redux-templates-default-template-image {\\n filter: blur(3px); }\\n .redux-templates-item-wrapper.missing_requirements .warn_notice {\\n opacity: 1; }\\n .redux-templates-item-wrapper.missing_requirements .redux-templates-button-download {\\n background-color: #fdbb05;\\n background-image: none;\\n border-color: #ffc107; }\\n\\n.redux-templates-template-option-header {\\n padding: 20px 20px 0; }\\n .redux-templates-template-option-header .redux-templates-template-back {\\n cursor: pointer; }\\n .redux-templates-template-option-header .redux-templates-template-back .dashicons {\\n vertical-align: text-bottom; }\\n\\n#wpwrap .edit-post-visual-editor .import-collection-btn-container {\\n text-align: center;\\n margin-top: 20px; }\\n\\n#wpwrap .edit-post-visual-editor .import-collection-btn-container #importCollectionBtn {\\n color: #fff;\\n font-size: 13px; }\\n\\n.redux-templates-template-back {\\n cursor: pointer; }\\n .redux-templates-template-back .dashicons {\\n vertical-align: text-bottom; }\\n\\n.spinner-wrapper {\\n position: absolute;\\n left: 0;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n background: rgba(0, 0, 0, 0.5); }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-collection-details-view {\\n padding: 40px 22.5px 60px;\\n width: 100%;\\n justify-content: center;\\n position: relative;\\n display: flex; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-left {\\n width: 600px;\\n margin: 0 37px 0 17px; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-left .details-back {\\n height: 32px;\\n line-height: 20px;\\n color: #818a91;\\n font-size: 15px;\\n font-weight: 600;\\n display: -webkit-inline-box;\\n display: -ms-inline-flexbox;\\n display: inline-flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n cursor: pointer;\\n margin-bottom: 20px;\\n -webkit-transition: color 0.1s ease;\\n transition: color 0.1s ease; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-left .details-preview {\\n background-position: center top;\\n background-size: contain;\\n width: 100%;\\n background-repeat: no-repeat;\\n transition: background 1.5s ease;\\n height: 84.71%; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-left .details-preview.has_full {\\n transition: background-position 1.5s linear;\\n background-position: center top;\\n background-size: cover;\\n width: 100%;\\n background-repeat: no-repeat;\\n -webkit-box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.1);\\n box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.1); }\\n .redux-templates-collection-details-view .redux-templates-collection-details-left .details-preview.has_full:hover {\\n background-position: center bottom;\\n background-size: cover; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right {\\n width: 520px; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .details-title {\\n height: 30px;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n padding: 2px 25px 0 10px;\\n margin-bottom: 20px; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .details-title h3 {\\n color: rgba(3, 8, 15, 0.92);\\n font-size: 28px;\\n font-weight: 600;\\n line-height: 34px;\\n margin: 0; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .details-title span {\\n color: #818a91;\\n font-size: 13px;\\n font-weight: 600;\\n line-height: 16px; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .details-list {\\n height: 84.71%; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .details-list .details-inner {\\n height: 100%;\\n overflow-y: auto; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select {\\n width: 150px;\\n height: 150px;\\n overflow: hidden;\\n margin: 0 8px 15px;\\n -webkit-box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.1);\\n box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.1);\\n position: relative;\\n display: inline-block;\\n cursor: pointer;\\n -webkit-transition: all 0.1s ease-in-out;\\n transition: all 0.1s ease-in-out; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select::before, .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select::after {\\n content: \\\"\\\";\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n pointer-events: none;\\n opacity: 0;\\n box-sizing: border-box; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select::before {\\n opacity: 0.7;\\n z-index: 2; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select::after {\\n opacity: 0.7;\\n z-index: 1; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select .detail-image {\\n width: 100%;\\n height: 150px;\\n background-repeat: no-repeat;\\n background-size: cover;\\n border: 1px solid #ececec;\\n position: relative; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select .detail-image .pro,\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select .detail-image .install {\\n position: absolute;\\n background: #f00;\\n padding: 2px 3px;\\n border-radius: 3px;\\n color: #fff;\\n font-size: 9px;\\n right: 5px;\\n top: 5px;\\n text-transform: uppercase;\\n line-height: 1; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select .detail-image .pro {\\n background: #f00; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select .detail-image .install {\\n background: #f2a848; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select .detail-label {\\n border-top: 1px solid #f2f4f7;\\n width: 100%;\\n height: 30px;\\n opacity: 1;\\n background-color: rgba(255, 255, 255, 0.9);\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n color: #23282d;\\n font-family: pn, \\\"Open Sans\\\", Arial, sans-serif;\\n font-size: 13px;\\n font-weight: 600;\\n line-height: 30px;\\n padding-left: 10px; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select:hover {\\n -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);\\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select:hover::before, .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select:hover::after {\\n opacity: 1; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select.detail-select-active {\\n -webkit-box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select.detail-select-active::before, .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select.detail-select-active::after,\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select.detail-select-active .detail-label {\\n opacity: 1; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-right .detail-select.detail-select-active::before {\\n border: 3px solid #24b0a6; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-footer {\\n width: 100%;\\n height: 60px;\\n background: #fff;\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n z-index: 2; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-footer .footer-grid {\\n width: 100%;\\n padding: 0 10px;\\n height: 100%;\\n margin: auto;\\n display: flex;\\n align-items: center;\\n justify-content: flex-end; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-footer .import-button {\\n margin-left: 11.5px;\\n background-color: #3dbfe8;\\n color: #fff;\\n font-family: pn, \\\"Open Sans\\\", Arial, sans-serif;\\n font-size: 15px;\\n font-weight: 600;\\n line-height: 18px;\\n padding: 9px 32px;\\n border-radius: 3px;\\n cursor: pointer;\\n -webkit-transition: background-color 150ms linear;\\n transition: background-color 150ms linear; }\\n .redux-templates-collection-details-view .redux-templates-collection-details-footer .import-button:hover {\\n background: rgba(61, 191, 232, 0.8); }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-two-sections {\\n position: absolute;\\n width: 85.9375%;\\n height: 89.537037%;\\n max-width: 1650px;\\n max-height: 967px;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n border-radius: 5px;\\n overflow: hidden;\\n -webkit-box-shadow: 0 45px 10px rgba(3, 8, 15, 0.2);\\n box-shadow: 0 0 45px 10px rgba(3, 8, 15, 0.2); }\\n\\n.redux-templates-two-sections__grid {\\n width: 100%;\\n height: 100%;\\n padding: 40px 22.5px;\\n position: relative;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex; }\\n\\n.redux-templates-two-sections__grid__column {\\n width: 100%; }\\n\\n.redux-templates-two-sections__grid-clear {\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n height: 100%; }\\n\\n.redux-templates-two-sections__grid-clear-text {\\n opacity: 0.9;\\n color: #818a91;\\n font-family: pn, \\\"Open Sans\\\", Arial, sans-serif;\\n font-size: 14px;\\n font-weight: 600;\\n line-height: 17px;\\n margin: 0 0 20px; }\\n\\n.redux-templates-two-sections__grid-clear-image-saved {\\n width: 322px;\\n height: 145px;\\n margin-top: -21px;\\n pointer-events: none; }\\n\\n.redux-templates-two-sections__grid-clear-image-global {\\n width: 524px;\\n height: 207px;\\n margin-top: -28px;\\n pointer-events: none; }\\n\\n.redux-templates-two-section {\\n position: relative;\\n margin: 0 17.5px 35px;\\n cursor: pointer;\\n outline: 3px solid transparent;\\n -webkit-transition: outline 0.3s ease-in-out;\\n transition: outline 0.3s ease-in-out;\\n -webkit-box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.1);\\n box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.1);\\n border-radius: 3px; }\\n .redux-templates-two-section:last-child {\\n margin-bottom: 0; }\\n .redux-templates-two-section .redux-templates-two-section-remove {\\n position: absolute;\\n z-index: 4;\\n top: -7px;\\n right: -7px;\\n opacity: 0;\\n -webkit-transform: scale(0.7);\\n transform: scale(0.7);\\n -webkit-transition: opacity 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out;\\n transition: opacity 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out;\\n transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;\\n transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out;\\n width: 28px;\\n height: 28px;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n font-size: 12px;\\n border-radius: 28px;\\n background-color: #fff;\\n color: #03080f;\\n -webkit-box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.25);\\n box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.25);\\n cursor: pointer; }\\n .redux-templates-two-section:hover .redux-templates-two-section-remove {\\n opacity: 1;\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n -webkit-transition: opacity 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out;\\n transition: opacity 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out;\\n transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;\\n transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out; }\\n .redux-templates-two-section:hover .redux-templates-two-section-remove:hover {\\n color: #f00; }\\n .redux-templates-two-section:hover .redux-templates-two-section-item::before {\\n border-color: #3dbfe8; }\\n .redux-templates-two-section:hover .redux-templates-two-section-item::after {\\n border-color: #ececec; }\\n\\n.redux-templates-two-section .preview-image-wrapper {\\n transition: all 0.05s ease-in-out;\\n width: 100%;\\n min-height: 130px;\\n max-height: 300px;\\n overflow: hidden; }\\n .redux-templates-two-section .preview-image-wrapper img {\\n animation-name: fadeIn;\\n animation-fill-mode: both;\\n animation-delay: 200ms;\\n animation-duration: 200ms;\\n width: 100%;\\n height: auto; }\\n\\n.redux-templates-two-section .saved-section-title {\\n border-top: 1px solid #f2f4f7;\\n background: rgba(255, 255, 255, 0.9);\\n position: absolute;\\n bottom: 0;\\n width: 100%;\\n margin: 0;\\n color: #23282d;\\n padding: 13px 15px;\\n font-size: 15px;\\n text-align: center;\\n display: flex;\\n justify-content: center;\\n align-items: center; }\\n\\n.no-section {\\n display: flex;\\n width: 100%;\\n align-items: center;\\n justify-content: center;\\n font-size: 16px; }\\n\\n.preview-image-wrapper .block-editor-block-preview__container {\\n transition: all 0.05s ease-in-out;\\n background: #fff;\\n margin: 0 auto;\\n min-height: 130px; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"#collections-sections-list {\\n width: 100%;\\n display: flex;\\n flex-wrap: wrap;\\n padding: 10px 10px 0 10px; }\\n #collections-sections-list > div {\\n width: 33.3333%;\\n padding: 15px;\\n position: relative; }\\n @media (max-width: 1199px) {\\n #collections-sections-list > div {\\n width: 50%; } }\\n #collections-sections-list > div.redux-templates-builder-template-found-empty {\\n width: 100%;\\n text-align: center;\\n opacity: 0.5;\\n border: none !important;\\n padding-top: 70px !important; }\\n #collections-sections-list.redux-templates-frontend-section-list {\\n display: block;\\n padding-bottom: 10px;\\n padding-top: 0px; }\\n #collections-sections-list.redux-templates-frontend-section-list > div {\\n width: 100%;\\n display: flex;\\n flex-wrap: nowrap;\\n border-bottom: 1px solid #e2e4e7;\\n font-weight: 600;\\n padding: 12px 0 12px 15px;\\n margin-bottom: 0;\\n align-items: center; }\\n #collections-sections-list.redux-templates-frontend-section-list > div.redux-templates-reusable-list-title {\\n color: #adafb2; }\\n #collections-sections-list.redux-templates-frontend-section-list > div:first-child {\\n border-top: 1px solid #e2e4e7; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-content {\\n flex-grow: 1; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-info {\\n flex-grow: 1;\\n max-width: 165px;\\n display: flex;\\n flex-wrap: nowrap; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-button {\\n margin-left: 30px; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-button button {\\n display: inline-block;\\n padding: 0;\\n border: none;\\n transition: 300ms;\\n cursor: pointer;\\n background-color: transparent; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-button button:not(:last-child) {\\n margin-right: 10px; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-button button i {\\n font-size: 16px;\\n color: #cdcfd1; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-button button:hover i {\\n color: #007cba; }\\n #collections-sections-list.redux-templates-frontend-section-list > div .redux-templates-reusable-list-button button:last-child:hover i {\\n color: #f00; }\\n #collections-sections-list .redux-templates-pagelist-column.loading {\\n height: 100px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".wp-full-overlay {\\n margin-left: 300px; }\\n\\n@media screen and (min-width: 1667px) {\\n .wp-full-overlay {\\n margin-left: 18%; } }\\n\\nbutton {\\n box-sizing: border-box;\\n pointer-events: all; }\\n\\n.wp-full-overlay.hide {\\n display: none; }\\n\\n.theme-screenshot-wrap {\\n overflow: hidden;\\n position: relative;\\n max-height: 300px;\\n margin: 15px 0;\\n border: 1px solid #ccc; }\\n\\n.install-theme-info {\\n padding-bottom: 0px; }\\n .install-theme-info h3 a {\\n float: right;\\n opacity: 0.6; }\\n .install-theme-info h3 a:hover {\\n opacity: 1; }\\n\\n.install-theme-info .theme-screenshot {\\n width: 100% !important;\\n border: none !important;\\n margin: 0 !important;\\n display: block; }\\n\\n.expanded .wp-full-overlay-footer {\\n height: 111px !important;\\n left: initial; }\\n .expanded .wp-full-overlay-footer .button-hero {\\n text-align: center; }\\n\\n.wp-full-overlay .wp-full-overlay-sidebar-content {\\n bottom: 100px; }\\n .wp-full-overlay .wp-full-overlay-sidebar-content .redux-templates-dependencies-list {\\n border-top: 1px solid #eee;\\n color: #82878c;\\n font-size: 13px;\\n font-weight: 400;\\n margin: 30px 0 0 0; }\\n .wp-full-overlay .wp-full-overlay-sidebar-content .redux-templates-dependencies-list h4 {\\n color: #23282d;\\n font-size: 1.1em;\\n text-align: center; }\\n .wp-full-overlay .wp-full-overlay-sidebar-content .redux-templates-dependencies-list .redux-templates-dependency-blocks .redux-templates-dependency-name {\\n color: #444;\\n font-weight: 600;\\n margin-right: 5px; }\\n\\n.footer-import-button-wrap {\\n padding: 10px 20px;\\n display: flex;\\n justify-content: center; }\\n\\n.wp-full-overlay-footer .view-site,\\n.wp-full-overlay-footer .go-pro,\\n.wp-full-overlay-footer .redux-templates-import {\\n width: 100%; }\\n\\n.redux-templates-button-download {\\n border: 1px solid #3dbfe8;\\n background: #3dbfe8;\\n box-shadow: 0 1px 0 #165cb4;\\n color: #fff; }\\n\\n.wp-full-overlay-main {\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n height: 100%;\\n -webkit-transition: background-color 1000ms linear;\\n -ms-transition: background-color 1000ms linear;\\n transition: background-color 1000ms linear;\\n background-color: unset; }\\n .wp-full-overlay-main.loaded::before {\\n display: none !important; }\\n .wp-full-overlay-main.loaded iframe {\\n background-color: #fff; }\\n .wp-full-overlay-main .components-spinner {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translateX(-50%) translateY(-50%); }\\n\\n.theme-install-overlay iframe {\\n height: 100%;\\n width: 100%;\\n z-index: 20;\\n transition: opacity 0.3s; }\\n\\n.redux-templates-dependency-blocks {\\n display: flex; }\\n .redux-templates-dependency-blocks .block-head {\\n text-align: center;\\n width: 60px;\\n margin-right: 10px; }\\n\\n.requirements-list {\\n width: 100%; }\\n .requirements-list ul {\\n margin: 0;\\n padding: 0;\\n list-style: none; }\\n .requirements-list ul li {\\n cursor: pointer;\\n line-height: 20px;\\n padding-bottom: 25px;\\n clear: left;\\n transition: 300ms; }\\n .requirements-list ul li svg {\\n margin-right: 5px; }\\n .requirements-list ul li svg * {\\n fill: #9a9a9a; }\\n .requirements-list ul li svg,\\n .requirements-list ul li span,\\n .requirements-list ul li div {\\n float: left; }\\n .requirements-list ul li .redux-icon-wrapper {\\n display: inline; }\\n .requirements-list ul li span.pluginURL {\\n float: right; }\\n .requirements-list ul li i {\\n font-size: 1.1em; }\\n .requirements-list ul li .redux-icon-wrapper {\\n padding-left: 5px; }\\n .requirements-list ul li i.fa-exclamation-triangle {\\n font-size: 0.9em;\\n line-height: 1.5em;\\n color: #b27823; }\\n .requirements-list ul li:hover svg * {\\n fill: dimgray; }\\n .requirements-list ul li:hover i.fa-exclamation-triangle {\\n color: #f5a623; }\\n\\n.redux-block-pills ul {\\n margin: 0;\\n padding: 0; }\\n .redux-block-pills ul li {\\n margin: 0px 5px 10px 0;\\n float: left; }\\n .redux-block-pills ul li span {\\n --bg-opacity: 1 !important;\\n background-color: #edf2f7 !important;\\n background-color: rgba(237, 242, 247, var(--bg-opacity)) !important;\\n border-radius: 9999px !important;\\n padding-top: 0.25rem !important;\\n padding-bottom: 0.25rem !important;\\n padding-left: 0.75rem !important;\\n padding-right: 0.75rem !important;\\n --text-opacity: 1 !important;\\n color: #4a5568 !important;\\n color: rgba(74, 85, 104, var(--text-opacity)) !important; }\\n\\n.redux-templates-modal-preview-box {\\n background: #f1f1f1; }\\n .redux-templates-modal-preview-box img {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translateX(-50%) translateY(-50%);\\n max-width: 100%;\\n max-height: 100%; }\\n\\n.theme-hash {\\n text-align: center;\\n font-size: 14px;\\n position: relative; }\\n .theme-hash i {\\n cursor: pointer;\\n margin-right: 5px;\\n margin-left: 5px; }\\n .theme-hash .copied {\\n color: #656a6f;\\n position: absolute;\\n line-height: 75%;\\n margin-left: 10px;\\n opacity: 0.6; }\\n .theme-hash .the-copy {\\n border-bottom-right-radius: 0 !important;\\n border-top-right-radius: 0 !important; }\\n .theme-hash .the-hash {\\n border-bottom-left-radius: 0 !important;\\n border-top-left-radius: 0 !important;\\n border-left: 0 !important; }\\n .theme-hash .hideMe {\\n -webkit-animation: cssAnimation 3s forwards;\\n animation: cssAnimation 3s forwards; }\\n\\n@keyframes cssAnimation {\\n 0% {\\n opacity: 1; }\\n 90% {\\n opacity: 1; }\\n 100% {\\n opacity: 0; } }\\n\\n@-webkit-keyframes cssAnimation {\\n 0% {\\n opacity: 1; }\\n 90% {\\n opacity: 1; }\\n 100% {\\n opacity: 0; } }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".redux-templates-modal-overlay {\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background: rgba(255, 255, 255, 0.6);\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n z-index: 600000; }\\n\\n.redux-templates-modal-wrapper {\\n width: 550px;\\n height: 400px;\\n background: #fcfcfc;\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex-direction: column;\\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.7); }\\n .redux-templates-modal-wrapper div {\\n width: 100%; }\\n .redux-templates-modal-wrapper .redux-templates-modal-header {\\n border-bottom: 1px solid #ddd;\\n flex: 0 0 60px;\\n padding: 10px 15px;\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n box-sizing: border-box; }\\n .redux-templates-modal-wrapper .redux-templates-modal-header h3 {\\n margin: 0;\\n font-size: 1.2rem; }\\n .redux-templates-modal-wrapper .redux-templates-modal-header button {\\n border: none;\\n cursor: pointer; }\\n .redux-templates-modal-wrapper .redux-templates-modal-header .redux-templates-modal-close {\\n font-size: 20px;\\n background: transparent;\\n color: #9b9b9b; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body {\\n flex: 1 1 auto;\\n padding-left: 30px;\\n padding-right: 30px;\\n box-sizing: border-box;\\n background: #fff;\\n position: relative; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body h5 {\\n font-size: 1.1em;\\n font-weight: 600; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body ul {\\n list-style-position: inside;\\n list-style-type: disc; }\\n .redux-templates-modal-wrapper .redux-templates-modal-body .error {\\n color: #f00; }\\n .redux-templates-modal-wrapper .redux-templates-modal-footer {\\n border-top: 1px solid #ddd;\\n flex: 0 0 60px;\\n align-items: center;\\n display: flex;\\n padding: 0 20px;\\n box-sizing: border-box; }\\n .redux-templates-modal-wrapper .redux-templates-modal-footer .button {\\n margin-right: 20px;\\n cursor: pointer; }\\n .redux-templates-modal-wrapper .redux-templates-modal-footer i.fas {\\n margin-right: 3px; }\\n .redux-templates-modal-wrapper .redux-templates-modal-spinner-wrapper {\\n flex: 1 1 auto;\\n align-items: center;\\n justify-content: center;\\n display: flex; }\\n\", \"\"]);\n\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.9 17.7H7.4l-.9-1.5 2.1-2.4 2.3 3.9zm-5.3-1.6l-1.5 1.6h-4L4 13.3l1.6 2.8z\",\n fill: \"#011627\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#00a7e5\",\n d: \"M6.1 15.6L.4 5.9h3.5l2.7 4.5 8-9.1h4.3L6.1 15.6z\"\n});\n\nvar SvgIconColor = function SvgIconColor(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 19 19\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2);\n};\n\nexport default SvgIconColor;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.9 17.7H7.4l-.9-1.5 2.1-2.4 2.3 3.9zm-5.3-1.6l-1.5 1.6h-4L4 13.3l1.6 2.8zM6.1 15.6L.4 5.9h3.5l2.7 4.5 8-9.1h4.3L6.1 15.6z\"\n});\n\nvar SvgIcon = function SvgIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 19 19\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgIcon;","import {__} from '@wordpress/i18n';\n\nconst { registerBlockType } = wp.blocks;\nimport * as importBlock from './import';\nimport * as libraryBlock from './library';\n\nexport function registerBlocks() {\n\n registerBlockType( `redux/${ libraryBlock.name }`, { ...libraryBlock.settings } );\n\tregisterBlockType( `redux/${ importBlock.name }`, { ...importBlock.settings } );\n\n}\nregisterBlocks();\n","/**\n * Internal dependencies\n */\nimport importReusableBlock from '../utils/import';\nimport insertImportedBlocks from '../utils/insert';\n\n/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { withInstanceId } = wp.compose;\nconst { Fragment, Component } = wp.element;\nconst { MediaUploadCheck } = wp.blockEditor;\nconst { DropZone, FormFileUpload, Placeholder, Notice } = wp.components;\n\nconst ALLOWED_BG_MEDIA_TYPES = [ 'json' ];\n\n/**\n * Block edit function\n */\nclass Edit extends Component {\n constructor() {\n super( ...arguments );\n\n this.state = {\n isLoading: false,\n error: null,\n };\n\n this.isStillMounted = true;\n this.addFile = this.addFile.bind( this );\n }\n\n componentDidMount() {\n const { file } = this.props.attributes;\n\n if ( file ) {\n this.setState( { isLoading: true } );\n this.addFile( file );\n }\n }\n\n componentWillUnmount() {\n this.isStillMounted = false;\n }\n\n addFile( files ) {\n let file = files[ 0 ];\n\n if ( files.target ) {\n file = event.target.files[ 0 ];\n }\n\n if ( ! file ) {\n return;\n }\n this.setState( { isLoading: true } );\n\n importReusableBlock( file )\n .then( ( reusableBlock ) => {\n if ( ! this.isStillMounted ) {\n return;\n }\n\n this.setState( { isLoading: false } );\n insertImportedBlocks( this.props.clientId, reusableBlock, this.props.onClose );\n } )\n .catch( ( error ) => {\n if ( ! this.isStillMounted ) {\n return;\n }\n\n let uiMessage;\n switch ( error.message ) {\n case 'Invalid JSON file':\n uiMessage = __( 'Invalid JSON file', redux_templates.i18n );\n break;\n case 'Invalid Reusable Block JSON file':\n uiMessage = __( 'Invalid Reusable Block JSON file', redux_templates.i18n );\n break;\n default:\n uiMessage = __( 'Unknown error', redux_templates.i18n );\n }\n\n this.setState( { isLoading: false, error: uiMessage } );\n } );\n }\n\n render() {\n const { isLoading, error } = this.state;\n\n return (\n <Placeholder\n icon=\"download\"\n label={ __( 'Import a Template from JSON - Redux', redux_templates.i18n ) }\n instructions={ __( 'Drag a file or upload a new one from your device.', redux_templates.i18n ) }\n className=\"editor-media-placeholder\"\n notices={ error && (\n <Notice status=\"error\">\n { error }\n </Notice>\n ) }\n >\n <Fragment>\n <MediaUploadCheck>\n <DropZone\n onFilesDrop={ this.addFile }\n label={ __( 'Import from JSON', redux_templates.i18n ) }\n />\n <FormFileUpload\n isLarge\n className=\"editor-media-placeholder__button button button-primary\"\n onChange={ this.addFile }\n accept={ ALLOWED_BG_MEDIA_TYPES }\n isBusy={ isLoading }\n disabled={ isLoading }\n multiple={ false }\n >\n { __( 'Upload', redux_templates.i18n ) }\n </FormFileUpload>\n </MediaUploadCheck>\n </Fragment>\n </Placeholder>\n );\n }\n}\n\nexport default withInstanceId( Edit );\n","/**\n * WordPress dependencies\n */\nconst { SVG } = wp.components;\n\nexport default <SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" d=\"M0 0h24v24H0V0z\" /><path d=\"M9.17 6l2 2H20v10H4V6h5.17M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z\" /></SVG>;\n","/**\n * Internal dependencies\n */\nimport edit from './components/edit';\nimport icon from './icon';\nimport transforms from './transforms';\nimport { colorizeIcon } from '../../icons';\n\n/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\n\n/**\n * Block constants\n */\nconst name = 'import';\n\nconst category = 'common';\nconst schema = {\n\tfile: {\n\t\ttype: 'object',\n\t},\n};\n\nconst title = __( 'Template Import', redux_templates.i18n );\n\nconst keywords = [\n __( 'import', redux_templates.i18n ),\n __( 'download', redux_templates.i18n ),\n __( 'migrate', redux_templates.i18n ),\n];\n\n\n\nconst settings = {\n\ttitle: title,\n description: __( 'Import blocks exported using Redux plugin.', redux_templates.i18n ),\n\n\tcategory: category,\n\tkeywords: keywords,\n\n attributes: schema,\n\n supports: {\n align: true,\n alignWide: false,\n alignFull: false,\n customClassName: false,\n className: false,\n html: false,\n },\n\n transforms: transforms,\n edit: edit,\n save() {\n return null;\n },\n};\n\nexport { name, title, category, icon, settings };\n","/**\n * WordPress dependencies\n */\nconst { createBlock } = wp.blocks;\n\nconst transforms = {\n from: [\n {\n type: 'files',\n isMatch( files ) {\n return files[ 0 ].type === 'application/json';\n },\n // We define a lower priorty (higher number) than the default of 10. This\n // ensures that the Import block is only created as a fallback.\n priority: 13,\n transform: ( files ) => {\n const blocks = [];\n\n blocks.push( createBlock( 'redux/import', {\n file: files,\n } ) );\n\n return blocks;\n },\n },\n ],\n};\n\nexport default transforms;\n","/**\n * Reads the textual content of the given file.\n *\n * @param {File} file File.\n * @return {Promise<string>} Content of the file.\n */\nexport function readTextFile( file ) {\n const reader = new window.FileReader();\n return new Promise( ( resolve ) => {\n reader.onload = function() {\n resolve( reader.result );\n };\n reader.readAsText( file );\n } );\n}\n","/**\n * External dependencies\n */\nimport { isString } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport { readTextFile } from './file';\nconst { dispatch, select } = wp.data;\nconst { editPost } = dispatch('core/editor');\n\n/**\n * Import a reusable block from a JSON file.\n *\n * @param {File} file File.\n * @return {Promise} Promise returning the imported reusable block.\n */\nasync function importReusableBlock( file ) {\n const fileContent = await readTextFile( file );\n let parsedContent;\n try {\n parsedContent = JSON.parse(JSON.parse(JSON.stringify(fileContent)));\n } catch ( e ) {\n throw new Error( 'Invalid JSON file' );\n }\n\n if ( parsedContent.__file === 'redux_template' ) {\n\t\teditPost( { 'template': 'redux-templates_full_width' } );\n return parsedContent.content;\n }\n\n if (\n parsedContent.__file !== 'wp_block' ||\n ! parsedContent.title ||\n ! parsedContent.content ||\n ! isString( parsedContent.title ) ||\n ! isString( parsedContent.content )\n ) {\n\t if ( '' === select( 'core/editor' ).getEditedPostAttribute( 'template' ) ) {\n\t\t editPost({'template': 'redux-templates_contained'});\n\t }\n return importCoreBlocks( parsedContent );\n }\n\n const postType = await wp.apiFetch( { path: '/wp/v2/types/wp_block' } );\n const reusableBlock = await wp.apiFetch( {\n path: `/wp/v2/${ postType.rest_base }`,\n data: {\n title: parsedContent.title,\n content: parsedContent.content,\n status: 'publish',\n },\n method: 'POST',\n } );\n\n if ( reusableBlock.id ) {\n return '<!-- wp:block {\"ref\":' + reusableBlock.id + '} /-->';\n }\n throw new Error( 'Invalid Reusable Block JSON file contents' );\n}\n\nfunction importCoreBlocks( parsedContent ) {\n if (\n parsedContent.__file !== 'core_block' ||\n ! parsedContent.content ||\n ! isString( parsedContent.content )\n ) {\n throw new Error( 'Invalid JSON file' );\n }\n\n return parsedContent.content;\n}\n\nexport default importReusableBlock;\n","/**\n * WordPress dependencies\n */\nconst { select, dispatch } = wp.data;\nconst { parse, createBlock } = wp.blocks;\n\nexport default function insertImportedBlocks( clientId, blocks, onClose ) {\n blocks = parse( blocks );\n const toSelect = [];\n const blockIndex = select( 'core/block-editor' ).getBlockInsertionPoint();\n if ( blocks.length > 0 ) {\n for ( const block in blocks ) {\n const created = createBlock( blocks[ block ].name, blocks[ block ].attributes, blocks[ block ].innerBlocks );\n dispatch( 'core/block-editor' ).insertBlocks( created, parseInt( blockIndex.index ) + parseInt( block ) );\n\n if ( typeof created !== 'undefined' ) {\n toSelect.push( created.clientId );\n }\n }\n\n //remove insertion point if empty\n dispatch( 'core/block-editor' ).removeBlock( clientId );\n\n //select inserted blocks\n if ( toSelect.length > 0 ) {\n dispatch( 'core/block-editor' ).multiSelect( toSelect[ 0 ], toSelect.reverse()[ 0 ] );\n }\n }\n\n onClose();\n}\n","/**\n * External dependencies.\n */\nimport { ReduxTemplatesIcon } from '~redux-templates/icons'\n// import { ModalDesignLibrary } from '~stackable/components'\nimport {ModalManager} from '../../modal-manager';\nimport LibraryModal from '../../modal-library';\n\n/**\n * WordPress dependencies.\n */\nimport {\n\tButton, Placeholder,\n} from '@wordpress/components'\nimport { compose } from '@wordpress/compose'\nimport { createBlock, parse } from '@wordpress/blocks'\nimport { withDispatch } from '@wordpress/data'\nimport { useState } from '@wordpress/element'\nimport { __ } from '@wordpress/i18n'\nimport { applyFilters } from '@wordpress/hooks'\n\nconst edit = ( { removeLibraryBlock, preview } ) => {\n\tif (preview) {\n\t\talert('here i am');\n\t}\n\n\treturn (\n\t\t<div className=\"redux-template-library-block\">\n\t\t\t<Placeholder\n\t\t\t\ticon={ <ReduxTemplatesIcon /> }\n\t\t\t\tlabel={ __( 'Redux Template Library', redux_templates.i18n ) }\n\t\t\t\tinstructions={ __( 'Open the Design Library and select a pre-designed block or layout.', redux_templates.i18n ) }\n\t\t\t>\n\t\t\t\t<Button\n\t\t\t\t\tisSecondary\n\t\t\t\t\tisLarge\n\t\t\t\t\thasIcon\n\t\t\t\t\tclassName=\"redux-template-library-block__button\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tModalManager.open(<LibraryModal />);\n\t\t\t\t\t\tremoveLibraryBlock()\n\t\t\t\t\t} }\n\t\t\t\t>{ __( 'Open Design Library', redux_templates.i18n ) }</Button>\n\t\t\t</Placeholder>\n\t\t</div>\n\t)\n}\n\nexport default compose( [\n\twithDispatch( ( dispatch, {\n\t\tclientId,\n\t} ) => {\n\t\tconst { removeBlocks } = dispatch( 'core/block-editor' )\n\t\treturn {\n\t\t\tremoveLibraryBlock: serializedBlock => {\n\t\t\t\tremoveBlocks( clientId );\n\t\t\t},\n\t\t}\n\t} ),\n] )( edit )\n","/**\n * BLOCK: Design Library\n */\n/**\n * External dependencies\n */\nimport { ReduxTemplatesIcon } from '~redux-templates/icons'\n\n/**\n * Internal dependencies\n */\nimport edit from './edit'\nimport InsertLibraryButton from './insert-library-button'\nconst { registerBlockType } = wp.blocks;\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n'\nimport domReady from '@wordpress/dom-ready'\nimport { render } from '@wordpress/element'\nimport { ReduxTemplatesIconColor } from '../../icons';\n\n\n\nconst name = 'library';\nconst icon = InsertLibraryButton\n\nconst category = 'common';\nconst schema = {}\n\nconst title = __( 'Template Library', redux_templates.i18n );\nconst description = __( 'Choose a section, template, or template kit from the Redux Template Library.', redux_templates.i18n );\n\nconst keywords = [\n\t__( 'Template Library', redux_templates.i18n ),\n\t__( 'Design Library', redux_templates.i18n ),\n\t__( 'Element Layouts', redux_templates.i18n ),\n\t__( 'Redux', redux_templates.i18n ),\n];\n\nconst blockAttributes = {\n\tfile: {\n\t\ttype: 'object',\n\t},\n};\n\nconst settings = {\n\ttitle: title,\n\tdescription: description,\n\ticon: ReduxTemplatesIconColor,\n\tcategory: 'layout',\n\tkeywords: keywords,\n\tattributes: schema,\n\tsupports: {\n\t\tcustomClassName: false,\n\t\t// inserter: ! disabledBlocks.includes( name ), // Hide if disabled.\n\t},\n\n\texample: {\n\t\tattributes: {\n\t\t\t// backgroundColor: '#000000',\n\t\t\t// opacity: 0.8,\n\n\t\t\t// padding: 30,\n\t\t\t// textColor: '#FFFFFF',\n\t\t\t// radius: 10,\n\t\t\t// title: __( 'I am a slide title', 'wp-presenter-pro' ),\n\t\t},\n\t},\n\n\tedit: edit,\n\n\tsave() {\n\t\treturn null;\n\t},\n};\n\nconst renderButton = function(toolbar) {\n\n\tconst buttonDiv = document.createElement( 'div' )\n\ttoolbar.appendChild( buttonDiv )\n\n\trender( <InsertLibraryButton />, buttonDiv )\n}\n\ndomReady( () => {\n\tlet toolbar = document.querySelector( '.edit-post-header__toolbar' );\n\tif ( ! toolbar ) {\n\t\ttoolbar = document.querySelector( '.edit-post-header__toolbar' );\n\t}\n\tif ( ! toolbar ) {\n\t\tsetTimeout(function(){\n\t\t\tlet toolbar = document.querySelector( '.edit-post-header__toolbar' );\n\t\t\tif ( toolbar ) {\n\t\t\t\trenderButton( toolbar );\n\t\t\t}\n\t\t}, 500);\n\t\treturn;\n\t}\n\trenderButton(toolbar);\n} )\n\nexport { name, title, category, icon, settings };\n","/**\n * External dependencies\n */\nimport { ReduxTemplatesIcon, ReduxTemplatesIconColorize } from '~redux-templates/icons'\n\n/**\n * WordPress dependencies\n */\nimport {Button, Tooltip} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {ModalManager} from '../../modal-manager';\nimport LibraryModal from '../../modal-library';\nimport './style.scss'\n\nconst InsertLibraryButton = () => {\n\treturn (\n\t\t<Tooltip text={__( 'Redux Templates Library', redux_templates.i18n )} position={'bottom'}>\n\t\t\t<Button data-tut=\"tour__library_button\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tModalManager.open(<LibraryModal />);\n\t\t\t\t\t} }\n\t\t\t\t\tclassName=\"redux-templates-insert-library-button\"\n\t\t\t\t\tlabel={ __( 'Open Library', redux_templates.i18n ) }\n\t\t\t\t\ticon={ <ReduxTemplatesIcon /> }\n\t\t\t>{ __( 'Templates', redux_templates.i18n ) }</Button>\n\t\t</Tooltip>\n\t)\n}\n\nexport default InsertLibraryButton\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","/**\n * WordPress dependencies\n */\nimport {__} from '@wordpress/i18n'\nimport CONFIG from '../config';\nimport './style.scss'\n\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {useState, useEffect} = wp.element;\n\n// currentStep : indicates where the step is\n// step: 1~8 etc\nexport default function ChallengeStepItem(props) {\n const {currentStep, step, caption, finalStatus} = props;\n const [iconClassname, setIconClassname] = useState('fa circle');\n const [itemClassname, setItemClassname] = useState('challenge-item');\n useEffect(() => {\n if (currentStep < step) { // not completed step\n setItemClassname('challenge-item');\n setIconClassname('far fa-circle');\n }\n if (currentStep === step) { // current step\n setItemClassname('challenge-item challenge-item-current');\n setIconClassname('fas fa-circle');\n } \n if (currentStep > step || finalStatus) {\n setItemClassname('challenge-item challenge-item-completed');\n setIconClassname('fas fa-check-circle');\n }\n }, [step, currentStep, finalStatus]);\n \n return <li className={itemClassname}><i className={iconClassname} />{caption}</li>;\n}","const {useState, useEffect, memo} = wp.element;\nimport CONFIG from '../config';\nexport default memo(function ProgressBar({currentStep}){\n const [width, setWidth] = useState(0);\n useEffect(() => {\n setWidth( currentStep <= 0 ? 0 : (currentStep / CONFIG.totalStep * 100) );\n }, [currentStep])\n return (\n <div className='challenge-bar'>\n <div style={{width: width + '%'}}></div>\n </div>\n );\n});","/**\n * WordPress dependencies\n */\nimport {__} from '@wordpress/i18n'\nimport ChallengeStepItem from './ChallengeStepItem';\nimport ProgressBar from './ProgressBar';\nimport CONFIG from '../config';\nimport './style.scss'\n\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {useState, useEffect} = wp.element;\n\nfunction ChallengeListBlock(props) {\n const {started, onStarted} = props;\n const {challengeStep, finalStatus, setChallengeOpen, setChallengeStep} = props;\n const [buttonRowClassname, setButtonRowClassname] = useState('challenge-button-row');\n useEffect(() => {\n setButtonRowClassname(challengeStep !== CONFIG.beginningStep ? 'challenge-button-row started' : 'challenge-button-row');\n }, [challengeStep])\n \n const onCancelChallenge = () => {\n setChallengeOpen(false);\n setChallengeStep(-1);\n }\n\n return (\n <div className='challenge-list-block'>\n <p>{__('Complete the challenge and get up and running within 5 minutes', redux_templates.i18n)}</p>\n <ProgressBar currentStep={finalStatus === 'success' ? CONFIG.totalStep : challengeStep} />\n <ul className='challenge-list'>\n {\n CONFIG.list.map((item, i) => {\n return (<ChallengeStepItem key={i} step={i} currentStep={challengeStep} finalStatus={finalStatus} caption={item.caption} />);\n })\n }\n </ul>\n { finalStatus === '' &&\n <div className={buttonRowClassname}>\n {challengeStep === CONFIG.beginningStep && \n <button className='btn-challenge-start' onClick={onStarted}>{__('Start Challenge', redux_templates.i18n)}</button>}\n {challengeStep === CONFIG.beginningStep && <button className='btn-challenge-skip' onClick={onCancelChallenge}>{__('Skip Challenge', redux_templates.i18n)}</button>}\n {challengeStep !== CONFIG.beginningStep && <button className='btn-challenge-cancel' onClick={onCancelChallenge}>{__('Cancel Challenge', redux_templates.i18n)}</button>}\n </div>\n }\n </div>\n );\n\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setChallengeOpen, setChallengeStep} = dispatch('redux-templates/sectionslist');\n return {\n setChallengeOpen,\n setChallengeStep\n };\n }),\n\n withSelect((select) => {\n const {getChallengeStep, getChallengeFinalStatus} = select('redux-templates/sectionslist');\n return {\n challengeStep: getChallengeStep(),\n finalStatus: getChallengeFinalStatus()\n };\n })\n])(ChallengeListBlock);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","/**\n * WordPress dependencies\n */\nimport {__} from '@wordpress/i18n'\nimport './style.scss'\nimport config from '../config';\nimport helper from '../helper';\nimport classnames from 'classnames';\nconst {compose} = wp.compose;\nconst {withSelect, withDispatch} = wp.data;\nconst {useState, useEffect, useRef} = wp.element;\n\nfunction useInterval(callback, delay) {\n const savedCallback = useRef();\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n let id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}\n\nfunction ChallengeTimer(props) {\n const {started, expanded, setChallengeListExpanded, isChallengeOpen, finalStatus} = props;\n const [secondsLeft, setSecondsLeft] = useState(helper.getSecondsLeft());\n const [paused, setPaused] = useState(false);\n\n // only timer\n useEffect(() => {\n window.addEventListener('focus', resume);\n window.addEventListener('blur', pause);\n return () => {\n window.removeEventListener('focus', resume);\n window.removeEventListener('blur', pause);\n };\n });\n\n // setup timer\n useEffect(() => {\n setSecondsLeft(helper.getSecondsLeft());\n if (helper.loadStep() === -1) {\n setSecondsLeft(config.initialSecondsLeft);\n }\n }, [isChallengeOpen]);\n\n // run timer\n useInterval(() => {\n setSecondsLeft(secondsLeft < 0 ? 0 : secondsLeft - 1);\n helper.saveSecondsLeft(secondsLeft < 0 ? 0 : secondsLeft - 1);\n }, (started && (paused === false) && secondsLeft >= 0 && finalStatus === '') ? 1000 : null);\n\n\n // Pause the timer.\n const pause = () => {\n setPaused(true);\n }\n\n // Resume the timer.\n const resume = () => {\n setPaused(false);\n }\n\n return (\n <div className='block-timer'>\n <div>\n <h3>{__('Redux Challenge', redux_templates.i18n)}</h3>\n <p><span>{helper.getFormatted(secondsLeft)}</span>{__(' remaining', redux_templates.i18n)}</p>\n </div>\n <div className={classnames('caret-icon', {'closed': expanded})} onClick={() => setChallengeListExpanded(!expanded)}>\n <i className=\"fa fa-caret-down\"></i>\n </div>\n </div>\n );\n\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setChallengeListExpanded} = dispatch('redux-templates/sectionslist');\n return {\n setChallengeListExpanded\n };\n }),\n withSelect((select) => {\n const {getChallengeOpen, getChallengeFinalStatus, getChallengeListExpanded} = select('redux-templates/sectionslist');\n return {\n isChallengeOpen: getChallengeOpen(),\n finalStatus: getChallengeFinalStatus(),\n expanded: getChallengeListExpanded()\n };\n })\n])(ChallengeTimer);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {__} from '@wordpress/i18n'\nimport {animateScroll} from 'react-scroll';\nimport {dispatch, select} from '@wordpress/data';\nconst {setTourActiveButtonGroup, setImportingTemplate} = dispatch('redux-templates/sectionslist');\nconst {getPageData} = select('redux-templates/sectionslist');\nimport {ModalManager} from '~redux-templates/modal-manager';\nimport PreviewModal from '~redux-templates/modal-preview';\nexport default {\n initialSecondsLeft: 300,\n beginningStep: -1,\n totalStep: 7,\n list: [\n {\n selector: '[data-tut=\"tour__navigation\"]',\n caption: __('Template Type Tabs', redux_templates.i18n),\n offset: {\n x: 0,\n y: 50,\n arrowX: 0,\n arrowY: -20\n },\n box: {\n width: 250\n },\n direction: 'top',\n content: () => (\n <div>\n {__('These are the different types of templates we have.', redux_templates.i18n)}\n <ul>\n <li>\n <strong>{__('Sections', redux_templates.i18n)}</strong>\n {__(' are the building blocks of a page. Each \"row\" of content on a page we consider a section.', redux_templates.i18n)}\n </li>\n <li>\n <strong>{__('Pages', redux_templates.i18n)}</strong>\n {__(' are, you guessed it, a group of multiple sections making up a page.', redux_templates.i18n)}\n </li>\n <li>\n <strong>{__('Template Kits', redux_templates.i18n)}</strong>\n {__(' are groups of pages that all follow a style or theme.', redux_templates.i18n)}\n </li>\n <li>\n <strong>{__('Saved', redux_templates.i18n)}</strong>\n {__(' are reusable blocks that you may have previously saved for later.', redux_templates.i18n)}\n </li>\n </ul>\n </div>\n )\n },\n {\n selector: '[data-tut=\"tour__filtering\"]',\n caption: __('Sidebar', redux_templates.i18n),\n content: __('This area is where you can search and filter to find the right kind of templates you want.', redux_templates.i18n),\n direction: 'left',\n offset: {\n x: 40,\n y: 10,\n arrowX: -20,\n arrowY: 0\n },\n box: {\n width: 250,\n height: 130\n },\n action: () => {\n animateScroll.scrollToTop({\n containerId: 'redux-templates-collection-modal-sidebar',\n duration: 0,\n });\n },\n },\n {\n selector: '[data-tut=\"tour__filtering\"]',\n caption: __('Plugins Filter', redux_templates.i18n),\n offset: {\n x: 40,\n y: 10,\n arrowX: -20,\n arrowY: 0\n },\n box: {\n width: 290,\n height: 185\n },\n content: () => (\n <div>\n {__('Some templates require certain plugins. You can filter or select those templates. Hint, if the text is a ', redux_templates.i18n)}\n <a href=\"#\" className=\"missing-dependency\">{__('little orange', redux_templates.i18n)}</a>\n {__(', you don`t have that plugin installed yet, but don`t worry. Redux will help you with that too.', redux_templates.i18n)}\n </div>\n ),\n action: () => {\n animateScroll.scrollToBottom({\n containerId: 'redux-templates-collection-modal-sidebar',\n duration: 0,\n });\n },\n direction: 'left'\n },\n {\n selector: '[data-tut=\"tour__main_body\"]',\n caption: __('Templates List', redux_templates.i18n),\n content: __('This area is where the templates will show up that match the filters you\\'ve selected. You can click on many of them to preview or import them.', redux_templates.i18n),\n direction: 'left',\n offset: {\n x: 40,\n y: 10,\n arrowX: -20,\n arrowY: 0\n },\n box: {\n width: 250,\n height: 150\n },\n action: () => {\n animateScroll.scrollToTop({\n containerId: 'redux-templates-collection-modal-sidebar',\n duration: 0,\n });\n setTourActiveButtonGroup(null);\n }\n },\n {\n selector: '#modalContainer .redux-templates-single-item-inner:first-child',\n caption: __('Template Hover', redux_templates.i18n),\n content: __('When you hover over a template you can see via icons what plugins are required for this template. You can then choose to Preview or Import a design.', redux_templates.i18n),\n action: () => {\n ModalManager.closeCustomizer();\n const pageData = getPageData();\n if (pageData && pageData.length > 0) {\n setTourActiveButtonGroup(pageData[0])\n }\n },\n direction: 'left',\n offset: {\n x: 40,\n y: 10,\n arrowX: -20,\n arrowY: 0\n },\n box: {\n width: 240,\n height: 169\n },\n },\n {\n selector: '.wp-full-overlay-sidebar',\n caption: __('Preview Dialog', redux_templates.i18n),\n content: __('This is the preview dialog. It gives more details about the template and helps you to see what you could expect the templates to look like.', redux_templates.i18n),\n action: () => {\n setTourActiveButtonGroup(null);\n setImportingTemplate(null);\n const pageData = getPageData();\n if (pageData && pageData.length > 0) {\n ModalManager.openCustomizer(\n <PreviewModal startIndex={0} currentPageData={pageData}/>\n )\n }\n },\n position: 'center'\n },\n {\n selector: '.redux-templates-import-wizard-wrapper',\n caption: __('Import Wizard', redux_templates.i18n),\n content: __('When you click to import a template, sometimes you will be missing one of the required plugins. Redux will do its best to help you install what\\'s missing. If some of them are premium plugins, you will be provided details on where you can get them.', redux_templates.i18n),\n direction: 'right',\n offset: {\n x: 0,\n y: 85,\n arrowX: 40,\n arrowY: 25\n },\n box: {\n width: 250,\n height: 169\n },\n action: () => {\n // if (ModalManager.isModalOpened() === false) ModalManager.open(<LibraryModal autoTourStart={false} />)\n if (document.getElementsByClassName('tooltipster-box'))\n document.getElementsByClassName('tooltipster-box')[0].style.display = 'none';\n ModalManager.show();\n ModalManager.closeCustomizer();\n const pageData = getPageData();\n if (pageData && pageData.length > 0) setImportingTemplate(pageData[0]);\n setTimeout(() => {\n const openedPanel = document.getElementsByClassName('redux-templates-modal-wrapper');\n if (openedPanel && openedPanel.length > 0) {\n let openPanel = openedPanel[0].getBoundingClientRect();\n let box = {top: openPanel.top + 90, left: openPanel.left - 320};\n dispatch('redux-templates/sectionslist').setChallengeTooltipRect(box);\n }\n if (document.getElementsByClassName('tooltipster-box'))\n document.getElementsByClassName('tooltipster-box')[0].style.display = 'block';\n }, 0)\n }\n }\n ]\n};\n","/**\n * WordPress dependencies\n */\nimport {__} from '@wordpress/i18n'\nimport CONFIG from '../config';\nimport helper from '../helper';\n\nconst { compose } = wp.compose;\nconst { withDispatch, withSelect } = wp.data;\n\n\nconst ratingStars = (\n <span className=\"rating-stars\">\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n </span>\n);\n\nfunction ChallengeCongrats(props) {\n const {setChallengeStep, setChallengeFinalStatus, setChallengeOpen} = props;\n const closeModal = () => {\n setChallengeStep(CONFIG.beginningStep);\n setChallengeFinalStatus('');\n setChallengeOpen(false);\n }\n return (\n <div className=\"redux-templates-modal-overlay\">\n <div className=\"redux-templates-modal-wrapper challenge-popup-wrapper\">\n <div className=\"challenge-popup-header challenge-popup-header-congrats\"\n style={{backgroundImage: `url(${redux_templates.plugin + 'assets/img/popup-congrats.png'})`}}>\n <a className=\"challenge-popup-close\" onClick={closeModal}>\n <i className='fas fa-times' />\n </a>\n </div>\n <div className=\"challenge-popup-content\">\n <h3>{__( 'Congrats, you did it!', redux_templates.i18n )}</h3>\n <p>\n {__( 'You completed the Redux Challenge in ', redux_templates.i18n )}<b>{helper.getLocalizedDuration()}</b>.\n {__('Share your success story with other Redux users and help us spread the word', redux_templates.i18n)}\n <b>{__('by giving Redux a 5-star rating (', redux_templates.i18n)} {ratingStars}{__(') on WordPress.org', redux_templates.i18n)}</b>.\n {__('Thanks for your support and we look forward to bringing more awesome features.', redux_templates.i18n)}\n </p>\n <a href=\"https://wordpress.org/support/plugin/redux-framework/reviews/?filter=5#new-post\" className=\"challenge-popup-btn challenge-popup-rate-btn\" target=\"_blank\" rel=\"noopener\">\n {__( 'Rate Redux on Wordpress.org', redux_templates.i18n ) }\n <span className=\"dashicons dashicons-external\"></span>\n </a>\n </div>\n </div>\n </div>\n );\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const { setChallengeStep, setChallengeFinalStatus, setChallengeOpen } = dispatch('redux-templates/sectionslist');\n return {\n setChallengeStep,\n setChallengeFinalStatus,\n setChallengeOpen\n };\n })\n])(ChallengeCongrats);\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n'\nimport CONFIG from '../config';\nimport {CheckboxControl} from '@wordpress/components';\n\nconst {compose} = wp.compose;\nconst {useState} = wp.element;\nconst {withDispatch, withSelect} = wp.data;\n\n\nconst ratingStars = (\n <span className=\"rating-stars\">\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n <i className=\"fa fa-star\"></i>\n </span>\n);\n\nfunction ChallengeContact(props) {\n const { setChallengeStep, setChallengeFinalStatus, setChallengeOpen } = props;\n const [comment, setComment] = useState('');\n const [agreeToContactFurther, setAgreement] = useState(false);\n const closeModal = () => {\n setChallengeStep(CONFIG.beginningStep);\n setChallengeFinalStatus('');\n setChallengeOpen(false);\n }\n\n const handleChange = (e) => {\n setComment(e.target.value);\n }\n\n const contactRedux = () => {\n //sending data\n console.log('contact information', comment, agreeToContactFurther);\n closeModal();\n }\n\n return (\n <div className=\"redux-templates-modal-overlay\">\n <div className=\"redux-templates-modal-wrapper challenge-popup-wrapper\">\n <div className=\"challenge-popup-header challenge-popup-header-contact\"\n style={{ backgroundImage: `url(${redux_templates.plugin + 'assets/img/popup-contact.png'})` }}>\n <a className=\"challenge-popup-close\" onClick={closeModal}>\n <i className='fas fa-times' />\n </a>\n </div>\n <div className=\"challenge-popup-content challenge-contact\">\n <h3>{__('Help us improve Redux', redux_templates.i18n)}</h3>\n <p>\n {__('We\\'re sorry that it took longer than 5 minutes to try our challenge. We aim to ensure our Block Template library is as beginner friendly as possible. Please take a moment to let us know how we can improve our challenge.', redux_templates.i18n)}\n </p>\n <textarea value={comment} onChange={handleChange}></textarea>\n <CheckboxControl\n label={__('Yes, I give Redux permission to contact me for any follow up questions.', redux_templates.i18n)}\n checked={agreeToContactFurther}\n onChange={() => setAgreement(!agreeToContactFurther)}\n />\n <button className=\"challenge-popup-btn challenge-popup-rate-btn\" onClick={contactRedux}>\n {__('Submit Feedback', redux_templates.i18n)}\n </button>\n </div>\n </div>\n </div>\n );\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const { setChallengeStep, setChallengeFinalStatus, setChallengeOpen } = dispatch('redux-templates/sectionslist');\n return {\n setChallengeStep,\n setChallengeFinalStatus,\n setChallengeOpen\n };\n })\n])(ChallengeContact);\n","/**\n * WordPress dependencies\n */\nimport ChallengeCongrats from './congrats';\nimport ChallengeContact from './contact';\nimport './style.scss'\n\nexport default function ChallengeFinalTemplate({finalStatus}) {\n\treturn <ChallengeCongrats />\n\t// TODO - When feedback is working, uncomment this.\n // if (finalStatus === 'success') return <ChallengeCongrats />\n // return <ChallengeContact />;\n}\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {__} from '@wordpress/i18n'\nimport CONFIG from './config';\nexport default {\n\n /**\n * Get number of seconds left to complete the Challenge.\n */\n getSecondsLeft: function() {\n var secondsLeft = localStorage.getItem( 'reduxChallengeSecondsLeft' );\n\n secondsLeft = isNaN(secondsLeft) || secondsLeft == null ? CONFIG.initialSecondsLeft : parseInt( secondsLeft, 10 );\n\n return secondsLeft;\n },\n\n /**\n * Save number of seconds left to complete the Challenge.\n */\n saveSecondsLeft: function( secondsLeft ) {\n\n localStorage.setItem( 'reduxChallengeSecondsLeft', secondsLeft );\n },\n\n /**\n * Get 'minutes' part of timer display.\n */\n getMinutesFormatted: function( secondsLeft ) {\n return Math.floor( secondsLeft / 60 );\n },\n\n /**\n * Get 'seconds' part of timer display.\n */\n getSecondsFormatted: function( secondsLeft ) {\n return secondsLeft % 60;\n },\n\n /**\n * Get formatted timer for display.\n */\n getFormatted: function( secondsLeft ) {\n\n if (secondsLeft < 0) return '0:00';\n\n var timerMinutes = this.getMinutesFormatted( secondsLeft );\n var timerSeconds = this.getSecondsFormatted( secondsLeft );\n\n return timerMinutes + ( 9 < timerSeconds ? ':' : ':0' ) + timerSeconds;\n },\n\n /**\n * Get Localized time string for display\n */\n getLocalizedDuration: function() {\n let secondsLeft = this.getSecondsLeft();\n secondsLeft = CONFIG.initialSecondsLeft - secondsLeft;\n\n var timerMinutes = this.getMinutesFormatted( secondsLeft );\n var timerSeconds = this.getSecondsFormatted( secondsLeft );\n\n const minutesString = timerMinutes ? timerMinutes + ' ' + __( 'minutes', redux_templates.i18n ) + ' ' : '';\n const secondsString = timerSeconds ? timerSeconds + ' ' + __( 'seconds', redux_templates.i18n ) : '';\n return minutesString + secondsString;\n },\n\n /**\n * Get last saved step.\n */\n loadStep: function() {\n\n var step = localStorage.getItem( 'reduxChallengeStep' );\n step = isNaN(step) ? -1 : parseInt( step, 10 );\n\n return step;\n },\n\n /**\n * Save Challenge step.\n */\n saveStep: function( step ) {\n localStorage.setItem( 'reduxChallengeStep', step );\n },\n};\n","/**\n * WordPress dependencies\n */\nimport {__} from '@wordpress/i18n'\nimport './style.scss'\nimport helper from './helper';\nimport CONFIG from './config';\nimport ChallengeListBlock from './challenge-list-block';\nimport ChallengeTimer from './challenge-timer';\n\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {useState, useEffect} = wp.element;\n\nfunction ReduxChallenge(props) {\n const {autoChallengeStart} = props;\n const {isOpen, challengeStep, setChallengeStep, listExpanded} = props;\n const [challengeClassname, setChallengeClassname] = useState('redux-templates-challenge');\n const [started, setStarted] = useState(false);\n\n useEffect(() => {\n if (challengeStep !== CONFIG.beginningStep && isOpen) {\n setChallengeClassname('redux-templates-challenge started')\n setStarted(true);\n }\n }, [challengeStep, isOpen]);\n\n const onStarted = () => {\n setChallengeStep(0);\n setStarted(true);\n }\n\n return (\n <div className={challengeClassname} style={{display: isOpen ? 'block' : 'none'}}>\n { listExpanded && <ChallengeListBlock onStarted={onStarted} /> }\n <ChallengeTimer started={started} />\n </div>\n );\n\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setChallengeStep} = dispatch('redux-templates/sectionslist');\n return {\n setChallengeStep\n };\n }),\n\n withSelect((select) => {\n const {getChallengeStep, getChallengeOpen, getChallengeListExpanded} = select('redux-templates/sectionslist');\n return {\n challengeStep: getChallengeStep(),\n isOpen: getChallengeOpen(),\n listExpanded: getChallengeListExpanded()\n };\n })\n])(ReduxChallenge);\n","\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {compose} from '@wordpress/compose';\nimport {withDispatch, withSelect} from '@wordpress/data';\nimport CONFIG from '../config';\nconst {findDOMNode, useRef, useEffect} = wp.element;\nfunction ChallengeDot(props) {\n const {step, challengeStep, isOpen, setChallengeTooltipRect} = props;\n const selectedElement = useRef(null);\n useEffect(() => {\n window.addEventListener('resize', onResize);\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, [])\n\n useEffect(() => {\n if (isOpen === false) return;\n const stepInformation = CONFIG.list[challengeStep];\n if (stepInformation && stepInformation.action && typeof stepInformation.action === 'function') {\n stepInformation.action();\n onResize();\n setTimeout(onResize, 0);\n } else\n onResize();\n }, [challengeStep, isOpen]);\n\n const isVisible = () => {\n return ((challengeStep >= 0 && challengeStep < CONFIG.totalStep) && isOpen);\n }\n\n const onResize = () => {\n const box = getElementBounding();\n if (box) setChallengeTooltipRect(box);\n };\n\n const getElementBounding = () => {\n if (selectedElement && selectedElement.current) {\n const rect = findDOMNode(selectedElement.current).getBoundingClientRect();\n return {left: rect.left, top: rect.top, width: rect.width, height: rect.height};\n }\n return null;\n }\n if (isVisible() && challengeStep === step)\n return <i className=\"challenge-dot tooltipstered\" ref={selectedElement}>\n &nbsp;\n </i>;\n return null;\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setChallengeTooltipRect} = dispatch('redux-templates/sectionslist');\n return {\n setChallengeTooltipRect\n };\n }),\n withSelect((select, props) => {\n const { getChallengeOpen, getChallengeStep } = select('redux-templates/sectionslist');\n return {\n isOpen: getChallengeOpen(),\n challengeStep: getChallengeStep()\n };\n })\n])(ChallengeDot);\n","import {__} from '@wordpress/i18n';\n\nconst { compose } = wp.compose;\nconst { withDispatch, withSelect } = wp.data;\nconst { useState, useEffect } = wp.element;\nimport {ModalManager} from '~redux-templates/modal-manager';\nimport CONFIG from '../config';\nimport helper from '../helper';\nconst ARROW_BOX = 30;\nconst DEFAULT_BOX_WIDTH = 250;\nconst DEFAULT_BOX_HEIGHT = 300;\nconst DEFAULT_OFFSET_X = 0;\nconst DEFAULT_OFFSET_Y = 20;\nconst DEFAULT_ARROW_OFFSET_X = 20;\nconst DEFAULT_ARROW_OFFSET_Y = 20;\nfunction TooltipBox(props) {\n const { challengeStep, tooltipRect, isOpen, setChallengeStep, setChallengeFinalStatus, setChallengePassed, setChallengeListExpanded, setImportingTemplate } = props;\n const [style, setStyle] = useState({});\n const [arrowStyle, setArrowStyle] = useState({});\n const [content, setContent] = useState('');\n const [wrapperClassname, setWrapperClassname] = useState('');\n\n const isVisible = () => {\n return ((challengeStep >= 0 || challengeStep > CONFIG.totalStep) && isOpen);\n }\n\n const calculateWithStepInformation = () => {\n const stepInformation = CONFIG.list[challengeStep];\n const boxWidth = (stepInformation.box && stepInformation.box.width) ? stepInformation.box.width : DEFAULT_BOX_WIDTH;\n const boxHeight = (stepInformation.box && stepInformation.box.height) ? stepInformation.box.height : DEFAULT_BOX_HEIGHT;\n const offsetX = stepInformation.offset ? stepInformation.offset.x :DEFAULT_OFFSET_X;\n const offsetY = stepInformation.offset ? stepInformation.offset.y :DEFAULT_OFFSET_Y;\n switch(stepInformation.direction) {\n case 'right':\n return [tooltipRect.left + offsetX, tooltipRect.top + offsetY - boxHeight / 2];\n case 'left':\n return [tooltipRect.left + offsetX, tooltipRect.top + offsetY - boxHeight / 2];\n case 'top':\n return [tooltipRect.left + offsetX - boxWidth / 2, tooltipRect.top + offsetY ];\n case 'bottom':\n return [tooltipRect.left + offsetX - boxWidth / 2, tooltipRect.top - boxHeight + offsetY];\n default:\n return [tooltipRect.left + offsetX, tooltipRect.top + offsetY];\n }\n }\n\n const calculateArrowOffset = () => {\n const stepInformation = CONFIG.list[challengeStep];\n const boxWidth = (stepInformation.box && stepInformation.box.width) ? stepInformation.box.width : DEFAULT_BOX_WIDTH;\n const boxHeight = (stepInformation.box && stepInformation.box.height) ? stepInformation.box.height : DEFAULT_BOX_HEIGHT;\n const arrowOffsetX = (stepInformation.offset && isNaN(stepInformation.offset.arrowX) === false) ? stepInformation.offset.arrowX : DEFAULT_ARROW_OFFSET_X;\n const arrowOffsetY = (stepInformation.offset && isNaN(stepInformation.offset.arrowY) === false) ? stepInformation.offset.arrowY : DEFAULT_ARROW_OFFSET_Y;\n switch(stepInformation.direction) {\n case 'top':\n return [boxWidth / 2 + arrowOffsetX, arrowOffsetY];\n case 'bottom':\n return [boxWidth / 2 + arrowOffsetX, arrowOffsetY];\n case 'left':\n return [arrowOffsetX, arrowOffsetY + boxHeight / 2 - ARROW_BOX / 2];\n case 'right':\n return [boxWidth + arrowOffsetX, arrowOffsetY + boxHeight / 2 - ARROW_BOX / 2];\n default:\n return [arrowOffsetX, arrowOffsetY];\n }\n }\n // adjust position and content upon steps change\n useEffect(() => {\n if (isVisible() && tooltipRect) {\n const stepInformation = CONFIG.list[challengeStep];\n if (stepInformation) {\n const [boxLeft, boxTop] = calculateWithStepInformation();\n const [arrowOffsetX, arrowOffsetY] = calculateArrowOffset();\n setStyle({\n ...style,\n display: 'block',\n width: stepInformation.box ? stepInformation.box.width : DEFAULT_BOX_WIDTH,\n left: boxLeft,\n top: boxTop//tooltipRect.top + offsetY + PADDING_Y + ARROW_HEIGHT\n });\n setContent(stepInformation.content);\n setArrowStyle({\n ...arrowStyle,\n display: 'block',\n left: boxLeft + arrowOffsetX, // calculateLeftWithStepInformation(),\n top: boxTop + arrowOffsetY // tooltipRect.top + offsetY + PADDING_Y\n });\n }\n } else {\n setStyle({ ...style, display: 'none' });\n setArrowStyle({...arrowStyle, display: 'none'});\n }\n }, [JSON.stringify(tooltipRect), challengeStep, isOpen]);\n\n // update wrapper class name based on step change\n useEffect(() => {\n const stepInformation = CONFIG.list[challengeStep];\n if (stepInformation) {\n switch(stepInformation.direction) {\n case 'top':\n setWrapperClassname('challenge-tooltip tooltipster-sidetip tooltipster-top');\n break;\n case 'bottom':\n setWrapperClassname('challenge-tooltip tooltipster-sidetip tooltipster-bottom');\n break;\n case 'left':\n setWrapperClassname('challenge-tooltip tooltipster-sidetip tooltipster-left');\n break;\n case 'right':\n setWrapperClassname('challenge-tooltip tooltipster-sidetip tooltipster-right');\n break;\n default:\n setWrapperClassname('challenge-tooltip tooltipster-sidetip tooltipster-left');\n }\n\n }\n }, [challengeStep])\n\n const toNextStep = () => {\n if (challengeStep === CONFIG.totalStep - 1) {\n // finalize challenge\n ModalManager.show();\n setChallengeFinalStatus((helper.getSecondsLeft() > 0) ? 'success' : 'contact');\n setChallengeStep(CONFIG.beginningStep);\n setChallengePassed(true);\n setChallengeListExpanded(true);\n setImportingTemplate(null);\n } else\n setChallengeStep(challengeStep + 1);\n }\n\n\n return (\n <div className={wrapperClassname}>\n <div className=\"tooltipster-box\" style={style}>\n {content}\n <div className=\"btn-row\">\n <button className=\"challenge-done-btn\" onClick={toNextStep}>{__('Next', redux_templates.i18n)}</button>\n </div>\n </div>\n <div className=\"tooltipster-arrow\" style={arrowStyle}>\n <div className=\"tooltipster-arrow-uncropped\">\n <div className=\"tooltipster-arrow-border\"></div>\n <div className=\"tooltipster-arrow-background\"></div>\n </div>\n </div>\n </div>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const { setChallengeStep, setChallengeFinalStatus, setChallengePassed, setChallengeListExpanded, setImportingTemplate } = dispatch('redux-templates/sectionslist');\n return {\n setChallengeStep,\n setChallengeFinalStatus,\n setChallengePassed,\n setChallengeListExpanded,\n setImportingTemplate\n };\n }),\n\n withSelect((select, props) => {\n const { getChallengeTooltipRect, getChallengeOpen, getChallengeStep, getChallengeFinalStatus } = select('redux-templates/sectionslist');\n return {\n tooltipRect: getChallengeTooltipRect(),\n isOpen: getChallengeOpen(),\n challengeStep: getChallengeStep(),\n finalStatus: getChallengeFinalStatus()\n };\n })\n])(TooltipBox);\n","const {apiFetch} = wp;\nconst {useState} = wp.element;\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {parse} = wp.blocks;\n\nimport {BlockPreview} from '@wordpress/block-editor';\nimport {installedBlocksTypes} from '~redux-templates/stores/actionHelper';\nimport './style.scss'\n\nfunction BackgroundImage(props) {\n const {data, appendErrorMessage, activeItemType} = props;\n const [dataLoaded, setDataLoaded] = useState(false);\n const [blocks, setBlocks] = useState(null);\n\n if (data && dataLoaded === false) {\n const type = activeItemType === 'section' ? 'sections' : 'pages';\n let the_url = 'redux/v1/templates/template?type=' + type + '&id=' + data.id + '&uid=' + window.userSettings.uid;\n if ('source' in data) {\n the_url += '&source=' + data.source;\n }\n\n const options = {\n method: 'GET',\n path: the_url,\n headers: {'Content-Type': 'application/json', 'Registered-Blocks': installedBlocksTypes()}\n };\n\n apiFetch(options).then(response => {\n if (response.success) {\n setBlocks(response.data);\n } else {\n appendErrorMessage(response.data.error);\n }\n setDataLoaded(true);\n }).catch(error => {\n appendErrorMessage(error.code + ' : ' + error.message);\n setDataLoaded(true);\n });\n }\n\n if (dataLoaded === true) {\n let parsed = parse(blocks.template);\n return (\n <div>\n <BlockPreview blocks={parsed} />\n </div>\n );\n }\n return null;\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n appendErrorMessage\n } = dispatch('redux-templates/sectionslist');\n\n return {\n appendErrorMessage\n };\n }),\n withSelect((select) => {\n const {getActiveItemType} = select('redux-templates/sectionslist');\n return {\n activeItemType: getActiveItemType()\n };\n })\n])(BackgroundImage);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","const {compose} = wp.compose;\nconst {withSelect} = wp.data;\nimport {useEffect, useState} from '@wordpress/element';\nimport PreviewImportButton from '../preview-import-button';\nimport DependentPlugins from '../dependent-plugins';\nimport './style.scss'\n\nfunction ButtonGroup (props) {\n const {importingTemplate, showDependencyBlock, index, data, pageData} = props;\n const [rootClassName, setRootClassName] = useState('redux-templates-import-button-group');\n\n // When some action is in progress, disable the button groups\n useEffect(() => {\n if (importingTemplate === null && rootClassName !== 'redux-templates-import-button-group')\n setRootClassName('redux-templates-import-button-group')\n if (importingTemplate !== null && rootClassName === 'redux-templates-import-button-group')\n setRootClassName('redux-templates-import-button-group disabled');\n }, [importingTemplate])\n return (\n <div className={rootClassName}>\n <PreviewImportButton index={index} data={data} pageData={pageData} />\n <DependentPlugins showDependencyBlock={showDependencyBlock} data={data} />\n </div>\n )\n}\n\n\n\nexport default compose([\n withSelect((select) => {\n const {getImportingTemplate} = select('redux-templates/sectionslist');\n return {importingTemplate: getImportingTemplate()};\n })\n])(ButtonGroup);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {Tooltip} from '@wordpress/components';\nimport * as Icons from '~redux-templates/icons'\nimport './style.scss'\nconst {__} = wp.i18n;\n\nexport default function DependentPlugins (props) {\n const {data, showDependencyBlock} = props;\n const {id} = data;\n\n const isMissingPlugin = (plugin) => {\n return ((data.proDependenciesMissing && data.proDependenciesMissing.indexOf(plugin) >=0)\n || (data.installDependenciesMissing && data.installDependenciesMissing.indexOf(plugin) >=0))\n }\n\n if (showDependencyBlock) {\n\t let index = data.dependencies.indexOf('core');\n\t if ( index > -1 ) {\n\t\t data.dependencies.splice(index, 1);\n\t\t data.dependencies.push( 'core' );\n\t }\n\t return (\n\t\t <div className=\"redux-templates-button-display-dependencies\">\n\t\t\t { data.dependencies &&\n\t\t\t data.dependencies.map(plugin => {\n\t\t\t \tlet pluginInstance = null;\n\t\t\t\t const plugin_name = plugin.replace('-pro', '').replace('-premium', '').replace(/\\W/g, '').toLowerCase();\n\t\t\t \tif ( 'core' == plugin ) {\n\t\t\t\t\t pluginInstance = {\n\t\t\t\t\t \tname: 'WordPress Native'\n\t\t\t\t\t }\n\t\t\t\t } else {\n\t\t\t\t\t pluginInstance = redux_templates.supported_plugins[plugin];\n\t\t\t\t }\n\t\t\t\t\tif ( !pluginInstance ) {\n\t\t\t\t\t\tpluginInstance = redux_templates.supported_plugins[plugin.replace('-pro', '').replace('-premium', '')];\n\t\t\t\t\t}\n\n\t\t\t\t // We don't want two of the same icons showing up.\n\t\t\t\t if ( ! plugin.includes('-pro') && ! plugin.includes('-premium') ) {\n\t\t\t\t\t if ( data.dependencies.includes(plugin + '-pro') || data.dependencies.includes( plugin + '-premium' ) ) {\n\t\t\t\t\t\t return;\n\t\t\t\t\t }\n\t\t\t\t }\n\t\t\t\t if (!pluginInstance) {\n\t\t\t\t\t console.log( 'Missing plugin details for '+ plugin+' - ' + plugin.replace('-pro', '').replace('-premium', '') );\n\t\t\t\t\t console.log( redux_templates.supported_plugins );\n\t\t\t\t\t return;\n\t\t\t\t }\n\t\t\t\t if ( 'redux' === plugin_name ) {\n\t\t\t\t\t return;\n\t\t\t\t }\n\t\t\t\t const IconComponent = Icons[plugin_name];\n\t\t\t\t if (IconComponent && pluginInstance) {\n\t\t\t\t\t return (\n\t\t\t\t\t\t <Tooltip text={(isMissingPlugin(plugin) && 'core' !== plugin ? pluginInstance.name+ ' ( '+__('Not Installed', redux_templates.i18n)+' )' : pluginInstance.name)} position=\"bottom center\" key={id + plugin}>\n <span className={isMissingPlugin(plugin) && 'core' !== plugin ? 'missing-dependency' : ''}>\n <IconComponent/>\n </span>\n\t\t\t\t\t\t </Tooltip>\n\t\t\t\t\t );\n\t\t\t\t } else if ( 'shareablockcom' !== plugin_name && 'gutenberghubcom' !== plugin_name ) {\n\t\t\t\t\t console.log('Need icon for ' + plugin_name);\n\t\t\t\t }\n\n\t\t\t })\n\t\t\t }\n\t\t\t { data.dependencies['core'] &&\n\t\t\t <Tooltip text={__('WordPress Core', redux_templates.i18n)} position=\"bottom center\" key={id + 'core'}>\n\t\t\t\t <span>\n\t\t\t\t <IconComponent/>\n\t\t\t\t </span>\n\t\t\t </Tooltip>\n\n\t\t\t }\n\t\t </div>\n\t );\n }\n\n return null;\n}\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {__} from '@wordpress/i18n';\nimport {compose} from '@wordpress/compose';\nimport {withDispatch} from '@wordpress/data';\nimport {Notice} from '@wordpress/components';\n\nimport './style.scss';\n\nexport function ErrorNotice(props) {\n const {discardAllErrorMessages, errorMessages} = props;\n return (\n <div className='redux-templates-error-notice'>\n <Notice status=\"error\" onRemove={discardAllErrorMessages}>\n <p>\n {\n errorMessages.join(', ')\n }\n </p>\n </Notice>\n </div>\n );\n\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n discardAllErrorMessages\n } = dispatch('redux-templates/sectionslist');\n\n return {\n discardAllErrorMessages\n };\n })\n])(ErrorNotice);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","export default {\n position: {\n bottom: 0,\n right: 0,\n },\n event: 'click',\n\n mainButtonStyles: {\n backgroundColor: '#24B0A6',\n fill: '#ffffff',\n transform: 'none',\n transition: 'none',\n transformOrigin: 'none',\n },\n alwaysShowTitle: false,\n actionButtonStyles: {\n backgroundColor: '#19837C',\n }\n}\n","import {Fab, Action} from 'react-tiny-fab';\nimport config from './config';\nimport './styles.scss';\nimport {__} from '@wordpress/i18n';\n\nimport * as Icons from '~redux-templates/icons'\nimport { ModalManager } from '~redux-templates/modal-manager';\nimport FeedbackDialog from '~redux-templates/modal-feedback';\n\nconst schema = {\n type: 'object',\n properties: {\n comment: {\n type: 'string'\n },\n agreeToContactFurther: {\n type: 'boolean',\n title: __('Yes, I give Redux permission to contact me for any follow up questions.', redux_templates.i18n)\n }\n }\n}\nconst uiSchema = {\n 'comment': {\n 'ui:widget': 'textarea',\n 'ui:options': {\n label: false\n }\n }\n};\n\nexport default function FabWrapper() {\n const {mainButtonStyles, actionButtonStyles, position, event, alwaysShowTitle} = config;\n\n return (\n <Fab\n mainButtonStyles={mainButtonStyles}\n position={position}\n icon={Icons.ReduxTemplatesIcon()}\n event={event}\n // onClick={testing}\n\n text={__('See Quick Links', redux_templates.i18n)}\n >\n\n {/*<Action*/}\n {/* style={actionButtonStyles}*/}\n {/* text={__('Suggest a Feature', redux_templates.i18n)}*/}\n {/* onClick={e => {*/}\n {/* window.open(redux_templates.u, \"_blank\")*/}\n {/* }}*/}\n {/*>*/}\n {/* <i className=\"fa fa-lightbulb-o\"/>*/}\n {/*</Action>*/}\n {/*<Action*/}\n {/* style={actionButtonStyles}*/}\n {/* text={__('Contact Us', redux_templates.i18n)}*/}\n {/* onClick={e => {*/}\n {/* ModalManager.openFeedback(<FeedbackDialog */}\n {/* title={__('Help us improve Redux', redux_templates.i18n)} */}\n {/* description={__('Thank you for reaching out. We will do our best to contact you ba.', redux_templates.i18n)}*/}\n {/* schema={schema}*/}\n {/* uiSchema={uiSchema}*/}\n {/* headerImage={<img className=\"header-background\" src={`${redux_templates.plugin}assets/img/popup-contact.png` } />}*/}\n {/* buttonLabel={__('Submit Feedback', redux_templates.i18n)}*/}\n {/* />)*/}\n {/* }}*/}\n {/*>*/}\n {/* <i className=\"fa fa-comments\"/>*/}\n {/*</Action>*/}\n\t <Action\n\t\t style={actionButtonStyles}\n\t\t text={__('Get Support', redux_templates.i18n)}\n\t\t onClick={e => {\n\t\t\t window.open('https://wordpress.org/support/plugin/redux-framework/#new-topic-0', '_blank')\n\t\t }}\n\t >\n\t\t <i className=\"far fa-question-circle \"/>\n\t </Action>\n <Action\n style={actionButtonStyles}\n text={__('Join our Community', redux_templates.i18n)}\n onClick={e => {\n window.open('https://www.facebook.com/groups/reduxframework', '_blank')\n }}\n >\n <i className=\"fa fa-comments\"/>\n </Action>\n\t {\n\t\t redux_templates.mokama === '1' &&\n\t\t <Action\n\t\t\t style={actionButtonStyles}\n\t\t\t text={__('Visit our Website', redux_templates.i18n)}\n\t\t\t onClick={e => {\n\t\t\t\t window.open( redux_templates.u + 'tinyfab', '_blank')\n\t\t\t }}\n\t\t >\n\t\t\t <i className=\"fas fa-external-link-alt\"/>\n\t\t </Action>\n\t }\n\t {/*{*/}\n\t\t {/* redux_templates.left !== 999 &&*/}\n\t\t {/* <Action*/}\n\t\t\t{/* style={actionButtonStyles}*/}\n\t\t\t{/* className=\"tour-icon\"*/}\n\t\t\t{/* text={__( 'Take the Redux Challenge', redux_templates.i18n )}*/}\n\t\t\t{/* onClick={e => {*/}\n\t\t\t{/*\t setTourOpen();*/}\n\t\t\t{/* }}*/}\n\t\t {/* >*/}\n\t\t\t{/* <i className=\"fas fa-map-signs tour-icon\"/>*/}\n\t\t {/* </Action>*/}\n\t {/*}*/}\n\n\t {\n\t\t redux_templates.mokama !== '1' &&\n\t\t <Action\n\t\t\t style={{backgroundColor:'#00a7e5'}}\n\t\t\t text={__('Upgrade to Redux Pro', redux_templates.i18n)}\n\t\t\t onClick={e => {\n\t\t\t\t window.open(redux_templates.u + 'help_bubble', '_blank')\n\t\t\t }}\n\t\t >\n\t\t\t <i className=\"fa fa-star\"/>\n\t\t </Action>\n\t }\n </Fab>\n );\n}\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./styles.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./styles.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./styles.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import ButtonGroup from '../button-group';\n\nconst {__} = wp.i18n\nimport {Tooltip} from '@wordpress/components';\nimport {requiresInstall, requiresPro} from '~redux-templates/stores/dependencyHelper';\nimport SafeImageLoad from '~redux-templates/components/safe-image-load';\nimport './style.scss'\n\nconst MultipleItem = (props) => {\n\n const {data, onSelectCollection} = props;\n const {pages, homepageData, ID, name} = data;\n const {image} = homepageData || {};\n\n return (\n <div className=\"redux-templates-multiple-template-box\">\n <div className=\"multiple-template-view\" onClick={ () => onSelectCollection( ID ) } >\n <div className=\"redux-templates-box-shadow\">\n <div className=\"redux-templates-default-template-image\">\n <SafeImageLoad url={image} alt={__('Default Template', redux_templates.i18n)} />\n {requiresPro(data) && <span className=\"redux-templates-pro-badge\">{__('Premium', redux_templates.i18n)}</span>}\n {!requiresPro(data) && requiresInstall(data) && <div className=\"redux-templates-missing-badge\"><i className=\"fas fa-exclamation-triangle\" /></div>}\n </div>\n <div className=\"redux-templates-button-overlay\">\n {requiresPro(data) && <Tooltip text={__('Premium Requirements', redux_templates.i18n)} position=\"bottom\" key={data.source+data.source_id}><span className=\"redux-templates-pro-badge\">{__('Premium', redux_templates.i18n)}</span></Tooltip>}\n {!requiresPro(data) && requiresInstall(data) && <Tooltip text={__('Not Installed', redux_templates.i18n)} position=\"bottom\" key={data.source+data.source_id}><div className=\"redux-templates-missing-badge\"><i className=\"fas fa-exclamation-triangle\" /></div></Tooltip>}\n <div className=\"redux-templates-import-button-group\">\n <div className=\"action-buttons\"><a className=\"redux-templates-button download-button\">{__('View Templates', redux_templates.i18n)}</a></div>\n </div>\n </div>\n </div>\n <div className=\"redux-templates-tmpl-info\">\n <h5 className=\"redux-templates-tmpl-title\" dangerouslySetInnerHTML={{__html:name}}/>\n <span className=\"redux-templates-temp-count\">{ pages ? pages.length : 0 } {__('Templates', redux_templates.i18n)}</span>\n </div>\n </div>\n </div>\n );\n}\n\nexport default MultipleItem\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","const { useState, useEffect, Fragment} = wp.element;\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {__} = wp.i18n\n\nimport './style.scss';\n\nimport {pageSizeMap} from '../../stores/helper';\n\nfunction Pagination(props) {\n const {currentPage, pageData, columns} = props;\n const {setCurrentPage} = props;\n const [totalPages, setTotalPages] = useState(1);\n const [firstButtonClass, setFirstButtonClass] = useState('tablenav-pages-navspan button');\n const [prevButtonClass, setPrevButtonClass] = useState('tablenav-pages-navspan button');\n const [nextButtonClass, setNextButtonClass] = useState('tablenav-pages-navspan button');\n const [lastButtonClass, setLastButtonClass] = useState('tablenav-pages-navspan button');\n\n useEffect(() => {\n const enabledClassname = 'tablenav-pages-navspan button ';\n const disabledClassname = 'tablenav-pages-navspan button disabled';\n setFirstButtonClass((currentPage === 0) ? disabledClassname : enabledClassname);\n setPrevButtonClass((currentPage === 0) ? disabledClassname : enabledClassname);\n setNextButtonClass((currentPage === totalPages - 1) ? disabledClassname : enabledClassname);\n setLastButtonClass((currentPage === totalPages - 1) ? disabledClassname : enabledClassname);\n }, [currentPage, totalPages]);\n\n useEffect(() => {\n let colStr = (columns === '') ? 'medium' : columns;\n setTotalPages(Math.ceil(pageData.length / pageSizeMap[colStr]));\n }, [pageData]);\n\n const gotoPage = (pageNum, className) => {\n if (className.indexOf('disabled') > 0) return;\n document.getElementById('modalContent').scrollTop = 0;\n setCurrentPage(pageNum);\n }\n\n\n return (\n <Fragment>\n\n {\n totalPages > 0 &&\n <div className=\"tablenav-pages\">\n <span className=\"displaying-num\">{pageData.length} items</span>\n <span className=\"pagination-links\">\n <span className={firstButtonClass} aria-hidden=\"true\"\n onClick={() => gotoPage(0, firstButtonClass)}>«</span>\n <span className={prevButtonClass} aria-hidden=\"true\"\n onClick={() => gotoPage(currentPage - 1, prevButtonClass)}>‹</span>\n <span className=\"screen-reader-text\">{__('Current Page', redux_templates.i18n)}</span>\n <span id=\"table-paging\" className=\"paging-input\">\n <span className=\"tablenav-paging-text\">{currentPage + 1} of <span\n className=\"total-pages\">{totalPages}</span></span>\n </span>\n <span className={nextButtonClass} aria-hidden=\"true\"\n onClick={() => gotoPage(currentPage + 1, nextButtonClass)}>›</span>\n <span className={lastButtonClass} aria-hidden=\"true\"\n onClick={() => gotoPage(totalPages - 1, lastButtonClass)}>»</span>\n </span>\n </div>\n }\n </Fragment>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setCurrentPage\n } = dispatch('redux-templates/sectionslist');\n\n return {\n setCurrentPage\n };\n }),\n\n withSelect((select) => {\n const {getCurrentPage, getPageData, getColumns} = select('redux-templates/sectionslist');\n return {\n currentPage: getCurrentPage(),\n pageData: getPageData(),\n columns: getColumns()\n };\n })\n])(Pagination);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {__} from '@wordpress/i18n';\n\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nimport {openSitePreviewModal} from '~redux-templates/stores/actionHelper';\nimport ChallengeDot from '~redux-templates/challenge/tooltip/ChallengeDot';\nimport './style.scss'\n\nfunction PreviewImportButton(props) {\n const {data, index, pageData} = props;\n const {setImportingTemplate, tourActiveButtonGroup} = props;\n let spinner = null;\n const triggerImportTemplate = (data) => {\n if (spinner === null) {\n spinner = data.ID;\n setImportingTemplate(data);\n }\n }\n\n return (\n <div className=\"action-buttons\">\n {\n pageData[index] && pageData[index]['source'] !== 'wp_block_patterns' &&\n <a className=\"redux-templates-button preview-button\" target=\"_blank\"\n onClick={() => openSitePreviewModal(index, pageData)}>\n <i className=\"fa fa-share\"/> {__('Preview', redux_templates.i18n)}\n </a>\n }\n\n <a className=\"redux-templates-button download-button\"\n onClick={() => triggerImportTemplate(data)}>\n <i className=\"fas fa-download\"/>{__('Import', redux_templates.i18n)}\n </a>\n {tourActiveButtonGroup && tourActiveButtonGroup.ID === pageData[index].ID && <ChallengeDot step={4} /> }\n </div>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setImportingTemplate\n } = dispatch('redux-templates/sectionslist');\n\n return {\n setImportingTemplate\n };\n }),\n withSelect((select, props) => {\n const {getTourActiveButtonGroup} = select('redux-templates/sectionslist');\n return {\n tourActiveButtonGroup: getTourActiveButtonGroup()\n };\n })\n])(PreviewImportButton);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","const { Spinner } = wp.components;\nimport ImageLoader from 'react-load-image';\n\nconst placeholderImage = redux_templates.plugin + 'assets/img/reduxtemplates-medium.jpg';\nconst spinnerStyle = {height: 120, display: 'flex', alignItems: 'top', paddingTop: '40px', justifyContent: 'center', background: '#fff'};\nexport default function SafeImageLoad({url, alt, className}) {\n return (\n <ImageLoader src={url}>\n <img alt={alt} className={className} />\n <img src={placeholderImage} alt={alt} className={className} />\n <div style={spinnerStyle}>\n <Spinner />\n </div>\n </ImageLoader>\n );\n\n}\n","import {Tooltip} from '@wordpress/components';\n\nconst {__} = wp.i18n\nconst {withSelect} = wp.data;\nconst {useState, useEffect} = wp.element;\n\nimport ButtonGroup from '../button-group';\nimport SafeImageLoad from '~redux-templates/components/safe-image-load';\nimport BackgroundImage from '../background-image';\nimport {requiresInstall, requiresPro} from '~redux-templates/stores/dependencyHelper';\n\nimport './style.scss'\n\n\nfunction SingleItem (props) {\n // Decoupling props\n const {pageData, tourActiveButtonGroup, index} = props;\n const [data, setData] = useState(null);\n // const {ID, image, url, pro, source, requirements} = data;\n const [innerClassname, setInnerClassname] = useState('redux-templates-single-item-inner redux-templates-item-wrapper ');\n\n useEffect(() => {\n if (pageData) setData(pageData[index]);\n }, [index, pageData]);\n\n useEffect(() => {\n setInnerClassname((pageData && pageData[index] && tourActiveButtonGroup && tourActiveButtonGroup.ID === pageData[index].ID) ?\n 'redux-templates-single-item-inner redux-templates-item-wrapper focused' : 'redux-templates-single-item-inner redux-templates-item-wrapper');\n }, [tourActiveButtonGroup, pageData, index]);\n\n if (!data) return null;\n return (\n <div className=\"redux-templates-single-section-item\">\n <div className={innerClassname}>\n <div className=\"redux-templates-default-template-image\">\n {data.source !== 'wp_block_patterns' && <SafeImageLoad url={data.image}/> }\n {data.source === 'wp_block_patterns' && <BackgroundImage data={data} />}\n {requiresPro(data) && <span className=\"redux-templates-pro-badge\">{__('Premium', redux_templates.i18n)}</span>}\n {!requiresPro(data) && requiresInstall(data) && <span className=\"redux-templates-missing-badge\"><i className=\"fas fa-exclamation-triangle\" /></span>}\n <div className=\"redux-templates-tmpl-title\">{data.name}</div>\n </div>\n {/* redux-templates-default-template-image */}\n <div className=\"redux-templates-button-overlay\">\n\t {requiresPro(data) && <Tooltip text={__('Premium Requirements', redux_templates.i18n)} position=\"bottom\" key={data.source+data.source_id}><div className=\"redux-templates-pro-badge\">{__('Premium', redux_templates.i18n)}</div></Tooltip>}\n {!requiresPro(data) && requiresInstall(data) && <Tooltip text={__('Not Installed', redux_templates.i18n)} position=\"bottom\" key={data.source+data.source_id}><div className=\"redux-templates-missing-badge\"><i className=\"fas fa-exclamation-triangle\" /></div></Tooltip>}\n <ButtonGroup index={index} showDependencyBlock={true} data={data} pageData={pageData} />\n </div>\n\n </div>\n {/* redux-templates-item-wrapper */}\n </div>\n )\n}\n\n\nexport default withSelect((select, props) => {\n const {getTourActiveButtonGroup, getPageData} = select('redux-templates/sectionslist');\n return {\n pageData: getPageData(),\n tourActiveButtonGroup: getTourActiveButtonGroup()\n };\n})(SingleItem);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {__} from '@wordpress/i18n';\nimport {compose} from '@wordpress/compose';\nimport {withDispatch, withSelect} from '@wordpress/data';\nimport {ModalManager} from '../../modal-manager';\nimport ChallengeDot from '~redux-templates/challenge/tooltip/ChallengeDot';\nexport function TabHeader(props) {\n const { activeItemType, searchContext, activeCollection, isChallengeOpen } = props;\n const { setActiveItemType, setSearchContext, setChallengeOpen, clearSearch } = props;\n\n const isActive = (itemType) => {\n return (activeItemType === itemType) ? 'active' : '';\n }\n\n const onSearchContextUpdate = (e) => {\n if (activeItemType !=='saved') setSearchContext(e.target.value);\n }\n\n const changeTab = (tabName) => {\n if (document.getElementById('modalContent')) document.getElementById('modalContent').scrollTop = 0;\n setActiveItemType(tabName);\n }\n\n const closeModal = () => {\n if (isChallengeOpen === false) {\n ModalManager.close();\n }\n }\n\n return (\n <div className=\"redux-templates-builder-modal-header\">\n <div className=\"template-search-box\">\n {\n ((activeItemType !== 'collection' || activeCollection === null) && activeItemType !== 'saved') &&\n <div>\n <input type=\"text\" placeholder={__('Search for a template', redux_templates.i18n)} className=\"form-control\" value={searchContext} onChange={onSearchContextUpdate} />\n <ChallengeDot step={1} />\n <i className=\"fas fa-search\" />\n </div>\n }\n </div>\n\n <div className=\"redux-templates-template-list-header\" data-tut=\"tour__navigation\">\n <button className={ isActive('section') } onClick={e => changeTab('section')}> {__('Sections', redux_templates.i18n)} </button>\n <button className={ isActive('page') } onClick={e => changeTab('page')}> {__('Templates', redux_templates.i18n)} </button>\n <button className={ isActive('collection') } onClick={e => changeTab('collection')}> {__('Template Kits', redux_templates.i18n)} </button>\n <button className={ isActive('saved') } onClick={e => changeTab('saved')}> {__('Saved', redux_templates.i18n)} </button>\n <ChallengeDot step={0} />\n <button className=\"redux-templates-builder-close-modal\" onClick={closeModal} >\n\t\t\t\t\t<svg width=\"24\" height=\"24\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" role=\"img\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M13 11.9l3.3-3.4-1.1-1-3.2 3.3-3.2-3.3-1.1 1 3.3 3.4-3.5 3.6 1 1L12 13l3.5 3.5 1-1z\"></path></svg>\n </button>\n </div>\n </div>\n );\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setActiveItemType,\n setSearchContext,\n clearSearch\n } = dispatch('redux-templates/sectionslist');\n\n return {\n setActiveItemType,\n setSearchContext,\n clearSearch\n };\n }),\n\n withSelect((select, props) => {\n const { getActiveItemType, getSearchContext, getActiveCollection, getChallengeOpen } = select('redux-templates/sectionslist');\n return { activeItemType: getActiveItemType(), searchContext: getSearchContext(), activeCollection: getActiveCollection(), isChallengeOpen: getChallengeOpen() };\n })\n\n])(TabHeader);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38 12H12v26h26V12z\"\n});\n\nvar SvgViewFew = function SvgViewFew(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 50 50\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgViewFew;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.5 12.5H0V0h12.5v12.5zM31.2 0H18.8v12.5h12.5V0zM50 0H37.5v12.5H50V0zM12.5 18.8H0v12.5h12.5V18.8zm18.7 0H18.8v12.5h12.5V18.8zm18.8 0H37.5v12.5H50V18.8zM12.5 37.5H0V50h12.5V37.5zm18.7 0H18.8V50h12.5V37.5zm18.8 0H37.5V50H50V37.5z\"\n});\n\nvar SvgViewMany = function SvgViewMany(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 50 50\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgViewMany;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.1 5.3H5.3v15.8h15.8V5.3zm23.6 0H28.9v15.8h15.8V5.3zM21.1 28.9H5.3v15.8h15.8V28.9zm23.6 0H28.9v15.8h15.8V28.9z\"\n});\n\nvar SvgViewNormal = function SvgViewNormal(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 50 50\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgViewNormal;","const {__, sprintf} = wp.i18n;\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {useState, useEffect} = wp.element;\nimport ChallengeDot from '~redux-templates/challenge/tooltip/ChallengeDot';\nimport {Button, Notice} from '@wordpress/components'\nimport SVGViewFew from './images/view-few.svg'\nimport SVGViewMany from './images/view-many.svg'\nimport SVGViewNormal from './images/view-normal.svg'\nimport {reloadLibrary} from '~redux-templates/stores/actionHelper';\nimport * as Icons from '~redux-templates/icons';\nimport './style.scss'\n\nfunction TemplateListSubHeader(props) {\n const {itemType, sortBy, activeCollection, challengePassed, pageData, columns, loading} = props;\n const {setSortBy, setColumns, setChallengeOpen, setChallengeListExpanded} = props;\n const [triggerTourClassname, setTriggerTourClassname] = useState('far fa-question-circle tour-icon');\n\n useEffect(() => {\n setTriggerTourClassname(challengePassed ? 'fas fa-trophy tour-icon' : 'fas fa-map-signs tour-icon');\n }, [challengePassed]);\n\n const itemTypeLabel = () => {\n if (itemType === 'section') return __('Sections', redux_templates.i18n);\n if (itemType === 'page') return __('Templates', redux_templates.i18n);\n if (itemType === 'collection' && activeCollection === null) return __('Template Kits', redux_templates.i18n);\n if (itemType === 'collection' && activeCollection !== null) return __('Sections', redux_templates.i18n);\n };\n\n const dataLength = pageData ? pageData.length : '';\n\n let pageTitle = '';\n if (loading === false && dataLength && dataLength !== 0) {\n pageTitle = <span>{dataLength} {itemTypeLabel()}</span>;\n }\n\n return (\n <div className=\"redux-templates-template-list-sub-header\">\n <h4>\n {pageTitle}\n <ChallengeDot step={3} />\n </h4>\n\n <div className=\"redux-templates-template-filters\">\n\t <div className='trial_notice'>\n\t\t { ! redux_templates.mokama &&\n\t\t <div style={{verticalAlign:'middle'}}>\n\t\t\t <Notice status=\"info\" isDismissible={false}>\n\t\t\t\t <strong style={{display:'inline-block', marginRight:'10px', verticalAlign:'middle'}}>\n\t\t\t\t\t { redux_templates.left <= 0 &&\n\t\t\t\t\t \t<>\n\t\t\t\t\t\t\t {sprintf( __( 'Trial Ended: %d/%d Imported', redux_templates.i18n ), 5-redux_templates.left, 5 )}\n\t\t\t\t\t\t </>\n\t\t\t\t\t }\n\t\t\t\t\t { redux_templates.left > 0 &&\n\t\t\t\t\t <>\n\t\t\t\t\t\t {sprintf( __( 'Trial: %d/%d Imports Remaining', redux_templates.i18n ), redux_templates.left, 5 )}\n\t\t\t\t\t </>\n\t\t\t\t\t }\n\t\t\t\t </strong>\n\t\t\t\t <Button isPrimary\n\t\t\t\t isSmall\n\t\t\t\t icon={Icons.redux}\n\t\t\t\t label={__('Upgrade to Redux Pro', redux_templates.i18n)}\n\t\t\t\t onClick={()=> window.open( redux_templates.u + 'subheader', '_blank')}>Get Pro</Button>\n\t\t\t </Notice>\n\n\n\t\t </div>\n\n\t\t }</div>\n <Button\n icon={<i className={triggerTourClassname} />}\n label={__('Take the Redux Challenge', redux_templates.i18n)}\n onClick={() => {setChallengeOpen(true); setChallengeListExpanded(true); }}\n />\n <Button\n icon=\"image-rotate\"\n label={__('Refresh Library', redux_templates.i18n)}\n className=\"refresh-library\"\n onClick={reloadLibrary}\n />\n <Button\n icon={<SVGViewFew width=\"18\" height=\"18\"/>}\n className={columns === 'large' ? 'is-active' : ''}\n label={__('Large preview', redux_templates.i18n)}\n onClick={() => setColumns('large')}\n />\n <Button\n icon={<SVGViewNormal width=\"18\" height=\"18\"/>}\n className={columns === '' ? 'is-active' : ''}\n label={__('Medium preview', redux_templates.i18n)}\n onClick={(e) => setColumns('')}\n />\n <Button\n icon={<SVGViewMany width=\"18\" height=\"18\"/>}\n className={columns === 'small' ? 'is-active' : ''}\n label={__('Small preview', redux_templates.i18n)}\n onClick={(e) => setColumns('small')}\n />\n <div className=\"\">\n <select name=\"sortBy\" id=\"sortBy\" value={sortBy} onChange={(e) => setSortBy(e.target.value)}>\n <option value=\"name\">{__('Name', redux_templates.i18n)}</option>\n {/*<option value=\"popularity\">{__('Popularity', redux_templates.i18n)}</option>*/}\n <option value=\"updated\">{__('Updated', redux_templates.i18n)}</option>\n </select>\n </div>\n </div>\n\n </div>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setLibrary, setActivePriceFilter, setActiveCollection, setSortBy, setColumns, setChallengeOpen, setChallengeListExpanded} = dispatch('redux-templates/sectionslist');\n return {\n setLibrary,\n setActivePriceFilter,\n setActiveCollection,\n setSortBy,\n setColumns,\n setChallengeOpen,\n setChallengeListExpanded\n };\n }),\n\n withSelect((select, props) => {\n const {fetchLibraryFromAPI, getActiveItemType, getColumns, getPageData, getActiveCollection, getStatistics, getSortBy, getLoading, getChallengePassed} = select('redux-templates/sectionslist');\n return {\n fetchLibraryFromAPI,\n itemType: getActiveItemType(),\n pageData: getPageData(),\n columns: getColumns(),\n statistics: getStatistics(),\n sortBy: getSortBy(),\n activeCollection: getActiveCollection(),\n loading: getLoading(),\n challengePassed: getChallengePassed()\n };\n })\n])(TemplateListSubHeader);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nexport const GuideImage1 = ( props ) => (\n\t<>\n\t\t<img\n\t\t\tclassName=\"redux-edit-post-welcome-guide__image redux-edit-post-welcome-guide__image__prm-np\"\n\t\t\talt=\"\"\n\t\t\tsrc={ `${ redux_templates.plugin }assets/img/welcome-guide-1.png` }\n\t\t\t{ ...props }\n\t\t/>\n\t</>\n);\n\nexport const GuideImage2 = ( props ) => (\n\t<>\n\t\t<img\n\t\t\tclassName=\"redux-edit-post-welcome-guide__image redux-edit-post-welcome-guide__image__prm-np\"\n\t\t\talt=\"\"\n\t\t\tsrc={ `${ redux_templates.plugin }assets/img/welcome-guide-2.gif` }\n\t\t\t{ ...props }\n\t\t/>\n\t</>\n);\nexport const GuideImage3 = ( props ) => (\n\t<>\n\t\t<img\n\t\t\tclassName=\"redux-edit-post-welcome-guide__image redux-edit-post-welcome-guide__image__prm-np\"\n\t\t\talt=\"\"\n\t\t\tsrc={ `${ redux_templates.plugin }assets/img/welcome-guide-3.png` }\n\t\t\t{ ...props }\n\t\t/>\n\t</>\n);\n","/**\n * WordPress dependencies\n */\nconst { useState } = wp.element;\nimport { useSelect } from '@wordpress/data';\nimport { ExternalLink, Guide } from '@wordpress/components';\nconst {apiFetch} = wp;\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tGuideImage1,\n\tGuideImage2,\n\tGuideImage3,\n} from './images';\nimport './style.scss';\n\nexport default function WelcomeGuide() {\n\n\tconst [ isOpen, setIsOpen ] = useState( true );\n\n\tconst isActive = useSelect(\n\t\t( select ) =>\n\t\t\tselect( 'core/edit-post' ).isFeatureActive( 'welcomeGuide' ),\n\t\t[]\n\t);\n\n\tif ( isActive ) { // Don't want to show during the WP guide.\n\t\tdelete redux_templates.welcome; // In fact, we don't want to show it until the next page load!\n\t\treturn null;\n\t}\n\n\tif ( ! isOpen || 'undefined' === typeof( redux_templates.welcome ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Guide\n\t\t\tclassName=\"redux-edit-post-welcome-guide\"\n\t\t\tcontentLabel={ __( 'Say hello to the Redux template library', redux_templates.i18n ) }\n\t\t\tonFinish={ () => {\n\t\t\t\tsetIsOpen( false );\n\t\t\t\tconst options = {\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tpath: 'redux/v1/templates/welcome/?uid=' + window.userSettings.uid,\n\t\t\t\t}\n\t\t\t\tapiFetch(options).then(response => {\n\t\t\t\t}).catch(error => {\n\t\t\t\t});\n\t\t\t} }\n\t\t\tpages={ [\n\t\t\t\t{\n\t\t\t\t\timage: <GuideImage1 />,\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"redux-edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Try the Redux Template Library', redux_templates.i18n ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<h3 className=\"redux-edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Redux brings you over 1,000 importable templates and blocks that allow you to build Gutenberg powered pages and websites in minutes not days.',\n\t\t\t\t\t\t\t\t\tredux_templates.i18n\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\timage: <GuideImage2 />,\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"redux-edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Using the Template Library', redux_templates.i18n ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<h3 className=\"redux-edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'To use the template library click on the library button then pick your favourite template and import! Redux allows you to import beautiful Gutenberg pages in seconds.',\n\t\t\t\t\t\t\t\t\tredux_templates.i18n\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\timage: <GuideImage3 />,\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"redux-edit-post-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Import 5 templates for free or go Pro!', redux_templates.i18n ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<h3 className=\"redux-edit-post-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Redux allows you 5 free imports or you can go Pro now and import unlimited templates for just $49/year (limited time only).',\n\t\t\t\t\t\t\t\t\tredux_templates.i18n\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<br /><br />\n\t\t\t\t\t\t\t\t<center>\n\t\t\t\t\t\t\t\t\t<ExternalLink href={ `${ redux_templates.u }welcome-guide` }>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Learn more at Redux.io', redux_templates.i18n ) }\n\t\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t</center>\n\t\t\t\t\t\t\t</h3>\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","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","/**\n * WordPress dependencies.\n */\nconst { __ } = wp.i18n;\n\nconst {\n\tFragment,\n\tuseEffect,\n\tuseRef\n} = wp.element;\n\nconst CSSEditor = ({\n\t attributes,\n\t setAttributes,\n\t clientId\n }) => {\n\tuseEffect( () => {\n\t\tlet classes = getClassName();\n\n\t\tif ( attributes.customCSS ) {\n\t\t\tconst generatedCSS = ( attributes.customCSS ).replace( /.ticss-[a-zA-Z0-9_-]*/g, 'selector' );\n\t\t\tcustomCSSRef.current = generatedCSS;\n\t\t} else {\n\t\t\tcustomCSSRef.current = 'selector {\\n}\\n';\n\t\t}\n\n\t\teditorRef.current = wp.CodeMirror( document.getElementById( 'redux-css-editor' ), {\n\t\t\tvalue: customCSSRef.current,\n\t\t\tautoCloseBrackets: true,\n\t\t\tcontinueComments: true,\n\t\t\tlineNumbers: true,\n\t\t\tlineWrapping: true,\n\t\t\tmatchBrackets: true,\n\t\t\tlint: true,\n\t\t\tgutters: [ 'CodeMirror-lint-markers' ],\n\t\t\tstyleActiveLine: true,\n\t\t\tstyleActiveSelected: true,\n\t\t\textraKeys: {\n\t\t\t\t'Ctrl-Space': 'autocomplete',\n\t\t\t\t'Alt-F': 'findPersistent',\n\t\t\t\t'Cmd-F': 'findPersistent'\n\t\t\t}\n\t\t});\n\n\t\teditorRef.current.on( 'change', () => {\n\t\t\tconst regex = new RegExp( 'selector', 'g' );\n\t\t\tconst generatedCSS = editorRef.current.getValue().replace( regex, `.${ classArRef.current }` );\n\t\t\tcustomCSSRef.current = generatedCSS;\n\n\t\t\tif ( ( 'selector {\\n}\\n' ).replace( /\\s+/g, '' ) === customCSSRef.current.replace( /\\s+/g, '' ) ) {\n\t\t\t\treturn setAttributes({ customCSS: null });\n\t\t\t}\n\n\t\t\tsetAttributes({ customCSS: customCSSRef.current });\n\t\t});\n\t}, []);\n\n\tuseEffect( () => {\n\t\tlet classes = getClassName();\n\n\t\tsetAttributes({\n\t\t\thasCustomCSS: true,\n\t\t\tclassName: classes\n\t\t});\n\t}, [ attributes ]);\n\n\tconst getClassName = () => {\n\t\tlet classes;\n\n\t\tconst uniqueId = clientId.substr( 0, 8 );\n\n\t\tif ( null !== customCSSRef.current && ( 'selector {\\n}\\n' ).replace( /\\s+/g, '' ) === customCSSRef.current.replace( /\\s+/g, '' ) ) {\n\t\t\treturn attributes.className;\n\t\t}\n\n\t\tif ( attributes.className ) {\n\t\t\tclasses = attributes.className;\n\n\t\t\tif ( ! classes.includes( 'ticss-' ) ) {\n\t\t\t\tclasses = classes.split( ' ' );\n\t\t\t\tclasses.push( `ticss-${ uniqueId }` );\n\t\t\t\tclasses = classes.join( ' ' );\n\t\t\t}\n\n\t\t\tclassArRef.current = classes.split( ' ' );\n\t\t\tclassArRef.current = classArRef.current.find( i => i.includes( 'ticss' ) );\n\t\t} else {\n\t\t\tclasses = `ticss-${ uniqueId }`;\n\t\t\tclassArRef.current = classes;\n\t\t}\n\n\t\treturn classes;\n\t};\n\n\tconst editorRef = useRef( null );\n\tconst customCSSRef = useRef( null );\n\tconst classArRef = useRef( null );\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<p>{ __( 'Add your custom CSS.' ) }</p>\n\n\t\t\t<div id=\"redux-css-editor\" className=\"redux-css-editor\"/>\n\n\t\t\t<p>{ __( 'Use' ) } <code>selector</code> { __( 'to target block wrapper.' ) }</p>\n\t\t\t<p>{ __( '' ) }</p>\n\t\t\t<p>{ __( 'Example:' ) }</p>\n\n\t\t\t<pre className=\"redux-css-editor-help\">\n\t\t\t\t{ 'selector {\\n background: #000;\\n}\\n\\nselector img {\\n border-radius: 100%;\\n}'}\n\t\t\t</pre>\n\n\t\t\t<p>{ __( 'You can also use other CSS syntax here, such as media queries.' ) }</p>\n\t\t</Fragment>\n\t);\n};\n\nexport default CSSEditor;\n","/**\n * WordPress dependencies.\n */\nconst { assign } = lodash;\n\nconst { __ } = wp.i18n;\n\nconst { hasBlockSupport } = wp.blocks;\n\nconst { PanelBody } = wp.components;\n\nconst { createHigherOrderComponent } = wp.compose;\n\nconst { InspectorControls } = wp.blockEditor || wp.editor;\n\nconst { Fragment } = wp.element;\n\nconst { addFilter, removeFilter } = wp.hooks;\n\n/**\n * Internal dependencies.\n */\nimport './style.scss';\n\nimport CSSEditor from './editor.js';\n\nimport './inject-css.js';\n\nconst addAttribute = ( settings ) => {\n\tif ( hasBlockSupport( settings, 'customClassName', true ) ) {\n\t\tsettings.attributes = assign( settings.attributes, {\n\t\t\thasCustomCSS: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: false\n\t\t\t},\n\t\t\tcustomCSS: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: null\n\t\t\t}\n\t\t});\n\t}\n\n\treturn settings;\n};\n\nconst withInspectorControls = createHigherOrderComponent( ( BlockEdit ) => {\n\treturn ( props ) => {\n\t\tconst hasCustomClassName = hasBlockSupport( props.name, 'customClassName', true );\n\t\tif ( hasCustomClassName && props.isSelected ) {\n\t\t\treturn (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<BlockEdit { ...props } />\n\t\t\t\t\t<InspectorControls>\n\t\t\t\t\t\t<PanelBody\n\t\t\t\t\t\t\ttitle={ __( 'Custom CSS' ) }\n\t\t\t\t\t\t\ticon={<i className={'fa fa'}></i>}\n\t\t\t\t\t\t\tinitialOpen={ false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<CSSEditor\n\t\t\t\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t\t\t\t\tsetAttributes={ props.setAttributes }\n\t\t\t\t\t\t\t\tattributes={ props.attributes }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t</InspectorControls>\n\t\t\t\t</Fragment>\n\t\t\t);\n\t\t}\n\n\t\treturn <BlockEdit { ...props } />;\n\t};\n}, 'withInspectorControl' );\n\n// Remove block-css fields.\nremoveFilter( 'blocks.registerBlockType', 'themeisle-custom-css/attribute' );\nremoveFilter( 'editor.BlockEdit', 'themeisle-custom-css/with-inspector-controls' );\n\naddFilter( 'blocks.registerBlockType', 'redux-custom-css/attribute', addAttribute );\naddFilter( 'editor.BlockEdit', 'redux-custom-css/with-inspector-controls', withInspectorControls );\n\n","/**\n * WordPress dependencies.\n */\nconst { __ } = wp.i18n;\n\nconst { parse } = wp.blocks;\n\nconst {\n\tselect,\n\tsubscribe\n} = wp.data;\n\nconst addStyle = style => {\n\tlet element = document.getElementById( 'redux-css-editor-styles' );\n\n\tif ( null === element ) {\n\t\telement = document.createElement( 'style' );\n\t\telement.setAttribute( 'type', 'text/css' );\n\t\telement.setAttribute( 'id', 'redux-css-editor-styles' );\n\t\tdocument.getElementsByTagName( 'head' )[0].appendChild( element );\n\t}\n\n\tif ( element.textContent === style ) {\n\t\treturn null;\n\t}\n\n\treturn element.textContent = style;\n};\n\nlet style = '';\n\nconst cycleBlocks = ( blocks, reusableBlocks ) => {\n\tblocks.forEach( block => {\n\t\tif ( block.attributes.hasCustomCSS ) {\n\t\t\tif ( block.attributes.customCSS && ( null !== block.attributes.customCSS ) ) {\n\t\t\t\tstyle += block.attributes.customCSS + '\\n';\n\t\t\t}\n\t\t}\n\n\t\tif ( 'core/block' === block.name && null !== reusableBlocks ) {\n\t\t\tlet reBlocks = reusableBlocks.find( i => block.attributes.ref === i.id );\n\t\t\tif ( reBlocks ) {\n\t\t\t\treBlocks = parse( reBlocks.content.raw );\n\t\t\t\tcycleBlocks( reBlocks, reusableBlocks );\n\t\t\t};\n\t\t}\n\n\t\tif ( undefined !== block.innerBlocks && 0 < ( block.innerBlocks ).length ) {\n\t\t\tcycleBlocks( block.innerBlocks, reusableBlocks );\n\t\t}\n\t});\n};\n\nconst subscribed = subscribe( () => {\n\tstyle = '';\n\tconst { getBlocks } = select( 'core/block-editor' ) || select( 'core/editor' );\n\tconst blocks = getBlocks();\n\tconst reusableBlocks = select( 'core' ).getEntityRecords( 'postType', 'wp_block' );\n\tcycleBlocks( blocks, reusableBlocks );\n\taddStyle( style );\n});\n","\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./editor.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./editor.scss\", function() {\n\t\tvar newContent = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./editor.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.5 19.8v-.2V10c0-.2.1-.2.2-.3 1.7-.7 3.5-1.4 5.2-2.2 1.3-.5 2.6-1.1 3.8-1.6.3-.1.3-.1.3.2v9.1c0 .1 0 .2-.2.3-.9.4-1.9.9-2.8 1.3-.8.4-1.7.8-2.5 1.2-1 .5-1.9.9-2.9 1.4-.3.1-.7.2-1.1.4zm1-5.4v3.7c0 .2 0 .2.2.1 2.4-1.1 4.7-2.2 7.1-3.4.1-.1.2-.1.2-.3V7.4c0-.2 0-.2-.2-.1-2.4 1-4.7 2-7.1 3-.1.1-.2.1-.2.2v3.9zM19.4 4.2c-1-.4-2-.9-3-1.3-1.2-.5-2.4-1-3.7-1.6C11.8 1 10.9.6 10 .2c-.1 0-.1-.1-.2 0-.6.3-1.1.5-1.7.7-.7.3-1.4.7-2.1 1-.7.3-1.5.6-2.2 1-.7.3-1.3.6-2 .9-.6.1-1.1.3-1.7.6.2.1.4.2.6.2 1.9.8 3.8 1.6 5.7 2.5 1.1.4 2.2.9 3.2 1.4.1.1.2.1.4 0 .4-.2.8-.3 1.1-.5 1.5-.6 3-1.3 4.5-1.9 1.1-.5 2.2-.9 3.4-1.4.2-.1.5-.2.7-.3-.1-.1-.2-.1-.3-.2zm-5.9-.8h-1.1c-.1 0-.2 0-.2.2 0 .5 0 .5.5.5h.7c.1 0 .1 0 .1.1v.5c0 .1 0 .1-.1.1h-1c-.1 0-.2 0-.2.2v1c0 .1 0 .1-.1.1h-.6c-.1 0-.1 0-.1-.1v-.5c-.3.3-.5.4-.8.5-.3 0-.6 0-.9-.1 0 0-.1-.1-.2 0h-.1c-.2.1-.4.1-.6.1-.1 0-.2 0-.2-.1-.2-.4-.2-.4-.6-.4h-.6c-.1 0-.1 0-.2.1-.1.4-.1.4-.5.4h-.3c-.1 0-.2 0-.1-.1.3-.7.6-1.4.9-2.2.1-.3.3-.6.4-1 0-.1.1-.1.2-.1.4 0 .4 0 .6.4.1.2.2.5.3.7.3-.6.7-.9 1.3-1 .6-.1 1.1.1 1.6.5v-.4c0-.1 0-.1.1-.1h1.9c.1 0 .1 0 .1.1v.5c0 .1-.1.1-.2.1zM9.5 10c0-.1 0-.2-.1-.2-.3-.1-.5-.2-.7-.3-2.4-1-4.7-2-7.1-3-.5-.2-1-.4-1.6-.7v9.4c0 .1 0 .2.1.2.2.1.3.1.5.2L3 16.8c1.3.6 2.5 1.2 3.8 1.8.8.4 1.7.8 2.5 1.2.2.1.2.1.2-.1v-7V10zm-1.2 8.2c-2.4-1.1-4.8-2.3-7.2-3.4-.1 0-.1 0-.1-.1V7.5c0-.1 0-.2.2-.1l7.2 3c.1 0 .1.1.1.2v7.6c0 .1 0 .1-.2 0z\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.4 4.3c0 .1 0 .1 0 0 0 .2 0 .3-.2.3-.1 0-.2 0-.2.2-.2.4-.6.6-1 .5-.5-.2-.8-.5-.8-1 0-.4.3-.8.7-.9.4-.1.8.1 1 .5 0 .1.1.1.2.1.3.1.3.1.3.3zM7.8 4c.1 0 .1 0 0 0 .2.3.3.5.3.7h-.6c.2-.2.3-.5.3-.7zM7.6 15.5v.1c.1.2.1.3-.1.5v.1c.1.1.1.2.1.4v.1h-.1c-.1-.1-.3-.2-.3-.3v-.2c.1.1.1.3.3.3 0-.1-.1-.3-.3-.4 0 0-.1 0-.1-.1-.1-.1-.2 0-.2.1 0 .2.1.3.4.4.1 0 .1 0 .1.1v.1c.1 0 .2.1.2.1s.1.1 0 .1h-.1c-.4-.2-.8-.4-1.3-.6l-.1-.1c0-.3-.2-.5-.4-.6-.1-.1-.3-.1-.4 0l-.1.1h.1c.4.1.7.2.7.5v.1s-.1 0-.1-.1c-.1-.2-.2-.3-.4-.3 0 .1 0 .1.1.1h.1v.1h-.1c-.2-.1-.3-.1-.5-.2-.1-.1-.1-.1 0-.2l.1-.1c-.1 0-.2-.1-.3 0l-.1.1c-.1.2-.2.1-.2 0-.2-.4-.2-.4-.4-.5 0 .1.1.2.1.3 0 .1 0 .1-.1.1s-.1 0-.2-.1c-.1 0-.2 0-.1-.2s-.2-.3-.3-.3c0 0-.1.1-.1 0v-.1c0-.1 0-.1.1-.1.2 0 .3.1.4.2 0 .1.1.1.1.2h.1v-.1c-.1-.3-.4-.5-.7-.5-.1 0-.2 0-.2.2 0 .1 0 .1-.1.1-.4-.2-.9-.4-1.3-.6 0 0-.1 0-.1-.1s.1 0 .1 0c.1 0 .2.2.2 0 0 0 .1 0 .1.1.1.1.1.1.2 0 .1 0 .1-.1.1-.2-.1-.2-.2-.3-.5-.4-.1 0-.1 0-.2.1v.1H2s0-.1.1-.1v.1c0 .1-.1.1-.2.1h-.3c-.1 0-.1-.3 0-.3.1-.1.1-.2 0-.3-.1-.1-.1-.3-.1-.4 0-.1 0-.1.1-.1s0 .1 0 .1c-.1.2 0 .4.2.6.1.1.2.1.3.2.1.1.2.2.2.4 0 .1 0 .1.1.1.1.1.2.2.2.4 0 .1.1.1.1 0 .1-.2.3-.2.5-.2 0-.1 0-.1-.1-.1-.5-.5-.9-1.1-1.2-1.7-.2-.5-.3-1-.2-1.6 0-.1.1-.2.1-.3 0-.1 0-.2-.1-.2-.2-.1-.3-.3-.4-.5V10c.1-.3 0-.6.1-1 0-.1 0-.1.1-.1.5.1.5.2.5.3v.6c0 .1.1.2.2.2s.2.1.3 0v-.1c0-.1-.1-.2-.2-.2s-.1 0-.1-.1c.2 0 .5.2.4.4 0 .1-.2.2-.3.1 0 0-.1-.1-.1 0-.1 0-.2-.1-.2 0v.3l.1.1c.2.2.2.2.4 0l.1-.1c.3-.3.3-.4.1-.8 0-.1-.1-.2-.2-.4.1 0 .1.1.2.1.1.3.3.5.6.6.1.1.2.1.3 0-.1-.1-.2-.1-.4-.2s-.4-.3-.4-.5H3c0 .1.2.2.3.4.1-.1.1-.2.1-.2.1 0 .1-.1.2 0s0 .1 0 .1c-.1.1-.1.3 0 .4.1.1.2.1.4 0 .2-.2.4-.2.6 0 .1.1.2.2.4.2s.4.2.5.4c.1.1.1.2.2.3 0 .1.1.2.2.2 0 0 .1 0 .2-.1s0-.2-.1-.2v-.1s.1 0 .1.1.1.1.1.2c0 .2.1.2.2.1h.2c.1 0 .2.1.1.2 0 .1-.1.1-.2.1s-.2-.1-.4-.1c-.1 0-.1-.1-.2 0 0 .1 0 .1.1.1.2.2.4.2.7.1.1 0 .1-.1.2 0 0 .1 0 .1-.1.1-.2.2-.2.5-.1.8l.3.6c.1 0 .2.1.4.1.1 0 .2 0 .2-.2 0-.1 0-.2-.1-.2-.1.1.1.2-.1.3-.1 0-.2 0-.2-.1s-.1-.2 0-.2c.1-.1.1.1.3.1 0-.1-.2-.2-.3-.2-.2-.2-.3-.3-.3-.5s.1-.2.3-.2c.1 0 .1.1.2.1v.1h-.1c-.1 0-.2-.2-.2 0-.1.1 0 .2.1.3.1.1.2.1.3.2.1.1.1 0 .1-.1v-.6-.1c.1 0 .1.1.1.1V13c0 .1-.2.2-.3.2 0 0-.1-.1-.1 0v.1c.2.4.2.8.1 1.2-.1.6-.4 1.1-1.1 1.2-.1 0-.2.1-.4 0 .3.2.5.4.6.7 0 .1.1.1.1 0s.1-.2.2-.1c.1 0 .1 0 .1-.1.1-.2.2-.2.3-.1.2.1.4.1.5-.1.1-.1 0-.2-.1-.3-.1-.2-.1-.2 0-.2zm-3.9-4.4c-.1-.1-.1 0-.2 0-.2.2-.4.4-.3.7.2-.1.4-.2.5-.3.1 0 .1-.1.1 0s0 .1-.1.1c-.1.1-.3.1-.4.2-.1.2-.2.2-.1.4 0 0 0 .1.1.1.5.7.9 1.4 1.4 2 .1.1.2.1.3.1.5-.2.9-.5 1.4-.7.1-.1.1-.1 0-.2-.2-.3-.4-.5-.6-.8 0 0-.1 0 0-.1h.1c0 .1.1.3.2.4.1.1.2.3.3.4 0-.5-.2-.8-.4-1.2h.1c.2.4.4.8.5 1.3v.1c.1 0 .1-.1.2-.1s0-.1 0-.1c-.1-.2-.1-.4-.2-.5-.1-.2-.2-.5-.4-.7-.1-.2-.1-.2-.2-.1s-.2.1-.3.2c0 0-.1.1-.1 0v-.1l.2-.2c.2-.1.2-.2.1-.4l-.6-.6c-.1-.1-.2-.2-.4-.1h-.1c.2.1.4.3.6.4.3.2.4.4.4.5-.3-.2-.5-.5-.9-.7.2.2.3.4.4.6 0 0 .1.1 0 .1h-.1c-.1-.2-.3-.4-.4-.6-.1-.1-.1-.1-.2-.1-.1.1-.2.1-.3.2 0 0-.1.1-.1 0s0-.1.1-.1c.1-.1.3-.1.4-.2-.1 0-.1 0-.2-.1-.2 0-.4-.1-.7-.1-.1.2-.1.2-.1.3zm2.8 2.7c-.5.2-1 .5-1.5.7 0 0-.1 0 0 0 0 0 0 .1.1.1.3.1.6.1.9-.1.2-.1.5-.3.5-.7zm-3.4-1.5c0 .2 0 .4.1.5.2.6.6 1.1 1.2 1.5h.1v-.1c-.2-.2-.3-.4-.5-.6-.3-.4-.6-.9-.9-1.3zm-.2-2.4c.1.3-.1.4-.2.6-.2.2-.3.5-.4.7 0 .2.1.2.2.2s.1-.1.1-.2c.1-.3.2-.5.4-.7.1-.1.1-.2.1-.3 0 0-.1-.1-.2-.3zm4.3 3.8c0-.4-.1-.7-.3-1.1-.1-.3-.4-.6-.3-1-.3.1-.3.2-.2.5.2.3.4.7.4 1.1.1.3.2.5.4.5zM3 9.9c0 .1.1.1.1.2.1.2.3.3.5.3h.7c.1 0 .2 0 .2-.1s-.1-.1-.2-.1c-.2-.1-.4-.1-.6-.1-.2 0-.4 0-.7-.2zm3.6 3.8c-.1.4-.1.7-.4.9-.1 0-.2.1-.2.1 0 .1.2.1.2.1.1 0 .1.1.2 0 .2-.1.3-.3.3-.5 0-.1.1-.2.1-.3 0 0-.1-.1-.2-.3zM3 12c-.1 0-.1.1-.2.1s-.1.1-.1.1c.1.3.2.7.4 1 .1.2.3.3.5.4-.4-.5-.6-1-.6-1.6zm3.5-.5c-.2-.1-.4-.1-.6-.3-.2-.3-.5-.5-.8-.7 0 0-.1-.1-.1 0v.1c.1.2.2.2.3.3.2.2.5.4.7.6.2.3.3.2.5 0zm-1.7 3.3c0 .2.1.3.2.2h.2c.5 0 .9.1 1.3.4h.2c.1-.1 0-.1-.1-.1-.2-.2-.5-.3-.8-.3-.3-.1-.5 0-.8-.1-.1-.2-.2-.2-.2-.1zm-1.9-1.4c0 .2.2.2.3.3.5.2.8.5 1.2.9.1.1.2.3.3.4 0-.4 0-.4-.2-.5-.2-.1-.4-.3-.6-.5-.2-.2-.5-.4-.8-.5-.1-.1-.1-.1-.2-.1zm.1-.1c-.2-.4-.3-.7-.4-1.1 0-.1-.1-.2-.2-.3h-.1c0 .1 0 .2.1.3 0 .3.2.6.3.9.1.2.2.2.3.2zm4.2 1c.1-.1-.1-.1-.2-.2-.1 0-.1.1-.1.1-.1.2-.2.5-.3.6-.1.2-.1.2 0 .2s.2.2.2.1c.2-.2.4-.5.4-.8zm-2.6-3.4c-.1-.1-.1-.3-.3-.3-.2-.1-.5-.1-.7-.1 0 0-.1 0-.1.1v.3c0 .1.1.1.2 0 .2-.1.4-.1.5 0h.4zm-1.7 1c0-.1.1-.1.1-.2 0-.3.2-.5.4-.7.1 0 .1-.1.1-.1 0-.1-.3-.2-.4-.1-.2.1-.3.3-.4.6 0 .1-.1.2 0 .3.1 0 .2.1.2.2zm2.6 3.3c.2 0 .5.1.7.2.1 0 .2.1.2 0s-.1-.1-.1-.1h-.1c-.4-.2-.8-.3-1.2-.1 0-.1 0 0 0 0s0 .1.1 0h.4zm-2.4-1.4c0 .1.1.2.2.3.5.2.8.5 1.1.9 0 0 0 .1.1.1V15c-.3-.6-.8-1-1.4-1.2zm1.8-3.1v-.4c0-.1-.1-.1-.1-.1h-.1c-.1.2-.1.3 0 .5 0 .1.1.1.2.1s0 0 0-.1zm.3 4.7c.3.1.6.2.9.1-.3-.2-.6-.2-.9-.1zm-2.4-3.6c0-.1-.2-.3-.4-.3l-.1.1.3.3c.2.1.2.1.2-.1zM7.1 14h.1v-.1c-.1-.1-.1-.2-.2-.2h-.2v.2s.1.1.3.1zm-3.6.3c.1.2.6.6.8.6-.1-.2-.6-.6-.8-.6zm1.2.8c-.1 0-.1.1-.1.2s.1.3.2.3c0 0 .1-.1.1-.2 0-.2-.1-.3-.2-.3zM4.1 10c.1 0 .3.1.4.1h.1V10c-.2-.2-.4-.2-.5 0zm1.3.6c0-.2-.2-.4-.4-.4h-.1v.1c.2.1.3.2.5.3z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2 11.8c-.1 0-.1-.1-.1-.2v-.8-.1H2c0 .1.2.1.2.2-.2-.1-.2 0-.2.2v.7zM7.7 13.9v.5s0 .1-.1.1 0 0 0-.1v-.7c0-.1 0-.2-.1-.3l-.1-.1c0-.1.1 0 .1 0 .2 0 .2.1.2.3v.3zM2.2 10.2c.1 0 .2.1.2.2s0 .1-.1.1-.2-.1-.2-.2c-.1-.1 0-.1.1-.1zM7.2 11.4c.1 0 .3.3.2.4 0 0 0 .1-.1 0 0 0-.1-.1-.1-.4 0 .1 0 0 0 0zM6 10.7c0 .1.1.1 0 .2h-.2c-.1-.1-.1-.1-.1-.2s.1-.1.2-.1l.1.1zM2.9 9.2c-.1-.1-.2-.2-.4-.3 0 0-.1 0 0-.1h.1c.2.2.4.3.6.4v.1c-.1 0-.2-.1-.3-.1zM2.1 9.2c0-.1.1-.2.1-.2.1 0 .2.1.2.2s-.1.1-.2.1c-.1.1-.1 0-.1-.1zM7.1 11.1c-.1 0-.2-.1-.3-.1-.1-.1-.3-.1-.4-.2 0 0-.1 0 0-.1h.1c.1.1.3.2.6.4 0-.1 0-.1 0 0zM7.7 11.4v.1c-.1 0-.1-.1-.1-.1 0-.1-.2-.2-.3-.2 0 0-.1 0-.1-.1s.1 0 .1 0c.1.1.2.1.2.1l.2.2zM3.9 9.8s0 .1 0 0c-.2.1-.3 0-.3-.1s0-.1.1-.1.2 0 .2.2zM2.4 8.8c-.1 0-.2 0-.2-.1-.1 0-.2 0-.2.1h-.1v-.1-.2c.1-.1.1 0 .1 0 .2.2.3.2.4.3zM7.4 15.7c-.2 0-.3-.1-.4-.1v-.1h.1c.1 0 .2.1.3.2zM7.6 15.5c-.1-.1-.2-.1-.3-.2 0 0-.1 0 0-.1 0-.1.1 0 .1 0 .1 0 .2.1.3.1-.1.1 0 .2-.1.2zM2.2 13.1c.1.1.2.1.3.2 0 0 .1 0 0 .1h-.1s-.2-.1-.2-.3c-.1.1-.1.1 0 0-.1.1-.1.1 0 0zM2.3 12.9c0 .1 0 .1 0 0-.2 0-.3-.1-.4-.1v-.1c.2.1.3.1.4.2zM14.1 16.3c-.6 0-1-.1-1.5-.5-.3-.3-.5-.6-.6-.9 0-.3-.1-.6 0-.9 0-.6.2-1.1.4-1.6s.5-.9.8-1.3c.4-.4.8-.8 1.3-1.1.4-.3.9-.5 1.3-.6.9-.2 1.7-.1 2.3.7.2.3.3.6.4 1v.5c0 .7-.2 1.4-.5 2-.3.7-.8 1.3-1.4 1.8-.5.5-1.2.8-1.9 1-.2-.1-.4-.1-.6-.1zm4.3-4.9c0-.5-.2-1.1-.8-1.5-.4-.3-.9-.4-1.3-.4-.3 0-.6.1-.8.2-.5.2-.9.4-1.3.7-.4.3-.8.7-1.1 1.1-.4.5-.6 1-.8 1.6-.1.5-.2 1.1 0 1.6.3.9.9 1.3 1.7 1.4.4.1.7 0 1.1-.1.7-.2 1.2-.6 1.7-1 .4-.4.8-.8 1.1-1.3.2-.7.5-1.3.5-2.3zM4.5 12.7c0 .2 0 .4.2.6.1.1.2.1.3.1.1-.1.1-.2.1-.3-.1-.1-.1-.2-.2-.1 0 0-.1.1-.1 0v-.1l.1-.1c.2.2.3.2.5.1h.1v.1s-.1.1-.2.1-.1 0-.1.1 0 .3-.2.3-.3-.1-.4-.2c-.3-.2-.3-.5-.3-.8v-.1c0-.3.2-.4.5-.2.2.1.3.2.4.4v.1h-.1c-.1-.1-.1-.2-.2-.3-.1-.1-.2-.2-.4-.1-.1 0-.1.2-.1.3.1 0 .1.1.1.1zM6.6 13.3c-.1-.4-.2-.8-.5-1.1.3.1.6.8.5 1.1zM3.7 11.1c.1.1.2.3.3.5-.2-.2-.3-.3-.3-.5zM2.8 11.4c.1-.2.2-.4.4-.6h.1v.1c-.2.2-.3.4-.3.6h-.1c-.1 0 0 0-.1-.1z\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 12.2c.1-.3.3-.5.4-.7.3-.4.6-.7.9-.9.4-.3.8-.5 1.2-.6.5-.1.9-.1 1.3 0 0 0 .1 0 .1.1s-.1.1-.1.1c-.4.3-.4.7-.1 1.1.3.3.3.6.2 1-.1.5-.3 1.1-.4 1.6-.1-.1-.1-.2-.2-.4-.2-.5-.4-1.1-.6-1.6-.1-.1-.1-.3-.2-.4-.1-.1 0-.1.1-.2s.2-.1.3-.2c0 0 .1-.1 0-.1 0-.1-.1 0-.1 0-.3.2-.7.3-1 .4-.1 0-.3.1-.4.1-.1 0-.1.1-.1.2s.1.1.2 0c.2-.1.3 0 .3.2l.3.6c.1.1 0 .3 0 .4-.1.2-.1.5-.2.7-.1.3-.2.6-.3 1-.2-.3-.3-.6-.4-.9l-.6-1.5c0-.1 0-.2.1-.2s.2-.1.2-.1v-.1c0-.1-.1 0-.1 0-.2.2-.5.3-.8.4z\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.3 13.1c.3.6.5 1.2.8 1.9v.1c-.4.3-.9.5-1.4.6-.2 0-.2 0-.2-.2.2-.6.4-1.3.6-1.9.1-.1.1-.3.2-.5zM14.1 15.7c-.5-.1-.9-.2-1.1-.6-.4-.5-.5-1-.4-1.6 0-.2.1-.4.1-.7 0 0 0-.1.1-.1l.1.1c.2.4.4.8.5 1.2.2.6.4 1.1.7 1.7zM16.7 14.6c.1-.4.2-.8.4-1.2l.6-1.8c.1-.3.2-.6.1-.9.2.2.2.4.3.6.1.5 0 1.1-.1 1.6-.1.4-.4.8-.6 1.2-.4.1-.5.3-.7.5z\"\n});\n\nvar SvgAcfBlocks = function SvgAcfBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2, _ref3, _ref4, _ref5);\n};\n\nexport default SvgAcfBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.4 9l.8 2.1H3.7c0-.2.3-.8.4-1.1l.3-1s0 .1 0 0zm8.7.3h1v1.5h-1c-.1.5-.5 1-1 1.3-1.6 1.1-3.9.1-4-2.1 0-1.3 1-2.3 2.1-2.5 1.3-.2 2.6.6 2.9 1.8zM0 14.5h2.3l.5-1.3c0-.1 0 0 .1-.1H6c0 .2.5 1.2.5 1.3h2.4l-.1-.3c.7.2 1.2.4 2.1.4 1 0 2-.5 2.6-1l.3-.3.3-.3v1.6h2.2v-1.7-1.7h3.5v-2h-3.5v-.8-.8H20V5.4h-5.9V7c-.4-.4-.3-.4-.8-.7-1-.7-2.4-1-3.6-.7-.9.2-1.6.6-2.2 1.2l-.2.2c-.3.2-.7.9-.8 1.3l-.1.1c-.1-.3-.8-1.8-.9-2.3-.1-.2-.2-.5-.3-.7H3.6L0 14.5z\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n});\n\nvar SvgAdvancedCustomFields = function SvgAdvancedCustomFields(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgAdvancedCustomFields;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2 2h5v11H2V2zm6 0h5v5H8V2zm6 0h4v16h-4V2zM8 8h5v5H8V8zm-6 6h11v4H2v-4z\"\n});\n\nvar SvgAdvancedGutenbergBlocks = function SvgAdvancedGutenbergBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgAdvancedGutenbergBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.3 13.9h1.3l.7-1.9h3.3l.7 1.9h1.3l-3-7.8H9.3l-3 7.8zM10 7.8l1.2 3H8.8l1.2-3z\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"atomic-blocks_svg__st0\",\n d: \"M18.9 5.7c.4-.5.6-1.2.6-1.9 0-1.9-1.5-3.4-3.3-3.4-.7 0-1.4.2-1.9.6-1.3-.6-2.7-1-4.2-1C4.6 0 .2 4.4.2 9.9s4.4 9.9 9.9 9.9S20 15.4 20 9.9c-.1-1.4-.5-2.9-1.1-4.2zM15.1 2h1.1c.5 0 1.1.3 1.1.9 0 .4-.3.6-.3.6s.5.2.5.8c0 .6-.5 1-1.1 1h-1.2V2zM10 18.2c-4.5 0-8.2-3.7-8.2-8.2 0-4.5 3.7-8.2 8.2-8.2 1.1 0 2.2.2 3.1.6-.2.4-.3.9-.3 1.4 0 1.9 1.5 3.4 3.3 3.4.5 0 1-.1 1.4-.3.4 1 .6 2 .6 3.1.1 4.5-3.6 8.2-8.1 8.2z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"atomic-blocks_svg__st0\",\n d: \"M16.7 3c0-.3-.2-.4-.5-.4h-.5v.8h.5c.3 0 .5-.1.5-.4zM16.8 4.4c0-.3-.2-.4-.5-.4h-.6v.9h.6c.3-.1.5-.2.5-.5z\"\n});\n\nvar SvgAtomicBlocks = function SvgAtomicBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2, _ref3);\n};\n\nexport default SvgAtomicBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.8 19.5c-.6.1-.8-.4-1-.8-1.5-1.8-3-3.6-4.5-5.3-.4-.5-.8-.9-1.2-1.4-.1-.2-.1-.4-.1-.6.3-1 .7-2 1.1-3 .7-2 1.5-3.9 2.2-5.9.1-.3.2-.4.5-.5 3-.5 5.9-1.1 8.9-1.5.6-.1 1 0 1.4.5 1 1.3 2 2.5 3 3.7.9 1.1 1.8 2.1 2.7 3.2.2.2.3.4.2.7-.5 1.3-.9 2.5-1.4 3.8-.6 1.7-1.2 3.3-1.9 5-.1.3-.2.4-.5.4-2.7.4-5.3.9-8 1.4-.5.1-.9.2-1.4.3zm-2.5-3.4h.9c2.4-.3 4.7-.5 7.1-.8.4 0 .5-.2.6-.6.4-2.1 1.3-4.1 2.7-5.7.2-.2.2-.3 0-.5-.9-1.1-1.9-2.2-2.8-3.4-.2-.2-.3-.2-.6-.1-1.9 1.1-4 1.6-6.2 1.6-.3 0-.5.1-.5.4-.5 1.8-1 3.5-1.6 5.3-.2.8-.5 1.6-.7 2.4 1.1-.8 2.1-1.7 3.1-2.5.5-.4.8-.9.8-1.5 0-.3.1-.6.2-.9.7-1.2 2.3-1 3.1-.4.2.2 0 .2-.1.3-.4.1-.9.3-1.3.4-.3.1-.4.3-.4.6s.1.6.3.8c.2.2.3.3.6.2.4-.2.9-.3 1.3-.4.1 0 .2-.1.3 0 .1.1 0 .2 0 .3-.4 1-1.4 1.7-2.5 1.5-.5-.1-.9 0-1.2.4-.2.2-.4.3-.6.5-.9.6-1.7 1.4-2.5 2.1zm14.5-8.6c-.1-.1-.2-.2-.2-.3-.5-.6-1.1-1.3-1.6-1.9-.8-.9-1.6-1.9-2.4-2.8-.1-.1-.2-.3-.4-.1-.4.4-.9.7-1.3 1.1-.1.1-.1.2 0 .3 1.4 1.6 2.7 3.3 4.1 4.9.1.2.2.2.4 0 .4-.4.8-.7 1.3-1.1-.1 0 0-.1.1-.1z\"\n});\n\nvar SvgBlockOptions = function SvgBlockOptions(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgBlockOptions;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"style\", null, \".block-slider_svg__st0{fill:#6171b5}\");\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"block-slider_svg__st0\",\n d: \"M2.9 16.2c0-1.2.2-2.3.4-3.5 0-.2.1-.5.3-.7.2-.3.5-.6.9-.6.3 0 .3.5.3.7.6 1.7 1.4 3.2 2.7 4.5.4.4.8.7 1.2.9.2.2.5.2.3.5-.1.3-.1.8-.6.8-1.8 0-3.5-.3-5.2-1-.3-.1-.4-.3-.3-.6v-1zM17 3.8c0 1.3-.2 2.6-.5 4-.1.6-.4.8-.9.9-.4.1-.6.1-.6-.4-.2-2-1-3.8-2.4-5.3l-.3-.3c-.2-.2-.7-.3-.5-.7.2-.4.5-.7 1-.7.4 0 .7 0 1.1.1.9.2 1.7.5 2.5.7.4.1.7.4.6.9v.8z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.1 11.4c-1-1.5-2.3-2.7-3.6-4-1-.9-1.8-2-2.3-3.3-.5-1.4-.6-2.8.8-4.1-2.1 0-3.9.6-5.4 1.8-2.4 2-3 4.9-1.3 7.5.5.8 1.1 1.6 1.8 2.4 1.3 1.4 2.5 2.7 3.5 4.3.8 1.2 1.3 2.5.5 4 1.7 0 3.2-.5 4.6-1.4 2.1-1.5 3.5-4.2 1.4-7.2zm-2.7 7c-.2 0-.4-.1-.4-.3 0-.2.2-.3.4-.3s.3.1.3.3c0 .2-.1.3-.3.3zm1-.6c-.2 0-.3-.2-.3-.4s.1-.3.3-.3c.2 0 .3.1.3.3 0 .2-.1.4-.3.4zm.7-.9c-.2 0-.3-.2-.3-.4s.2-.3.4-.3.3.2.3.3c-.1.3-.2.4-.4.4z\",\n fill: \"#1b214c\"\n});\n\nvar SvgBlockSlider = function SvgBlockSlider(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"block-slider_svg__Layer_1\",\n viewBox: \"0 0 20 20\",\n xmlSpace: \"preserve\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2, _ref3);\n};\n\nexport default SvgBlockSlider;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.64.986l8.602-.002c1.626 0 2.217.17 2.813.489a3.342 3.342 0 011.387 1.382c.32.596.493 1.187.5 2.818l.042 8.62c.008 1.63-.158 2.222-.474 2.818a3.297 3.297 0 01-1.373 1.383c-.593.319-1.182.489-2.809.489l-8.6.001c-1.627 0-2.218-.169-2.814-.488a3.342 3.342 0 01-1.387-1.382c-.32-.596-.493-1.187-.5-2.818l-.042-8.62c-.008-1.63.158-2.222.474-2.818a3.297 3.297 0 011.373-1.383C3.425 1.156 4.014.986 5.64.986zm-.656 2.998a1 1 0 00-1 1v10a1 1 0 001 1h3a1 1 0 001-1v-10a1 1 0 00-1-1zm7 7a1 1 0 00-1 1v3a1 1 0 001 1h3a1 1 0 001-1v-3a1 1 0 00-1-1zm0-7a1 1 0 00-1 1v3a1 1 0 001 1h3a1 1 0 001-1v-3a1 1 0 00-1-1z\"\n});\n\nvar SvgCoblocks = function SvgCoblocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgCoblocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.264 39.566L38.219 5.16l16.519 53.558-38.079 38.281zM69.376 112.381l35.607-35.607-46.088-13.51-38.006 38.006zM106.68 70.824L61.239 57.415 43.697 2.22 72.022 8.8l4.6 13.991 16.77 3.792 13.288 44.241zM64.633 53.949l35.664 10.522-10.291-34.264-16.699-3.775-4.604-13.999-18.641-4.337 14.571 45.853z\"\n});\n\nvar SvgCreativeBlocks = function SvgCreativeBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgCreativeBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.4 0c1.1.1 1.9.5 2.3 1.5.5 1 .3 2-.5 2.8-1.6 1.7-7.5 7.6-8.9 8.9-.6.6-.7 1.5-1.1 2.2-.4.9-.8 1.9-1.1 2.9-.1.8-1.3.7-1.3.7l-5.4.7c-.4.1-.9.5-1.3.1-.3-.3.1-1.2.1-1.2l1-6.5s.3-.3.5-.4c1.5-.6 2.9-1.1 4.4-1.7.2 0 .4-.2.5-.3L15.4.9c.6-.5 1.2-.9 2-.9zM1.3 19c.5.1.8.1 1.1 0 1.3-.3 2.6-.4 3.9-.6 1 0 1.5-.4 1.8-1.4.7-2.2 1.4-4.4 3.4-5.8.3-.2.3-.5 0-.8-.5-.4-.9-.9-1.3-1.3-1.1-1-1.1-1-2.2.1-.5.5-.9 1.1-1.6 1.4-1.3.5-2.7 1.1-4.1 1.6-.5.2-.6.4-.7.8-.3 1.7-.5 3.3-.8 5 0 .2-.1.4.1.7 1-1 2-2 3-3.1.2-.2.2-.5.2-.7-.1-.7.4-1.3 1.1-1.3.6 0 1.2.6 1.2 1.2s-.6 1.1-1.2 1c-.3 0-.5 0-.8.2-1 .9-2 1.9-3.1 3zM17.4.8c-.6 0-1 .1-1.4.5-2 2-4 4.1-6.1 6.1-.3.2-.2.4 0 .6l2.1 2.1c.3.3.4.2.7 0l1.9-1.9L18.8 4c.5-.5.7-1.6.4-2.2-.4-.7-1-1.1-1.8-1z\"\n});\n\nvar SvgEditorplus = function SvgEditorplus(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgEditorplus;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.04 4.76L9.2 7.44v11.68l-8.12-2.76m10.16 2.8l8.2-2.8V4.84L11.28 7.4m-1.04-1.36l7.52-2.44-7.52-2.28L2.52 3.6\"\n});\n\nvar SvgElegantBlocks = function SvgElegantBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgElegantBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 210.86,\n cy: 44.87,\n r: 12.79\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100.85 0A100.85 100.85 0 000 100.85V256h155.15A100.85 100.85 0 00256 155.15V0zm-59 149.49l-8.29 8.28a4.83 4.83 0 11-6.83-6.83l8.28-8.28a4.83 4.83 0 116.84 6.83zm34.86 53.16a9.31 9.31 0 010-13.13l10.69-10.69A9.28 9.28 0 01100.57 192l-10.69 10.65a9.31 9.31 0 01-13.13 0zm35.92 18.92l-7.41 7.43a5.75 5.75 0 01-8.13-8.13l7.45-7.45a5.75 5.75 0 018.13 8.13zM123.24 211a4.84 4.84 0 01-6.83 0l-1.23-1.24a4.81 4.81 0 010-6.8l31.07-31.48a8.4 8.4 0 000-11.88l-.89-.89a8.4 8.4 0 00-11.88 0l-16.94 16.94a8.41 8.41 0 01-11.89 0l-1.06-1.06a8.41 8.41 0 010-11.89l15.08-15.08a8.4 8.4 0 000-11.88l-.89-.89a8.41 8.41 0 00-11.89 0L90.8 149.93a8.42 8.42 0 01-13-1.35 8.61 8.61 0 011.33-10.76l16.71-16.71a8.41 8.41 0 000-11.89l-.88-.88a8.4 8.4 0 00-11.89 0L51.8 139.56a4.83 4.83 0 01-6.8-6.83l50.13-50.15 78.26 78.27zm52.54-52.54L97.52 80.19l3.28-3.28 78.27 78.26zm48.34-95.19a22.15 22.15 0 01-11.47 6.1 28.49 28.49 0 00-8.17 2.82 65.85 65.85 0 00-10.35 7.18c-10.3 11.06-12.26 20-12.25 26 0 16 14.07 26.16 9.68 37.63-1.91 5-6.41 7.87-9.38 9.38L143 113.18l-39.28-39.24c1.51-3 4.39-7.47 9.38-9.38 11.47-4.39 21.58 9.68 37.63 9.68 6 0 15-1.95 26-12.25a75.27 75.27 0 005.62-7.69 31.65 31.65 0 004.17-11 22.25 22.25 0 1137.58 19.94z\"\n});\n\nvar SvgEnhancedBlocks = function SvgEnhancedBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 256 256\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2);\n};\n\nexport default SvgEnhancedBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"filter\", {\n filterUnits: \"objectBoundingBox\",\n id: \"essential-blocks_svg__a\"\n}, /*#__PURE__*/React.createElement(\"feOffset\", {\n dy: 15,\n in: \"SourceAlpha\",\n result: \"shadowOffsetOuter1\"\n}), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 11,\n in: \"shadowOffsetOuter1\",\n result: \"shadowBlurOuter1\"\n}), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\",\n in: \"shadowBlurOuter1\"\n})), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M135.028 96h103.944l.497.216h.373c6.217 0 11.273 2.774 15.169 8.322 1.326 2.305 1.989 4.683 1.989 7.133 0 5.98-3.398 10.59-10.195 13.833-2.321.937-4.642 1.405-6.963 1.405H133.909c-4.973 0-9.366-1.981-13.179-5.944-2.487-2.882-3.73-5.836-3.73-8.862v-1.297c0-4.755 2.735-8.826 8.206-12.212 2.984-1.585 5.927-2.378 8.828-2.378h.497l.497-.216zm1.242 77.273l58.078.21c3.862 0 7.995 1.544 12.397 4.632 3.503 3.158 5.255 6.596 5.255 10.316 0 5.193-3.1 9.438-9.298 12.736-3.054 1.404-6.019 2.106-8.893 2.106h-58.752c-5.75 0-10.735-2.246-14.958-6.737-2.066-2.526-3.099-5.053-3.099-7.58v-1.262c0-4.772 3.19-8.877 9.567-12.316 3.234-1.263 6.289-1.895 9.163-1.895h.27c.18 0 .27-.07.27-.21zM241.632 173h.736c5.685 0 10.14 2.968 13.369 8.905.842 2.12 1.263 4.17 1.263 6.148 0 5.936-2.912 10.495-8.737 13.675-2.105.848-3.965 1.272-5.579 1.272h-1.473c-4.772 0-8.843-2.509-12.211-7.527-1.333-2.544-2-5.052-2-7.526 0-5.795 2.877-10.318 8.632-13.569 2.175-.919 4.175-1.378 6-1.378zm-106.604 75.727h103.944c0 .142 1.284.318 3.854.53 4.31.919 7.584 2.58 9.822 4.983 2.901 2.897 4.352 6.219 4.352 9.964 0 5.725-3.398 10.248-10.195 13.57-2.073.635-3.482.953-4.228.953H131.423c-2.901 0-6.383-1.66-10.444-4.982-2.653-3.039-3.979-6.113-3.979-9.223v-.954c0-5.23 3.108-9.505 9.325-12.827 1.824-.918 4.642-1.554 8.455-1.908 0-.07.083-.106.248-.106z\",\n id: \"essential-blocks_svg__b\"\n}));\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"circle\", {\n fill: \"#FFF\",\n cx: 187,\n cy: 187,\n r: 187\n}), /*#__PURE__*/React.createElement(\"use\", {\n fill: \"#000\",\n filter: \"url(#essential-blocks_svg__a)\",\n xlinkHref: \"#essential-blocks_svg__b\"\n}), /*#__PURE__*/React.createElement(\"use\", {\n fill: \"#23282D\",\n xlinkHref: \"#essential-blocks_svg__b\"\n}));\n\nvar SvgEssentialBlocks = function SvgEssentialBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2);\n};\n\nexport default SvgEssentialBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"style\", null, \".forms-gutenberg_svg__st5{opacity:.1}.forms-gutenberg_svg__st6{opacity:.16}.forms-gutenberg_svg__st7{opacity:.6}.forms-gutenberg_svg__st8{fill:#fff}.forms-gutenberg_svg__st9{opacity:.3}\");\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"forms-gutenberg_svg__SVGID_1_\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 23.101,\n y1: 4.596,\n x2: 17.855,\n y2: 19.01,\n gradientTransform: \"matrix(1 0 0 -1 0 33)\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#4facfe\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#00f2fe\"\n}));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29 13.1l-1-2.8-5.2 1.9c0 .1.1.3.1.4.1.2.1.5.1.7 0 .1 0 .3.1.4v.8c0 .5.1 1 0 1.6v1c-.1.5-.1 1-.3 1.6h.1c-.1.5-.2 1-.5 1.4-.1.4-.3.8-.4 1.2-.2.4-.3.7-.5 1.1-.1.2-.2.4-.3.5-.1.2-.2.3-.3.5-.2.4-.5.7-.7 1-.1.2-.3.4-.4.5-.1.1-.2.3-.3.4-.1.1-.2.3-.3.4l-.9.9-.4.4c-.3.2-.6.5-.9.7-.1.1-.2.2-.3.2-.2.2-.4.3-.7.5-.1.1-.2.1-.2.2-.2.1-.3.2-.5.3-.2.1-.3.2-.5.3l-.6.3c-.2.1-.3.2-.5.2-.1 0-.1.1-.2.1 0 0-.1 0-.1.1-.1 0-.2.1-.3.1-.2.1-.5.2-.7.3 1.8.3 3.7.4 5.5 0 1.8-.3 3.6-1 5.2-2 2.2-1.3 3.9-3.2 5.1-5.3 1.2-2.1 1.7-4.5 1.5-6.8-.1-1.2-.3-2.1-.7-3.1z\",\n fill: \"url(#forms-gutenberg_svg__SVGID_1_)\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"forms-gutenberg_svg__SVGID_2_\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 20.054,\n y1: 13.455,\n x2: 18.011,\n y2: 19.068,\n gradientTransform: \"matrix(1 0 0 -1 0 33)\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#00c6fb\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#005bea\"\n}));\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.8 12.2l-6.4 2.3c-.4.1-.8.4-1.1.6-.3.3-.6.6-.8 1-.2.4-.3.8-.4 1.2 0 .4 0 .8.2 1.2.1.4.4.7.6 1 .3.3.6.5 1 .7.4.2.8.2 1.3.2.4 0 .9-.1 1.3-.2l4.4-1.6c.5-2.2.4-4.4-.1-6.4z\",\n fill: \"url(#forms-gutenberg_svg__SVGID_2_)\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"forms-gutenberg_svg__SVGID_3_\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 15.53,\n y1: 4.084,\n x2: 8.873,\n y2: 22.373,\n gradientTransform: \"matrix(1 0 0 -1 0 33)\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#89f7fe\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#66a6ff\"\n}));\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.5 19.9c-.4.9-1 1.7-1.7 2.4s-1.6 1.2-2.6 1.6c-.4.2-.9.3-1.4.4-.5.1-.9.1-1.4.1-1.4 0-2.7-.4-3.8-1.1-.2-.1-.4-.2-.7-.3-2-1-3.7-2.5-4.9-4.3-1.2-1.8-1.8-3.9-1.9-6v-.2c-1.8 2.9-2.3 6.2-1.5 9.2s2.9 5.6 5.8 7.2c1.2.6 2.5 1.1 3.8 1.3 3.2-1.2 6-3.2 7.9-5.8 1.1-1.5 1.9-2.9 2.4-4.5z\",\n fill: \"url(#forms-gutenberg_svg__SVGID_3_)\"\n});\n\nvar _ref8 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"forms-gutenberg_svg__SVGID_4_\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 19.95,\n y1: 23.365,\n x2: 17.904,\n y2: 28.987,\n gradientTransform: \"matrix(1 0 0 -1 0 33)\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#4facfe\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#00f2fe\"\n}));\n\nvar _ref9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5 1.6l-5.9 2.1c0 .1-.1.2-.1.3-.1.3-.2.5-.2.8-.2.6-.5 1.3-.8 1.9-.1.1-.1.2-.2.4v.1c-.1.2-.2.3-.3.5-.1.2-.2.3-.3.5-.1.1-.2.3-.3.4-.1.1-.1.2-.2.3l-.2.2c-.1.1-.2.2-.2.3l-.1.1c-.1.1-.2.3-.3.4v.1c-.1.1-.2.3-.4.4-.1.1-.2.3-.3.4 0 .1-.1.1-.1.1l-.3.3-.4.4-.3.3c.1-.1.3-.1.4-.2l6.4-2.3 1.2-.6c1.3-.8 2.3-1.9 2.9-3.3.4-1.2.4-2.6 0-3.9z\",\n fill: \"url(#forms-gutenberg_svg__SVGID_4_)\"\n});\n\nvar _ref10 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"forms-gutenberg_svg__SVGID_5_\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 15.998,\n y1: 11.362,\n x2: 10.556,\n y2: 26.312,\n gradientTransform: \"matrix(1 0 0 -1 0 33)\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#00c6fb\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#005bea\"\n}));\n\nvar _ref11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.6 3.8l-6.8 2.5c-3 1.1-5.6 3.1-7.3 5.7-.1.1-.2.3-.3.4v1.1c0 .2 0 .4.1.6 0 .1 0 .2.1.3 0 .1.1.3.1.4 0 .1.1.2.1.3v.2l.3.9c0 .1.1.1.1.2s0 .1.1.2v.1s0 .1.1.1c0 .1.1.2.2.4 0 0 0 .1.1.1.1.2.1.3.2.5.1.1.1.2.2.3 0 .1.1.1.1.2.2.3.3.5.5.8.1.1.1.2.2.2.3.4.6.8 1 1.2l.3.3c.2.2.5.4.7.6.1.1.2.2.3.2.3.2.6.5.9.7.2.1.3.2.5.3.2.1.3.2.5.3 0 0 .1 0 .1.1.2.1.3.2.5.2-1.1-.7-1.9-1.7-2.4-2.9-.1-.8-.2-1.6-.1-2.5 0-.8.3-1.7.7-2.5.8-1.4 2.1-2.6 3.7-3.3l.3-.3.4-.4.3-.3.1-.1c.1-.1.2-.2.3-.4l.4-.4V10c.1-.1.2-.3.3-.4l.1-.1c.1-.1.2-.2.2-.3L16 9c.1-.1.1-.2.2-.3.1-.1.2-.3.3-.4.1-.2.2-.3.3-.5.1-.2.2-.3.3-.5v-.1c.1-.1.1-.2.2-.4.3-.6.6-1.2.8-1.9.1-.3.2-.5.2-.8.2-.1.3-.2.3-.3z\",\n fill: \"url(#forms-gutenberg_svg__SVGID_5_)\"\n});\n\nvar _ref12 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st5\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.2 23.8c-.4.2-.9.3-1.4.4-2 1.7-4.7 3.2-8.4 4.6 1.2.6 2.5 1.1 3.8 1.3 3.2-1.2 6-3.2 7.9-5.8 1-1.4 1.8-2.8 2.3-4.4-.4.9-1 1.7-1.7 2.4s-1.6 1.2-2.5 1.5z\"\n}));\n\nvar _ref13 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st6\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.8 12.2l-.6.2c.2 2.3-.3 4.7-1.4 6.9l2-.7c.6-2.2.5-4.4 0-6.4z\"\n}));\n\nvar _ref14 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st5\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.2 8.9c-1.1.9-2 1.9-2.8 3.1-.1.1-.2.3-.3.4v1.1c0 .2 0 .4.1.6 0 .1 0 .2.1.3 0 .1.1.3.1.4 0 .1.1.2.1.3v.2l.3.9c0 .1.1.1.1.2s0 .1.1.2v.1s0 .1.1.1c0 .1.1.2.2.4 0 0 0 .1.1.1.1.2.1.3.2.5.1.1.1.2.2.3 0 .1.1.1.1.2.2.3.3.5.5.8.1.1.1.2.2.2.3.4.6.8 1 1.2l.3.3c.2.2.5.4.7.6.1.1.2.2.3.2.3.2.6.5.9.7.2.1.3.2.5.3.2.1.3.2.5.3 0 0 .1 0 .1.1.2.1.3.2.5.2-1.1-.7-1.9-1.7-2.4-2.9C7.4 18 6 14.4 6.9 9.1c.3-.1.3-.2.3-.2z\"\n}));\n\nvar _ref15 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st5\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.5 2.4l-3.9 1.4c0 .1-.1.2-.1.3-.1.3-.2.5-.2.8-.2.6-.5 1.3-.8 1.9-.1.1-.1.2-.2.4v.1c-.1.2-.2.3-.3.5-.1.2-.2.3-.3.5-.1.1-.2.3-.3.4-.1.1-.1.2-.2.3-.1 0-.1 0-.2.1s-.2.2-.2.3l-.1.1c-.1.1-.2.3-.3.4v.1c-.1.1-.2.3-.4.4-.1.1-.2.3-.3.4 0 .1-.1.1-.1.1l-.3.3-.4.4-.3.3c.1-.1.3-.1.4-.2l1.7-.6c2.9-2.4 5.2-5.3 6.8-8.5-.1 0-.1-.1 0-.2z\"\n}));\n\nvar _ref16 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st7\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st7\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n className: \"forms-gutenberg_svg__st8\",\n d: \"M22.1 21.1c-.8 1.9-2 3.6-3.5 5.1-1.5 1.5-3.3 2.7-5.3 3.6.1 0 .2-.1.5-.2.2-.1.4-.1.6-.2.3-.1.5-.2.8-.3.1-.1.3-.1.4-.2.1-.1.3-.2.4-.3l.9-.6c.3-.2.6-.4.9-.7.3-.3.6-.5.9-.8.3-.3.6-.6.8-.9.3-.3.5-.6.7-.9l.6-.9c.2-.3.3-.5.5-.8.1-.3.2-.5.3-.7.1-.2.1-.4.2-.6.2-.4.2-.6.3-.6z\"\n})));\n\nvar _ref17 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st7\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st7\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n className: \"forms-gutenberg_svg__st8\",\n d: \"M18.6 3.8l-.2.4-.5 1-.3.6c-.1.2-.2.5-.4.7L16.3 8c-.3.5-.6 1-.9 1.4-.1.2-.2.4-.4.6-.2.2-.3.4-.4.6-.3.4-.5.7-.7.9-.1.2-.2.3-.2.3 2.4-2.3 4.1-5 4.9-8z\"\n})));\n\nvar _ref18 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st7\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st7\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n className: \"forms-gutenberg_svg__st8\",\n d: \"M4.9 16.2c-.4-1.2-.7-2.4-.7-3.6v.6c0 .5 0 1 .1 1.5.1.7.3 1.4.5 2 .1.3.2.7.4 1 .2.4.4.7.6 1.1.2.3.5.7.7 1 .1.2.3.3.4.5l.4.4c.3.3.6.5.9.7.3.2.5.4.8.6.2.2.5.3.8.4l.6.3c.3.1.5.2.5.2-2.8-1.5-4.9-3.8-6-6.7z\"\n})));\n\nvar _ref19 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st9\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5 1.6L11.8 6.2c-3 1.1-5.6 3.1-7.3 5.7.3-.4.6-.7.9-1.1.3-.4.6-.7 1-1 .3-.3.6-.5.9-.8-.1 0 0 0 0 0 .4-.3.8-.6 1.1-.8.4-.3.8-.5 1.2-.7.5-.3 1-.5 1.4-.7.4-.2.9-.3 1.3-.5l1.4-.5 2.7-1 2.7-1c1.1-.4 2.1-.8 3.2-1.2.7-.2 1.3-.5 2-.8l.1.2.1.5.1.5v1l-.1.5-.1.5-.2.5-.2.6-.2.5-.4.4-.3.4-.4.4-.4.4-.4.4-.5.3c1.3-.8 2.3-1.9 2.9-3.3.6-1.3.6-2.7.2-4z\"\n}));\n\nvar _ref20 = /*#__PURE__*/React.createElement(\"g\", {\n className: \"forms-gutenberg_svg__st9\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29 13.1l-1-2.8-4.5 1.6c.8-.2 1.5-.5 2.3-.7.7-.2 1.4-.4 2.1-.7l.7 2.2c.1.4.3.8.4 1.2l.3 1.2c.1.4.1.8.1 1.2v1.2c0 .4-.1.8-.1 1.2-.1.4-.1.8-.3 1.2-.1.4-.2.8-.4 1.2-.1.2-.2.4-.2.6l-.3.6-.3.6-.3.6c-.1.2-.2.4-.3.5-.1.2-.2.4-.4.5l-.4.5-.4.4c-.1.2-.3.3-.4.5l-.5.5c-.3.3-.7.6-1 .9-.3.3-.7.5-1.1.8 2.2-1.3 3.9-3.2 5.1-5.3 1.2-2.1 1.7-4.5 1.5-6.8 0-1-.2-1.9-.6-2.9z\"\n}));\n\nvar _ref21 = /*#__PURE__*/React.createElement(\"text\", {\n transform: \"translate(300 167.5)\",\n fontFamily: \"MyriadPro-Regular\",\n fontSize: 12\n}, \"32\");\n\nvar SvgFormsGutenberg = function SvgFormsGutenberg(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"forms-gutenberg_svg__Layer_1\",\n viewBox: \"0 0 32 32\",\n xmlSpace: \"preserve\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17, _ref18, _ref19, _ref20, _ref21);\n};\n\nexport default SvgFormsGutenberg;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#b3c315\",\n d: \"M70 54h41v18H70z\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#96a40a\",\n d: \"M65 54h5v18h-5z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#b3c315\",\n d: \"M94 50h13v3H94z\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#96a40a\",\n d: \"M89 50h5v3h-5z\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#b3c315\",\n d: \"M74 50h13v3H74z\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#96a40a\",\n d: \"M69 50h5v3h-5z\"\n});\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#b977c7\",\n d: \"M72 92h13v3H72z\"\n});\n\nvar _ref8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#9e5cac\",\n d: \"M67 92h5v3h-5z\"\n});\n\nvar _ref9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#b977c7\",\n d: \"M51 92h13v3H51z\"\n});\n\nvar _ref10 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#9e5cac\",\n d: \"M46 92h5v3h-5z\"\n});\n\nvar _ref11 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#49c3f5\",\n d: \"M92 75h19v19H92z\"\n});\n\nvar _ref12 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#109ad4\",\n d: \"M87 75h5v19h-5z\"\n});\n\nvar _ref13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25 97h86l-18 19H43L25 97z\",\n fill: \"#b977c7\"\n});\n\nvar _ref14 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#9e5cac\",\n d: \"M20 97l18 19h5L25 97z\"\n});\n\nvar _ref15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M111 36H25l18-19h50l18 19z\",\n fill: \"#f1b014\"\n});\n\nvar _ref16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#f09108\",\n d: \"M43 17h-5L20 36h5z\"\n});\n\nvar _ref17 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#f1b014\",\n d: \"M51 12h14v3H51z\"\n});\n\nvar _ref18 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#f09108\",\n d: \"M46 12h5v3h-5z\"\n});\n\nvar _ref19 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#f1b014\",\n d: \"M73 12h14v3H73z\"\n});\n\nvar _ref20 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#f09108\",\n d: \"M68 12h5v3h-5z\"\n});\n\nvar _ref21 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#49c3f5\",\n d: \"M25 39h18v26H25z\"\n});\n\nvar _ref22 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#109ad4\",\n d: \"M20 39h5v26h-5z\"\n});\n\nvar _ref23 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#d25e4d\",\n d: \"M20 68h5v26h-5z\"\n});\n\nvar _ref24 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#e67666\",\n d: \"M25 68h18v26H25z\"\n});\n\nvar SvgGetwid = function SvgGetwid(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 128 128\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17, _ref18, _ref19, _ref20, _ref21, _ref22, _ref23, _ref24);\n};\n\nexport default SvgGetwid;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M201 94.59h12.5H201zm-146 0h12.5H55zm20.038 115.868c-6.137-3.161-13.675-.749-16.836 5.388-3.162 6.137-.75 13.675 5.387 16.837l11.45-22.225zm117.373 22.225c6.137-3.162 8.549-10.7 5.387-16.837-3.161-6.137-10.699-8.549-16.836-5.388l11.449 22.225zM128 33.5c33.318 0 60.5 27.256 60.5 61.09h25c0-47.45-38.185-86.09-85.5-86.09v25zm60.5 61.09c0 33.835-27.182 61.091-60.5 61.091v25c47.315 0 85.5-38.639 85.5-86.09h-25zM128 155.682c-33.319 0-60.5-27.256-60.5-61.09h-25c0 47.451 38.185 86.09 85.5 86.09v-25zm-60.5-61.09C67.5 60.756 94.681 33.5 128 33.5v-25c-47.315 0-85.5 38.64-85.5 86.09h25zm-3.91 138.092c40.937 21.089 87.883 21.089 128.821 0l-11.449-22.225c-33.754 17.389-72.17 17.389-105.924 0L63.59 232.683z\"\n});\n\nvar SvgGhostkit = function SvgGhostkit(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgGhostkit;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"style\", null);\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"guteblock_svg__prefix__Layer_1\"\n}, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"guteblock_svg__prefix__SVGID_1_\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 68.035,\n y1: 10.602,\n x2: 33.222,\n y2: 86.651\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#ffd500\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.258,\n stopColor: \"#ff683e\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.498,\n stopColor: \"#ff1d6b\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.781,\n stopColor: \"#5d25cd\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#3eb9fa\"\n})), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.95 17.49L17.49 31.95c-9.14 9.14-9.14 23.96 0 33.1L34.94 82.5c9.14 9.14 23.96 9.14 33.1 0L82.5 68.04c9.14-9.14 9.14-23.96 0-33.1L65.06 17.49c-9.15-9.14-23.96-9.14-33.11 0z\",\n fill: \"url(#guteblock_svg__prefix__SVGID_1_)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.81 36.74c-3.94 0-7.64 1.53-10.43 4.32l-5.85 5.85a6.488 6.488 0 000 9.17 6.488 6.488 0 009.17 0l5.85-5.85c.43-.43.92-.52 1.26-.52.34 0 .83.09 1.26.52.43.43.52.92.52 1.26 0 .34-.09.83-.52 1.26L52.98 66.83c-.05.05-.1.1-.14.15-.44.47-.96.58-1.32.58-.36.01-.88-.08-1.33-.54L32.98 49.81c-.69-.69-.72-1.79-.09-2.52l14.17-14.17c.05-.05.1-.1.14-.15.67-.71 1.78-.73 2.54-.04l.98.95c2.57 2.49 6.68 2.43 9.17-.14 2.49-2.57 2.43-6.68-.14-9.17l-1.03-1c-.03-.03-.05-.05-.08-.07-5.94-5.57-15.25-5.33-20.82.51l-14.2 14.2c-.05.05-.1.1-.14.15a14.744 14.744 0 00.33 20.61l17.21 17.22c2.8 2.81 6.51 4.34 10.47 4.34h.24c4.01-.06 7.73-1.69 10.49-4.59l14.02-14.02c2.79-2.79 4.32-6.49 4.32-10.43 0-3.94-1.53-7.64-4.32-10.43a14.668 14.668 0 00-10.43-4.32z\",\n fill: \"#fff\"\n}));\n\nvar SvgGuteblock = function SvgGuteblock(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 100 100\",\n \"aria-hidden\": \"true\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2);\n};\n\nexport default SvgGuteblock;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.388 5.75l-6.716-3.91a1.173 1.173 0 00-1.104 0l-.184.092c0 .046.046.092.046.138v2.3c0 .138-.092.276-.276.276h-2.3c-.138 0-.276-.092-.276-.276v-.828l-.506.276v2.53a.297.297 0 01-.276.276H3.22a.297.297 0 01-.276-.276v-.736l-.138.092c-.322.184-.552.598-.552.966v1.15H3.68c.138 0 .23.092.23.23v2.208c0 .138-.092.23-.23.23H2.254v3.956c0 .368.23.782.552.966l6.716 3.91c.322.184.782.184 1.104 0l6.762-3.864c.322-.184.552-.598.552-.966V6.67c0-.322-.23-.736-.552-.92zm-3.358 7.038l-3.864 2.3L6.21 12.88l-.092-4.508 3.864-2.3 3.68 2.07-.46.782-3.22-1.794-2.944 1.748.046 3.45 2.99 1.656 2.944-1.748v-.644l-2.668-.046v-.92l3.542.092v2.07zM2.3 5.014a.099.099 0 01-.092.092h-.782c-.046 0-.046-.046-.046-.092v-.736c0-.046 0-.092.046-.092h.736c.092 0 .138.046.138.092v.736zM1.518 7.222c0 .092-.046.138-.138.138H.138C.046 7.36 0 7.314 0 7.222V5.98c0-.092.046-.138.138-.138H1.38c.092 0 .138.046.138.138v1.242z\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.496 4.048h2.162V6.21H3.496zM7.038 2.254h1.978v1.978H7.038zM3.68 3.174c0 .046-.046.138-.138.138H2.346c-.092 0-.138-.092-.138-.138V1.932c0-.092.046-.138.138-.138h1.196c.092 0 .138.092.138.138v1.242zM6.164 2.622c0 .092-.046.138-.138.138H4.83c-.092 0-.138-.046-.138-.138V1.426c0-.092.046-.138.138-.138h1.196c.092 0 .138.046.138.138v1.196zM8.05 1.38a.099.099 0 01-.092.092H6.9a.099.099 0 01-.092-.092V.322c0-.046.046-.092.092-.092h1.012c.046 0 .092.046.092.092V1.38zM1.564 8.28H3.45v1.886H1.564z\"\n});\n\nvar SvgGutentor = function SvgGutentor(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"-1.1 -0.2 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2);\n};\n\nexport default SvgGutentor;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.145 6.164L7.855 41.837V6.164h32.29z\",\n fillOpacity: 0.502,\n fillRule: \"nonzero\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.145 41.836L7.855 6.163v35.673h32.29z\",\n fillRule: \"nonzero\"\n});\n\nvar SvgKadenceBlocks = function SvgKadenceBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 48 48\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n strokeLinejoin: \"round\",\n strokeMiterlimit: 1.414,\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2);\n};\n\nexport default SvgKadenceBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.706 7.854l.004.01c.734 2.723.003 5.708-1.395 8.169-1.669 2.927-4.184 5.357-7.464 6.256-4.204 1.164-7.863-.293-10.944-3.149C-.097 15.427-1.665 9.8 2.303 5.352a17.352 17.352 0 015.683-4.009A14.566 14.566 0 0112.498.077c1.734-.184 3.298-.075 4.885.732a14.601 14.601 0 013.615 2.583 9.982 9.982 0 012.708 4.462zm-12.659 4.272a.03.03 0 01.025.012l2.536 3.432c.25.338.66.54 1.1.54h1.573c.246 0 .485-.075.682-.213.502-.353.605-1.02.228-1.49l-2.343-2.924a1.188 1.188 0 01.05-1.558l2.045-2.26a.91.91 0 00.24-.61c0-.523-.453-.946-1.011-.946H14.66a1.37 1.37 0 00-1.07.502l-2.534 3.173a.032.032 0 01-.025.012c-.009 0-.016-.007-.016-.015V7.359c0-.69-.598-1.25-1.336-1.25h-.925c-.739 0-.81.56-.81 1.25v7.5c0 .69.071 1.25.81 1.25h.94c.738 0 1.337-.56 1.337-1.25v-2.718c0-.008.007-.015.015-.015z\"\n});\n\nvar SvgKiokenBlocks = function SvgKiokenBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 -0.5 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgKiokenBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.831 7.877l.001-.009-.001-.009a3.675 3.675 0 01-.132-.247l-.057-.115c-.277-.498-.381-.99-1.033-1.064h-.048a.91.91 0 00-.908.862v.002c.674.126 1.252.278 1.813.468l-.092-.027.283.096.147.053s.028 0 .028-.011z\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.982 13.574a68.843 68.843 0 00-.39-7.112l.026.299.07-.019a1.1 1.1 0 00.052-2.09l-.008-.002h-.026a2.306 2.306 0 01-1.149-.861l-.005-.007C19.852-.178 14.3.001 14.3.001S8.75-.178 6.05 3.782c-.28.401-.676.704-1.14.862l-.016.005a1.097 1.097 0 00-.754 1.04v.026-.001l-.001.034c0 .493.335.907.789 1.029l.007.002.045.011a65.7 65.7 0 00-.364 6.801v.012s-9.493 13.012-1.277 17.515c4.733 2.431 6.881-.769 6.881-.769s1.397-1.661-1.784-3.355v-4.609a.638.638 0 01.625-.628h1.212v-.59c0-.275.223-.498.498-.498h1.665a.498.498 0 01.496.498v.59h2.721v-.59c0-.275.223-.498.498-.498h1.665c.271.005.49.226.49.498v.59h1.209c.349 0 .633.28.639.627v4.584c-3.193 1.703-1.784 3.355-1.784 3.355s2.148 3.193 6.879.769c8.222-4.503-1.269-17.515-1.269-17.515zm-1.396-3.313a6.398 6.398 0 01-1.563 3.797l.007-.008c-1.703 2.01-4.407 3.249-6.721 4.432-2.325-1.177-5.026-2.416-6.736-4.432a6.43 6.43 0 01-1.555-3.769l-.001-.02c-.126-2.22.583-5.929 3.044-6.74 2.416-.788 3.947 1.288 4.494 2.227a.863.863 0 001.488.004l.002-.004c.551-.932 2.08-3.008 4.494-2.22 2.474.805 3.174 4.513 3.046 6.734z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.463 10.087h-.028c-.192.026-.121.251-.047.356.254.349.407.787.407 1.26v.018-.001a1.277 1.277 0 01-.633 1.1l-.006.003c-.739.426-1.377-.145-2.054-.398a7.5 7.5 0 00-2.42-.455h-.009v-1.033a4.886 4.886 0 002.551-1.486l.004-.004a.916.916 0 00-.158-1.383l-.003-.002a4.738 4.738 0 00-2.764-.881 4.752 4.752 0 00-2.819.92l.013-.009a.9.9 0 00-.146 1.317l-.001-.001a4.906 4.906 0 002.553 1.53l.033.007v1.05a8.061 8.061 0 00-2.118.343l.057-.015a5.578 5.578 0 00-.908.358l.033-.015c-.519.26-1.037.436-1.58.121a1.218 1.218 0 01-.617-1.058v-.007-.007c0-.47.153-.905.411-1.257l-.004.006c.047-.068.089-.17.026-.241s-.189 0-.27.03a1.592 1.592 0 00-.479.381l-.002.002a1.716 1.716 0 00-.394 1.097v.011-.001a1.93 1.93 0 00.964 1.651l.009.005c.296.178.654.283 1.036.283.364 0 .706-.095 1.001-.263l-.01.005a6.51 6.51 0 013.225-.728h-.01.03c1.277 0 2.382.266 3.266.775.27.159.594.253.94.253h.003c.355-.002.688-.098.974-.265l-.009.005a2.028 2.028 0 001.007-1.75v-.004l.002-.086c0-.625-.34-1.171-.846-1.462l-.008-.004a.388.388 0 00-.199-.07h-.001zm-6.362-1.256c-.238.213-.468.581-.832.345a.933.933 0 01-.161-.136.352.352 0 01.081-.555l.002-.001c.594-.309 1.203-.543 1.884-.49-.324.281-.649.56-.973.837z\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.89 13.578a1.988 1.988 0 01-3.173.005l-.004-.005a.36.36 0 10-.576.427 2.707 2.707 0 004.323.007l.005-.007a.362.362 0 00-.072-.498l-.001-.001a.356.356 0 00-.501.071l-.001.001zM18.507 11.707a.35.35 0 11-.702 0 .35.35 0 01.702 0zM17.389 11.049a.35.35 0 11-.702 0 .35.35 0 01.702 0zM10.798 11.707a.35.35 0 11-.702 0 .35.35 0 01.702 0zM11.918 11.049a.35.35 0 11-.702 0 .35.35 0 01.702 0zM8.773 7.877l-.002-.009.002-.009c.047-.081.089-.164.132-.247.019-.038.036-.079.057-.115.275-.498.379-.99 1.033-1.064h.046c.487 0 .884.382.91.862v.002c-.678.124-1.261.277-1.827.468l.092-.027-.275.096-.1.036-.045.017s-.023 0-.023-.011z\"\n});\n\nvar SvgOtterBlocks = function SvgOtterBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 29 32\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref, _ref2, _ref3, _ref4);\n};\n\nexport default SvgOtterBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0h21v21H0z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.296 9.925c.014.013.029.022.042.034l-2.456 2.455A5.376 5.376 0 014.697 10.9C4.232 10.024 4 9.02 4 7.884c0-1.134.232-2.15.697-3.045.21-.402.456-.76.732-1.081l2.514 2.514c-.245.432-.375.966-.375 1.612 0 .902.243 1.582.728 2.04zm7.782-7.707v12.19l-4.393-4.394c.053-.044.108-.08.159-.13.499-.485.749-1.172.749-2.06 0-.68-.15-1.24-.441-1.679l3.926-3.927z\",\n fill: \"#444\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.593 11.7c-.793 1.312-1.928 1.968-3.405 1.968a4.878 4.878 0 01-2.614-.728 4.966 4.966 0 01-.691-.525L8.338 9.96c.478.433 1.054.654 1.732.654.614 0 1.15-.207 1.615-.598l4.393 4.393V19h-3.485v-7.3zm3.485-9.597v.116l-3.926 3.927a2.476 2.476 0 00-2.082-1.09c-.684 0-1.272.242-1.764.727-.144.143-.26.31-.363.49L5.43 3.759a5.031 5.031 0 011.155-1.01A4.795 4.795 0 019.188 2c1.531 0 2.666.588 3.405 1.764V2.103h3.485z\",\n fill: \"#000\"\n}));\n\nvar SvgQodeblock = function SvgQodeblock(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgQodeblock;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.38 8.8c0-2.42-.88-4.4-2.53-6.05C13.2 1.1 11.11.22 8.8.22s-4.4.88-6.05 2.53C1.1 4.4.22 6.38.22 8.8s.88 4.4 2.53 6.05c1.65 1.65 3.63 2.53 6.05 2.53.99 0 1.98-.11 2.86-.44l-2.42-2.53c-.11-.11-.33-.22-.44-.22-1.54 0-2.75-.55-3.74-1.54-1.1-.99-1.54-2.31-1.54-3.85s.55-2.86 1.54-3.85c.99-.99 2.2-1.54 3.74-1.54s2.75.55 3.74 1.54c.99.99 1.54 2.31 1.54 3.85 0 .77-.11 1.54-.44 2.2-.22.55-.88.66-1.32.22-1.21-1.21-3.08-1.32-4.4-.22l2.75 2.86 2.31 2.42c.99.99 2.64 1.1 3.74.11l.33-.33-1.43-1.43c-.22-.22-.22-.44 0-.66a8.383 8.383 0 001.76-5.17z\"\n});\n\nvar SvgQubely = function SvgQubely(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"-1 -1 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgQubely;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.982 16.711a4.48 4.48 0 01-7.965 0A4.972 4.972 0 0110 14.709c1.629 0 3.074.789 3.982 2.002zm-.748-7.657c-.314 2.56 1.248 2.919 1.248 5.603a4.5 4.5 0 01-.205 1.344 5.635 5.635 0 00-8.554 0 4.5 4.5 0 01-.205-1.344c0-2.684 1.563-3.043 1.247-5.603C6.403 6.126 2.45 6.589 2.45 3.72A2.857 2.857 0 015.308.862C7.017.862 8.073 2.42 10 2.42c1.926 0 2.982-1.558 4.691-1.558a2.857 2.857 0 012.857 2.858c.001 2.869-3.952 2.406-4.314 5.334zM8.557 4.107h-.708a.9.9 0 01-.901.9.9.9 0 01-.901-.9h-.708a1.609 1.609 0 103.218 0zm.979 7.141a.568.568 0 00-.566-.568.567.567 0 10.566.568zm2.062 0a.569.569 0 00-.568-.568.567.567 0 10.568.568zm3.062-7.141h-.707a.9.9 0 01-1.802 0h-.707a1.61 1.61 0 003.216 0z\"\n});\n\nvar SvgSnowMonkeyBlocks = function SvgSnowMonkeyBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgSnowMonkeyBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.08 136L23 176.66a4.75 4.75 0 003.53 8.15l86.91.14zM177.91 128.39a17 17 0 00-5-12.07L71.39 14.72 26.61 59.5a17 17 0 00-5 12.05 17 17 0 005 12.05l101.55 101.6v-.07l44.76-44.76a17 17 0 005-12zM172.95 14.69H86.12l49.42 49.62 40.92-41.16a5 5 0 00-3.51-8.46z\"\n});\n\nvar SvgStackableUltimateGutenbergBlocks = function SvgStackableUltimateGutenbergBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 200 200\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgStackableUltimateGutenbergBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.9.3C12.2.3.3 12.2.3 26.8s11.9 26.5 26.5 26.5c14.7 0 26.5-11.9 26.5-26.5S41.5.3 26.9.3zm-2 27.7c0 1.1-.1 2.2-.4 3.2-.3 1-.7 1.8-1.3 2.6-.6.7-1.3 1.3-2.2 1.7-.9.4-2 .6-3.2.6-1.3 0-2.4-.2-3.3-.7-.9-.4-1.7-1-2.2-1.8-.6-.7-1-1.6-1.3-2.6-.3-1-.4-2-.4-3.1v-8.3h3.8V28c0 .6.1 1.2.2 1.8s.3 1.1.6 1.5c.3.4.6.8 1.1 1.1s1 .4 1.6.4 1.2-.1 1.6-.4.8-.6 1.1-1.1c.3-.4.5-1 .6-1.5.1-.6.2-1.2.2-1.8v-8.3h3.8c-.3 0-.3 8.3-.3 8.3zm17.2 8H39v-1.6c-1.2 1.1-2.7 1.7-4.3 1.7-1.1 0-2.1-.2-3-.6-.9-.4-1.8-1-2.5-1.7s-1.3-1.6-1.7-2.6c-.4-1-.6-2.2-.6-3.4 0-1.1.2-2.2.6-3.2.4-1 1-1.9 1.7-2.6.7-.7 1.6-1.3 2.6-1.7 1-.4 2.1-.6 3.2-.6 1.5 0 2.8.3 4 1 1.1.6 2 1.5 2.5 2.6l-2.8 2.1c-.4-.7-.9-1.3-1.6-1.7-.7-.4-1.4-.6-2.3-.6-.6 0-1.2.1-1.7.4s-1 .6-1.3 1.1-.7 1-.8 1.6c-.2.6-.3 1.2-.3 1.9s.1 1.4.3 1.9c.2.6.5 1.1.9 1.5.4.4.8.8 1.4 1 .5.2 1.1.4 1.8.4 1.5 0 2.8-.7 4-2v-.5h-3.2v-2.7h6.3c-.1-.2-.1 8.3-.1 8.3z\"\n});\n\nvar SvgUltimateAddonsForGutenberg = function SvgUltimateAddonsForGutenberg(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 54 54\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgUltimateAddonsForGutenberg;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.9 10v4.1c0 .7-.3 1.2-.9 1.6-2.4 1.4-4.7 2.7-7.1 4.1-.6.4-1.3.4-1.9 0-2.3-1.4-4.6-2.8-7-4.1-.6-.4-.9-.9-.9-1.6V6c0-.7.3-1.2.9-1.6C4.4 3 6.7 1.6 9.1.3c.6-.4 1.3-.4 1.9 0 2.3 1.3 4.6 2.7 7 4 .6.4.9.9.9 1.6V10zm-8.7-6c-.5 0-1 .2-1.5.4-.3.2-.7.4-1.1.6-.9.6-1.8 1.1-2.8 1.7-.2.1-.4.4-.4.7 0 .3.2.5.4.6.3.2.6.1.9 0C7 7.3 8.2 6.5 9.5 5.8c.8-.4 1.7-.2 2.1.5.4.7.1 1.6-.6 2.1-.5.3-1 .6-1.4.8-.8.5-1.6.9-2.5 1.4-.3.2-.4.5-.4.8.1.3.3.6.6.6.2 0 .4 0 .6-.1 1.3-.7 2.5-1.5 3.8-2.2.7-.4 1.6-.2 2 .4.5.7.3 1.7-.5 2.2-1.3.7-2.6 1.5-3.8 2.2-.4.2-.5.7-.3 1.1.2.4.7.5 1.1.3 1.3-.8 2.6-1.5 4-2.3 1.2-.7 1.7-2.1 1.3-3.4-.3-1.1-1-1.8-2.1-2.1-.1 0-.2-.1-.1-.2.1-.2.1-.4.1-.6C13.4 5.5 12 4 10.2 4zm-5.8 7.3c0 .2 0 .4.1.7.5 2 2.7 3 4.5 1.9 1.3-.7 2.6-1.5 3.8-2.2.4-.2.5-.7.3-1.1-.2-.4-.7-.5-1.1-.3-.4.2-.7.4-1.1.6-.9.5-1.8 1-2.7 1.6-.6.3-1.1.3-1.7-.1-.9-.6-.8-1.9.2-2.5 1.3-.7 2.6-1.5 3.8-2.2.5-.2.7-.7.4-1-.2-.4-.7-.5-1.1-.3-1.3.7-2.6 1.5-3.9 2.2-1 .6-1.4 1.5-1.5 2.7z\"\n});\n\nvar SvgUltimateBlocks = function SvgUltimateBlocks(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgUltimateBlocks;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 0C4 0 0 4 0 9s4 9 9 9 9-4 9-9-4-9-9-9zM6.5 12.6c-.1.1-.1.1-.2.1l-2 .1c-.2 0-.3-.1-.4-.3l-.1-2c0-.1 0-.2.1-.2l5.5-6.4c.1-.1.3-.2.5 0L12 5.7c.1.1.2.3 0 .5l-5.5 6.4zm7.5.2H9.5c-.2 0-.4-.2-.4-.5 0-.2.2-.5.4-.5H14c.2 0 .4.2.4.5s-.2.5-.4.5zm0-1.8h-2.8c-.2 0-.4-.2-.4-.5 0-.2.2-.5.4-.5H14c.2 0 .4.2.4.5s-.2.5-.4.5zm.1-1.8h-1.2c-.2 0-.3-.2-.3-.5s.1-.5.3-.5h1.2c.2 0 .3.2.3.5s-.1.5-.3.5z\"\n});\n\nvar SvgUltimatePost = function SvgUltimatePost(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 18 18\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgUltimatePost;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01A8.87 8.87 0 0110 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z\"\n});\n\nvar SvgWordpress = function SvgWordpress(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"-2 -2 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _ref);\n};\n\nexport default SvgWordpress;","/**\n * External dependencies\n */\nimport React, {Component} from 'react';\n\nimport SVGRedux from '../../assets/img/icon.svg'\nimport SVGAcfBlocks from './images/acf-blocks.svg'\nimport SVGAtomicBlocks from './images/atomic-blocks.svg'\nimport SVGAdvancedCustomFields from './images/advanced-custom-fields.svg'\nimport SVGAdvancedGutenbergBlocks from './images/advanced-gutenberg-blocks.svg'\nimport SVGBlockOptions from './images/block-options.svg'\nimport SVGBlockSlider from './images/block-slider.svg'\nimport SVGCoblocks from './images/coblocks.svg'\nimport SVGCreativeBlocks from './images/creative-blocks.svg'\nimport SVGEditorPlus from './images/editorplus.svg'\nimport SVGElegantBlocks from './images/elegant-blocks.svg'\nimport SVGEnhancedBlocks from './images/enhanced-blocks.svg'\nimport SVGEssentialBlocks from './images/essential-blocks.svg'\nimport SVGFormsGutenberg from './images/forms-gutenberg.svg'\nimport SVGGetwid from './images/getwid.svg'\nimport SVGGhostkit from './images/ghostkit.svg'\nimport SVGGuteblock from './images/guteblock.svg'\n// import SVGGutenbergBlock from './images/gutenberg-blocks.png'\nimport SVGGutentor from './images/gutentor.svg'\nimport SVGKadenceBlocks from './images/kadence-blocks.svg'\nimport SVGKiokenBlocks from './images/kioken-blocks.svg'\nimport SVGOtterBlocks from './images/otter-blocks.svg'\nimport SVGQodeblock from './images/qodeblock.svg'\nimport SVGQubely from './images/qubely.svg'\nimport SVGSnowMonkeyBlocks from './images/snow-monkey-blocks.svg'\nimport SVGStackableUltimateGutenbergBlocks from './images/stackable-ultimate-gutenberg-blocks.svg'\nimport SVGUltimateAddonsForGutenberg from './images/ultimate-addons-for-gutenberg.svg'\nimport SVGUltimateBlocks from './images/ultimate-blocks.svg'\nimport SVGUltimatePost from './images/ultimate-post.svg'\nimport SVGWordPress from './images/wordpress.svg'\n\n// export const gutentor = () => {\n// \treturn <SVGGutentorIcon width=\"20\" height=\"20\"/>\n// }\n\n\nexport const redux = () => { return <SVGRedux width=\"20\" height=\"20\"/> }\nexport const acfblocks = () => { return <SVGAcfBlocks width=\"20\" height=\"20\"/> }\nexport const atomicblocks = () => { return <SVGAtomicBlocks width=\"20\" height=\"20\"/> }\nexport const advancedcustomfields = () => { return <SVGAdvancedCustomFields width=\"20\" height=\"20\"/> }\nexport const advancedgutenbergblocks = () => { return <SVGAdvancedGutenbergBlocks width=\"20\" height=\"20\"/> }\nexport const blockoptions = () => { return <SVGBlockOptions width=\"20\" height=\"20\"/> }\nexport const blockslider = () => { return <SVGBlockSlider width=\"20\" height=\"20\"/> }\nexport const coblocks = () => { return <SVGCoblocks width=\"20\" height=\"20\"/> }\nexport const creativeblocks = () => { return <SVGCreativeBlocks width=\"20\" height=\"20\"/> }\nexport const editorplus = () => { return <SVGEditorPlus width=\"20\" height=\"20\"/> }\nexport const elegantblocks = () => { return <SVGElegantBlocks width=\"20\" height=\"20\"/> }\nexport const enhancedblocks = () => { return <SVGEnhancedBlocks width=\"20\" height=\"20\"/> }\nexport const essentialblocks = () => { return <SVGEssentialBlocks width=\"20\" height=\"20\"/> }\nexport const formsgutenberg = () => { return <SVGFormsGutenberg width=\"20\" height=\"20\"/> }\nexport const getwid = () => { return <SVGGetwid width=\"20\" height=\"20\"/> }\nexport const ghostkit = () => { return <SVGGhostkit width=\"20\" height=\"20\"/> }\nexport const guteblock = () => { return <SVGGuteblock width=\"20\" height=\"20\"/> }\nexport const gutenbergblock = () => { return <SVGGutenbergBlock width=\"20\" height=\"20\"/> }\nexport const gutentor = () => { return <SVGGutentor width=\"20\" height=\"20\"/> }\nexport const kadenceblocks = () => { return <SVGKadenceBlocks width=\"20\" height=\"20\"/> }\nexport const kiokenblocks = () => { return <SVGKiokenBlocks width=\"20\" height=\"20\"/> }\nexport const otterblocks = () => { return <SVGOtterBlocks width=\"20\" height=\"20\"/> }\nexport const qodeblock = () => { return <SVGQodeblock width=\"20\" height=\"20\"/> }\nexport const qubely = () => { return <SVGQubely width=\"20\" height=\"20\"/> }\nexport const snowmonkeyblocks = () => { return <SVGSnowMonkeyBlocks width=\"20\" height=\"20\"/> }\nexport const stackableultimategutenbergblocks = () => { return <SVGStackableUltimateGutenbergBlocks width=\"20\" height=\"20\"/> }\nexport const ultimateaddonsforgutenberg = () => { return <SVGUltimateAddonsForGutenberg width=\"20\" height=\"20\"/> }\nexport const ultimateblocks = () => { return <SVGUltimateBlocks width=\"20\" height=\"20\"/> }\nexport const ultimatepost = () => { return <SVGUltimatePost width=\"20\" height=\"20\"/> }\nexport const wordpress = () => { return <SVGWordPress width=\"20\" height=\"20\"/> }\n\nimport SVGReduxTemplatesIcon from '../../assets/img/icon.svg'\nimport SVGReduxTemplatesColorIcon from '../../assets/img/icon-color.svg'\n//\n//\n// export const reqSvgs = require.context ( './images/third-party', true, /\\.svg$/ )\n//\n// export const reqSvgsKeys = reqSvgs.keys()\n//\n// const iconLoader = (path) => import(path);\n//\n// export const icons = {\n// \t'redux': iconLoader('../../assets/img/icon.svg'),\n// \t'forms-gutenberg': iconLoader('./images/forms-gutenberg.svg')\n// }\n//\n// export const svgs = reqSvgs\n// \t.keys ()\n// \t.reduce ( ( images, path ) => {\n// \t\timages[path.replace('./', '').replace('.svg', '')] = reqSvgs ( path )\n// \t\treturn images\n// \t}, {} )\n//\n// function importAll(r) {\n// \tlet images = {};\n// \tr.keys().map((item, index) => { images[item.replace('./', '').replace('.svg', '')] = r(item); });\n// \treturn images;\n// }\n// export const images = importAll(require.context( './images/third-party', false, /\\.(svg)$/));\n\n\n\n/**\n * WordPress dependencies\n */\nimport {cloneElement, render} from '@wordpress/element'\nimport domReady from '@wordpress/dom-ready'\nimport {updateCategory} from '@wordpress/blocks'\n\nexport const colorizeIcon = SvgIcon => {\n\treturn cloneElement(SvgIcon, {\n\t\tfill: 'url(#redux-gradient)',\n\t\tclassName: 'redux-icon-gradient',\n\t})\n}\n\nexport const thirdPartyIcon = (icon) => {\n\tif (icon) {\n\t\treturn <icon width=\"20\" height=\"20\"/>\n\t}\n}\n\n// Add an icon to our block category.\nif (typeof window.wp.blocks !== 'undefined' && typeof window.wp.blocks.updateCategory !== 'undefined') {\n\tupdateCategory(redux_templates.i18n, {\n\t\ticon: colorizeIcon(<SVGReduxTemplatesIcon className=\"components-panel__icon\" width=\"20\" height=\"20\"/>),\n\t})\n}\n\n// Add our SVG gradient placeholder definition that we'll reuse.\ndomReady(() => {\n\tconst redux_templatesGradient = document.createElement('DIV')\n\tdocument.querySelector('body').appendChild(redux_templatesGradient)\n\trender(\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tclassName=\"redux-gradient\"\n\t\t\theight=\"0\"\n\t\t\twidth=\"0\"\n\t\t\tstyle={{opacity: 0}}\n\t\t>\n\t\t\t<defs>\n\t\t\t\t<linearGradient id=\"redux-gradient\">\n\t\t\t\t\t<stop offset=\"0%\" stopColor=\"#8c33da\" stopOpacity=\"1\"/>\n\t\t\t\t\t<stop offset=\"100%\" stopColor=\"#f34957\" stopOpacity=\"1\"/>\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t</svg>,\n\t\tredux_templatesGradient\n\t)\n})\n\nexport const ReduxTemplatesIcon = () => {\n\treturn <SVGReduxTemplatesIcon width=\"20\" height=\"20\"/>\n}\n\nexport const ReduxTemplatesIconColor = () => {\n\treturn <SVGReduxTemplatesColorIcon width=\"20\" height=\"20\"/>\n}\n\nexport const ReduxTemplatesIconColorize = () => {\n\treturn colorizeIcon(<SVGReduxTemplatesIcon width=\"20\" height=\"20\"/>)\n}\nexport const core = () => {\n\treturn <SVGWordPress width=\"20\" height=\"20\"/>\n}\n//\n// export const AdvancedGutenbergBlocks = () => {\n// \treturn <SVGAdvancedGutenbergBlocksIcon width=\"20\" height=\"20\"/>\n// }\n// export const advancedgutenbergblocks = () => <AdvancedGutenbergBlocks/>\n//\n// export const AdvancedGutenberg = () => {\n// \treturn <SVGAdvancedGutenbergIcon width=\"20\" height=\"20\"/>\n// }\n// export const advancedgutenbergIcon = () => <AdvancedGutenberg/>\n//\n// export const AtomicBlocks = () => {\n// \treturn <SVGAtomicBlocksIcon width=\"20\" height=\"20\"/>\n// }\n// export const atomicblocks = () => <AtomicBlocks/>\n//\n// export const CoBlocks = () => {\n// \treturn <SVGCoBlocksIcon width=\"20\" height=\"20\"/>\n// }\n// export const Coblocks = () => <CoBlocks/>\n// export const coblocks = () => <CoBlocks/>\n//\n// export const Stackable = () => {\n// \treturn <SVGStackableIcon width=\"20\" height=\"20\"/>\n// }\n// export const stackable = () => <Stackable/>\n// export const stackableultimategutenbergblocks = () => <Stackable/>\n//\n// export const Qubely = () => {\n// \treturn <SVGQubelyIcon width=\"20\" height=\"20\"/>\n// }\n// export const qubely = () => <Qubely/>\n//\n// export const Kioken = () => {\n// return <SVGKiokenIcon width=\"20\" height=\"20\"/>\n// }\n// export const kioken = () => <Kioken/>\n// export const kiokenblocks = () => <Kioken/>\n//\n// export const kadenceblocks = () => {\n// \treturn <SVGKadenceIcon width=\"20\" height=\"20\"/>\n// }\n//\n// export const CreativeBlocks = () => {\n// \treturn <SVGCreativeBlocksIcon width=\"20\" height=\"20\"/>\n// }\n// export const creativeblocks = () => <CreativeBlocks/>\n// export const qb = () => <CreativeBlocks/>\n//\n// export const EssentialBlocks = () => {\n// \treturn <SVGEssentialBlocksIcon width=\"20\" height=\"20\"/>\n// }\n// export const essentialblocks = () => <EssentialBlocks/>\n// export const eb = () => <EssentialBlocks/>\n//\n// export const UltimateAddonsForGutenberg = () => {\n// \treturn <SVGUltimateAddonsForGutenbergIcon width=\"20\" height=\"20\"/>\n// }\n// export const ultimateaddonsforgutenberg = () => <UltimateAddonsForGutenberg/>\n//\n//\n// export const UltimateBlocks = () => {\n// \treturn <SVGUltimateBlocksIcon width=\"20\" height=\"20\"/>\n// }\n// export const ultimateblocks = () => <UltimateBlocks/>\n//\n// export const gutentor = () => {\n// \treturn <SVGGutentorIcon width=\"20\" height=\"20\"/>\n// }\n//\n//\n// export const GutenbergForms = () => {\n// \treturn <SVGGutenbergFormsIcon width=\"20\" height=\"20\"/>\n// }\n// export const gutenbergforms = () => <GutenbergForms/>\n// export const formsgutenberg = () => <GutenbergForms/>\n//\n","/**\n * Library Button\n */\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready'\nimport { render } from '@wordpress/element'\n\n/**\n * External dependencies\n */\nimport './editor.scss'\nimport './blocks/blocks'\nimport './plugins/sidebar-share'\nimport './plugins/share-block-btn'\nimport './plugins/export'\nimport './plugins/export-page-menu-item'\nimport './plugins/library-context-menu-item'\nimport TooltipBox from './challenge/tooltip/TooltipBox';\nimport {handlingLocalStorageData} from './stores/helper';\nimport ReduxTemplatesChallenge from './challenge'\nimport {ModalManager} from './modal-manager';\nimport LibraryModal from './modal-library';\nimport './custom-css'\nimport WelcomeGuide from './components/welcome-guide';\n\ndomReady(() => {\n setTimeout(() => {\n const challengeDiv = document.createElement('div');\n challengeDiv.className = 'challenge-tooltip-holder';\n document.body.appendChild(challengeDiv);\n const challengeWrapperDiv = document.createElement('div');\n challengeWrapperDiv.className = 'challenge-wrapper';\n document.body.appendChild(challengeWrapperDiv);\n\n if (window.location.hash == '#redux_challenge=1') {\n window.location.hash = '';\n ModalManager.open(<LibraryModal />);\n }\n\t\tif (window.location.hash == '#redux_templates=1') {\n\t\t\twindow.location.hash = '';\n\t\t\tModalManager.open(<LibraryModal />);\n }\n\n // For frontenberg, we open the dialog automatically.\n if (document.body.classList.contains( 'wp-admin' ) === false) {\n ModalManager.open(<LibraryModal />);\n }\n render(<ReduxTemplatesChallenge />, challengeWrapperDiv);\n render(<TooltipBox />, challengeDiv);\n\t\trender(<WelcomeGuide />, challengeDiv)\n handlingLocalStorageData();\n }, 500)\n});\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n'\nimport { ModalManager } from '~redux-templates/modal-manager';\nimport Form from '@rjsf/core';\nimport {BlockPreview} from '@wordpress/block-editor';\nconst {useState} = wp.element;\nconst {apiFetch} = wp;\n\nfunction FeedbackDialog(props) {\n const {title, description, schema, uiSchema, headerImage, headerIcon, data, ignoreData, endpoint, width, buttonLabel} = props;\n const {closeModal, onSuccess} = props;\n\n const [loading, setLoading] = useState(false);\n const [errorMessage, setErrorMessage] = useState(null);\n\n const onSubmit = ({formData}) => {\n const path = `redux/v1/templates/${endpoint ? endpoint : 'feedback'}`;\n if (loading) return;\n setLoading(true);\n apiFetch({\n path,\n method: 'POST',\n data: ignoreData ? formData : {...data, ...formData}\n }).then(data => {\n setLoading(false);\n if (data.success) {\n setErrorMessage(null);\n if (onSuccess) onSuccess(data); else onCloseModal();\n } else {\n console.log('There was an error: ', data);\n setErrorMessage(__('An unexpected error occured, please try again later.', redux_templates.i18n));\n }\n }).catch(err => {\n setLoading(false);\n console.log('There was an error: ', err);\n setErrorMessage(__('An unexpected error occured, please try again later.', redux_templates.i18n));\n });\n }\n\n const onCloseModal = () => {\n if (closeModal) closeModal(); else ModalManager.closeFeedback();\n }\n\n const style = width ? {width} : null;\n const wrapperClassname = width ? 'redux-templates-modal-wrapper feedback-popup-wrapper less-margin' : 'redux-templates-modal-wrapper feedback-popup-wrapper';\n\n return (\n <div className=\"redux-templates-modal-overlay\">\n <div className={wrapperClassname} style={style}>\n <div className=\"feedback-popup-header feedback-popup-header-contact\">\n {headerImage}\n {headerIcon}\n <a className=\"feedback-popup-close\" onClick={onCloseModal}>\n <i className='fas fa-times' />\n </a>\n </div>\n <div className=\"feedback-popup-content\">\n <h3>{title}</h3>\n {errorMessage && <p className=\"error-message\">{errorMessage}</p>}\n <p>{description}</p>\n <div className=\"col-wrapper\">\n <Form schema={schema} uiSchema={uiSchema} onSubmit={onSubmit}>\n <button className=\"feedback-popup-btn feedback-popup-rate-btn\" type=\"submit\">\n {loading && <i className=\"fas fa-spinner fa-pulse\"/>}\n {buttonLabel}\n </button>\n </Form>\n { data && data.editor_blocks &&\n <div className=\"preview-panel\">\n <div className=\"redux-templates-block-preview-hover\" />\n <BlockPreview blocks={data.editor_blocks} />\n </div>\n }\n </div>\n </div> {/* /.feedback-popup-content */}\n </div>\n </div>\n );\n}\n\nexport default FeedbackDialog;\n","import React from 'react';\nconst {useState, useEffect, useRef} = wp.element;\nconst {Spinner} = wp.components;\nimport TextTransition, { presets } from 'react-text-transition';\nconst {__} = wp.i18n\n\nconst MESSAGE_DELAY_MILLISECONDS = 4000;\n\nconst MESSAGES_LIST = [\n __('Please wait while your template is prepared.', redux_templates.i18n),\n __('Fetching the template.', redux_templates.i18n),\n __('We\\'re getting closer now.', redux_templates.i18n),\n __('Wow, this is taking a long time.', redux_templates.i18n),\n __('Gah, this should be done by now!', redux_templates.i18n),\n __('Really, this should be done soon.', redux_templates.i18n),\n __('Are you sure your internet is working?!', redux_templates.i18n),\n __('Give up, it looks like it didn\\'t work...', redux_templates.i18n),\n];\n\nfunction useInterval(callback, delay) {\n const savedCallback = useRef();\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n\n if (delay !== null) {\n let id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}\n\nexport default function ImportingStep(props) {\n const [messageIndex, setMessageIndex] = useState(0);\n const [loadingMessage, setLoadingMessage] = useState(MESSAGES_LIST[0]);\n\n useInterval(() => {\n if (messageIndex === MESSAGES_LIST.length) return;\n setMessageIndex(messageIndex => messageIndex + 1);\n setLoadingMessage([MESSAGES_LIST[messageIndex + 1]]);\n }, MESSAGE_DELAY_MILLISECONDS)\n\n return (\n <div className=\"redux-templates-modal-body\">\n <div className=\"redux-templates-import-wizard-spinner-wrapper\">\n <TextTransition\n text={loadingMessage}\n springConfig={presets.gentle}\n />\n <Spinner/>\n </div>\n </div>\n );\n};\n","import {pluginInfo} from '~redux-templates/stores/dependencyHelper';\n\nconst {apiFetch} = wp;\nconst {compose} = wp.compose;\nconst {withDispatch} = wp.data;\nconst {Fragment, useState} = wp.element;\nconst {__} = wp.i18n;\n\nfunction InstallPluginStep(props) {\n\n const {missingPlugins, toNextStep, onCloseWizard} = props;\n const {setInstalledDependencies} = props;\n const [installingPlugin, setInstallingPlugin] = useState(null);\n const [installedList, setInstalledList] = useState([]);\n const [failedList, setFailedList] = useState([]);\n const [waitingList, setWaitingList] = useState(missingPlugins);\n\n const preInstallInit = () => {\n setInstalledList([]);\n setFailedList([]);\n setWaitingList(missingPlugins);\n setInstallingPlugin(null);\n setInstalledDependencies(false);\n }\n\n const onInstallPlugins = async () => {\n preInstallInit();\n let localInstalledList = [];\n let localFailedList = [];\n let localWaitingList = [...waitingList];\n for (let pluginKey of missingPlugins) {\n const pluginInstance = redux_templates.supported_plugins[pluginKey];\n localWaitingList = localWaitingList.filter(key => key !== pluginKey)\n setWaitingList(localWaitingList);\n if (!pluginKey || !pluginInstance) {\n setInstallingPlugin(null);\n break;\n }\n setInstallingPlugin({...pluginInstance, pluginKey});\n const reduxProSurfix = (pluginInstance.redux_pro) ? '&redux_pro=1' : '';\n await apiFetch({\n path: 'redux/v1/templates/plugin-install?slug=' + pluginKey + reduxProSurfix,\n }).then(res => {\n if (res.success) {\n setInstalledDependencies(true);\n localInstalledList = [...localInstalledList, pluginKey];\n setInstalledList(localInstalledList);\n if (localWaitingList.length === 0) setInstallingPlugin(null);\n } else {\n localFailedList = [...localFailedList, pluginKey]\n setFailedList(localFailedList);\n if (localWaitingList.length === 0) setInstallingPlugin(null);\n }\n })\n .catch(res => {\n localFailedList = [...localFailedList, pluginKey]\n setFailedList(localFailedList);\n if (localWaitingList.length === 0) setInstallingPlugin(null);\n });\n }\n }\n if (waitingList.length === 0 && failedList.length === 0 && installingPlugin === null)\n toNextStep();\n return (\n\n <Fragment>\n <div className=\"redux-templates-modal-body\">\n <h5>{__('Install Required Plugins', redux_templates.i18n)}</h5>\n <p>{__('Plugins needed to import this template are missing. Required plugins will be installed and activated automatically.', redux_templates.i18n)}</p>\n {\n (installingPlugin === null && failedList.length > 0) &&\n (<p className='error installError'>\n\t {__('The following plugin(s) failed to install properly. Please manually install them yourself before attempting another import.', redux_templates.i18n)}\n </p>)\n }\n\n <ul className=\"redux-templates-import-progress\">\n {\n missingPlugins &&\n missingPlugins.map(pluginKey => {\n\n let plugin = pluginInfo(pluginKey)\n\n if (installingPlugin && installingPlugin.pluginKey === pluginKey)\n return (\n <li className=\"installing\" key={installingPlugin.pluginKey}>{installingPlugin.name}\n <i className=\"fas fa-spinner fa-pulse\"/></li>);\n if (failedList.includes(pluginKey))\n return (<li className=\"failure\" key={pluginKey}>{plugin.name} <a href={plugin.url} target=\"_blank\"><i className=\"fas fa-external-link-alt\"/></a></li>);\n if (waitingList.includes(pluginKey))\n return (<li className=\"todo\" key={pluginKey}>{plugin.name} {plugin.url &&\n <a href={plugin.url} target=\"_blank\"><i className=\"fas fa-external-link-alt\"/></a>\n }</li>);\n if (installedList.includes(pluginKey))\n return (<li className=\"success\" key={pluginKey}>{plugin.name} <i\n className=\"fas fa-check-square\"/></li>);\n })\n }\n </ul>\n </div>\n <div className=\"redux-templates-modal-footer\">\n {waitingList.length !== 0 &&\n <button className=\"button button-primary\" disabled={installingPlugin !== null}\n onClick={() => onInstallPlugins()}>\n {installingPlugin !== null && <i className=\"fas fa-spinner fa-pulse\"/>}\n <span>{__('Install', redux_templates.i18n)}</span>\n </button>\n }\n <button className=\"button button-secondary\" disabled={installingPlugin !== null}\n onClick={onCloseWizard}>\n {__('Cancel', redux_templates.i18n)}\n </button>\n </div>\n </Fragment>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setInstalledDependencies\n } = dispatch('redux-templates/sectionslist');\n return {\n setInstalledDependencies\n };\n })\n])(InstallPluginStep);\n","import {pluginInfo} from '~redux-templates/stores/dependencyHelper';\nimport {Tooltip} from '@wordpress/components';\n\nconst {apiFetch} = wp;\nconst {compose} = wp.compose;\nconst {withDispatch} = wp.data;\nconst {Fragment, useState} = wp.element;\nconst {__} = wp.i18n;\n\nfunction OptionStep(props) {\n\n const {setImportToAppend, toNextStep, onCloseWizard} = props;\n\n const onNextStep = (isToAppend) => {\n setImportToAppend(isToAppend);\n toNextStep();\n }\n\n return (\n\n <Fragment>\n <div className=\"redux-templates-modal-body\">\n <h5>{__('Append or Replace', redux_templates.i18n)}</h5>\n <p>{__('You have existing content on this page. How would you like to handle the import of this page template?', redux_templates.i18n)}</p>\n\t <div style={{textAlign:'center', marginTop: '30px'}}>\n\t\t {/*<Tooltip text={__('This template will be added to the bottom of the existing content.', redux_templates.i18n)} position=\"bottom center\">*/}\n\t\t\t <button className=\"button button-primary\" onClick={() => onNextStep(true)} style={{marginRight: '10px'}}>\n\t\t\t\t {__('Append to Content', redux_templates.i18n)}\n\t\t\t </button>\n\t\t {/*</Tooltip>*/}\n\t\t {/*<Tooltip text={__('All the existing content will be replaced with this new template.', redux_templates.i18n)} position=\"top right\">*/}\n\t\t\t <button className=\"button button-primary\" onClick={() => onNextStep(false)}>\n\t\t\t\t {__('Replace all Content', redux_templates.i18n)}\n\t\t\t </button>\n\t\t {/*</Tooltip>*/}\n\t </div>\n </div>\n <div className=\"redux-templates-modal-footer\">\n <button className=\"button button-secondary\" onClick={onCloseWizard}>\n {__('Cancel', redux_templates.i18n)}\n </button>\n </div>\n </Fragment>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setImportToAppend\n } = dispatch('redux-templates/sectionslist');\n return {\n setImportToAppend\n };\n })\n])(OptionStep);\n","const {Fragment} = wp.element;\nconst {__} = wp.i18n;\n\nimport ReduxTemplatesPremiumBox from './ReduxTemplatesPremiumBox';\nimport {pluginInfo} from '~redux-templates/stores/dependencyHelper';\nconst REDUXTEMPLATES_PRO_KEY = 'redux-pro';\nexport default function ProPluginStep(props) {\n const {missingPros, onCloseWizard} = props;\n\n if ( missingPros.indexOf(REDUXTEMPLATES_PRO_KEY) >= 0 ) return <ReduxTemplatesPremiumBox />\n return (\n <Fragment>\n <div className=\"redux-templates-modal-body\">\n <h5>{__('Additional Plugins Required', redux_templates.i18n)}</h5>\n <p>{__('The following premium plugin(s) are required to import this template:', redux_templates.i18n)}</p>\n <ul className=\"redux-templates-import-progress\">\n {\n missingPros.map(pluginKey => {\n let plugin = pluginInfo(pluginKey)\n return (\n <li className='installing' key={pluginKey}>\n {plugin.name} {plugin.url &&\n <a href={plugin.url} target=\"_blank\"><i className=\"fas fa-external-link-alt\"/></a>\n }\n </li>);\n })\n }\n </ul>\n\n </div>\n <div className=\"redux-templates-modal-footer\">\n <a className=\"button button-secondary\" onClick={onCloseWizard}>\n {__('Close', redux_templates.i18n)}\n </a>\n </div>\n </Fragment>\n );\n}\n\n","const {__} = wp.i18n\n\n\nexport default function ReduxTemplatesActivateBox({onActivateRedux, activating}) {\n\n return (\n <div className=\"redux-templates-modal-body\">\n <div className=\"section-box premium-box\">\n <h3>{__('Registration Required to Import Templates', redux_templates.i18n)}</h3>\n <p>{__(' Register now to import templates from the Redux template library in a single click.', redux_templates.i18n)}</p>\n <ul>\n <li><strong>{__('Unlimited', redux_templates.i18n)}</strong> {__('use of our free templates.', redux_templates.i18n)}</li>\n\t <li><strong>{__('Updates', redux_templates.i18n)}</strong> {__('to the library.', redux_templates.i18n)}</li>\n <li><strong>{__('Google Fonts', redux_templates.i18n)}</strong> {__('manual updates.', redux_templates.i18n)}</li>\n </ul>\n <p>\n\t <button className=\"button button-primary\"\n\t disabled={activating}\n\t onClick={() => onActivateRedux()}>\n\t\t {activating && <i className=\"fas fa-spinner fa-pulse\" style={{marginRight:'5px'}}/>}\n\t\t <span>{__('Register for Free', redux_templates.i18n)}</span>\n\t </button>\n </p>\n\t <p style={{fontSize:'1.1em'}}><small><em dangerouslySetInnerHTML={{__html: redux_templates.tos}} /></small></p>\n </div>\n </div>\n );\n}\n","const {__, sprintf} = wp.i18n;\nconst {useState} = wp.element;\nconst {apiFetch} = wp;\n\nexport default function ReduxTemplatesPremiumActivate(props) {\n\n\tconst [installing, setInstalling] = useState(null);\n\tconst [status, setStatus] = useState(__('Enter your API key to activate and install your copy of Redux Pro.', redux_templates.i18n));\n\tconst [statusType, setStatusType] = useState('');\n\tconst [proKey, setProKey] = useState( atob( redux_templates.key ) );\n\tconst {toPluginStep} = props;\n\n\tconst installReduxPlugin = async () => {\n\t\tif ( ! redux_templates.supported_plugins['redux-framework'].plugin ) {\n\t\t\tsetStatus(__('Installing the redux-framework plugin.', redux_templates.i18n));\n\t\t\tawait apiFetch({\n\t\t\t\tpath: 'redux/v1/templates/plugin-install?slug=redux-framework',\n\t\t\t}).then(res => {\n\t\t\t\tif (res.success) {\n\t\t\t\t\tinstallReduxPro();\n\t\t\t\t} else {\n\t\t\t\t\tsetStatus(__('Install of Redux Pro failed, please try again.', redux_templates.i18n));\n\t\t\t\t\tsetInstalling(null);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(res => {\n\t\t\t\tsetStatus(__('There seems to be an API issue. Please contact Redux support or try again.', redux_templates.i18n));\n\t\t\t\tsetInstalling(null);\n\t\t\t});\n\t\t} else {\n\t\t\tinstallReduxPro();\n\t\t}\n\t};\n\n\tconst installReduxPro = async () => {\n\t\tif ( ! redux_templates.supported_plugins['redux-pro'].version ) {\n\t\t\tsetStatus(__('Installing Redux Pro.', redux_templates.i18n));\n\t\t\tawait apiFetch({\n\t\t\t\tpath: 'redux/v1/templates/plugin-install?slug=redux-pro&redux_pro=1',\n\t\t\t}).then(res => {\n\t\t\t\tif (res.success) {\n\t\t\t\t\tsetStatus(__('Redux Pro successfully installed!', redux_templates.i18n));\n\t\t\t\t\tredux_templates.mokama = true;\n\t\t\t\t\tdelete redux_templates.left;\n\t\t\t\t\ttoPluginStep();\n\t\t\t\t} else {\n\t\t\t\t\tsetStatus(__('Install of Redux Pro failed, please try again.', redux_templates.i18n));\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(res => {\n\t\t\t\tsetStatus(__('There seems to be an API issue. Please contact Redux support or try again.', redux_templates.i18n));\n\t\t\t\tsetInstalling(null);\n\t\t\t});\n\t\t} else {\n\t\t\tredux_templates.mokama = true;\n\t\t\tdelete redux_templates.left;\n\t\t\ttoPluginStep();\n\t\t}\n\t};\n\n\tconst activateKey = async () => {\n\t\tsetInstalling(true);\n\t\tsetStatus(__('Validating license key.', redux_templates.i18n));\n\t\tawait apiFetch({\n\t\t\tpath: 'redux/v1/templates/license?key=' + proKey,\n\t\t}).then(res => {\n\t\t\tif (res.success) {\n\t\t\t\tsetStatus(__('API key activated, installing Redux Pro.', redux_templates.i18n));\n\t\t\t\tinstallReduxPlugin();\n\t\t\t} else {\n\t\t\t\tif ( res.msg ) {\n\t\t\t\t\tsetStatus(res.msg);\n\t\t\t\t} else {\n\t\t\t\t\tsetStatus(__('License key failed to activate. Please try again.', redux_templates.i18n));\n\t\t\t\t}\n\t\t\t\tsetInstalling(null);\n\t\t\t}\n\t\t}).catch(res => {\n\t\t\tsetStatus(__('There seems to be an API issue. Please contact Redux support or try again.', redux_templates.i18n));\n\t\t\tsetInstalling(null);\n\t\t});\n\t};\n\n\tconst updateProKey = (e) => {\n\t\tsetProKey(e.target.value);\n\t}\n\n\treturn (\n\t\t<div className=\"redux-templates-modal-body\">\n\t\t\t<div className=\"section-box premium-box\">\n\t\t\t\t<h3>{__('Activate Redux Pro', redux_templates.i18n)}</h3>\n\n\t\t\t\t<div className={statusType}>{status}</div>\n\n\t\t\t\t<p>\n\t\t\t\t\t<input type=\"text\" placeholder={__('Enter your subscription key', redux_templates.i18n)} value={proKey} onChange={updateProKey} disabled={installing !== null} />\n\t\t\t\t</p>\n\t\t\t\t<p className=\"subscription_key\">\n\t\t\t\t\t<button className=\"redux-pro-activate-button\" aria-label=\"Activate my key\" disabled={installing !== null}\n\t\t\t\t\t onClick={() => activateKey()}>\n\t\t\t\t\t\t{installing !== null && <i className=\"fas fa-spinner fa-pulse\"/>}\n\t\t\t\t\t\t<span>{__('Activate & Install Pro', redux_templates.i18n)}</span>\n\t\t\t\t\t</button>\n\t\t\t\t</p>\n\t\t\t\t<p style={{fontSize:'1.1em', paddingTop:'10px'}}><small><em dangerouslySetInnerHTML={{__html: redux_templates.tos.replace(__('Register', redux_templates.i18n), __('Activate', redux_templates.i18n))}} /> <br /><span dangerouslySetInnerHTML={{__html: sprintf( __( 'Visit the <a href=\"%s\" target=\"_blank\">account dashboard</a> to recover your subscription key.', redux_templates.i18n ), 'https://redux.io/account/?utm_source=plugin-installation&utm_campaign=import_wizard&utm_medium=appsero&utm_content=activate_pro' )}} /></small>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","const {__} = wp.i18n\n\nexport default function ReduxTemplatesPremiumBox(props) {\n\n\tconst {toProActivateStep} = props;\n\n\tconst onNextStep = () => {\n\t\ttoProActivateStep();\n\t}\n\n\treturn (\n <div className=\"redux-templates-modal-body\">\n <div className=\"section-box premium-box\">\n <h3>{__('Upgrade to Redux Pro', redux_templates.i18n)}</h3>\n\n <p>{__('Thanks for giving our library a try! Upgrade to Redux Pro to unlock even more designs and to continue using our library.', redux_templates.i18n)}</p>\n\n <p>\n <a href={redux_templates.u + 'import_wizard'} className=\"redux-templates-upgrade-button\" title=\"{__('Redux Pro', redux_templates.i18n)}\"\n target='_blank'>{__('Upgrade Now Just $49', redux_templates.i18n)}</a>\n\t <small><em>Limited time only</em></small>\n </p>\n\t <p className=\"subscription_key_button\">\n\t\t <button type=\"button\" className=\"components-button\" aria-label=\"I have a subscription key\" onClick={() => onNextStep()}>I have a subscription key\n\t\t </button>\n\t </p>\n </div>\n </div>\n );\n}\n","const {__} = wp.i18n;\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {useState, useEffect} = wp.element;\nconst {apiFetch} = wp;\n\nimport InstallPluginStep from './InstallPluginStep';\nimport ProPluginStep from './ProPluginsStep';\nimport OptionStep from './OptionStep';\nimport ImportingStep from './ImportingStep';\nimport ReduxTemplatesPremiumBox from './ReduxTemplatesPremiumBox';\nimport ReduxTemplatesPremiumActivate from './ReduxTemplatesPremiumActivate';\nimport ReduxTemplatesActivateBox from './ReduxTemplatesActivateBox';\n\nimport {requiresInstall, requiresPro, requiresReduxPro, isReduxProInstalled} from '~redux-templates/stores/dependencyHelper'\n\nimport '../modals.scss'\nimport './style.scss'\n\nconst PRO_STEP = 0;\nconst PLUGIN_STEP = 1;\nconst OPTION_STEP = 2;\nconst IMPORT_STEP = 3;\nconst REDUX_PRO_STEP = -10;\nconst REDUX_PRO_ACTIVATE_STEP = -9;\nconst REDUX_ACTIVATE_STEP = 999;\nconst tourPlugins = ['qubely', 'kioken-blocks'];\n\nfunction ImportWizard(props) {\n const {startImportTemplate, setImportingTemplate, setActivateDialogDisplay, appendErrorMessage} = props;\n const {isChallengeOpen, importingTemplate, activateDialogDisplay, isPostEmpty, isInstalledDependencies} = props;\n const [currentStep, setCurrentStep] = useState(PRO_STEP);\n const [importing, setImporting] = useState(false);\n const [activating, setActivating] = useState(false);\n const [missingPlugins, setMissingPlugins] = useState([]);\n\n useEffect(() => {\n if (importingTemplate) {\n \tif ( !importingTemplate.proDependenciesMissing ) {\n\t\t importingTemplate.proDependenciesMissing = [];\n\t }\n\t if ( !importingTemplate.installDependenciesMissing ) {\n\t\t importingTemplate.installDependenciesMissing = [];\n\t }\n // IMPORTANT First check: can you use redux pro?\n const leftTry = isNaN(redux_templates.left) === false ? parseInt(redux_templates.left) : 0;\n if ((!!(redux_templates.mokama) === false) && leftTry < 1 && currentStep !== REDUX_PRO_ACTIVATE_STEP ) {\n \tif ( currentStep !== REDUX_ACTIVATE_STEP ) {\n\t\t setCurrentStep(REDUX_PRO_STEP);\n\t\t return;\n\t }\n }\n /* Redux pro check */\n if (requiresReduxPro(importingTemplate)) {\n\t if (currentStep !== REDUX_PRO_ACTIVATE_STEP) setCurrentStep(REDUX_PRO_STEP);\n return;\n }\n // Start with Pro step\n // When all OK with Pro Step, move to Plugin Step, on the way, prepare reduxProMergedPlugins.\n if (importingTemplate && currentStep === PRO_STEP && requiresPro(importingTemplate) === false) {\n setCurrentStep(PLUGIN_STEP);\n if (isReduxProInstalled()) {\n setMissingPlugins(\n [].concat(importingTemplate.proDependenciesMissing, importingTemplate.installDependenciesMissing)\n .filter(plugin => plugin)\n );\n } else {\n\t setMissingPlugins(importingTemplate.installDependenciesMissing.filter(plugin => plugin));\n }\n\n }\n if (importingTemplate && currentStep === PLUGIN_STEP && requiresInstall(importingTemplate) === false)\n if (isPostEmpty === false) setCurrentStep(OPTION_STEP); else setCurrentStep(IMPORT_STEP);\n if (importingTemplate && currentStep === OPTION_STEP && isPostEmpty === true)\n setCurrentStep(IMPORT_STEP);\n if (importingTemplate && currentStep === IMPORT_STEP && importing === false) {\n setImporting(true);\n try {\n startImportTemplate();\n } catch (e) {\n console.log('importing exception', e);\n setImporting(false);\n setCurrentStep(PLUGIN_STEP);\n setImportingTemplate(null);\n }\n }\n }\n }, [importingTemplate, currentStep, activateDialogDisplay])\n\n // Activate dialog display\n useEffect(() => {\n if (activateDialogDisplay === true) { // Activate dialog hard reset case\n setCurrentStep(REDUX_ACTIVATE_STEP);\n setActivateDialogDisplay(false);\n }\n }, [activateDialogDisplay]);\n\n // On the initial loading\n useEffect(() => {\n setActivateDialogDisplay(false);\n }, []);\n\n const toNextStep = () => {\n if (isChallengeOpen) return;\n setCurrentStep(currentStep + 1);\n };\n\n\tconst toPluginStep = () => {\n\t\tsetCurrentStep(PRO_STEP);\n\t};\n\tconst toProActivateStep = () => {\n\t\tsetCurrentStep(REDUX_PRO_ACTIVATE_STEP);\n\t};\n\n const onCloseWizard = () => {\n if (isChallengeOpen) return; // When in tour mode, we don't accept mouse event.\n if (importing) return;\n setCurrentStep(PLUGIN_STEP);\n setImportingTemplate(null);\n };\n\n const activateReduxTracking = () => {\n setActivating(true);\n\t apiFetch({path: 'redux/v1/templates/activate'}).then(response => {\n\t\t if (response.success) {\n\t\t\t redux_templates.left = response.data.left;\n\t\t }\n\t\t setCurrentStep(PRO_STEP);\n\t\t setActivating(false);\n\t }).catch(error => {\n\t\t appendErrorMessage(error.code + ' : ' + error.message);\n\t\t setCurrentStep(PRO_STEP);\n\t\t setActivating(false);\n\t });\n }\n\n\n if (isChallengeOpen) {\n // exception handling for tour mode\n if (currentStep !== PLUGIN_STEP) setCurrentStep(PLUGIN_STEP)\n }\n\n if (!importingTemplate) return null;\n return (\n <div className=\"redux-templates-modal-overlay\">\n <div className=\"redux-templates-modal-wrapper\" data-tut=\"tour__import_wizard\">\n <div className=\"redux-templates-modal-header\">\n <h3>{__('Import Wizard', redux_templates.i18n)}</h3>\n <button className=\"redux-templates-modal-close\" onClick={onCloseWizard}>\n <i className={'fas fa-times'}/>\n </button>\n </div>\n <div className=\"redux-templates-importmodal-content\">\n {(currentStep === PRO_STEP) && requiresPro(importingTemplate) &&\n <ProPluginStep missingPros={importingTemplate.proDependenciesMissing } onCloseWizard={onCloseWizard} />}\n {(currentStep === PLUGIN_STEP) &&\n <InstallPluginStep missingPlugins={isChallengeOpen ? tourPlugins : missingPlugins} toNextStep={toNextStep}\n onCloseWizard={onCloseWizard}/>}\n {currentStep === OPTION_STEP && <OptionStep toNextStep={toNextStep} onCloseWizard={onCloseWizard} />}\n {currentStep === IMPORT_STEP && <ImportingStep />}\n\t {currentStep === REDUX_ACTIVATE_STEP && <ReduxTemplatesActivateBox onActivateRedux={activateReduxTracking} activating={activating} />}\n\t {currentStep === REDUX_PRO_ACTIVATE_STEP && <ReduxTemplatesPremiumActivate toPluginStep={toPluginStep} />}\n\t {currentStep === REDUX_PRO_STEP && <ReduxTemplatesPremiumBox toProActivateStep={toProActivateStep} />}\n {isInstalledDependencies && <iframe src='./' width=\"0\" height=\"0\" />}\n </div>\n </div>\n </div>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setImportingTemplate, setActivateDialogDisplay, appendErrorMessage} = dispatch('redux-templates/sectionslist');\n return {\n setImportingTemplate,\n setActivateDialogDisplay,\n appendErrorMessage\n };\n }),\n\n withSelect((select, props) => {\n const {getChallengeOpen, getImportingTemplate, getActivateDialogDisplay, getInstalledDependencies} = select('redux-templates/sectionslist');\n const {isEditedPostEmpty} = select('core/editor');\n return {\n isChallengeOpen: getChallengeOpen(),\n importingTemplate: getImportingTemplate(),\n activateDialogDisplay: getActivateDialogDisplay(),\n isPostEmpty: isEditedPostEmpty(),\n isInstalledDependencies: getInstalledDependencies()\n };\n })\n])(ImportWizard);\n","\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","const {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst { useState, useEffect} = wp.element;\nimport '../stores';\n\nimport {Modal, ModalManager} from '../modal-manager'\nimport TabHeader from '../components/tab-header';\nimport WithSidebarLayout from './layout-with-sidebar';\nimport CollectionView from './view-collection';\nimport SavedView from './view-saved';\nimport ImportWizard from '../modal-import-wizard';\nimport ErrorNotice from '../components/error-notice';\nimport ChallengeFinalTemplate from '~redux-templates/challenge/final-templates';\nimport FabWrapper from '../components/fab-wrapper';\nimport {processImportHelper} from '~redux-templates/stores/actionHelper';\nimport './style.scss'\n\n\nfunction LibraryModal(props) {\n const {\n fetchLibraryFromAPI, activeCollection, activeItemType, errorMessages, importingTemplate, challengeFinalStatus, isChallengeOpen,\n setLoading, setImportingTemplate, clearSearch, clearState\n } = props;\n const [loaded, setLoaded] = useState(false);\n const [escKeyPressed, setEscKeyPressed] = useState(false);\n\n let stateLibrary = null;\n useEffect(() => {\n\t\tclearState();\n stateLibrary = fetchLibraryFromAPI();\n if (stateLibrary === null && loaded === false) { // One to be called at first.\n setLoading(true);\n setLoaded(true);\n }\n const handleKeyUp = ({keyCode}) => {\n if (keyCode === 27) {\n setEscKeyPressed(true);\n }\n }\n document.addEventListener('keyup', handleKeyUp);\n return () => {\n document.removeEventListener('keyup', handleKeyUp);\n }\n }, []);\n\n useEffect(() => {\n if (escKeyPressed) {\n setEscKeyPressed(false);\n if (ModalManager.isCustomizerOpened()) {\n ModalManager.closeCustomizer();\n } else {\n if (importingTemplate)\n setImportingTemplate(null);\n else {\n ModalManager.close();\n }\n }\n }\n }, [escKeyPressed])\n\n const hasSidebar = () => {\n return ((activeItemType !== 'collection' || activeCollection === null) && activeItemType !== 'saved');\n }\n\n // read block data to import and give the control to actual import\n const processImport = () => {\n if (importingTemplate) processImportHelper();\n }\n\n\n return (\n <Modal className=\"redux-templates-builder-modal-pages-list\"\n customClass=\"redux-templates-builder-modal-template-list\"\n openTimeoutMS={0} closeTimeoutMS={0}>\n <TabHeader/>\n {\n errorMessages && errorMessages.length > 0 &&\n <ErrorNotice errorMessages={errorMessages}/>\n }\n <div className=\"redux-templates-collections-modal-body\">\n {hasSidebar() && <WithSidebarLayout/>}\n {(hasSidebar() === false && activeItemType === 'collection') && <CollectionView/>}\n {(hasSidebar() === false && activeItemType !== 'collection') && <SavedView/>}\n </div>\n {\n importingTemplate && <ImportWizard startImportTemplate={processImport} />\n }\n { (challengeFinalStatus !== '') && <ChallengeFinalTemplate finalStatus={challengeFinalStatus} /> }\n { !isChallengeOpen && <FabWrapper /> }\n </Modal>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setLoading,\n setLibrary,\n setImportingTemplate,\n clearSearch,\n\t\t\tclearState\n } = dispatch('redux-templates/sectionslist');\n\n return {\n setLoading,\n setLibrary,\n setImportingTemplate,\n clearSearch,\n\t\t\tclearState\n };\n }),\n\n withSelect((select) => {\n const {fetchLibraryFromAPI, getActiveCollection, getActiveItemType, getErrorMessages, getImportingTemplate, getChallengeOpen, getChallengeFinalStatus} = select('redux-templates/sectionslist');\n return {\n fetchLibraryFromAPI,\n activeCollection: getActiveCollection(),\n activeItemType: getActiveItemType(),\n errorMessages: getErrorMessages(),\n importingTemplate: getImportingTemplate(),\n challengeFinalStatus: getChallengeFinalStatus(),\n isChallengeOpen: getChallengeOpen()\n };\n })\n])(LibraryModal);\n","const { Fragment } = wp.element;\nimport Sidebar from '../sidebar';\nimport TemplateListSubHeader from '~redux-templates/components/template-list-subheader';\nimport TemplateList from '../view-template-list';\n\nexport default function WithSidebarCollection (props) {\n return (\n <Fragment>\n <div id=\"redux-templates-collection-modal-sidebar\" className=\"redux-templates-collection-modal-sidebar\">\n <Sidebar />\n </div>\n <div className=\"redux-templates-collection-modal-content-area\" data-tut=\"tour__main_body\" id=\"modalContent\">\n <TemplateListSubHeader />\n <TemplateList />\n </div>\n </Fragment>\n );\n}\n","const {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {__} = wp.i18n;\n\nimport uniq from 'lodash/uniq';\n\nfunction CategoryFilter (props) {\n const {categoryData, activeCategory, activePriceFilter, loading, itemType} = props;\n const {setActiveCategory} = props;\n\n\n // On the top, All Block, All Template, All Template Kit etc\n const itemTypeLabel = () => {\n if (itemType === 'section') return __('Section', redux_templates.i18n);\n if (itemType === 'page') return __('Template', redux_templates.i18n);\n if (itemType === 'collection') return __('Template Kit', redux_templates.i18n);\n };\n\n const totalItemCountLabel = () => {\n let totalArr = [], filteredArr = [];\n categoryData.forEach((category) => {\n if (category.hasOwnProperty('filteredData')) filteredArr = [...filteredArr, ...category.filteredData];\n totalArr = [...totalArr, ...category.ids];\n });\n return (activePriceFilter !== '') ? uniq(filteredArr).length + '/' + uniq(totalArr).length : uniq(totalArr).length;\n };\n\n const isDisabledCategory = (data) => (data && ((data.hasOwnProperty('filteredData') && data.filteredData.length === 0) || data.ids.length === 0));\n\n const onChangeCategory = (data) => {\n if (isDisabledCategory(data)) return;\n setActiveCategory(data.slug);\n };\n // Give the selected category(activeCategory) label className as \"active\"\n const activeClassname = (data) => {\n const categoryLabel = data ? data.slug : '';\n if (isDisabledCategory(data)) return 'disabled';\n return activeCategory === categoryLabel ? 'active' : '';\n };\n\n return (\n <div>\n <h3>{__('Categories', redux_templates.i18n)}</h3>\n {!loading &&\n <ul className=\"redux-templates-sidebar-categories\">\n {categoryData.length > 0 &&\n <li\n className={activeClassname(null)}\n onClick={() => setActiveCategory('')}>\n {__('All', redux_templates.i18n)} {itemTypeLabel()}s <span>{totalItemCountLabel()}</span>\n </li>\n }\n\n {categoryData &&\n categoryData.map((data, index) => (\n <li className={activeClassname(data)} onClick={() => onChangeCategory(data)}\n key={index}>\n {data.name}\n <span> {data.hasOwnProperty('filteredData') && activePriceFilter !== '' ? data.filteredData.length : data.ids.length } </span>\n </li>\n ))\n }\n </ul>\n }\n </div>\n );\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setActiveCategory} = dispatch('redux-templates/sectionslist');\n return {\n setActiveCategory\n };\n }),\n\n withSelect((select, props) => {\n const {getCategoryData, getActiveCategory, getActiveItemType, getLoading} = select('redux-templates/sectionslist');\n return {\n categoryData: getCategoryData(),\n activeCategory: getActiveCategory(),\n itemType: getActiveItemType(),\n loading: getLoading(),\n };\n })\n])(CategoryFilter);\n","const {Fragment} = wp.element;\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {__} = wp.i18n;\nimport ChallengeDot from '~redux-templates/challenge/tooltip/ChallengeDot';\n\nimport {CheckboxControl, Tooltip, Button, ButtonGroup} from '@wordpress/components';\nimport DependencyFilterRow from './dependencyFilterRow';\nimport {pluginInfo} from '~redux-templates/stores/dependencyHelper';\nimport {REDUXTEMPLATES_PRO_KEY, NONE_KEY} from '~redux-templates/stores/helper';\n\nfunction DependencyFilter(props) {\n const {dependencyFilters, activeItemType, loading, wholePlugins, dependencyFilterRule} = props;\n const {setDependencyFilters, selectDependencies, setDependencyFilterRule} = props;\n // Give the selected category(activeCategory) label className as \"active\"\n const isNoneChecked = () => {\n if (dependencyFilters.hasOwnProperty(NONE_KEY))\n return dependencyFilters[NONE_KEY].hasOwnProperty('value') ? dependencyFilters[NONE_KEY].value : dependencyFilters[NONE_KEY];\n return false;\n };\n\n const toggleNoneChecked = () => {\n setDependencyFilters({...dependencyFilters,\n [NONE_KEY]: { value: dependencyFilters[NONE_KEY].value === false, disabled: dependencyFilters[NONE_KEY]['disabled'] === true }\n });\n };\n return (\n <Fragment>\n {!loading && wholePlugins &&\n <div id=\"redux-templates-filter-dependencies\" data-tut=\"tour__filter_dependencies\">\n\t <>\n\t\t <ButtonGroup style={{float:'right'}}>\n\t\t\t <Tooltip text={__('Find templates which contain blocks from any of the selected plugins.', redux_templates.i18n)} position=\"top right\">\n\t\t\t\t <Button isSmall isPrimary={dependencyFilterRule === false} isSecondary={dependencyFilterRule} onClick={() => setDependencyFilterRule(false)} disabled={activeItemType === 'collection'}>{__('Any', redux_templates.i18n)}</Button>\n\t\t\t </Tooltip>\n\t\t\t <Tooltip text={__('Find templates that only contain blocks from the selected plugins.', redux_templates.i18n)} position=\"top right\">\n\t\t\t\t <Button isSmall isSecondary={dependencyFilterRule === false} isPrimary={dependencyFilterRule} onClick={() => setDependencyFilterRule(true)} disabled={activeItemType === 'collection'}>{__('Only', redux_templates.i18n)}</Button>\n\t\t\t </Tooltip>\n\t\t </ButtonGroup>\n\t\t <h3>{__('Required Plugins', redux_templates.i18n)} </h3>\n\t </>\n <div className='redux-templates-select-actions'>\n <Tooltip text={__('Select All', redux_templates.i18n)} position=\"top right\"><a href=\"#\" onClick={() => selectDependencies('all')}>{__('All', redux_templates.i18n)}</a></Tooltip>\n\t\t <span>&nbsp; / &nbsp;</span>\n\t\t <Tooltip text={__('Native Blocks Only', redux_templates.i18n)} position=\"top right\"><a href=\"#\" onClick={() => selectDependencies('none')}>{__('None', redux_templates.i18n)}</a></Tooltip>\n <span>&nbsp; / &nbsp;</span>\n <Tooltip text={__('Installed Dependencies', redux_templates.i18n)} position=\"top right\"><a href=\"#\"\n onClick={() => selectDependencies('installed')}>\n {__('Installed', redux_templates.i18n)}</a></Tooltip>\n <span>&nbsp; / &nbsp;</span>\n <Tooltip text={__('Reset Dependencies', redux_templates.i18n)} position=\"top right\">\n <a href=\"#\" onClick={() => selectDependencies('default')}>\n <i className=\"fas fa-undo\" /></a></Tooltip>\n <ChallengeDot step={2} />\n\n </div>\n <ul className=\"redux-templates-sidebar-dependencies\">\n { (loading === false) &&\n <li style={{display: activeItemType === 'collection' ? 'none': '' }}>\n <CheckboxControl\n label={__('Native', redux_templates.i18n)}\n checked={isNoneChecked()}\n onChange={toggleNoneChecked}\n />\n <Tooltip text={__('Only default WordPress blocks used.', redux_templates.i18n)} position='right'>\n <span style={{float:'right', marginRight:'2px'}}><i className=\"fa fa-info-circle\" /></span>\n </Tooltip>\n </li>\n }\n {\n Object.keys(dependencyFilters)\n .filter(pluginKey => (wholePlugins.indexOf(pluginKey)!==-1 || pluginKey === REDUXTEMPLATES_PRO_KEY))\n .sort((a, b) => {\n const pluginInstanceA = pluginInfo(a);\n const pluginInstanceB = pluginInfo(b);\n if (pluginInstanceA.name < pluginInstanceB.name)\n return -1;\n if (pluginInstanceA.name > pluginInstanceB.name)\n return 1;\n return 0;\n })\n .map(pluginKey =>\n <DependencyFilterRow key={pluginKey} pluginKey={pluginKey} />\n )\n }\n </ul>\n </div>\n }\n </Fragment>\n );\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setDependencyFilters, selectDependencies, setDependencyFilterRule} = dispatch('redux-templates/sectionslist');\n return {\n setDependencyFilters,\n selectDependencies,\n setDependencyFilterRule\n };\n }),\n\n withSelect((select) => {\n const {getDependencyFiltersStatistics, getLoading, getActiveItemType, getWholePlugins, getDependencyFilterRule} = select('redux-templates/sectionslist');\n return {\n loading: getLoading(),\n dependencyFilters: getDependencyFiltersStatistics(),\n wholePlugins: getWholePlugins(),\n dependencyFilterRule: getDependencyFilterRule(),\n\t activeItemType: getActiveItemType()\n };\n })\n])(DependencyFilter);\n","import React from 'react';\nconst {useState, useEffect, useRef} = wp.element;\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {__} = wp.i18n;\n\nimport {CheckboxControl, Tooltip} from '@wordpress/components';\nimport {pluginInfo} from '~redux-templates/stores/dependencyHelper';\nimport {NONE_KEY} from '~redux-templates/stores/helper';\n\nconst specialPlugins = ['gutenberghub.com', 'editorplus'];\n\nfunction DependencyFilterRow(props) {\n const {pluginKey, dependencyFilters} = props;\n const {setDependencyFilters} = props;\n const [isValidPlugin, setIsValidPlugin] = useState(false);\n const [isChecked, setIsChecked] = useState(false);\n const [pluginInstanceURL, setPluginInstanceURL] = useState('');\n const [pluginInstanceName, setPluginInstanceName] = useState('');\n const [pluginClassname, setPluginClassname] = useState('');\n\n useEffect(() => {\n const pluginInstance = pluginInfo(pluginKey);\n if (!pluginKey || pluginKey === NONE_KEY) {\n setIsValidPlugin(false);\n return;\n }\n if (!pluginInstance || pluginInstance.name == null) {\n setIsValidPlugin(false);\n return;\n }\n setPluginInstanceURL(pluginInstance.url);\n setPluginInstanceName(pluginInstance.name);\n setIsValidPlugin(true);\n }, [pluginKey]);\n\n useEffect(() => {\n const pluginInstance = pluginInfo(pluginKey);\n if (!dependencyFilters) return;\n if (dependencyFilters.hasOwnProperty(pluginKey)) {\n if (dependencyFilters[pluginKey].disabled)\n setIsChecked(false);\n else\n setIsChecked(dependencyFilters[pluginKey].hasOwnProperty('value') ? dependencyFilters[pluginKey].value : dependencyFilters[pluginKey]);\n } else\n setIsChecked(false)\n let pluginClassnameList = [];\n pluginClassnameList.push(!pluginInstance.version && !('no_plugin' in pluginInstance) ? 'missing-dependency' : '');\n pluginClassnameList.push((!dependencyFilters[pluginKey] || dependencyFilters[pluginKey].disabled) ? 'disabled' : '');\n setPluginClassname(pluginClassnameList.join(' '));\n }, [JSON.stringify(dependencyFilters)])\n\n const toggleChecked = () => {\n // disable check first\n if (dependencyFilters[pluginKey] === null || dependencyFilters[pluginKey] === undefined || dependencyFilters[pluginKey].disabled) return;\n // reflect on the item click event.\n let newDependencyFilters = {\n ...dependencyFilters,\n [pluginKey]: { value: dependencyFilters[pluginKey].value === false, disabled: dependencyFilters[pluginKey]['disabled'] === true }\n };\n\n // gutenberg.com, EditorPlus check\n if (specialPlugins.includes(pluginKey)) {\n specialPlugins.forEach((plugin) => {\n newDependencyFilters = {\n ...newDependencyFilters,\n [plugin]: { value: dependencyFilters[pluginKey].value === false, disabled: dependencyFilters[plugin]['disabled'] === true }\n }\n })\n }\n\n // if no item is selected, activate native, other wise conider to deactivate native\n // let valueCount = groupBy(Object.keys(newDependencyFilters), key => (newDependencyFilters[key] === true || newDependencyFilters[key].value === true));\n setDependencyFilters({...newDependencyFilters});\n };\n\n if (isValidPlugin === false) return null;\n\n return (\n <li className={pluginClassname}>\n <CheckboxControl\n label={pluginInstanceName}\n checked={isChecked}\n onChange={toggleChecked}\n />\n {pluginInstanceURL ?\n\t <Tooltip position={'top right'} text={__('Visit Plugin Website', redux_templates.i18n)}><span><a href={pluginInstanceURL} target=\"_blank\">\n <i className=\"fas fa-external-link-alt\" />\n\t </a></span></Tooltip> : null}\n\t {pluginClassname.includes('missing-dependency') &&\n\t <Tooltip position={'top right'} text={__('Not Installed', redux_templates.i18n)}><span className='redux-icon-wrapper'><i className=\"fa fa-exclamation-triangle\" /></span></Tooltip>\n\t }\n </li>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setDependencyFilters} = dispatch('redux-templates/sectionslist');\n return {\n setDependencyFilters\n };\n }),\n\n withSelect((select) => {\n const {getDependencyFiltersStatistics, getLoading, getActiveCategory} = select('redux-templates/sectionslist');\n return {\n loading: getLoading(),\n dependencyFilters: getDependencyFiltersStatistics(),\n activeCategory: getActiveCategory()\n };\n })\n])(DependencyFilterRow);\n","const {withSelect} = wp.data;\n\nimport './style.scss'\n\nimport PriceFilter from './priceFilter';\nimport CategoryFilter from './categoryFilter';\nimport DependencyFilter from './dependencyFilter';\n\nfunction Sidebar(props) {\n const {itemType, layer, loading} = props;\n const hasSidebar = () => {\n return (itemType !== 'collection' || layer === null);\n };\n return (\n <div>\n {\n hasSidebar() &&\n <>\n <PriceFilter/>\n <div className=\"redux-templates-modal-sidebar-content\">\n <CategoryFilter/>\n <DependencyFilter/>\n </div>\n </>\n }\n </div>\n );\n}\n\nexport default withSelect((select) => {\n const {getActiveItemType, getActiveCollection} = select('redux-templates/sectionslist');\n return {\n itemType: getActiveItemType(),\n layer: getActiveCollection()\n };\n})(Sidebar);\n","const {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {__} = wp.i18n;\n\nfunction PriceFilter (props) {\n\tconst {setActivePriceFilter, activePriceFilter, statistics} = props;\n\n const getClassnames = (priceFilter) => {\n let classNames = [];\n classNames.push((priceFilter === activePriceFilter) ? 'active' : '');\n classNames.push(noStatistics(priceFilter) ? 'disabled' : '');\n return classNames.join(' ');\n }\n\n const noStatistics = (priceFilter) => {\n if (priceFilter === '') return false;\n if (priceFilter === 'free')\n return (!statistics['false'] || statistics['false'] < 1);\n else\n return (!statistics['true'] || statistics['true'] < 1);\n }\n\n return (\n <div className='redux-templates-template-filter-button-group'>\n <button onClick={() => setActivePriceFilter('')}\n className={getClassnames('')}>{__('All', redux_templates.i18n)}</button>\n <button onClick={() => setActivePriceFilter('free')} className={getClassnames('free')}\n disabled={noStatistics('free')}>{__('Free', redux_templates.i18n)}</button>\n <button onClick={() => setActivePriceFilter('pro')} className={getClassnames('pro')}\n disabled={noStatistics('pro')}>\n <img src={redux_templates.plugin + 'assets/img/icon-premium.svg'} alt=\"\"/>\n {__('Premium', redux_templates.i18n)}\n </button>\n </div>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {setActivePriceFilter} = dispatch('redux-templates/sectionslist');\n return {\n setActivePriceFilter\n };\n }),\n\n withSelect((select, props) => {\n const {getStatistics, getActivePriceFilter} = select('redux-templates/sectionslist');\n return {\n activePriceFilter: getActivePriceFilter(),\n statistics: getStatistics()\n };\n })\n])(PriceFilter);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","const {useState, useEffect} = wp.element;\nconst {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {__} = wp.i18n\n\nimport './style.scss'\n\nimport ButtonGroup from '~redux-templates/components/button-group';\nimport {requiresInstall, requiresPro} from '~redux-templates/stores/dependencyHelper'\n\nconst DURATION_UNIT= 500;\nconst PREVIEW_PANEL_HEIGHT = 515;\n\n// Collection Detail view: preview, item list and import\nfunction CollectionView(props) {\n const {pageData, activeCollectionData} = props;\n const {setActiveCollection} = props;\n const [previewData, setPreviewData] = useState(null);\n const [previewDataIndex, setPreviewDataIndex] = useState(0);\n const [transitionDuration, setTransitionDuration] = useState('1.5s');\n\n const dataLength = pageData.length;\n\n // To be called when switching over\n useEffect(() => {\n if (pageData && pageData[previewDataIndex]) {\n const itemData = pageData[previewDataIndex];\n const backgroundImage = new Image();\n if (itemData.image_full) {\n setPreviewData({...itemData, backgroundImage: itemData.image_full, previewImageClassname: 'details-preview has_full'});\n backgroundImage.src = itemData.image_full;\n } else {\n setPreviewData({...itemData, backgroundImage: itemData.image, previewImageClassname: 'details-preview has_full'})\n backgroundImage.src = itemData.image;\n }\n backgroundImage.onload = function () {\n setTransitionDuration((backgroundImage.height - PREVIEW_PANEL_HEIGHT) / DURATION_UNIT + 's');\n };\n }\n }, [pageData, previewDataIndex]);\n\n if (previewData)\n return (\n <div className=\"redux-templates-collection-details-view\">\n <div className=\"redux-templates-collection-details-left\">\n <div className=\"details-back\" onClick={() => setActiveCollection(null)}>\n <span className=\"dashicons dashicons-arrow-left-alt\"/>&nbsp;{__('Back to Template Kits', redux_templates.i18n)}\n </div>\n <div className={previewData.previewImageClassname} \n style={{backgroundImage: `url('${previewData.backgroundImage}')`, transitionDuration}}>\n </div>\n </div>\n <div className=\"redux-templates-collection-details-right\">\n <div className=\"details-title\">\n <h3>{activeCollectionData.name}</h3>\n <span>{dataLength} {__('pages', redux_templates.i18n)}</span>\n </div>\n <div className=\"details-list\">\n <div className=\"details-inner\">\n {\n pageData.map((detail, index) => {\n let className = (previewData.ID === detail.ID) ? 'detail-select detail-select-active' : 'detail-select';\n let divStyle = {\n backgroundImage: 'url(' + detail.image + ')',\n };\n\n return (\n <div className={className} onClick={() => setPreviewDataIndex(index)} key={index}>\n <div className=\"detail-image\" style={divStyle}>\n {requiresPro(detail) && <span className=\"pro\">{__('Premium', redux_templates.i18n)}</span>}\n {!requiresPro(detail) && requiresInstall(detail) && <span className=\"install\"><i className=\"fas fa-exclamation-triangle\" /></span>}\n <div className=\"detail-label\">{detail.name}</div>\n </div>\n </div>\n );\n })\n }\n </div>\n </div>\n </div>\n <div className=\"redux-templates-collection-details-footer\">\n <div className=\"footer-grid\">\n <ButtonGroup index={previewDataIndex} showDependencyBlock={false} data={previewData} pageData={pageData} />\n </div>\n </div>\n </div>\n );\n return null;\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setActiveCollection\n } = dispatch('redux-templates/sectionslist');\n\n return {\n setActiveCollection\n };\n }),\n\n withSelect((select, props) => {\n const {getPageData, getLoading, getActiveCollectionData, getActiveItemType} = select('redux-templates/sectionslist');\n return {\n pageData: getPageData(),\n loading: getLoading(),\n activeItemType: getActiveItemType(),\n activeCollectionData: getActiveCollectionData()\n };\n })\n])(CollectionView);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","const {apiFetch} = wp;\nconst {useState} = wp.element;\nconst {compose} = wp.compose;\nconst {withDispatch} = wp.data;\nconst {Spinner} = wp.components;\nconst {parse} = wp.blocks;\nconst {__} = wp.i18n;\nimport {BlockPreview} from '@wordpress/block-editor';\n\nimport './style.scss'\n\nimport {Modal, ModalManager} from '../../modal-manager'\nimport reject from 'lodash/reject';\n\nfunction SavedView(props) {\n const {insertBlocks, discardAllErrorMessages, appendErrorMessage, clearSearch} = props;\n const [savedSections, setSavedSections] = useState([]);\n const [dataLoaded, setDataLoaded] = useState(false);\n if (dataLoaded === false) {\n // Initial fetch\n apiFetch({path: 'redux/v1/templates/get_saved_blocks'}).then(response => {\n if (response.success) {\n setSavedSections(response.data);\n } else {\n appendErrorMessage(response.data.error);\n }\n setDataLoaded(true);\n }).catch(error => {\n appendErrorMessage(error.code + ' : ' + error.message);\n setDataLoaded(true);\n });\n }\n\n // To display into columns, map data into column-friendly data\n const mapToColumnData = (data, n = 4, balanced = true) => {\n let out = [], i;\n\n for (i = 0; i < n; i++) out[i] = [];\n data.forEach((section, i) => {\n out[i % n].push(section);\n });\n return out;\n }\n\n // saved block import is special\n const importSections = (rawData) => {\n let pageData = parse(rawData);\n insertBlocks(pageData);\n ModalManager.close(); //close modal\n }\n\n const deleteSavedSection = (event, sectionID) => {\n event.stopPropagation();\n discardAllErrorMessages();\n const options = {\n method: 'POST',\n path: 'redux/v1/templates/delete_saved_block/?block_id=' + sectionID,\n }\n apiFetch(options).then(response => {\n if (response.success) {\n // on successful remove, we will update the blocks as well.\n setSavedSections(reject(savedSections, {'ID': sectionID}));\n } else {\n appendErrorMessage(response.data.error);\n }\n }).catch(error => {\n appendErrorMessage(error.code + ' : ' + error.message);\n });\n }\n if (dataLoaded === true)\n return (\n <div className=\"redux-templates-two-sections__grid\">\n {\n (savedSections && savedSections.length > 0) ?\n mapToColumnData(savedSections).map((column, key) => {\n let sections = column.map((section, i) => {\n let blocks = parse(section.post_content);\n return (\n <div className=\"redux-templates-two-section\" key={i}\n onClick={() => importSections(section.post_content)}>\n\n <div className=\"preview-image-wrapper\">\n <BlockPreview blocks={blocks} />\n </div>\n <div className=\"saved-section-title\">\n {section.post_title}\n </div>\n <div className=\"redux-templates-two-section-remove\"\n onClick={e => deleteSavedSection(e, section.ID)}>\n <i className=\"fas fa-trash\"></i>\n </div>\n </div>\n );\n })\n\n return (\n <div className=\"redux-templates-two-sections__grid__column\" key={key}\n style={{width: '25%', flexBasis: '25%'}}>\n {sections}\n </div>\n );\n })\n :\n <div className=\"no-section\">\n Nothing here yet, make a reusuable block first.\n </div>\n }\n </div>\n );\n else\n return (\n <div>\n <div style={{ height: '600px' }}>\n <div className=\"redux-templates-modal-loader\">\n <Spinner />\n </div>\n </div>\n </div>\n );\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n insertBlocks\n } = dispatch('core/block-editor');\n\n const {\n appendErrorMessage,\n discardAllErrorMessages\n } = dispatch('redux-templates/sectionslist');\n\n return {\n insertBlocks,\n appendErrorMessage,\n discardAllErrorMessages\n };\n })\n])(SavedView);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","const { useState, useEffect } = wp.element;\nconst { compose } = wp.compose;\nconst { withDispatch, withSelect } = wp.data;\nconst { Spinner } = wp.components;\n\nimport SingleItem from '../../components/single-item'\nimport MultipleItem from '../../components/multiple-item'\nimport Pagination from '../../components/pagination'\nimport './style.scss'\n\nimport {columnMap, pageSizeMap} from '../../stores/helper';\n\nfunction TemplateList(props) {\n const { pageData, loading, activeItemType, activeCollection, columns, currentPage } = props;\n const { setActiveCollection} = props;\n const [columnizedData, setColumnizedData] = useState([]);\n const [shouldShowPagination, setShouldShowPagination] = useState(false);\n const getBackgroundImage = (url) => {\n if (!url) {\n return redux_templates.plugin + 'assets/img/redux-templates-medium.jpg';\n }\n return url;\n }\n\n const onSelectCollection = (collectionID) => {\n setActiveCollection(collectionID);\n }\n\n useEffect(() => {\n let newData = [], index = 0;\n let colStr = (columns === '') ? 'medium' : columns;\n const columnsCount = columnMap[colStr];\n const pageSize = pageSizeMap[colStr];\n for (let i = 0; i < columnsCount; i++)\n newData[i] = [];\n if (pageData) {\n const lowerLimit = activeItemType !== 'collection' ? (currentPage * pageSize) + 1 : 1;\n const upperLimit = activeItemType !== 'collection' ? (currentPage + 1) * pageSize : pageData.length;\n for ( index = lowerLimit; index <= upperLimit && index <= pageData.length; index++) {\n newData[(index - 1) % columnsCount].push({...pageData[index - 1], index: index - 1});\n }\n }\n setColumnizedData(newData);\n setShouldShowPagination(activeItemType !== 'collection' && pageData && pageSize < pageData.length);\n }, [columns, pageData]);\n\n\n if (!loading)\n return (\n <div id=\"modalContainer\" className=\"redux-templates-template-list-modal\">\n <div className=\"redux-templates-builder-template-list-container\">\n <div id=\"collections-sections-list\" className={`redux-templates-builder-page-templates ${columns}`}>\n { columnizedData &&\n columnizedData.map((columnData, colIndex) => (\n <div className=\"redux-templates-pagelist-column\" key={colIndex}>\n {\n columnData &&\n columnData.map((data, cellIndex) => (\n (activeItemType !== 'collection' || activeCollection !== null) ?\n <SingleItem\n key={cellIndex}\n index={data.index}\n />\n :\n <MultipleItem\n key={cellIndex}\n data={data}\n index={data.index}\n itemType={activeItemType}\n spinner={false}\n onSelectCollection={onSelectCollection}\n />\n ))\n }\n </div>\n ))\n }\n </div>\n { shouldShowPagination && <Pagination /> }\n </div>\n </div>\n );\n return (\n <div>\n <div style={{ height: '600px' }}>\n <div className=\"redux-templates-modal-loader\">\n <Spinner />\n </div>\n </div>\n </div>\n );\n}\n\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setActiveCollection\n } = dispatch('redux-templates/sectionslist');\n\n return {\n setActiveCollection\n };\n }),\n\n withSelect((select, props) => {\n const { getPageData, getLoading, getColumns, getActiveItemType, getActiveCollection, getCurrentPage} = select('redux-templates/sectionslist');\n return { pageData: getPageData(), loading: getLoading(), activeItemType: getActiveItemType(), columns: getColumns(), activeCollection: getActiveCollection(), currentPage: getCurrentPage() };\n })\n])(TemplateList);\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import {__} from '@wordpress/i18n';\nimport {Component, Fragment} from '@wordpress/element';\n\nvar onClose, node, customizerNode, feedbackNode = null;\n\nexport class Modal extends Component {\n constructor(props) {\n super(props)\n this.state = {\n afterOpen: false,\n beforeClose: false,\n }\n }\n\n close() {\n if (!this.props.onRequestClose || this.props.onRequestClose()) {\n if (customizerNode) ModalManager.closeCustomizer()\n else ModalManager.close()\n }\n }\n\n componentDidMount() {\n const {openTimeoutMS, closeTimeoutMS} = this.props\n setTimeout(() => this.setState({afterOpen: true}), openTimeoutMS ? openTimeoutMS : 150)\n\n onClose = (callback) => {\n this.setState({beforeClose: true}, () => {\n this.closeTimer = setTimeout(callback, closeTimeoutMS ? closeTimeoutMS : 150)\n });\n };\n }\n\n componentWillUnmount() {\n onClose = null;\n clearTimeout(this.closeTimer)\n }\n\n render() {\n\n return (\n <Fragment>\n <span onClick={e => {\n this.close()\n }} className={'redux-templates-pagelist-modal-overlay'}>&nbsp;</span>\n <div className={ this.props.compactMode ? 'redux-templates-modal-inner' : 'redux-templates-pagelist-modal-inner'} onClick={e => e.stopPropagation()}>\n {this.props.children}\n </div>\n </Fragment>\n );\n }\n}\n\n\nexport const ModalManager = {\n open(component) {\n if (onClose) {\n this.close();\n // throw __('There is already one modal.It must be closed before one new modal will be opened');\n }\n if (!node) {\n node = document.createElement('div')\n node.className = 'redux-templates-builder-modal'\n document.body.appendChild(node)\n }\n wp.element.render(component, node)\n document.body.classList.add('redux-templates-builder-modal-open')\n },\n close() {\n onClose && onClose(() => {\n wp.element.unmountComponentAtNode(node)\n document.body.classList.remove('redux-templates-builder-modal-open')\n });\n },\n openCustomizer(component) {\n if (!customizerNode) {\n customizerNode = document.createElement('div');\n document.body.appendChild(customizerNode);\n }\n wp.element.render(component, customizerNode);\n },\n closeCustomizer() {\n if (customizerNode) {\n wp.element.unmountComponentAtNode(customizerNode);\n customizerNode = false\n }\n },\n openFeedback(component) {\n feedbackNode = document.getElementsByClassName('feedback-wrapper');\n if (!feedbackNode || feedbackNode.length < 1) {\n feedbackNode = document.createElement('div');\n feedbackNode.className = 'feedback-wrapper';\n document.body.appendChild(feedbackNode);\n } else {\n feedbackNode = feedbackNode[0];\n }\n wp.element.render(component, feedbackNode);\n },\n closeFeedback() {\n if (feedbackNode) {\n wp.element.unmountComponentAtNode(feedbackNode);\n feedbackNode = false;\n }\n },\n isCustomizerOpened() {\n return customizerNode ? true : false;\n },\n hide () {\n document.body.classList.remove('redux-templates-builder-modal-open')\n node.classList.add('hidden')\n },\n show () {\n document.body.classList.add('redux-templates-builder-modal-open')\n if (node)\n node.classList.remove('hidden')\n }\n}\n","const {__} = wp.i18n\n\nfunction FullyOverlayFooter(props) {\n const {previewClass, expandedClass, pro} = props;\n const {onChangePreviewClass, onToggleExpanded, onImport} = props;\n const previewClassesList = [\n {className: 'preview-desktop', screenReaderText: 'Enter desktop preview mode'},\n {className: 'preview-tablet', screenReaderText: 'Enter tablet preview mode'},\n {className: 'preview-mobile', screenReaderText: 'Enter mobile preview mode'}\n ];\n\n const toggleExpanded = () => {\n let nextStatus = (expandedClass === 'collapsed') ? 'expanded' : 'collapsed';\n onToggleExpanded(nextStatus);\n }\n return (\n <div className=\"wp-full-overlay-footer\">\n <div className=\"footer-import-button-wrap redux-templates-import-button-group\">\n\n {\n pro ?\n <div className=\"action-buttons\">\n <a className=\"redux-templates-button-download\" target=\"_blank\" href=\"http://redux-templates.io/\">\n <i className=\"fas fa-upload\"></i>&nbsp;{__('Upgrade to Pro', redux_templates.i18n)}\n </a>\n </div>\n :\n <a className=\"button button-hero hide-if-no-customize button-primary redux-templates-import\"\n onClick={onImport}>\n <i className=\"fas fa-download\"></i>&nbsp;{__('Import', redux_templates.i18n)}\n </a>\n }\n\n </div>\n <button type=\"button\" className=\"collapse-sidebar button\" onClick={toggleExpanded} aria-expanded=\"true\"\n aria-label=\"Collapse Sidebar\">\n <span className=\"collapse-sidebar-arrow\"></span>\n <span className=\"collapse-sidebar-label\">{__('Collapse', redux_templates.i18n)}</span>\n </button>\n\n <div className=\"devices-wrapper\">\n <div className=\"devices\">\n {\n previewClassesList.map((previewObject, i) => {\n return (\n <button type=\"button\"\n className={previewClass === previewObject.className ? previewObject.className + ' active' : previewObject.className}\n aria-pressed=\"true\" key={i}\n onClick={() => onChangePreviewClass(previewObject.className)}>\n <span className=\"screen-reader-text\">{previewObject.screenReaderText}</span>\n </button>\n );\n })\n }\n </div>\n </div>\n\n </div>\n );\n}\n\nexport default FullyOverlayFooter;\n","const {__} = wp.i18n\n\nfunction FullyOverlayHeader(props) {\n const {onCloseCustomizer, onNextBlock, onPrevBlock, onImport, pro} = props;\n return (\n <div className=\"wp-full-overlay-header\">\n <button className=\"close-full-overlay\" onClick={onCloseCustomizer}>\n <span className=\"screen-reader-text\">{__('Close', redux_templates.i18n)}</span>\n </button>\n <button className=\"previous-theme\" onClick={onPrevBlock}>\n <span className=\"screen-reader-text\">{__('Previous', redux_templates.i18n)}</span>\n </button>\n <button className=\"next-theme\" onClick={onNextBlock}>\n <span className=\"screen-reader-text\">{__('Next', redux_templates.i18n)}</span>\n </button>\n {\n pro === false &&\n <a className=\"button hide-if-no-customize button-primary redux-templates-section-import\" onClick={onImport}\n data-import=\"disabled\">\n {__('Import', redux_templates.i18n)}\n </a>\n }\n </div>\n );\n}\n\nexport default FullyOverlayHeader;\n","import {Tooltip, Panel, PanelBody, PanelRow} from '@wordpress/components';\nimport {more} from '@wordpress/icons';\n\n\nconst {useState, useEffect} = wp.element\nconst {__} = wp.i18n\n\nimport * as Icons from '~redux-templates/icons'\nimport copy from 'clipboard-copy';\nimport SafeImageLoad from '~redux-templates/components/safe-image-load';\nimport {requiresInstall, requiresPro} from '~redux-templates/stores/dependencyHelper'\nimport React from 'react';\n\nexport default function SidebarContent(props) {\n\tconst {itemData, pro} = props;\n\tconst {hash, name, image, blocks, proDependencies, installDependencies, url, source} = itemData;\n\tconst [copied, setCopied] = useState(false);\n\n\tconst copyHash = () => {\n\t\tcopy(hash.substring(0, 7));\n\t\tsetCopied(true);\n\t\tsetTimeout(function () {\n\t\t\tsetCopied(false);\n\t\t}, 3500);\n\t}\n\n\tuseEffect(() => {\n\t\tsetCopied(false);\n\t}, [itemData]);\n\n\n\tif ('redux' === source) {\n\t\tconst source_instance = redux_templates.supported_plugins['redux-framework'];\n\t} else {\n\t\tconst source_instance = redux_templates.supported_plugins[source];\n\t}\n\n\treturn (\n\t\t<div className=\"wp-full-overlay-sidebar-content\">\n\t\t\t<div className=\"install-theme-info\">\n\t\t\t\t<h3 className=\"theme-name\">{name} { url && <Tooltip position={'top right'}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttext={__('Full Preview', redux_templates.i18n)}><a href={url}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\"><i\n\t\t\t\t\tclassName=\"fas fa-external-link-alt\"/></a></Tooltip> }</h3>\n\t\t\t\t<div className=\"theme-screenshot-wrap\">\n\t\t\t\t\t<SafeImageLoad url={image} className=\"theme-screenshot\"/>\n\t\t\t\t\t{pro ?\n\t\t\t\t\t\t<span className=\"redux-templates-pro-badge\">{__('Premium', redux_templates.i18n)}</span> : ''}\n\t\t\t\t</div>\n\n\t\t\t\t<h5 className=\"theme-hash\">\n\t\t\t\t\t<div className=\"button-container\">\n <span className=\"button button-secondary the-copy\" onClick={copyHash}\n\t\t\t\t\t\t\t title={__('Copy Identifier', redux_templates.i18n)}><i\n\t\t\t\t\t\t\tclassName=\"fa fa-copy\" aria-hidden=\"true\"></i></span>\n\t\t\t\t\t\t<span onClick={copyHash} className=\"button button-secondary the-hash\"\n\t\t\t\t\t\t\t title={__('Identifier', redux_templates.i18n)}>{hash.substring(0, 7)}</span>\n\t\t\t\t\t\t{copied && <span className=\"copied hideMe\"><br/>{__('copied', redux_templates.i18n)}</span>}\n\t\t\t\t\t</div>\n\n\t\t\t\t</h5>\n\t\t\t</div>\n\t\t\t{ blocks && blocks.length > 0 &&\n\t\t\t<PanelBody title={__('Blocks Used', redux_templates.i18n)} icon={more} initialOpen={false}>\n\t\t\t\t<PanelRow className=\"redux-block-pills\">\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tblocks.map((block, i) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<li key={i}><span>{block}</span></li>\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</ul>\n\t\t\t\t</PanelRow>\n\t\t\t</PanelBody>\n\t\t\t}\n\t\t\t{\n\t\t\t\tinstallDependencies && installDependencies.length > 0 &&\n\t\t\t\t<PanelBody title={__('Required Plugins', redux_templates.i18n)} icon={more} initialOpen={false}>\n\t\t\t\t\t<PanelRow className=\"requirements-list-div\">\n\t\t\t\t\t\t<div className=\"requirements-list\">\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tinstallDependencies.map(pluginKey => {\n\t\t\t\t\t\t\t\t\t\tconst pluginInstance = redux_templates.supported_plugins[pluginKey];\n\t\t\t\t\t\t\t\t\t\tif (!pluginInstance) {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log('Missing plugin details for ' + pluginKey);\n\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst plugin_name = pluginKey.replace('-pro', '').replace('-premium', '').replace(/\\W/g, '').toLowerCase();\n\t\t\t\t\t\t\t\t\t\tif ('redux' === plugin_name) {\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst IconComponent = Icons[plugin_name];\n\t\t\t\t\t\t\t\t\t\treturn (\n\n\t\t\t\t\t\t\t\t\t\t\t<li key={pluginKey}>\n\t\t\t\t\t\t\t\t\t\t\t\t{IconComponent && <IconComponent/>}\n\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"redux-templates-dependency-name\">{pluginInstance.name}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t{requiresInstall(itemData) &&\n\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip position={'bottom center'}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t text={__('Not Installed', redux_templates.i18n)}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className='redux-icon-wrapper'><i\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"fa fa-exclamation-triangle\"/></div>\n\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t{pluginInstance.url ?\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip position={'top right'}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t text={__('Visit Plugin Website', redux_templates.i18n)}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"pluginURL\"><a href={pluginInstance.url}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t target=\"_blank\"><i\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"fas fa-external-link-alt\"/></a></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip> : null}\n\t\t\t\t\t\t\t\t\t\t\t</li>);\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</ul>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</PanelRow>\n\t\t\t\t</PanelBody>\n\t\t\t}\n\t\t\t{\n\t\t\t\t'redux' !== source &&\n\t\t\t\t<PanelBody title={__('Template Details', redux_templates.i18n)} icon={more} initialOpen={false}>\n\t\t\t\t\t<PanelRow className=\"redux-block-pills\">\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t{'redux' !== source && <li><strong>Author</strong>: {source.slice(0,1).toUpperCase() + source.slice(1, source.length)}</li>}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</PanelRow>\n\t\t\t\t</PanelBody>\n\t\t\t}\n\t\t</div>\n\t);\n}\n","import FullyOverlayHeader from './FullyOverlayHeader';\nimport SidebarContent from './SidebarContent';\nimport FullyOverlayFooter from './FullyOverlayFooter';\nimport {isBlockPro} from '../stores/helper';\n\nfunction SitePreviewSidebar(props) {\n const {itemData, previewClass, expandedClass, onImport} = props;\n const {onCloseCustomizer, onChangePreviewClass, onToggleExpanded, onNextBlock, onPrevBlock} = props;\n const isPro = isBlockPro(itemData.pro, itemData.source);\n\n return (\n <div className=\"wp-full-overlay-sidebar\">\n <FullyOverlayHeader onCloseCustomizer={onCloseCustomizer} onNextBlock={onNextBlock}\n onPrevBlock={onPrevBlock}\n pro={isPro} onImport={onImport}/>\n <SidebarContent itemData={itemData} pro={isPro} />\n <FullyOverlayFooter previewClass={previewClass} expandedClass={expandedClass} pro={isPro}\n onChangePreviewClass={onChangePreviewClass} onToggleExpanded={onToggleExpanded}\n onImport={onImport}/>\n </div>\n );\n}\n\n\nexport default SitePreviewSidebar;\n","const {compose} = wp.compose;\nconst {withDispatch, withSelect} = wp.data;\nconst {useState, useEffect, useReducer} = wp.element\nconst {Spinner} = wp.components;\nimport SitePreviewSidebar from './SitePreviewSidebar';\nimport {ModalManager} from '../modal-manager'\nimport ImportWizard from '../modal-import-wizard';\nimport {Fragment} from 'react';\nimport SafeImageLoad from '~redux-templates/components/safe-image-load';\nimport {processImportHelper} from '~redux-templates/stores/actionHelper';\nimport './style.scss';\n\nconst initialState = {\n currentPageData: null,\n currentIndex: 0,\n itemData: null,\n imageURL: ''\n};\n\nconst LOADING_RESET = 0;\nconst IN_PROGRESS = 1;\nconst FULLY_LOADED = 2;\n\nconst previewReducer = (state, action) => {\n let currentPageData;\n let imageURL;\n switch(action.type) {\n case 'INDEX':\n currentPageData = state.currentPageData;\n break;\n case 'DATA':\n currentPageData = action.currentPageData;\n break;\n }\n const itemData = currentPageData[action.currentIndex];\n if (itemData.image_full)\n imageURL = itemData.image_full;\n else\n imageURL = itemData.image\n\n return {\n currentPageData,\n currentIndex: action.currentIndex,\n imageURL,\n itemData\n };\n}\n\nfunction PreviewModal(props) {\n\n const {startIndex, currentPageData} = props;\n const {setImportingTemplate, importingTemplate} = props;\n\n const [state, dispatch] = useReducer(previewReducer, initialState);\n\n const [previewClass, setPreviewClass] = useState('preview-desktop')\n const [expandedClass, toggleExpanded] = useState('expanded')\n const [pressedKey, setPressedKey] = useState(null);\n const [loading, setLoading] = useState(IN_PROGRESS);\n const [wrapperClassName, setWrapperClassName] = useState('wp-full-overlay sites-preview theme-install-overlay ');\n\n // Key event handling : event listener set up\n useEffect(() => {\n const handleKeyDown = ({keyCode}) => {\n setPressedKey(keyCode);\n }\n\n window.addEventListener('keydown', handleKeyDown);\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n }\n }, []);\n\n // Key Event handling\n useEffect(() => {\n if (pressedKey !== null) {\n if (pressedKey === 37) onPrevBlock();\n if (pressedKey === 39) onNextBlock();\n setPressedKey(null);\n }\n }, [pressedKey])\n\n useEffect(() => {\n if (isNaN(startIndex) === false && currentPageData)\n dispatch({ type: 'DATA', currentIndex: startIndex, currentPageData });\n }, [startIndex, currentPageData]);\n\n // mobile/desktop preview status and sidebar collapse/expand\n useEffect(() => {\n setWrapperClassName(['wp-full-overlay sites-preview theme-install-overlay ', previewClass, expandedClass].join(' '));\n }, [previewClass, expandedClass])\n\n const onCloseCustomizer = () => {\n ModalManager.closeCustomizer();\n }\n\n const onNextBlock = () => {\n if (state.currentIndex < currentPageData.length - 1) {\n startLoading();\n dispatch({ type: 'INDEX', currentIndex: state.currentIndex + 1 });\n }\n }\n\n const onPrevBlock = () => {\n if (state.currentIndex > 0) {\n setLoading();\n dispatch({ type: 'INDEX', currentIndex: state.currentIndex - 1 });\n }\n }\n\n const startLoading = () => {\n setLoading(LOADING_RESET);\n setTimeout(() => {\n setLoading(IN_PROGRESS);\n }, 100)\n }\n\n\n const importStarterBlock = () => {\n setImportingTemplate(state.itemData);\n ModalManager.closeCustomizer();\n }\n\n const processImport = () => {\n if (importingTemplate) processImportHelper();\n }\n\n // Called from iframe upon successful loading\n const hideSpinner = () => {\n setLoading(FULLY_LOADED);\n }\n\n if (!state || !state.itemData) return null;\n\n return (\n <Fragment>\n <div className={wrapperClassName} style={{display: 'block'}}>\n <SitePreviewSidebar itemData={state.itemData} previewClass={previewClass} expandedClass={expandedClass}\n onNextBlock={onNextBlock} onPrevBlock={onPrevBlock}\n onCloseCustomizer={onCloseCustomizer} onToggleExpanded={e => toggleExpanded(e)}\n onImport={importStarterBlock}\n onChangePreviewClass={e => setPreviewClass(e)}/>\n <div className=\"wp-full-overlay-main loaded\">\n {\n (loading < FULLY_LOADED) && <Spinner />\n }\n {state.itemData.url &&\n <iframe src={(loading === LOADING_RESET) ? '' : state.itemData.url + '?preview=1'} target='Preview' onLoad={hideSpinner}></iframe>\n }\n {!state.itemData.url &&\n <div className='redux-templates-modal-preview-box'>\n <SafeImageLoad url={state.imageURL} />\n </div>\n }\n\n </div>\n </div>\n { importingTemplate && <ImportWizard startImportTemplate={processImport} /> }\n </Fragment>\n );\n}\n\nexport default compose([\n withDispatch((dispatch) => {\n const {\n setImportingTemplate,\n setCustomizerOpened\n } = dispatch('redux-templates/sectionslist');\n\n return {\n setImportingTemplate,\n setCustomizerOpened\n };\n }),\n\n withSelect((select, props) => {\n const {getImportingTemplate} = select('redux-templates/sectionslist');\n return {\n importingTemplate: getImportingTemplate()\n };\n })\n])(PreviewModal);\n","\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./modals.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./modals.scss\", function() {\n\t\tvar newContent = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./modals.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","/**\n * WordPress dependencies\n */\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { compose, ifCondition } from '@wordpress/compose';\nimport { download } from '../export/file';\nconst { Fragment } = wp.element;\nimport { colorizeIcon } from '~redux-templates/icons'\n\nimport { Dashicon } from '@wordpress/components';\n\nfunction ExportPageContentMenuItem( { createNotice, editedPostContent } ) {\n if (!wp.plugins) return null;\n\n const { PluginMoreMenuItem } = wp.editPost;\n\n const exportFullpage = () => {\n const fileContent = JSON.stringify( {\n __file: 'core_block',\n content: editedPostContent,\n }, null, 2 );\n\n const fileName = 'page-template-export.json';\n download( fileName, fileContent, 'application/json' );\n }\n\n\n return (\n <Fragment>\n <PluginMoreMenuItem\n icon={ colorizeIcon( <Dashicon icon=\"migrate\" /> ) }\n role=\"menuitemcheckbox\"\n onClick={ exportFullpage }\n >\n { __( 'Export Page', redux_templates.i18n ) }\n </PluginMoreMenuItem>\n </Fragment>\n );\n}\n\nconst ExportPageContentMenu = compose(\n withSelect( ( select ) => ( {\n editedPostContent: select( 'core/editor' ).getEditedPostAttribute(\n 'content'\n ),\n } ) ),\n withDispatch( ( dispatch ) => {\n const { createNotice } = dispatch( 'core/notices' );\n\n return {\n createNotice,\n };\n } ),\n ifCondition( ( { editedPostContent } ) => editedPostContent.length > 0 )\n)( ExportPageContentMenuItem );\n\nif (wp.plugins) {\n const { registerPlugin } = wp.plugins;\n registerPlugin('redux-templates-export-page', {\n render: ExportPageContentMenu,\n });\n}\n","/**\n * External dependencies\n */\nimport { kebabCase } from 'lodash';\n/**\n * Internal dependencies\n */\n\nimport exportReusableBlock from './reusable';\nimport { download } from './file';\nimport { colorizeIcon } from '~redux-templates/icons'\n\n/**\n * WordPress dependencies\n */\nconst { __ } = wp.i18n;\nconst { withSelect, select } = wp.data;\nconst { compose } = wp.compose;\nconst { Fragment } = wp.element;\nconst { withSpokenMessages } = wp.components;\nconst { serialize } = wp.blocks;\nimport { Dashicon } from '@wordpress/components';\n\n/**\n * Render plugin\n */\nfunction ExportManager(props) {\n\tconst { selectedBlockCount, selectedBlock, selectedBlocks } = props;\n\n\tif (!wp.editPost) return null;\n\n\tconst { PluginBlockSettingsMenuItem } = wp.editPost;\n\tconst saveAsJSON = () => {\n\t\tif ( selectedBlockCount < 1 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet blocks;\n\t\tlet title = 'redux_templates/export';\n\n\t\tif ( selectedBlockCount === 1 ) {\n\t\t\t//export as reusable when reusable is selected\n\t\t\tif ( selectedBlock.name === 'core/block' ) {\n\t\t\t\texportReusableBlock( selectedBlock.attributes.ref );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tblocks = serialize( selectedBlock );\n\t\t\ttitle = selectedBlock.name;\n\t\t}\n\n\t\tif ( selectedBlockCount > 1 ) {\n\t\t\tblocks = serialize( selectedBlocks );\n\t\t}\n\n\t\t//do export magic\n\n\t\tconst fileContent = JSON.stringify( {\n\t\t\t__file: 'core_block',\n\t\t\tcontent: blocks,\n\t\t}, null, 2 );\n\n\t\tconst fileName = 'block-template-' + kebabCase( title ) + '.json';\n\t\tdownload( fileName, fileContent, 'application/json' );\n\t}\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<PluginBlockSettingsMenuItem\n\t\t\t\ticon={ colorizeIcon( <Dashicon icon=\"migrate\" /> ) }\n\t\t\t\tlabel={ __( 'Export Block', redux_templates.i18n ) }\n\t\t\t\tonClick={ saveAsJSON }\n\t\t\t>\n\n\t\t\t</PluginBlockSettingsMenuItem>\n\t\t</Fragment>\n\t);\n}\n\nexport default compose( [\n\twithSelect( () => {\n\t\tconst { getSelectedBlockCount, getSelectedBlock, getMultiSelectedBlocks } = select( 'core/block-editor' );\n\t\tconst { getBlock } = select( 'core/block-editor' );\n\n\t\treturn {\n\t\t\tselectedBlockCount: getSelectedBlockCount(),\n\t\t\tselectedBlock: getSelectedBlock(),\n\t\t\tselectedBlocks: getMultiSelectedBlocks(),\n\t\t\tgetBlock,\n\t\t};\n\t} ),\n\twithSpokenMessages,\n] )( ExportManager );\n","const block_export_json = function (el, type) {\n if (!el) {\n return\n }\n\n if (el) {\n t ? t += '.json' : t = 'block.json', 'object' === ('undefined' === typeof e ? 'undefined' : u(e)) && (el = 1 === a.count ? JSON.stringify(e.shift(), void 0, 4) : JSON.stringify(e, void 0, 4));\n var n = new Blob([el], {\n type: 'text/json'\n }),\n o = document.createEvent('MouseEvents'),\n l = document.createElement('a');\n l.download = t, l.href = window.URL.createObjectURL(n), l.dataset.downloadurl = ['text/json', l.download, l.href].join(':'), o.initMouseEvent('click', !0, !1, window, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), l.dispatchEvent(o)\n }\n}\n\nconst block_export_html = function (el, type) {\n if (!el) {\n return\n }\n\n if (el) {\n t ? t += '.json' : t = 'block.json', 'object' === ('undefined' === typeof e ? 'undefined' : u(e)) && (el = 1 === a.count ? JSON.stringify(e.shift(), void 0, 4) : JSON.stringify(e, void 0, 4));\n var n = new Blob([el], {\n type: 'text/json'\n }),\n o = document.createEvent('MouseEvents'),\n l = document.createElement('a');\n l.download = t, l.href = window.URL.createObjectURL(n), l.dataset.downloadurl = ['text/json', l.download, l.href].join(':'), o.initMouseEvent('click', !0, !1, window, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), l.dispatchEvent(o)\n }\n}\n\nconst block_export_page = function (el, type) {\n if (!el) {\n return\n }\n\n if (el) {\n t ? t += '.json' : t = 'block.json', 'object' === ('undefined' === typeof e ? 'undefined' : u(e)) && (el = 1 === a.count ? JSON.stringify(e.shift(), void 0, 4) : JSON.stringify(e, void 0, 4));\n var n = new Blob([el], {\n type: 'text/json'\n }),\n o = document.createEvent('MouseEvents'),\n l = document.createElement('a');\n l.download = t, l.href = window.URL.createObjectURL(n), l.dataset.downloadurl = ['text/json', l.download, l.href].join(':'), o.initMouseEvent('click', !0, !1, window, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), l.dispatchEvent(o)\n }\n}\n\n/**\n * Downloads a file.\n *\n * @param {string} fileName File Name.\n * @param {string} content File Content.\n * @param {string} contentType File mime type.\n */\nexport function download( fileName, content, contentType ) {\n const file = new window.Blob( [ content ], { type: contentType } );\n\n // IE11 can't use the click to download technique\n // we use a specific IE11 technique instead.\n if ( window.navigator.msSaveOrOpenBlob ) {\n window.navigator.msSaveOrOpenBlob( file, fileName );\n } else {\n const a = document.createElement( 'a' );\n a.href = URL.createObjectURL( file );\n a.download = fileName;\n\n a.style.display = 'none';\n document.body.appendChild( a );\n a.click();\n document.body.removeChild( a );\n }\n}\n","import ExportManager from './export-block-menu-item';\nif (wp.plugins) {\n\tconst { registerPlugin } = wp.plugins;\n\n\tregisterPlugin( 'redux-templates-export', {\n\t\trender: ExportManager,\n\t} );\n}\n","/**\n * External dependencies\n */\nimport { kebabCase } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport { download } from './file';\n\n/**\n * Export a reusable block as a JSON file.\n *\n * @param {number} id\n */\nasync function exportReusableBlock( id ) {\n\tconst postType = await wp.apiFetch( { path: '/wp/v2/types/wp_block' } );\n\tconst post = await wp.apiFetch( { path: '/wp/v2/' + postType.rest_base + '/' + id + '?context=edit' } );\n\tconst title = post.title.raw;\n\tconst content = post.content.raw;\n\tconst fileContent = JSON.stringify( {\n\t\t__file: 'wp_block',\n\t\ttitle,\n\t\tcontent,\n\t}, null, 2 );\n\tconst fileName = kebabCase( title ) + '.json';\n\n\tdownload( fileName, fileContent, 'application/json' );\n}\n\nexport default exportReusableBlock;","/**\n * WordPress dependencies\n */\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { compose, ifCondition } from '@wordpress/compose';\nimport {ModalManager} from '../../modal-manager';\nimport LibraryModal from '../../modal-library';\nimport { ReduxTemplatesIconColor } from '~redux-templates/icons';\n\nconst { Fragment } = wp.element;\n\nfunction OpenLibraryContentMenuItem( ) {\n\tif (!wp.plugins) return null;\n\n\tconst { PluginMoreMenuItem } = wp.editPost;\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<PluginMoreMenuItem\n\t\t\t\ticon={ ReduxTemplatesIconColor() }\n\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tModalManager.open(<LibraryModal />);\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ __( 'Template Library', redux_templates.i18n ) }\n\t\t\t</PluginMoreMenuItem>\n\t\t</Fragment>\n\t);\n}\n\nconst OpenLibraryContentMenu = compose(\n\twithSelect( ( select ) => ( {\n\t} ) ),\n\twithDispatch( ( dispatch ) => {\n\t} ),\n\n)( OpenLibraryContentMenuItem );\n\nif (wp.plugins) {\n\tconst { registerPlugin } = wp.plugins;\n\tregisterPlugin('redux-open-library-context', {\n\t\trender: OpenLibraryContentMenu,\n\t});\n}\n","import {noop} from 'lodash'\nimport {Fragment} from '@wordpress/element'\nimport {__} from '@wordpress/i18n'\nimport {select, withDispatch} from '@wordpress/data'\nimport {compose} from '@wordpress/compose'\nimport {PluginBlockSettingsMenuItem} from '@wordpress/edit-post'\nimport { ReduxTemplatesIcon } from '../../icons';\nimport {ModalManager} from '../../modal-manager'\nimport FeedbackDialog from '~redux-templates/modal-feedback';\nimport sortBy from 'lodash/sortBy';\nimport map from 'lodash/map';\nimport {getWithExpiry} from '../../stores/helper';\n\n/**\n * Based on: https://github.com/WordPress/gutenberg/blob/master/packages/editor/src/components/convert-to-group-buttons/convert-button.js\n */\n\n\n/**\n * Internal dependencies\n */\n\nconst options = sortBy(getWithExpiry('page_categories_list'), 'label');\nconst schema = {\n type: 'object',\n properties: {\n title: {\n type: 'string',\n title: 'Block Title'\n },\n category: {\n type: 'string',\n title: 'Category',\n enum: map(options, 'value'),\n enumNames: map(options, 'label')\n },\n description: {\n type: 'string',\n title: 'Description'\n }\n }\n}\nconst uiSchema = {\n title: {\n classNames: 'fixed-control'\n },\n category: {\n classNames: 'fixed-control'\n },\n description: {\n 'ui:widget': 'textarea',\n }\n};\n\nexport function ShareBlockButton({clientIds})\n{\n // Only supported by WP >= 5.3.\n if (!clientIds) {\n return null\n }\n\n const onShareBlock = () => {\n const data = {\n postID: select('core/editor').getCurrentPostId(),\n editor_blocks: select('core/block-editor').getBlocksByClientId(clientIds),\n type: 'block'\n };\n ModalManager.openFeedback(\n <FeedbackDialog\n title={__('Redux Shares', redux_templates.i18n)}\n width={700}\n description={__('Share this design', redux_templates.i18n)}\n schema={schema}\n uiSchema={uiSchema}\n data={data}\n headerImage={<i className=\"fas fa-share header-icon\"></i>}\n endpoint='share'\n onSuccess={data => window.open(data.data.url, '_blank')}\n buttonLabel={__('Submit Template', redux_templates.i18n)}\n />\n )\n }\n\n return (\n <Fragment>\n <PluginBlockSettingsMenuItem\n icon={ReduxTemplatesIcon}\n label={__('Share Block', redux_templates.i18n)}\n onClick={onShareBlock}\n />\n {/*<PluginBlockSettingsMenuItem*/}\n {/* icon={ReduxTemplatesIcon}*/}\n {/* label={__('Export as Reusable Block', redux_templates.i18n)}*/}\n {/* onClick={onExportBlock}*/}\n {/*/>*/}\n </Fragment>\n )\n}\n\nexport default compose([\n\n withDispatch((dispatch, {\n clientIds, onToggle = noop, blocksSelection = [],\n }) => {\n const {\n replaceBlocks,\n } = dispatch('core/block-editor')\n\n return {\n onExportBlock() {\n if (!blocksSelection.length) {\n return\n }\n\n console.log(blocksSelection);\n\n let blocks = wp.data.select('core/block-editor').getBlocks();\n let fileName = 'blocks.json'\n\n const title = select('core/block-editor').getSelectedBlockName();\n const content = select('core/block-editor').getSelectedBlockClientId();\n // const content = post.content.raw;\n const fileContent = JSON.stringify(\n {\n __file: 'wp_block',\n title,\n content,\n },\n null,\n 2\n );\n console.log(fileContent);\n // const theFileName = kebabCase( title ) + '.json';\n //\n // download( theFileName, fileContent, 'application/json' );\n //\n //\n //\n // if (blocksSelection.length == 1) {\n // fileName = blocksSelection[0].name.replace('/', '_') + '.json'\n // }\n //\n // saveData(blocksSelection, fileName, 'json');\n\n onToggle()\n },\n }\n }),\n])(ShareBlockButton)\n","import { withSelect } from '@wordpress/data'\nimport ShareBlockButton from './buttons'\nimport { ReduxTemplatesIcon } from '~redux-templates/icons';\n\nif (wp.plugins) {\n const { registerPlugin } = wp.plugins;\n const Buttons = withSelect( select => {\n const { getSelectedBlockClientIds } = select( 'core/block-editor' )\n\n // Only supported by WP >= 5.3.\n if ( ! getSelectedBlockClientIds ) {\n return {}\n }\n\n return {\n clientIds: getSelectedBlockClientIds(),\n }\n } )( ShareBlockButton );\n\t// TODO - Finish this off and show to users.\n // registerPlugin( 'redux-templates-share-block-btn', {\n // icon: ReduxTemplatesIcon,\n // render: Buttons,\n // } );\n}\n","import Sidebar from './sidebar'\nimport { ReduxTemplatesIcon } from '~redux-templates/icons';\nif (wp.plugins) {\n\tconst { registerPlugin } = wp.plugins;\n\n\t\n\n\tregisterPlugin( 'redux-templates-share', {\n\t\ticon: ReduxTemplatesIcon,\n\t\trender: Sidebar,\n\t} );\n}\n","const {__} = wp.i18n;\nconst {compose} = wp.compose;\nconst {withSelect, select} = wp.data;\nconst {Fragment} = wp.element;\nconst {PanelBody} = wp.components\n\nimport sortBy from 'lodash/sortBy';\nimport map from 'lodash/map';\nimport {ModalManager} from '../../modal-manager'\nimport FeedbackDialog from '~redux-templates/modal-feedback';\nimport {getWithExpiry} from '../../stores/helper';\n\nconst options = sortBy(getWithExpiry('section_categories_list'), 'label');\nconst schema = {\n type: 'object',\n properties: {\n title: {\n type: 'string',\n title: 'Block Title'\n },\n category: {\n type: 'string',\n title: 'Category',\n enum: map(options, 'value'),\n enumNames: map(options, 'label')\n },\n description: {\n type: 'string',\n title: 'Description'\n }\n }\n}\nconst uiSchema = {\n title: {\n classNames: 'fixed-control'\n },\n category: {\n classNames: 'fixed-control'\n },\n description: {\n 'ui:widget': 'textarea',\n }\n};\n\nfunction Sidebar(props) {\n if (!wp.editPost) return null;\n\treturn null; // TODO - Finish fixing this experience.\n const {PluginSidebar, PluginSidebarMoreMenuItem} = wp.editPost;\n const {getEditorBlocks} = props;\n const onShare = () => {\n const data = {\n postID: select('core/editor').getCurrentPostId(),\n editor_blocks: getEditorBlocks(),\n type: 'page'\n };\n ModalManager.openFeedback(\n <FeedbackDialog\n title={__('Redux Shares', redux_templates.i18n)}\n description={__('Share this design', redux_templates.i18n)}\n schema={schema}\n uiSchema={uiSchema}\n data={data}\n width={700}\n headerImage={<i className=\"fas fa-share header-icon\"></i>}\n endpoint='share'\n onSuccess={data => window.open(data.data.url, '_blank')}\n buttonLabel={__('Submit Template', redux_templates.i18n)}\n />\n )\n }\n\n return (\n <Fragment>\n <PluginSidebarMoreMenuItem target=\"redux-templates-share\">\n {__('Redux Template', redux_templates.i18n)}\n </PluginSidebarMoreMenuItem>\n <PluginSidebar name=\"redux-templates-share\" title={__('Redux Shares', redux_templates.i18n)}>\n <PanelBody title={__('Share this Design', redux_templates.i18n)} initialOpen={true}>\n <div className=\"d-flex justify-content-center\">\n <a className=\"button button-primary\" onClick={onShare}>\n <i className=\"fas fa-share\"></i>\n &nbsp;{__('Share this design', redux_templates.i18n)}\n </a>\n </div>\n </PanelBody>\n </PluginSidebar>\n </Fragment>\n );\n}\n\nexport default compose([\n withSelect((select) => {\n const {getEditorBlocks} = select('core/editor');\n return {\n getEditorBlocks\n };\n })\n])(Sidebar);\n","const { parse, createBlock } = wp.blocks;\nconst { apiFetch } = wp;\nconst { dispatch, select } = wp.data;\nconst { getBlockOrder } = select( 'core/block-editor' );\nconst { getBlockTypes } = select('core/blocks');\nconst { savePost, editPost } = dispatch('core/editor');\nconst { insertBlocks, removeBlocks, multiSelect } = dispatch('core/block-editor');\nconst { createSuccessNotice, createErrorNotice, createNotice, removeNotice } = dispatch('core/notices');\nimport { __ } from '@wordpress/i18n'\nimport { ModalManager } from '~redux-templates/modal-manager';\nimport PreviewModal from '../modal-preview';\nimport FeedbackDialog from '~redux-templates/modal-feedback';\n\n\n// create Block to import template\nexport const handleBlock = (data, installedDependencies) => {\n let block_data = null;\n if ('template' in data) {\n block_data = parse(data.template);\n } else if ('attributes' in data) {\n if (!('innerBlocks' in data)) {\n data.innerBlocks = [];\n }\n if (!('name' in data)) {\n errorCallback('Template malformed, `name` for block not specified.');\n }\n // This kind of plugins are not ready to accept before reloading, thus, we save it into localStorage and just reload for now.\n if (installedDependencies === true) {\n window.redux_templates_tempdata = [...window.redux_templates_tempdata, data];\n return null;\n } else {\n block_data = createBlock(data.name, data.attributes, data.innerBlocks)\n }\n } else {\n errorCallback('Template error. Please try again.');\n }\n return block_data;\n}\n\nexport const processImportHelper = () => {\n const { setImportingTemplate, discardAllErrorMessages, clearSearch } = dispatch('redux-templates/sectionslist');\n const type = select('redux-templates/sectionslist').getActiveItemType() === 'section' ? 'sections' : 'pages';\n const data = select('redux-templates/sectionslist').getImportingTemplate();\n const installedDependencies = select('redux-templates/sectionslist').getInstalledDependencies();\n const isImportToAppend = select('redux-templates/sectionslist').getImportToAppend();\n\n if (type === 'pages') {\n \teditPost({'template': 'redux-templates_full_width'});\n } else {\n\t if ( '' === select( 'core/editor' ).getEditedPostAttribute( 'template' ) ) {\n\t\t editPost({'template': 'redux-templates_contained'});\n\t }\n }\n\n discardAllErrorMessages();\n let the_url = 'redux/v1/templates/template?type=' + type + '&id=' + data.id + '&uid=' + window.userSettings.uid;\n if ('source' in data) {\n the_url += '&source=' + data.source;\n }\n\n const options = {\n method: 'GET',\n path: the_url,\n headers: { 'Content-Type': 'application/json', 'Registered-Blocks': installedBlocksTypes() }\n };\n\n if (dispatch('core/edit-post') && select('core/edit-post').getEditorMode() === 'text') {\n const { switchEditorMode } = dispatch('core/edit-post');\n switchEditorMode()\n }\n window.redux_templates_tempdata = [];\n\n apiFetch(options).then(response => {\n // First, let's give user feedback.\n displayNotice(response.data, {type: 'snackbar'});\n \n if (isImportToAppend === false) {\n const rootBlocksClientIds = getBlockOrder();\n multiSelect(\n rootBlocksClientIds[0],\n rootBlocksClientIds[rootBlocksClientIds.length - 1]\n );\n removeBlocks( rootBlocksClientIds );\n }\n\n if (response.success && response.data) {\n let responseBlockData = response.data;\n\n // Important: Update left count from the response in case of no Redux PRO\n if (redux_templates.mokama !== '1' && isNaN(responseBlockData.left) === false)\n redux_templates.left = responseBlockData.left;\n\n let handledData = [];\n if (responseBlockData.hasOwnProperty('template') || responseBlockData.hasOwnProperty('attributes'))\n handledData = handleBlock(responseBlockData, installedDependencies);\n else\n handledData = Object.keys(responseBlockData).filter(key => key !== 'cache')\n .map(key => handleBlock(responseBlockData[key], installedDependencies));\n\n localStorage.setItem('importing_data', JSON.stringify(data));\n localStorage.setItem('block_data', JSON.stringify(redux_templates_tempdata));\n localStorage.setItem('is_appending', isImportToAppend);\n\n insertBlocks(handledData);\n createSuccessNotice('Template inserted', { type: 'snackbar' });\n\n if (installedDependencies === true)\n savePost()\n .then(() => window.location.reload())\n .catch(() => createErrorNotice('Error while saving the post', { type: 'snackbar' }));\n else {\n ModalManager.close();\n ModalManager.closeCustomizer();\n setImportingTemplate(null);\n }\n afterImportHandling(data, handledData);\n\n } else {\n if (response.success === false)\n errorCallback(response.data.message);\n else\n errorCallback(response.data.error);\n }\n }).catch(error => {\n errorCallback(error.code + ' : ' + error.message);\n });\n}\n\nconst detectInvalidBlocks = (handleBlock) => {\n if (Array.isArray(handleBlock) === true) return handleBlock.filter(block => block.isValid === false);\n return handleBlock && handleBlock.isValid===false ? [handleBlock] : null;\n}\n\n// used for displaying notice from response data\nconst displayNotice = (data, options) => {\n if (data && data.message) {\n const noticeType = data.messageType || 'info';\n createNotice(noticeType, data.message, options)\n }\n}\n\n// show notice or feedback modal dialog based on imported block valid status\nexport const afterImportHandling = (data, handledBlock) => {\n const invalidBlocks = detectInvalidBlocks(handledBlock);\n // get the description from the invalid blocks\n let description = '';\n if (invalidBlocks && invalidBlocks.length < 1)\n description = invalidBlocks.map(block => {\n if (block.validationIssues && Array.isArray(block.validationIssues))\n return block.validationIssues.map(error => {\n return sprintf(...error.args)\n }).join('\\n');\n else\n return null;\n }).join('\\n');\n\n // Prepare Form schema object\n const schema = {\n type: 'object',\n properties: {\n theme_plugins: {\n type: 'boolean',\n title: __('Send theme and plugins', redux_templates.i18n),\n default: true\n },\n send_page_content: {\n type: 'boolean',\n title: __('Send page content', redux_templates.i18n),\n default: true\n },\n template_id: {\n type: 'string',\n default: data.hash,\n title: __('Template ID', redux_templates.i18n)\n },\n description: {\n type: 'string',\n default: description,\n title: __('Description', redux_templates.i18n)\n },\n\n }\n }\n const uiSchema = {\n description: {\n 'ui:widget': 'textarea',\n },\n template_id: {\n 'ui:disabled': true,\n classNames: 'fixed-control'\n }\n };\n\n const feedbackData = {\n content: handledBlock\n };\n if (invalidBlocks && invalidBlocks.length > 0) { // in case there\n createNotice('error', 'Please let us know if there was an issue importing this Redux template.', {\n isDismissible: true,\n id: 'redux-templatesimportfeedback',\n actions: [\n {\n onClick: () => ModalManager.openFeedback(<FeedbackDialog\n title={__('Thank you for reporting an issue.', redux_templates.i18n)}\n description={__('We want to make Redux perfect. Please send whatever you are comfortable sending, and we will do our best to resolve the problem.', redux_templates.i18n)}\n schema={schema}\n uiSchema={uiSchema}\n data={feedbackData}\n ignoreData={true}\n headerImage={<img className=\"header-background\" src={`${redux_templates.plugin}assets/img/popup-contact.png` } />}\n buttonLabel={__('Submit Feedback', redux_templates.i18n)}\n />),\n label: 'Report an Issue',\n isPrimary: true,\n }\n ],\n });\n }\n}\n\n// reload library button handler\nexport const reloadLibrary = () => {\n const { setLoading, setLibrary } = dispatch('redux-templates/sectionslist');\n setLoading(true);\n apiFetch({\n path: 'redux/v1/templates/library?no_cache=1',\n method: 'POST',\n data: {\n 'registered_blocks': installedBlocksTypes(),\n }\n }).then((newLibrary) => {\n setLoading(false);\n setLibrary(newLibrary.data);\n }).catch((error) => {\n errorCallback(error);\n });\n}\n\n\nexport const installedBlocks = () => {\n let installed_blocks = getBlockTypes();\n return Object.keys(installed_blocks).map(key => {\n return installed_blocks[key]['name'];\n })\n}\nexport const installedBlocksTypes = () => {\n let installed_blocks = getBlockTypes();\n\n let names = Object.keys(installed_blocks).map(key => {\n if (!installed_blocks[key]['name'].includes('core')) {\n return installed_blocks[key]['name'].split('/')[0];\n }\n })\n let unique = [...new Set(names)];\n var filtered = unique.filter(function (el) {\n return el;\n });\n\n return filtered\n}\n\nexport const openSitePreviewModal = (index, pageData) => {\n ModalManager.openCustomizer(\n <PreviewModal startIndex={index} currentPageData={pageData} />\n )\n}\n\nconst errorCallback = (errorMessage) => {\n const { appendErrorMessage, setImportingTemplate, setActivateDialogDisplay } = dispatch('redux-templates/sectionslist');\n if (errorMessage === 'Please activate Redux') {\n setActivateDialogDisplay(true);\n redux_templates.left = 0;\n } else {\n appendErrorMessage(errorMessage);\n setImportingTemplate(null);\n }\n}\n","export const actions = {\n setLibrary( library ) {\n return {\n type: 'SET_LIBRARY',\n library\n };\n },\n fetchLibraryFromAPI( path ) {\n return {\n type: 'FETCH_LIBRARY_FROM_API',\n path,\n };\n },\n setActiveItemType( activeItemType ) {\n return {\n type: 'SET_ACTIVE_ITEM_TYPE',\n activeItemType\n }\n },\n setActiveCategory( activeCategory ) {\n return {\n type: 'SET_ACTIVE_CATEGORY',\n activeCategory\n }\n },\n setActiveCollection( activeCollection ) {\n return {\n type: 'SET_ACTIVE_COLLECTION',\n activeCollection\n }\n },\n setActivePriceFilter( activePriceFilter ) {\n return {\n type: 'SET_ACTIVE_PRICE_FILTER',\n activePriceFilter\n }\n },\n setSearchContext( searchContext ) {\n return {\n type: 'SET_SEARCH_CONTEXT',\n searchContext\n }\n },\n setDependencyFilters( dependencyFilters ) {\n return {\n type: 'SET_DEPENDENCY_FILTERS',\n dependencyFilters\n }\n },\n setCurrentPage( currentPage ) {\n return {\n type: 'SET_CURRENT_PAGE',\n currentPage\n }\n },\n setLoading( loading ) {\n return {\n type: 'SET_LOADING',\n loading\n }\n },\n setColumns( columns ) {\n return {\n type: 'SET_COLUMNS',\n columns\n }\n },\n setSortBy( sortBy ) {\n return {\n type: 'SET_SORT_BY',\n sortBy\n }\n },\n appendErrorMessage( errorMessage ) {\n return {\n type: 'APPEND_ERROR_MESSAGE',\n errorMessage: errorMessage || 'Unknown Error'\n }\n },\n discardAllErrorMessages() {\n return {\n type: 'DISCARD_ALL_ERROR_MESSAGES'\n }\n },\n setInstalledDependencies(installedDependencies) {\n return {\n type: 'SET_INSTALLED_DEPENDENCIES',\n installedDependencies\n }\n },\n setTourOpen(isTourOpen) {\n return {\n type: 'SET_TOUR_OPEN',\n isTourOpen\n }\n },\n setTourActiveButtonGroup(data) {\n return {\n type: 'SET_TOUR_ACTIVE_BUTTON_GROUP',\n data\n }\n },\n setTourPreviewVisible(isVisible) {\n return {\n type: 'SET_PREVIEW_VISIBLE',\n isVisible\n }\n },\n setImportingTemplate(importingTemplate) {\n return {\n type: 'SET_IMPORTING_TEMPLATE',\n importingTemplate\n }\n },\n setChallengeStep(data) {\n return {\n type: 'SET_CHALLENGE_STEP',\n data\n }\n },\n setChallengeOpen(data) {\n return {\n type: 'SET_CHALLENGE_OPEN',\n data\n }\n },\n setChallengeTooltipRect(data) {\n return {\n type: 'SET_CHALLENGE_TOOLTIP_RECT',\n data\n }\n },\n setChallengeFinalStatus(data) {\n return {\n type: 'SET_CHALLENGE_FINAL_STATUS',\n data\n }\n },\n setChallengePassed(data) {\n return {\n type: 'SET_CHALLENGE_PASSED',\n data\n }\n },\n setChallengeListExpanded(data){\n return {\n type: 'SET_CHALLENGE_LIST_EXPANDED',\n data\n }\n },\n setActivateDialogDisplay(data) {\n return {\n type: 'SET_ACTIVATE_DIALOG_DISPLAY',\n data\n }\n },\n setImportToAppend(data) {\n return {\n type: 'SET_IMPORT_TO_APPEND',\n data\n }\n },\n setDependencyFilterRule(data) {\n return {\n type: 'SET_DEPENDENCY_FILTER_RULE',\n data\n }\n },\n selectDependencies(data) {\n return {\n type: 'SELECT_DEPENDENCIES',\n data\n }\n },\n clearSearch() {\n return {\n type: 'CLEAR_SEARCH'\n }\n },\n\tclearState() {\n\t\treturn {\n\t\t\ttype: 'CLEAR_STATE'\n\t\t}\n\t}\n};\n","export const getPluginInstance = (pluginKey) => {\n if (pluginKey in redux_templates.supported_plugins) {\n return redux_templates.supported_plugins[pluginKey];\n }\n return false; // Deal with unknown plugins\n}\n\nexport const needsPluginInstall = (pluginKey) => {\n const pluginInstance = getPluginInstance(pluginKey);\n return !pluginInstance || pluginInstance.hasOwnProperty('version') === false;\n}\n\nexport const needsPluginPro = (pluginKey) => {\n const pluginInstance = getPluginInstance(pluginKey);\n return (pluginInstance && pluginInstance.hasOwnProperty('has_pro') && pluginInstance.has_pro &&\n (pluginInstance.hasOwnProperty('is_pro') === false || pluginInstance.is_pro === false));\n}\n\n\nexport const pluginInfo = (pluginKey) => {\n let pluginInstance = processPlugin(pluginKey);\n if (!pluginInstance) return {name: null, slug: null, url: null};\n return pluginInstance\n}\n\n\nexport const processPlugin = (pluginKey) => {\n let pluginInstance = {...getPluginInstance(pluginKey)};\n if (!pluginInstance) {\n return pluginInstance\n }\n\n if ('free_slug' in pluginInstance && pluginInstance['free_slug'] in redux_templates.supported_plugins) {\n let new_instance = {...getPluginInstance(pluginInstance.free_slug)}\n new_instance.free_slug = pluginInstance.free_slug\n new_instance.name = pluginInstance.name\n if (!('is_pro' in new_instance)) {\n delete new_instance.version\n }\n pluginInstance = new_instance\n }\n pluginInstance.slug = pluginInstance.slug ? pluginInstance.slug : pluginKey;\n\n return pluginInstance\n}\n\nexport const requiresPro = (data) => {\n if (data && data.proDependenciesMissing && data.proDependenciesMissing.length > 0) {\n if (isReduxProInstalled()) { // redux pro installed, then skip merged plugins\n return data.proDependenciesMissing.filter((plugin) => isPluginReduxProMerged(plugin) === false).length > 0\n }\n return true;\n }\n return false;\n}\nexport const requiresInstall = (data) => {\n if (data && data.installDependenciesMissing && data.installDependenciesMissing.length > 0) {\n return true;\n }\n if (isReduxProInstalled() && data.proDependenciesMissing) { // redux pro installed, then include merged plugins\n return data.proDependenciesMissing.filter((plugin) => isPluginReduxProMerged(plugin)).length > 0\n }\n return false;\n}\n// Check if redux pro should be installed.\nexport const requiresReduxPro = (data) => {\n if (!data) return false;\n const missingDependencies = [].concat(data.installDependenciesMissing, data.proDependenciesMissing);\n return missingDependencies.reduce((acc, curKey) => {\n if ((isReduxProInstalled() === false) && curKey === 'redux-pro') return true;\n return acc || (isPluginReduxProMerged(curKey) && isReduxProInstalled() === false); // main logic, above were execpetion handling\n }, false);\n}\n\nexport const isPluginReduxProMerged = (pluginKey) => {\n const pluginInstance = getPluginInstance(pluginKey);\n return (pluginInstance !== false && pluginInstance.redux_pro === true);\n}\n\nexport const isTemplateReadyToInstall = (data) => {\n return (requiresInstall(data) || requiresPro(data)) ? false : true;\n}\n\nexport const isTemplatePremium = (data, activeDependencyFilter) => {\n if (data && data.proDependencies !== undefined && data.proDependencies.length > 0) {\n return data.proDependencies.reduce((acc, cur) => {\n if (activeDependencyFilter[cur] === undefined) \n return false;\n return (acc || activeDependencyFilter[cur].value);\n }, false);\n }\n return (data && data.proDependenciesMissing !== undefined && data.proDependenciesMissing.length > 0);\n}\n\nexport const isReduxProInstalled = () => {\n const reduxProPluginInstance = redux_templates.supported_plugins['redux-framework'];\n return (!!(redux_templates.mokama) == true) || reduxProPluginInstance && reduxProPluginInstance.hasOwnProperty('is_pro');\n}","import {isTemplatePremium} from './dependencyHelper';\nimport {missingPluginsArray, NONE_KEY} from './helper';\nconst REDUXTEMPLATES_PRO_KEY = 'redux-pro';\n// Just get current Page Data\nexport const applyCategoryFilter = (pageData, activeCategory) => {\n let currentPageData = [];\n let tempDataID = [];\n if (activeCategory && pageData[activeCategory] && Array.isArray(pageData[activeCategory]) && pageData[activeCategory].length > 0) {\n pageData[activeCategory].map(value => {\n if (!(tempDataID.indexOf(value.ID) > -1)) {\n currentPageData.push(value);\n tempDataID.push(value.ID);\n }\n });\n } else\n for (let key in pageData) {\n Array.isArray(pageData[key]) && pageData[key].map(value => {\n if (!(tempDataID.indexOf(value.ID) > -1)) {\n currentPageData.push(value);\n tempDataID.push(value.ID);\n }\n else {\n if (value.parentID && !(tempDataID.indexOf(value.ID) > -1)) {\n currentPageData.push(value);\n tempDataID.push(value.ID);\n }\n }\n })\n }\n return currentPageData;\n};\n\nexport const applySearchFilter = (pageData, searchContext) => {\n let lowercasedSearchContext = searchContext.toLowerCase();\n if (Array.isArray(pageData)) {\n return pageData.filter(item => (item.name.toLowerCase().indexOf(lowercasedSearchContext) !== -1))\n } else {\n let newPageData = {};\n Object.keys(pageData).forEach(key => {\n newPageData[key] = pageData[key].filter(item => (item.name.toLowerCase().indexOf(lowercasedSearchContext) != -1))\n });\n return newPageData;\n }\n}\n\n\n\nexport const applyHashFilter = (pageData, searchContext) => {\n let lowercasedSearchContext = searchContext.toLowerCase();\n if (Array.isArray(pageData)) {\n return pageData.filter(item => (item.hash && item.hash.toLowerCase().indexOf(lowercasedSearchContext) !== -1))\n } else {\n let newPageData = [];\n Object.keys(pageData).forEach(key => {\n let filteredData = pageData[key].filter(item => (item.hash && item.hash.toLowerCase().indexOf(lowercasedSearchContext) !== -1));\n newPageData = [...newPageData, ...filteredData];\n });\n return newPageData;\n }\n}\n\n// Apply Price filter afterwards : Should make sure if it is a best practise to split this filtering\nexport const applyPriceFilter = (pageData, activePriceFilter, activeDependencyFilter) => {\n if (activePriceFilter !== '') {\n if (Array.isArray(pageData)) {\n return pageData.filter(item => {\n if (activePriceFilter === 'free') return (isTemplatePremium(item, activeDependencyFilter) === false);\n if (activePriceFilter === 'pro') return isTemplatePremium(item, activeDependencyFilter);\n });\n } else {\n let newPageData = {};\n Object.keys(pageData).forEach(key => {\n newPageData[key] = pageData[key].filter(item => {\n if (activePriceFilter === 'free') return (isTemplatePremium(item, activeDependencyFilter) === false);\n if (activePriceFilter === 'pro') return isTemplatePremium(item, activeDependencyFilter);\n });\n });\n return newPageData;\n }\n }\n return pageData;\n}\n\n\nexport const applyDependencyFilters = (pageData, dependencyFilters, dependencyFilterRule) => {\n const truthyDependenciesList = truthyDependencyFiltersList(dependencyFilters);\n if (Array.isArray(pageData)) {\n return pageData.filter(item => isTemplateDependencyFilterIncluded(item, truthyDependenciesList, dependencyFilterRule));\n } else {\n let newPageData = {};\n Object.keys(pageData).forEach(key => {\n newPageData[key] = pageData[key].filter(item => isTemplateDependencyFilterIncluded(item, truthyDependenciesList, dependencyFilterRule));\n });\n return newPageData;\n }\n}\n\nconst isTemplateDependencyFilterIncluded = (item, truthyDependenciesList, dependencyFilterRule) => {\n // console.log(\"now\", item.dependencies, dependencyFilters);\n // No dependencies at all case\n if (!item.dependencies || Object.keys(item.dependencies).length === 0) return truthyDependenciesList.includes(NONE_KEY);\n\n // Normal dependencies filter check\n const filteredList = item.dependencies.filter((dependency) => truthyDependenciesList.includes(dependency));\n\n return dependencyFilterRule ? item.dependencies.length === filteredList.length : filteredList.length > 0; // filter rule = ture => AND operation\n}\n\n// check dependency filter is selected on sidebar\n// Input: dependencyFilter={'qubely', \nexport const valueOfDependencyFilter = (dependencyFilter) => {\n if (dependencyFilter != null && dependencyFilter.hasOwnProperty('value')) return (dependencyFilter.value === true);\n return (dependencyFilter === true);\n}\n\nconst truthyDependencyFiltersList = (dependencyFilters) => {\n return Object.keys(dependencyFilters).filter((key) => dependencyFilters[key].value === true);\n}","import kebabCase from 'lodash/kebabCase'\nimport uniq from 'lodash/uniq';\nimport concat from 'lodash/concat';\nimport flatten from 'lodash/flatten';\nimport sortBy from 'lodash/sortBy';\nimport map from 'lodash/map';\nimport flattenDeep from 'lodash/flattenDeep';\nimport {afterImportHandling} from './actionHelper';\nimport {getPluginInstance, isPluginReduxProMerged} from './dependencyHelper';\nconst {createBlock} = wp.blocks;\nconst {dispatch} = wp.data;\nconst {createSuccessNotice} = dispatch('core/notices');\nconst {insertBlocks} = dispatch('core/block-editor');\n\nconst prefix = 'redux_';\nexport const REDUXTEMPLATES_PRO_KEY = 'redux-pro';\nexport const NONE_KEY = 'core';\nconst EXIPRY_TIME = 5 * 24 * 3600 * 1000;\n\nexport const getCurrentState = (state) => state[state.activeItemType]\n// Helper function not to be exported\nconst convertObjectToArray = (list) => {\n if (!list)\n return [];\n return Object.keys(list).map(key => {\n return {...list[key], ID: key};\n })\n};\n\n// parse categories and section data from section server data\nexport const categorizeData = (list) => {\n let categories = [];\n let data = {};\n\n list.forEach(item => {\n if (item.categories) {\n item.categories.map(catName => {\n let catSlug = kebabCase(catName);\n if (catSlug in data) {\n data[catSlug].push(item)\n } else {\n data[catSlug] = [];\n data[catSlug].push(item)\n }\n let index = -1;\n categories.forEach((change, i) => {\n if (catSlug == change.slug) {\n index = i\n categories[i].ids.push(item.id);\n }\n });\n if (index === -1) {\n categories.push({name: catName, slug: catSlug, ids: [item.id]})\n }\n })\n }\n });\n\n return {categories, data};\n}\n\nexport const parseSectionData = (sections) => {\n const librarySectionData = convertObjectToArray(sections);\n const wholePlugins = uniq(flattenDeep(map(librarySectionData, 'dependencies')));\n const toBeReturned = categorizeData(librarySectionData);\n const categoriesList = toBeReturned.categories.map((category) => {return {label: category.name, value: category.slug}; });\n setWithExpiry('section_categories_list', categoriesList, EXIPRY_TIME);\n return {...toBeReturned, wholePlugins};\n}\n\nexport const parsePageData = (pages) => {\n const libraryPageData = convertObjectToArray(pages);\n const wholePlugins = uniq(flattenDeep(map(libraryPageData, 'dependencies')));\n const toBeReturned = categorizeData(libraryPageData);\n const categoriesList = toBeReturned.categories.map((category) => {return {label: category.name, value: category.slug}; });\n setWithExpiry('page_categories_list', categoriesList, EXIPRY_TIME);\n return {...toBeReturned, wholePlugins};\n}\n\nexport const parseCollectionData = (library) => {\n let libraryCollectionData = convertObjectToArray(library.collections);\n // filter out incomplete data\n libraryCollectionData = libraryCollectionData.filter(collection => collection.pages && collection.pages.length > 0);\n // After common handling, we need to populate homepage data\n libraryCollectionData = libraryCollectionData.map(collection => {\n if (collection.homepage && library.pages[collection.homepage]) collection.homepageData = library.pages[collection.homepage];\n else {\n collection.homepageData = library.pages[collection.pages[0]];\n }\n\n if (collection.pages) {\n collection.installDependenciesMissing = uniq(concat(flatten(collection.pages.map(page => library.pages[page].installDependenciesMissing || []))));\n collection.proDependenciesMissing = uniq(concat(flatten(collection.pages.map(page => library.pages[page].proDependenciesMissing || []))));\n }\n\n return collection;\n });\n const wholePlugins = uniq(flattenDeep(map(libraryCollectionData, 'dependencies')));\n return {...categorizeData(libraryCollectionData), dependencyFilters: {[NONE_KEY]: true, ...library.dependencies}, wholePlugins};\n}\n\n// one of important function\n// get collection children data upon clicking on collection in collections tab\n// always homepage page first, sort alphabetically afterward\nexport const getCollectionChildrenData = (library, activeCollection) => {\n let activeCollectionData = library.collections[activeCollection];\n // sort page except homepage\n let childrenPages = activeCollectionData.pages\n .filter(page => page !== activeCollectionData.homepage)\n .map(child => {\n return {...library.pages[child], ID: child}\n });\n childrenPages = sortBy(childrenPages, 'name');\n // insert homepage at the beginning of the array\n if (activeCollectionData.homepage && library.pages[activeCollectionData.homepage]) {\n childrenPages.unshift(library.pages[activeCollectionData.homepage]);\n }\n return childrenPages;\n}\n\n// Check if the block is pro\nexport const isBlockPro = (pro, source) => {\n if (source && redux_templates.supported_plugins.hasOwnProperty(source))\n return (pro && !redux_templates.supported_plugins[source].is_pro);\n else\n return pro && redux_templates.mokama !== '1';\n}\n\nexport const missingPro = (pro) => {\n return (redux_templates.mokama !== '1' && pro === true);\n}\n\nexport const missingRequirement = (pro, requirements) => {\n if (!requirements) return missingPro(pro);\n else {\n const supported_plugins = redux_templates.supported_plugins;\n for (let i = 0; i < requirements.length; i++) {\n let requirement = requirements[i];\n if (!supported_plugins.hasOwnProperty(requirement.slug))\n return true; // Doesn't have the plugin installed\n else {\n let installedPlugin = supported_plugins[requirement.slug];\n if (Number(requirement.version) > Number(installedPlugin.version) ||\n (requirement.pro === true && installedPlugin.pro === false))\n return true;\n }\n }\n return proCheck;\n }\n}\n\n\nexport const setWithExpiry = (key, value, ttl) => {\n const prefixedKey = prefix + key;\n const now = new Date();\n\n // `item` is an object which contains the original value\n // as well as the time when it's supposed to expire\n const item = {\n value: value,\n expiry: now.getTime() + ttl\n };\n localStorage.setItem(prefixedKey, JSON.stringify(item));\n}\n\nexport const getWithExpiry = (key, defaultValue = null) => {\n const prefixedKey = prefix + key;\n const itemStr = localStorage.getItem(prefixedKey);\n\n // if the item doesn't exist, return null\n if (!itemStr) {\n return defaultValue;\n }\n\n const item = JSON.parse(itemStr);\n const now = new Date();\n\n // compare the expiry time of the item with the current time\n if (now.getTime() > item.expiry) {\n // If the item is expired, delete the item from storage\n // and return null\n localStorage.removeItem(prefixedKey);\n return defaultValue;\n }\n return item.value;\n}\n\n\nexport const handlingLocalStorageData = () => {\n try {\n let blockData = localStorage.getItem('block_data');\n if (!blockData || blockData == null) return;\n blockData = JSON.parse(blockData);\n if (!blockData || blockData == null || blockData.length < 1) return;\n\n blockData = blockData.filter(block => (block.name && block.attributes && block.innerBlocks) )\n .map(block => {\n if (block.name && block.attributes && block.innerBlocks) return createBlock(block.name, block.attributes, block.innerBlocks);\n });\n if (blockData.length > 0) {\n insertBlocks(blockData);\n createSuccessNotice('Template inserted', {type: 'snackbar'});\n }\n // preparing to call after import handling\n let data = localStorage.getItem('importing_data');\n if (!data || data == null) return;\n data = JSON.parse(data);\n afterImportHandling(data, blockData);\n\n // reset the localstorage\n localStorage.setItem('block_data', null);\n localStorage.setItem('importing_data', null);\n } catch (error) {\n alert(error.code + ' : ' + error.message);\n }\n}\n\n\nexport const columnMap = {\n 'large': 2,\n 'medium': 3,\n 'small': 4\n};\n\nexport const pageSizeMap = {\n 'large': 20,\n 'medium': 30,\n 'small': 40\n};\n\nexport const getOnlySelectedDependencyFilters = (dependencyFilters) => {\n return Object.keys(dependencyFilters).filter(key => dependencyFilters[key]);\n}\n\n/*\nInput: dependencies: {getwid: 38, qubely: 82...}\nInput: dependencies: ['getwid', 'qubely', ...]\nResult: {getwid: {value: true, disabled: true}, }\n*/\nexport const getDefaultDependencies = (dependencies) => {\n const unSupportedPlugins = Object.keys(redux_templates.supported_plugins).filter(key => isPluginProActivated(key) === false);\n return dependencies.reduce(\n (acc, cur) => {\n // special handling for pro plugin not activated.\n let value = true;\n if (isProPlugin(cur) && (cur !== REDUXTEMPLATES_PRO_KEY) && isPluginReduxProMerged(cur) === false) value = false; // Not including pro plugin in redux templates\n return {...acc, [cur]: {value, disabled: false}};\n },\n {\n [NONE_KEY]: {value: true, disabled: false}, // Native element is included in default dependencies\n [REDUXTEMPLATES_PRO_KEY]: {value: true, disabled: false} // Redux pro is included in default dependencies\n }\n );\n}\n\nexport const getInstalledDependencies = (dependencies) => {\n const unSupportedPlugins = Object.keys(redux_templates.supported_plugins).filter(key => isPluginProActivated(key) === false);\n return dependencies\n .filter(key => key !== NONE_KEY)\n .reduce(\n (acc, cur) => {\n // special handling for pro plugin not activated.\n let value = true;\n const pluginInstance = getPluginInstance(cur);\n if (pluginInstance) {\n if (isProPlugin(cur) && unSupportedPlugins.indexOf(cur) !== -1) value = false;\n if (isProPlugin(cur) === false && pluginInstance.hasOwnProperty('version') === false) value = false;\n if (cur === REDUXTEMPLATES_PRO_KEY) value = false;\n } else\n value = false;\n return {...acc, [cur]: {value, disabled: false}};\n },\n {\n [NONE_KEY]: {value: true, disabled: false}\n }\n );\n}\n\nconst isProPlugin = (pluginKey) => {\n const pluginInstance = getPluginInstance(pluginKey);\n return (pluginInstance && pluginInstance.hasOwnProperty('free_slug'));\n}\n\nconst isPluginProActivated = (pluginKey) => {\n const pluginInstance = getPluginInstance(pluginKey);\n const freePluginInstance = getPluginInstance(pluginInstance.free_slug);\n return (freePluginInstance.hasOwnProperty('version') && freePluginInstance.hasOwnProperty('is_pro') && freePluginInstance.is_pro !== false);\n}\n\nexport const missingPluginsArray = () => {\n return Object.keys(redux_templates.supported_plugins).filter(pluginKey => isProPlugin(pluginKey) && isPluginProActivated(pluginKey) === false);\n}\n\n\n\n/**\n * Get last saved step.\n */\nexport const loadChallengeStep = () => {\n var step = localStorage.getItem( 'reduxChallengeStep' );\n if (step === null)\n return -1;\n step = parseInt( step, 10 );\n return step;\n}\n\n/**\n * Save Challenge step.\n */\nexport const saveChallengeStep = (step) => {\n localStorage.setItem( 'reduxChallengeStep', step );\n}\n","const {apiFetch} = wp;\nconst {registerStore} = wp.data;\n\nimport {initialState, reducer} from './reducer';\nimport {actions} from './actions';\nimport cloneDeep from 'lodash/cloneDeep';\nimport sortBy from 'lodash/sortBy';\nimport countBy from 'lodash/countBy';\nimport map from 'lodash/map';\nimport flattenDeep from 'lodash/flattenDeep';\nimport uniq from 'lodash/uniq';\nimport uniqBy from 'lodash/uniqBy';\nimport {applyCategoryFilter, applySearchFilter, applyHashFilter, applyPriceFilter, applyDependencyFilters, valueOfDependencyFilter} from './filters'\nimport {getCurrentState, getCollectionChildrenData, loadChallengeStep, NONE_KEY} from './helper';\nimport {isTemplatePremium} from './dependencyHelper'\nimport {installedBlocksTypes} from './actionHelper';\n\nconst getOriginalPageData = (state) => {\n if (state.activeItemType === 'collection' && state.collection.activeCollection !== null)\n return getCollectionChildrenData(state.library, state.collection.activeCollection);\n return getCurrentState(state).data;\n};\n\nconst getActivePriceFilter = (state) => {\n return getCurrentState(state).priceFilter;\n};\nconst getSearchContext = (state) => {\n return (state.activeItemType !== 'saved') ? getCurrentState(state).searchContext : null;\n};\n\nconst getActiveCategory = (state) => {\n return state[state.activeItemType].activeCategory;\n};\n\nconst getCurrentPage = (state) => {\n return state[state.activeItemType].currentPage;\n};\nconst getActiveItemType = (state) => {\n return state.activeItemType;\n};\n\n// get relevant page data, apply category, price, search, dependent filters\nconst getPageData = (state, applyDependencyFilter = true) => {\n let pageData = getOriginalPageData(state);\n const searchKeyword = getSearchContext(state);\n let hashFilteredData = [];\n // Hash filter to take priority\n if (state.activeItemType !== 'collection' && searchKeyword.length > 5) hashFilteredData = applyHashFilter(pageData, searchKeyword);\n // Full search for pageData\n if (pageData && Object.keys(pageData).length > 0) {\n pageData = applySearchFilter(pageData, searchKeyword);\n if (applyDependencyFilter) pageData = applyDependencyFilters(pageData, getDependencyFilters(state), getDependencyFilterRule(state));\n\n pageData = applyPriceFilter(pageData, getActivePriceFilter(state), getDependencyFilters(state));\n if (state.collection.activeCollection === null || state.activeItemType !== 'collection') {\n pageData = applyCategoryFilter(pageData, getActiveCategory(state));\n pageData = sortBy(pageData, getCurrentState(state).sortBy);\n }\n return uniqBy([...pageData, ...hashFilteredData], 'ID');\n }\n return null;\n};\n\nconst getDependencyFilters = (state) => {\n return {...getAllDependencFilters(state), ...getCurrentState(state).dependencyFilters};\n};\n\nconst getAllDependencFilters = (state) => {\n return state[state.activeItemType || 'section'].wholePlugins.reduce((acc, cur) => {\n return {...acc, [cur]: {value: false} };\n }, undefined)\n};\n\n\nconst getDependencyFiltersStatistics = (state) => {\n const pageData = getPageData(state, false);\n const dependentPluginsArray = uniq(flattenDeep(map(pageData, 'dependencies')));\n let dependencyFilters = getDependencyFilters(state);\n Object.keys(dependencyFilters)\n .forEach((plugin) => {\n dependencyFilters[plugin] = {...dependencyFilters[plugin], disabled: dependentPluginsArray.indexOf(plugin) === -1}\n })\n dependencyFilters[NONE_KEY] = {value: valueOfDependencyFilter(dependencyFilters[NONE_KEY]), disabled: false};\n return dependencyFilters;\n};\nconst getDependencyFilterRule = (state) => {\n return state[state.activeItemType].dependencyFilterRule;\n};\nregisterStore('redux-templates/sectionslist', {\n\n reducer,\n actions,\n\n selectors: {\n fetchLibraryFromAPI(state) {\n return state.library;\n },\n receive(state) {\n return state.sections;\n },\n\n getActivePriceFilter,\n getSearchContext,\n getDependencyFilters,\n getDependencyFiltersStatistics,\n getActiveItemType,\n getCurrentPage,\n getActiveCategory,\n getDependencyFilterRule,\n getWholePlugins(state) {\n return (state.activeItemType !== 'saved') ? getCurrentState(state).wholePlugins : null;\n },\n // get categories from currentState, sortBy alphabetically, with the count of pageData within the current category\n getCategoryData(state) {\n let categories = [];\n let pageData = getOriginalPageData(state);\n if (pageData && Object.keys(pageData).length > 0) {\n pageData = applySearchFilter(pageData, getSearchContext(state));\n pageData = applyDependencyFilters(pageData, getDependencyFilters(state), getDependencyFilterRule(state));\n pageData = applyPriceFilter(pageData, getActivePriceFilter(state), getDependencyFilters(state));\n }\n if (state.collection.activeCollection === null || state.activeItemType !== 'collection') {\n categories = cloneDeep(getCurrentState(state).categories);\n categories = categories.map(category => {\n const filteredData = map(pageData[category.slug], 'id');\n return {...category, filteredData};\n });\n }\n\n categories = sortBy(categories, 'name');\n return categories;\n },\n // get relevant page data, apply category, price, search, dependent filters\n getPageData,\n\n getStatistics(state) {\n let pageData = getOriginalPageData(state);\n let staticsData = {true: 0, false: 0};\n if (pageData && Object.keys(pageData).length > 0) {\n pageData = applySearchFilter(pageData, getSearchContext(state));\n pageData = applyDependencyFilters(pageData, getDependencyFilters(state), getDependencyFilterRule(state));\n if (state.collection.activeCollection === null || state.activeItemType !== 'collection') pageData = applyCategoryFilter(pageData, getActiveCategory(state));\n staticsData = countBy(pageData, (item) => isTemplatePremium(item, getDependencyFilters(state)) === true);\n }\n return staticsData;\n },\n getLoading(state) {\n return state.loading;\n },\n getColumns(state) {\n return state.columns;\n },\n getSortBy(state) {\n return getCurrentState(state).sortBy;\n },\n getActiveCollection(state) {\n return state.collection.activeCollection;\n },\n getActiveCollectionData(state) {\n if (state.library && state.library.collections && state.collection)\n return state.library.collections[state.collection.activeCollection];\n return null;\n },\n getSaved(state) {\n return state.saved;\n },\n getErrorMessages(state) {\n return state.errorMessages;\n },\n getInstalledDependencies(state) {\n return state.installedDependencies;\n },\n getTourOpen(state) {\n return state.tour.isOpen;\n },\n getTourActiveButtonGroup(state) {\n return state.tour.activeButtonGroup;\n },\n getTourPreviewVisible(state) {\n return state.tour.isPreviewVisible;\n },\n getImportingTemplate(state) {\n return state.importingTemplate;\n },\n getChallengeStep(state) {\n return loadChallengeStep();\n },\n getChallengeOpen(state) {\n return state.challenge.isOpen;\n },\n getChallengeTooltipRect(state) {\n return state.challenge.tooltipRect;\n },\n getChallengeFinalStatus(state) {\n return state.challenge.finalStatus;\n },\n getChallengePassed(state) {\n return state.challenge.passed;\n },\n getChallengeListExpanded(state) {\n return state.challenge.listExpanded;\n },\n getActivateDialogDisplay(state) {\n return state.activateDialog;\n },\n getImportToAppend(state) {\n return state.isImportToAppend;\n }\n },\n\n controls: {\n FETCH_LIBRARY_FROM_API(action) {\n return apiFetch({path: action.path, method: 'POST', data: {registered_blocks: installedBlocksTypes()}});\n },\n FETCH_SAVED_FROM_API(action) {\n return apiFetch({path: action.path, method: 'POST', data: {registered_blocks: installedBlocksTypes()}});\n }\n },\n\n resolvers: {\n * fetchLibraryFromAPI(state) {\n try {\n const receiveSectionResult = yield actions.fetchLibraryFromAPI('redux/v1/templates/library');\n return actions.setLibrary(receiveSectionResult.data);\n } catch (error) {\n return actions.appendErrorMessage(error.code + ' ' + error.message)\n }\n }\n },\n\n initialState\n});\n","import {parseSectionData, parsePageData, parseCollectionData, getInstalledDependencies, NONE_KEY} from './helper';\nimport {getDefaultDependencies} from './helper';\nimport {loadChallengeStep, saveChallengeStep, setWithExpiry, getWithExpiry} from './helper';\nconst EXIPRY_TIME = 5 * 24 * 3600 * 1000;\nexport const initialState = {\n loading: false,\n activeItemType: getWithExpiry('itemType', 'section'),\n library: null,\n columns: getWithExpiry('column', ''),\n errorMessages: [],\n section: {\n categories: [],\n data: {},\n priceFilter: getWithExpiry('section_price', ''),\n activeCategory: getWithExpiry('section_category', ''),\n dependencyFilters: {},\n dependencyFilterRule: getWithExpiry('section_filterRule', true),\n searchContext: '',\n wholePlugins: [],\n sortBy: getWithExpiry('section_sort', 'name'),\n currentPage: getWithExpiry('section_page', 0)\n },\n page: {\n categories: [],\n data: {},\n priceFilter: getWithExpiry('page_price', ''),\n activeCategory: getWithExpiry('page_category', ''),\n dependencyFilters: {},\n dependencyFilterRule: getWithExpiry('page_filterRule', true),\n searchContext: '',\n wholePlugins: [],\n sortBy: getWithExpiry('page_sort', 'name'),\n currentPage: getWithExpiry('page_page', 0)\n },\n collection: {\n categories: [],\n data: {},\n priceFilter: getWithExpiry('collection_price', ''),\n activeCategory: getWithExpiry('collection_category', 'name'),\n dependencyFilters: {},\n dependencyFilterRule: false,\n searchContext: '',\n wholePlugins: [],\n activeCollection: null,\n sortBy: getWithExpiry('collection_sort', 'name'),\n currentPage: getWithExpiry('collection_page', 0)\n },\n installedDependencies: false, // used when deciding should or not reload page after importing the template\n isImportToAppend: true, // append to or replace the current page content for importing\n tour: {\n isOpen: false,\n activeButtonGroup: null,\n isPreviewVisible: false\n },\n challenge: {\n isOpen: false,\n currentStep: loadChallengeStep(),\n tooltipRect: {},\n finalStatus: '',\n passed: getWithExpiry('reduxChallengePassed', false),\n listExpanded: true\n },\n plugins: {},\n importingTemplate: null,\n activateDialog: false\n};\n\nexport const reducer = ( state = initialState, action ) => {\n\n switch ( action.type ) {\n case 'SET_LIBRARY':\n if (!action.library.dependencies) return state;\n redux_templates.supported_plugins = action.library.plugins;\n const dependencies = getDefaultDependencies(Object.keys(action.library.dependencies));\n const parsedSection = parseSectionData(action.library.sections);\n const parsedPage = parsePageData(action.library.pages);\n\t\t\tconst parsedCollection = parseCollectionData(action.library);\n\t\t\tredux_templates.stats = {\n\t\t\t\t'dependencies': Object.keys(action.library.dependencies).length,\n\t\t\t\t'pages': Object.keys(action.library.pages).length,\n\t\t\t\t'sections': Object.keys(action.library.sections).length,\n\t\t\t\t'collections': Object.keys(action.library.collections).length,\n\t\t\t}\n return {\n ...state,\n loading: false,\n library: action.library,\n section: {\n ...state.section,\n ...parsedSection,\n dependencyFilters: getWithExpiry('section_plugin') ? getWithExpiry('section_plugin') : dependencies\n },\n page: {\n ...state.page,\n ...parsedPage,\n dependencyFilters: getWithExpiry('page_plugin') ? getWithExpiry('page_plugin') : dependencies\n },\n collection: {\n ...state.collection,\n ...parsedCollection,\n dependencyFilters: getWithExpiry('collection_plugin') ? getWithExpiry('collection_plugin') : dependencies\n }\n };\n case 'SET_ACTIVE_CATEGORY':\n setWithExpiry(state.activeItemType + '_category', action.activeCategory, EXIPRY_TIME);\n setWithExpiry(state.activeItemType + '_page', 0, EXIPRY_TIME);\n return {\n ...state,\n [state.activeItemType]: {\n ...state[state.activeItemType],\n currentPage: 0,\n activeCategory: action.activeCategory\n }\n };\n case 'SET_SEARCH_CONTEXT':\n setWithExpiry(state.activeItemType + '_search', action.searchContext, EXIPRY_TIME);\n setWithExpiry(state.activeItemType + '_page', 0, EXIPRY_TIME);\n return {\n ...state,\n [state.activeItemType]: {\n ...state[state.activeItemType],\n currentPage: 0,\n searchContext: action.searchContext\n }\n };\n case 'SET_ACTIVE_PRICE_FILTER':\n setWithExpiry(state.activeItemType + '_price', action.activePriceFilter, EXIPRY_TIME);\n setWithExpiry(state.activeItemType + '_page', 0, EXIPRY_TIME);\n return {\n ...state,\n [state.activeItemType]: {\n ...state[state.activeItemType],\n currentPage: 0,\n priceFilter: action.activePriceFilter\n }\n };\n case 'SET_ACTIVE_ITEM_TYPE':\n setWithExpiry('itemType', action.activeItemType, EXIPRY_TIME);\n return {\n ...state,\n activeItemType: action.activeItemType\n };\n case 'SET_DEPENDENCY_FILTERS':\n setWithExpiry(state.activeItemType + '_plugin', action.dependencyFilters, EXIPRY_TIME);\n setWithExpiry(state.activeItemType + '_page', 0, EXIPRY_TIME);\n return {\n ...state,\n [state.activeItemType]: {\n ...state[state.activeItemType],\n currentPage: 0,\n dependencyFilters: action.dependencyFilters\n }\n }\n case 'SET_SORT_BY':\n setWithExpiry(state.activeItemType + '_sort', action.sortBy, EXIPRY_TIME);\n setWithExpiry(state.activeItemType + '_page', 0, EXIPRY_TIME);\n return {\n ...state,\n [state.activeItemType]: {\n ...state[state.activeItemType],\n currentPage: 0,\n sortBy: action.sortBy\n }\n };\n case 'SET_CURRENT_PAGE':\n setWithExpiry(state.activeItemType + '_page', action.currentPage, EXIPRY_TIME);\n return {\n ...state,\n [state.activeItemType]: {\n ...state[state.activeItemType],\n currentPage: action.currentPage\n }\n };\n case 'SET_ACTIVE_COLLECTION':\n return {\n ...state,\n collection: {\n ...state.collection,\n activeCollection: action.activeCollection\n }\n };\n case 'SET_LOADING':\n return {\n ...state,\n loading: action.loading\n }\n case 'SET_COLUMNS':\n setWithExpiry('column', action.columns, EXIPRY_TIME);\n return {\n ...state,\n columns: action.columns\n }\n case 'APPEND_ERROR_MESSAGE':\n return {\n ...state,\n errorMessages: state.errorMessages.concat([action.errorMessage])\n }\n case 'DISCARD_ALL_ERROR_MESSAGES':\n return {\n ...state,\n errorMessages: []\n }\n case 'SET_INSTALLED_DEPENDENCIES':\n return {\n ...state,\n installedDependencies: action.installedDependencies\n }\n case 'SET_TOUR_OPEN':\n return {\n ...state,\n tour: {\n ...state.tour,\n isOpen: action.isTourOpen\n }\n };\n case 'SET_TOUR_ACTIVE_BUTTON_GROUP':\n return {\n ...state,\n tour: {\n ...state.tour,\n activeButtonGroup: action.data\n }\n };\n case 'SET_PREVIEW_VISIBLE':\n return {\n ...state,\n tour: {\n ...state.tour,\n isPreviewVisible: action.isVisible\n }\n };\n case 'SET_IMPORTING_TEMPLATE':\n return {\n ...state,\n importingTemplate: action.importingTemplate\n }\n case 'SET_CHALLENGE_STEP':\n saveChallengeStep(action.data);\n return {\n ...state,\n challenge: {\n ...state.challenge,\n currentStep: action.data\n }\n }\n case 'SET_CHALLENGE_OPEN':\n return {\n ...state,\n challenge: {\n ...state.challenge,\n isOpen: action.data\n }\n }\n case 'SET_CHALLENGE_TOOLTIP_RECT':\n return {\n ...state,\n challenge: {\n ...state.challenge,\n tooltipRect: action.data\n }\n }\n case 'SET_CHALLENGE_FINAL_STATUS':\n return {\n ...state,\n challenge: {\n ...state.challenge,\n finalStatus: action.data\n }\n }\n case 'SET_CHALLENGE_PASSED':\n setWithExpiry('reduxChallengePassed', action.data, EXIPRY_TIME);\n return {\n ...state,\n challenge: {\n ...state.challenge,\n passed: action.data\n }\n }\n case 'SET_CHALLENGE_LIST_EXPANDED':\n return {\n ...state,\n challenge: {\n ...state.challenge,\n listExpanded: action.data\n }\n }\n case 'SET_ACTIVATE_DIALOG_DISPLAY':\n return {\n ...state,\n activateDialog: action.data\n }\n case 'SET_IMPORT_TO_APPEND':\n return {\n ...state,\n isImportToAppend: action.data\n }\n case 'SET_DEPENDENCY_FILTER_RULE':\n setWithExpiry(state.activeItemType + '_filterRule', action.data, EXIPRY_TIME);\n return {\n ...state,\n [state.activeItemType]: {\n ...state[state.activeItemType],\n dependencyFilterRule: action.data\n }\n }\n // Dependency Shortcut click handler: All, None, Installed and Reset\n case 'SELECT_DEPENDENCIES':\n const types = ['section', 'page', 'collection'];\n let atomHandler;\n switch(action.data) {\n case 'all':\n case 'none':\n const newValue = action.data === 'all';\n atomHandler = (plugins) => plugins\n .filter(plugin => [ NONE_KEY, 'gutenberghub.com', 'shareablock.com' ].includes(plugin) === false )\n .reduce(\n (acc, key) => {\n return { ...acc, [key]: { value: newValue, disabled: false } }\n },\n {\n [NONE_KEY]: {value: true, disabled: false},\n 'gutenberghub.com': {value: true, disabled: false},\n 'shareablock.com': {value: true, disabled: false}\n }\n )\n break;\n case 'installed':\n atomHandler = (plugins) => getInstalledDependencies(plugins);\n break;\n default:\n atomHandler = (plugins) => getDefaultDependencies(plugins);\n break;\n }\n const filtered = types.reduce( (acc, cur) => {\n // save to the local storage as well\n setWithExpiry(cur + '_plugin', atomHandler(state[cur].wholePlugins), EXIPRY_TIME);\n return {\n ...acc,\n [cur]: {\n ...state[cur],\n searchContext: '',\n dependencyFilterRule: cur !== 'collection', // We must always use false for collection to get template kits to work.\n dependencyFilters: atomHandler(state[cur].wholePlugins)\n }\n }\n }, {});\n return {\n ...state,\n ...filtered\n };\n case 'CLEAR_SEARCH':\n return {\n ...state,\n section: {\n ...state.section,\n searchContext: ''\n },\n page: {\n ...state.page,\n searchContext: ''\n },\n collection: {\n ...state.collection,\n searchContext: ''\n }\n }\n\t\tcase 'CLEAR_STATE':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tsection: {\n\t\t\t\t\t...state.section,\n\t\t\t\t\tpriceFilter: '',\n\t\t\t\t\tactiveCategory: '',\n\t\t\t\t\tsearchContext: '',\n\t\t\t\t},\n\t\t\t\tpage: {\n\t\t\t\t\t...state.page,\n\t\t\t\t\tpriceFilter: '',\n\t\t\t\t\tactiveCategory: '',\n\t\t\t\t\tsearchContext: '',\n\t\t\t\t},\n\t\t\t\tcollection: {\n\t\t\t\t\t...state.collection,\n\t\t\t\t\tpriceFilter: '',\n\t\t\t\t\tactiveCategory: '',\n\t\t\t\t\tsearchContext: '',\n\t\t\t\t}\n\t\t\t}\n }\n\n return state;\n};\n","module.exports = wp.blockEditor;","module.exports = wp.blocks;","module.exports = wp.components;","module.exports = wp.compose;","module.exports = wp.data;","module.exports = wp.editPost;","module.exports = wp.element;","module.exports = wp.hooks;","module.exports = wp.i18n;","module.exports = lodash;","module.exports = React;","module.exports = ReactDOM;"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvJA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;ACHA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACrBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACfA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;;;AAGA;AACA;AAEA;;;;AAGA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;;;;AAGA;AACA;AACA;AAEA;AACA;AACA;AAFA;AAKA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AARA;AACA;AAUA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AANA;AAcA;AACA;AAFA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAeA;AACA;AAzGA;AACA;AA0GA;;;;;;;;;;;;AC/HA;AAAA;;;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AACA;AACA;AACA;AAEA;;;;AAGA;AAEA;;;;AAGA;AAEA;AACA;AACA;AACA;AADA;AADA;AACA;AAKA;AACA;AACA;AAQA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AASA;AACA;AACA;AAAA;AACA;AACA;AACA;AAvBA;;;;;;;;;;;;;ACnCA;AAAA;;;AAGA;AAEA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AADA;AAIA;AACA;AAhBA;AAFA;AAuBA;;;;;;;;;;;;AC5BA;AAAA;AAAA;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AAEA;;;;AAGA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;;;;;;;;AAMA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAOA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AAPA;AACA;AASA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1EA;AAAA;AAAA;;;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AACA;AACA;AACA;AAEA;;;;AAGA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AAHA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA;AAaA;AACA;AACA;AAEA;AADA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;;AC1DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;AAGA;;;AAGA;AAEA;;;;AAGA;AACA;AACA;AAEA;;;;AAGA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAOA;AACA;AACA;AADA;AADA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAKA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAPA;AADA;AAYA;AACA;AACA;AACA;AACA;AACA;AA7BA;AACA;AA8BA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;;;;;;;;;;;;;ACrGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AAEA;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAUA;AACA;AACA;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;;;AAGA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZA;;;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAIA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAMA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;;;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAKA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AADA;AAGA;AACA;AAbA;AAsCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAFA;AAIA;AApBA;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAFA;AAIA;AAGA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AAFA;AAIA;AACA;AA1BA;AA6BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAFA;AAIA;AACA;AArBA;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAFA;AAlBA;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AAdA;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAjCA;AA1JA;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AADA;AAEA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAMA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/DA;;;AAGA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAGA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AADA;AAEA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAKA;AAAA;AAAA;AAEA;AACA;AACA;AAHA;AAKA;AAAA;AAAA;AAOA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;;AC/EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAEA;AACA;AACA;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;;;AAGA;AACA;AAEA;AAEA;AACA;AACA;AACA;;;AAGA;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AAEA;AACA;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AA/EA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAIA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9DA;AAEA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAVA;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAVA;AAYA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AANA;AAOA;AACA;AAEA;AACA;AAAA;AACA;AACA;AALA;AAMA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAdA;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAKA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1KA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAHA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAGA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAIA;AACA;AADA;AAGA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;;;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AACA;AAGA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAGA;AACA;AAGA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AAAA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAKA;AACA;AACA;AAEA;AAGA;AAAA;AAAA;AAAA;AASA;AACA;AACA;AACA;;;;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAUA;AAGA;AACA;AAAA;AACA;AAIA;AACA;AADA;AAGA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AACA;AACA;AACA;AAFA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AACA;AADA;AAfA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AAFA;AAJA;AAFA;AAYA;AACA;AACA;AACA;AACA;AADA;AAFA;AADA;AASA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AACA;AACA;AAJA;AAOA;AAPA;AAoCA;AACA;AACA;AACA;AACA;AALA;AAOA;AAAA;AAGA;AACA;AACA;AACA;AACA;AALA;AAOA;AAAA;AAKA;AACA;AACA;AACA;AACA;AALA;AAOA;AAAA;AAoBA;AAAA;AAAA;AACA;AACA;AACA;AACA;AALA;AAOA;AAAA;AAKA;;;;;;;;;;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AACA;AAKA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAKA;AACA;AACA;;;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AADA;AAEA;AAAA;AACA;AADA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AADA;AAGA;AAAA;AACA;AADA;AAEA;AAAA;AACA;AADA;AAOA;AACA;AAEA;AACA;AAAA;AACA;AAIA;AACA;AADA;AAGA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AACA;AADA;AAEA;AAAA;AAIA;AACA;AADA;AAEA;AAAA;AAEA;AAAA;AAGA;AACA;AAEA;AACA;AAAA;AACA;AAIA;AACA;AADA;AAGA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;;;;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChBA;AAEA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AADA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AACA;AAFA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAOA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AACA;AACA;AAHA;AAKA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;ACzEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AAAA;AAGA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;AACA;AACA;AACA;AACA;AAJA;AAYA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAHA;AAMA;AACA;AACA;AACA;AAJA;AAOA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAJA;AAOA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAJA;AAOA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAJA;AAMA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAOA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AASA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAWA;;;;;;;;;;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACnBA;;;AAGA;AAEA;AAGA;AACA;AACA;AAHA;AASA;AAGA;AACA;AACA;AAHA;AAQA;AAGA;AACA;AACA;AAHA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5BA;;;AAGA;AACA;AACA;AACA;AAAA;AACA;AAEA;;;;AAGA;AAKA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AAKA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AAGA;AACA;AAEA;AACA;AAEA;AAAA;AAGA;AAAA;AAPA;AAiBA;AACA;AAEA;AAAA;AAGA;AAAA;AAPA;AAiBA;AACA;AAEA;AAAA;AAGA;AAAA;AAOA;AAAA;AAdA;AA9CA;AAuEA;;;;;;;;;;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;;;AAGA;AAMA;AAHA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAXA;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AAAA;AAAA;AAMA;AAAA;AAOA;AACA;AACA;;;;;;;;;;;;ACrHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AAAA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;;;;AAGA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAFA;AALA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAKA;AACA;AAAA;AAAA;AACA;AAHA;AAMA;AACA;AACA;AAHA;AASA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;;;;;;;;;;;AC9EA;;;AAGA;AAEA;AAKA;AAFA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACrBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9CA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7LA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnIA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9CA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AAFA;AAIA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AALA;AAQA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAMA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnPA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;AAIA;;;AAGA;AACA;AAEA;;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvDA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAMA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAEA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAKA;AAAA;AACA;AAAA;AACA;AAAA;AAQA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClFA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAUA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAAA;AAEA;AACA;AAFA;AAQA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7DA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAGA;AAAA;AAKA;AAAA;AAKA;AAAA;AAKA;AAEA;AAEA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AADA;AAEA;AAIA;AAAA;AAEA;AAAA;AACA;AADA;AAEA;AAAA;AAIA;AAAA;AACA;AADA;AAOA;AACA;AAEA;AACA;AAAA;AACA;AAGA;AACA;AADA;AAGA;;;;;;;;;;;;AC9HA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAGA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAMA;AAAA;AACA;AAAA;AAAA;AAMA;AACA;AAEA;AACA;AAAA;AACA;AAGA;AACA;AADA;AAGA;;;;;;;;;;;;ACvDA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAGA;AACA;AAEA;AAAA;AAGA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAGA;AAKA;AAAA;AACA;AAAA;AAAA;AAMA;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AASA;AACA;AACA;AAFA;AAGA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BA;AAAA;AAAA;AACA;AACA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AACA;AAOA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAGA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AAEA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;;;;;;;;;;;;AC7GA;AAAA;AAAA;AAEA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAMA;AAAA;AAAA;AACA;AADA;AAIA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAOA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AACA;AAEA;AACA;AACA;AADA;AACA;AACA;AAAA;AACA;AAIA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAEA;AAAA;AAAA;AAEA;AAAA;AACA;AADA;AAEA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAKA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;;;;;;;;;;;AC/LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAOA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAFA;AAMA;AAAA;AAEA;AAAA;AAMA;AAAA;AAEA;AAAA;AAIA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AASA;;;;;;;;;;;;AC5HA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAMA;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAAA;AAGA;AACA;AAFA;AASA;AAAA;AACA;AADA;AAWA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;;;;;;;;;;;;;;;;;;;;;;;;;ACpFA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AADA;AAGA;AACA;AAAA;AAGA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AACA;AADA;AAIA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAGA;AAAA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAHA;AAKA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAAA;AAAA;AAQA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/GA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAQA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAFA;AACA;AACA;AAIA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAFA;AAIA;AACA;AAGA;AACA;AACA;AADA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAEA;AACA;AACA;AAHA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;;AChHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAMA;AAAA;AAQA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;;;;;;;;;;;;ACnCA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AAAA;AACA;AACA;AADA;AAEA;AAAA;AACA;AADA;AAEA;AAAA;AACA;AADA;AAEA;AAAA;AAAA;AAKA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AADA;AAGA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAFA;AAIA;;;;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AADA;AAIA;AAAA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AADA;AAIA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AAKA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAIA;AACA;AADA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAJA;AAMA;;;;;;;;;;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AACA;AADA;AAGA;AAAA;AACA;AAAA;AAEA;AAAA;AAGA;AACA;AADA;AAEA;AAAA;AAIA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AADA;AAKA;AAEA;AAAA;AASA;AAAA;AAAA;AAAA;AACA;AAAA;AAMA;AACA;AACA;AACA;AAAA;AACA;AADA;AAAA;AAAA;AACA;AASA;AACA;AACA;AACA;AAHA;AAKA;;;;;;;;;;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AAGA;AAEA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AAMA;AACA;AAFA;AAMA;AACA;AACA;AACA;AACA;AACA;AANA;AAkBA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAMA;AACA;AAEA;AACA;AAAA;AACA;AAIA;AACA;AADA;AAGA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AAFA;AAGA;AAAA;AAAA;AAKA;AACA;AA7CA;AAgDA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AA9DA;;;;;;;;;;;;ACrDA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAIA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AACA;AADA;AAEA;AAAA;AAKA;AAAA;AAAA;AAAA;AACA;AADA;AAEA;AAAA;AACA;AAAA;AAGA;AAAA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAHA;AAIA;AAAA;AAGA;AAOA;AACA;AACA;;;;;;;;;;;;AC7DA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAIA;AAAA;AACA;AADA;AAOA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AAGA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AACA;AADA;AACA;AACA;AADA;AAEA;AADA;AAEA;AAAA;AACA;AAAA;AAAA;AAEA;AAAA;AAGA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AADA;AAEA;AAAA;AADA;AAEA;AAAA;AACA;AADA;AAEA;AAAA;AAMA;AAAA;AAAA;AAAA;AACA;AAAA;AAIA;AACA;AAAA;AAEA;AAQA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAIA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAEA;AAAA;AAGA;AADA;AAGA;AACA;AADA;AAEA;AAAA;AACA;AADA;AAKA;AACA;AADA;AAEA;AAAA;AAAA;AACA;AADA;AAEA;AADA;AAIA;AASA;AAAA;AAAA;AAAA;AACA;AAAA;AASA;;;;;;;;;;;;ACvIA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAFA;AAGA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAFA;AAKA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAJA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AANA;AACA;AAOA;AACA;AAKA;AACA;AACA;AACA;AACA;AAJA;AAMA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AACA;AACA;AAYA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAJA;AAKA;AAAA;AAKA;AAAA;AAAA;AAAA;AAGA;AAAA;AACA;AAAA;AAMA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AAFA;AAIA;AAEA;AAAA;AACA;AACA;AACA;AADA;AAGA;;;;;;;;;;;ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AADA;AACA;AAIA;AACA;AACA;AACA;AAFA;AAKA;AACA;AACA;AACA;AAEA;AAGA;AAAA;AAAA;AACA;AACA;AAHA;AASA;AACA;AACA;AAEA;AADA;AAKA;AAAA;AACA;AAEA;AACA;AADA;AAGA;AACA;AAAA;AACA;AAEA;AAAA;AAEA;AACA;AADA;AAGA;;;;;;;;;;;;AC9DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAGA;AACA;;;;AAIA;AACA;AACA;AAEA;;;;AAGA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;AAGA;AAAA;AAAA;AAAA;AAGA;AAHA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAFA;AAKA;AACA;AACA;AACA;AACA;AAGA;AAAA;AAAA;AACA;AA